From 26ee2c9547e45f950a0b26ba10be4afadf64c559 Mon Sep 17 00:00:00 2001 From: alex collins Date: Fri, 1 Dec 2023 14:44:13 -0700 Subject: [PATCH 01/15] feat: Fix IP Address resolution for Tanium CF PB --- Solutions/Tanium/Package/3.0.0.zip | Bin 0 -> 83759 bytes .../Tanium/Package/createUiDefinition.json | 16 +- Solutions/Tanium/Package/mainTemplate.json | 1091 +++++++++-------- .../Tanium-ComplyFindings/azuredeploy.json | 509 ++++++-- 4 files changed, 998 insertions(+), 618 deletions(-) create mode 100644 Solutions/Tanium/Package/3.0.0.zip diff --git a/Solutions/Tanium/Package/3.0.0.zip b/Solutions/Tanium/Package/3.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..6ba9c1daded92c4024983a768ef8732cf0f86307 GIT binary patch literal 83759 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%0A_ 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 Nd*ILbR}}E)_+JW9!S?_F literal 0 HcmV?d00001 diff --git a/Solutions/Tanium/Package/createUiDefinition.json b/Solutions/Tanium/Package/createUiDefinition.json index 198c005d2cf..33f7f494a66 100644 --- a/Solutions/Tanium/Package/createUiDefinition.json +++ b/Solutions/Tanium/Package/createUiDefinition.json @@ -6,7 +6,7 @@ "config": { "isWizard": false, "basics": { - "description": "\n\n**Note:** _There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing._\n\nThe [Tanium](https://www.tanium.com/) solution for Microsoft Sentinel enables you to ingest Tanium Threat Response alerts as Microsoft Sentinel incidents as well as incorporate Tanium's real-time endpoint data.\n\n**Workbooks:** 1, **Analytic Rules:** 1, **Playbooks:** 10\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)", + "description": "\n\n**Note:** _There may be [known issues](https://aka.ms/sentinelsolutionsknownissues) pertaining to this Solution, please refer to them before installing._\n\nThe [Tanium](https://www.tanium.com/) solution for Microsoft Sentinel enables you to ingest Tanium Threat Response alerts as Microsoft Sentinel incidents as well as incorporate Tanium's real-time endpoint data.\n\n**Workbooks:** 1, **Playbooks:** 10\n\n[Learn more about Microsoft Sentinel](https://aka.ms/azuresentinel) | [Learn more about Solutions](https://aka.ms/azuresentinelsolutionsdoc)", "subscription": { "resourceProviders": [ "Microsoft.OperationsManagement/solutions", @@ -118,20 +118,6 @@ "uri": "https://docs.microsoft.com/azure/sentinel/tutorial-detect-threats-custom?WT.mc_id=Portal-Microsoft_Azure_CreateUIDef" } } - }, - { - "name": "analytic1", - "type": "Microsoft.Common.Section", - "label": "Tanium Threat Response Alerts", - "elements": [ - { - "name": "analytic1-text", - "type": "Microsoft.Common.TextBlock", - "options": { - "text": "Alerts from Tanium Threat Response (THR) that can be acted upon by Microsoft Sentinel Playbook" - } - } - ] } ] }, diff --git a/Solutions/Tanium/Package/mainTemplate.json b/Solutions/Tanium/Package/mainTemplate.json index ec8823670f5..a9f850e0b67 100644 --- a/Solutions/Tanium/Package/mainTemplate.json +++ b/Solutions/Tanium/Package/mainTemplate.json @@ -38,23 +38,27 @@ } }, "variables": { - "solutionId": "taniuminc1646329360287.tanium_sentinel_connector", - "_solutionId": "[variables('solutionId')]", "email": "support@tanium.com", "_email": "[variables('email')]", + "_solutionName": "Tanium", + "_solutionVersion": "3.0.0", + "solutionId": "taniuminc1646329360287.tanium_sentinel_connector", + "_solutionId": "[variables('solutionId')]", "workbookVersion1": "1.0", "workbookContentId1": "TaniumWorkbook", "workbookId1": "[resourceId('Microsoft.Insights/workbooks', variables('workbookContentId1'))]", - "workbookTemplateSpecName1": "[concat(parameters('workspace'),'-wb-',uniquestring(variables('_workbookContentId1')))]", + "workbookTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-wb-',uniquestring(variables('_workbookContentId1'))))]", "_workbookContentId1": "[variables('workbookContentId1')]", "workspaceResourceId": "[resourceId('microsoft.OperationalInsights/Workspaces', parameters('workspace'))]", + "_workbookcontentProductId1": "[concat(take(variables('_solutionId'),50),'-','wb','-', uniqueString(concat(variables('_solutionId'),'-','Workbook','-',variables('_workbookContentId1'),'-', variables('workbookVersion1'))))]", "Tanium-ComplyFindings": "Tanium-ComplyFindings", "_Tanium-ComplyFindings": "[variables('Tanium-ComplyFindings')]", "playbookVersion1": "1.0", "playbookContentId1": "Tanium-ComplyFindings", "_playbookContentId1": "[variables('playbookContentId1')]", "playbookId1": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId1'))]", - "playbookTemplateSpecName1": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId1')))]", + "playbookTemplateSpecName1": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId1'))))]", + "_playbookcontentProductId1": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId1'),'-', variables('playbookVersion1'))))]", "blanks": "[replace('b', 'b', '')]", "Tanium-GeneralHostInfo": "Tanium-GeneralHostInfo", "_Tanium-GeneralHostInfo": "[variables('Tanium-GeneralHostInfo')]", @@ -62,42 +66,48 @@ "playbookContentId2": "Tanium-GeneralHostInfo", "_playbookContentId2": "[variables('playbookContentId2')]", "playbookId2": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId2'))]", - "playbookTemplateSpecName2": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId2')))]", + "playbookTemplateSpecName2": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId2'))))]", + "_playbookcontentProductId2": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId2'),'-', variables('playbookVersion2'))))]", "Tanium-MSDefenderHealth": "Tanium-MSDefenderHealth", "_Tanium-MSDefenderHealth": "[variables('Tanium-MSDefenderHealth')]", "playbookVersion3": "1.0", "playbookContentId3": "Tanium-MSDefenderHealth", "_playbookContentId3": "[variables('playbookContentId3')]", "playbookId3": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId3'))]", - "playbookTemplateSpecName3": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId3')))]", + "playbookTemplateSpecName3": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId3'))))]", + "_playbookcontentProductId3": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId3'),'-', variables('playbookVersion3'))))]", "Tanium-QuarantineHosts": "Tanium-QuarantineHosts", "_Tanium-QuarantineHosts": "[variables('Tanium-QuarantineHosts')]", "playbookVersion4": "1.0", "playbookContentId4": "Tanium-QuarantineHosts", "_playbookContentId4": "[variables('playbookContentId4')]", "playbookId4": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId4'))]", - "playbookTemplateSpecName4": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId4')))]", + "playbookTemplateSpecName4": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId4'))))]", + "_playbookcontentProductId4": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId4'),'-', variables('playbookVersion4'))))]", "Tanium-ResolveThreatResponseAlert": "Tanium-ResolveThreatResponseAlert", "_Tanium-ResolveThreatResponseAlert": "[variables('Tanium-ResolveThreatResponseAlert')]", "playbookVersion5": "1.0", "playbookContentId5": "Tanium-ResolveThreatResponseAlert", "_playbookContentId5": "[variables('playbookContentId5')]", "playbookId5": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId5'))]", - "playbookTemplateSpecName5": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId5')))]", + "playbookTemplateSpecName5": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId5'))))]", + "_playbookcontentProductId5": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId5'),'-', variables('playbookVersion5'))))]", "Tanium-SCCMClientHealth": "Tanium-SCCMClientHealth", "_Tanium-SCCMClientHealth": "[variables('Tanium-SCCMClientHealth')]", "playbookVersion6": "1.0", "playbookContentId6": "Tanium-SCCMClientHealth", "_playbookContentId6": "[variables('playbookContentId6')]", "playbookId6": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId6'))]", - "playbookTemplateSpecName6": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId6')))]", + "playbookTemplateSpecName6": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId6'))))]", + "_playbookcontentProductId6": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId6'),'-', variables('playbookVersion6'))))]", "Tanium-UnquarantineHosts": "Tanium-UnquarantineHosts", "_Tanium-UnquarantineHosts": "[variables('Tanium-UnquarantineHosts')]", "playbookVersion7": "1.0", "playbookContentId7": "Tanium-UnquarantineHosts", "_playbookContentId7": "[variables('playbookContentId7')]", "playbookId7": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId7'))]", - "playbookTemplateSpecName7": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId7')))]", + "playbookTemplateSpecName7": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId7'))))]", + "_playbookcontentProductId7": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId7'),'-', variables('playbookVersion7'))))]", "Tanium-SecurityPatches": "Tanium-SecurityPatches", "_Tanium-SecurityPatches": "[variables('Tanium-SecurityPatches')]", "TemplateEmptyArray": "[json('[]')]", @@ -105,56 +115,37 @@ "playbookContentId8": "Tanium-SecurityPatches", "_playbookContentId8": "[variables('playbookContentId8')]", "playbookId8": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId8'))]", - "playbookTemplateSpecName8": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId8')))]", + "playbookTemplateSpecName8": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId8'))))]", + "_playbookcontentProductId8": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId8'),'-', variables('playbookVersion8'))))]", "Tanium-Apply-SecurityPatches-WithoutReboot": "Tanium-Apply-SecurityPatches-WithoutReboot", "_Tanium-Apply-SecurityPatches-WithoutReboot": "[variables('Tanium-Apply-SecurityPatches-WithoutReboot')]", "playbookVersion9": "1.0", "playbookContentId9": "Tanium-Apply-SecurityPatches-WithoutReboot", "_playbookContentId9": "[variables('playbookContentId9')]", "playbookId9": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId9'))]", - "playbookTemplateSpecName9": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId9')))]", + "playbookTemplateSpecName9": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId9'))))]", + "_playbookcontentProductId9": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId9'),'-', variables('playbookVersion9'))))]", "Tanium-Apply-SecurityPatches-WithReboot": "Tanium-Apply-SecurityPatches-WithReboot", "_Tanium-Apply-SecurityPatches-WithReboot": "[variables('Tanium-Apply-SecurityPatches-WithReboot')]", "playbookVersion10": "1.0", "playbookContentId10": "Tanium-Apply-SecurityPatches-WithReboot", "_playbookContentId10": "[variables('playbookContentId10')]", "playbookId10": "[resourceId('Microsoft.Logic/workflows', variables('playbookContentId10'))]", - "playbookTemplateSpecName10": "[concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId10')))]", - "analyticRuleVersion1": "1.1.0", - "analyticRulecontentId1": "dd9aa0ff-7ac1-4448-879c-e1a18d5890b4", - "_analyticRulecontentId1": "[variables('analyticRulecontentId1')]", - "analyticRuleId1": "[resourceId('Microsoft.SecurityInsights/AlertRuleTemplates', variables('analyticRulecontentId1'))]", - "analyticRuleTemplateSpecName1": "[concat(parameters('workspace'),'-ar-',uniquestring(variables('_analyticRulecontentId1')))]" + "playbookTemplateSpecName10": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat(parameters('workspace'),'-pl-',uniquestring(variables('_playbookContentId10'))))]", + "_playbookcontentProductId10": "[concat(take(variables('_solutionId'),50),'-','pl','-', uniqueString(concat(variables('_solutionId'),'-','Playbook','-',variables('_playbookContentId10'),'-', variables('playbookVersion10'))))]", + "_solutioncontentProductId": "[concat(take(variables('_solutionId'),50),'-','sl','-', uniqueString(concat(variables('_solutionId'),'-','Solution','-',variables('_solutionId'),'-', variables('_solutionVersion'))))]" }, "resources": [ { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('workbookTemplateSpecName1')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Workbook" - }, - "properties": { - "description": "Tanium Workbook with template", - "displayName": "Tanium workbook template" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('workbookTemplateSpecName1'),'/',variables('workbookVersion1'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Workbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('workbookTemplateSpecName1'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "TaniumWorkbookWorkbook with template version 2.0.1", + "description": "TaniumWorkbook Workbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('workbookVersion1')]", @@ -172,7 +163,7 @@ }, "properties": { "displayName": "[parameters('workbook1-name')]", - "serializedData": "{\"version\":\"Notebook/1.0\",\"items\":[{\"type\":11,\"content\":{\"version\":\"LinkItem/1.0\",\"style\":\"tabs\",\"links\":[{\"id\":\"885a9b5d-b2d6-4316-a6f9-6f65941b55b8\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Threat Response\",\"subTarget\":\"Threat Response\",\"style\":\"link\"},{\"id\":\"786ffe19-a17d-4ca9-9355-f97406ae048f\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Comply\",\"subTarget\":\"Comply\",\"preText\":\"Comply\",\"style\":\"link\"},{\"id\":\"efd238ee-2305-4384-a38c-a96d850ab4c9\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Discover\",\"subTarget\":\"Discover\",\"style\":\"link\"},{\"id\":\"a34745a8-6073-484d-adc5-d5c8e7fb9209\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Microsoft Tooling Health\",\"subTarget\":\"Microsoft Tooling Health\",\"style\":\"link\"},{\"id\":\"32a1a85f-978f-4b42-b27f-41cfb90e4e14\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Patch\",\"subTarget\":\"Patch\",\"style\":\"link\"}]},\"name\":\"links - 8\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Top mission critical computers with CVSS hits >= 9.0\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL \\n| join TaniumMainAsset_CL on Computer_Name_s| where CVSS_Score_s startswith \\\"9\\\"\\n| extend Host_0_HostName = Computer_Name_s\\n| extend Malware_0_Name = CVE_s\\n| extend IP_0_Address = IP_Address_s\\n| summarize count() by Computer_Name_s | limit 4\\n| sort by count_\\n\",\"size\":4,\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"tiles\",\"tileSettings\":{\"showBorder\":false,\"titleContent\":{\"columnMatch\":\"Computer_Name_s\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"count_\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"graphSettings\":{\"type\":0,\"topContent\":{\"columnMatch\":\"Computer_Name_s\",\"formatter\":1},\"centerContent\":{\"columnMatch\":\"count_\",\"formatter\":1,\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"mapSettings\":{\"locInfo\":\"LatLong\",\"sizeSettings\":\"count_\",\"sizeAggregation\":\"Sum\",\"legendMetric\":\"count_\",\"legendAggregation\":\"Sum\",\"itemColorSettings\":{\"type\":\"heatmap\",\"colorAggregation\":\"Sum\",\"nodeColorField\":\"count_\",\"heatmapPalette\":\"greenRed\"}}},\"name\":\"query - 2\"},{\"type\":1,\"content\":{\"json\":\"## Top operating systems with CVSS hits >= 9.0\"},\"name\":\"text - 4\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL \\n| join TaniumMainAsset_CL on Computer_Name_s| where CVSS_Score_s startswith \\\"9\\\"\\n| extend Host_0_HostName = Computer_Name_s\\n| extend Malware_0_Name = CVE_s\\n| extend IP_0_Address = IP_Address_s\\n| summarize count() by Operating_System_Generation_s\\n| sort by count_\",\"size\":4,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\",\"tileSettings\":{\"titleContent\":{\"columnMatch\":\"Operating_System_Generation_s\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"count_\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}},\"showBorder\":false}},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Vulnerability distribution by year\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL\\n|distinct CVE_Year_s,Computer_Name_s, CVE_s\\n|summarize count() by CVE_Year_s\\n|render barchart \\n|sort by CVE_Year_s asc\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Vulnerability Distribution by OS\"},\"name\":\"text - 5\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL\\n|distinct CVE_s, Computer_Name_s, Operating_System_Generation_s\\n|summarize count() by Operating_System_Generation_s\\n|render barchart\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 4\"},{\"type\":1,\"content\":{\"json\":\"## Vulnerability Distribution by Severity\"},\"name\":\"text - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL\\n|distinct CVE_s,Severity_s\\n|summarize count() by Severity_s\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"graph\",\"tileSettings\":{\"showBorder\":false,\"titleContent\":{\"columnMatch\":\"Severity_s\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"count_\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"graphSettings\":{\"type\":2,\"topContent\":{\"columnMatch\":\"Severity_s\",\"formatter\":1},\"centerContent\":{\"columnMatch\":\"count_\",\"formatter\":1,\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}},\"nodeIdField\":\"Severity_s\",\"graphOrientation\":3,\"showOrientationToggles\":false,\"nodeSize\":\"\",\"staticNodeSize\":100,\"colorSettings\":\"\",\"hivesMargin\":5},\"textSettings\":{\"style\":\"bignumber\"}},\"name\":\"query - 7\"},{\"type\":1,\"content\":{\"json\":\"## System Outliers (Based on CVE Count & Aggregate CVSS Score)\\n\"},\"name\":\"text - 14\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL\\n|join kind=inner TaniumMainAsset_CL on Computer_Name_s\\n|distinct CVE_s,Computer_Name_s,CVSS_Score_s, Operating_System_Generation_s\\n|summarize CVECount=dcount(CVE_s), cvss_endpoint_score=sum(todecimal(CVSS_Score_s)) by Computer_Name_s, Operating_System_Generation_s\\n|project cvss_endpoint_score, CVECount, Computer_Name_s, Operating_System_Generation_s\\n|render scatterchart\\n|sort by cvss_endpoint_score asc\",\"size\":0,\"timeContext\":{\"durationMs\":604800000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"scatterchart\",\"tileSettings\":{\"showBorder\":false,\"titleContent\":{\"columnMatch\":\"Computer_Name_s\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"cvss_endpoint_score\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"graphSettings\":{\"type\":0,\"topContent\":{\"columnMatch\":\"Computer_Name_s\",\"formatter\":1},\"centerContent\":{\"columnMatch\":\"cvss_endpoint_score\",\"formatter\":1,\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"chartSettings\":{\"xAxis\":\"cvss_endpoint_score\",\"yAxis\":[\"CVECount\"],\"showLegend\":true,\"customThresholdLine\":\"{cvecount}\",\"customThresholdLineStyle\":5},\"mapSettings\":{\"locInfo\":\"LatLong\",\"sizeSettings\":\"cvss_endpoint_score\",\"sizeAggregation\":\"Sum\",\"legendMetric\":\"cvss_endpoint_score\",\"legendAggregation\":\"Sum\",\"itemColorSettings\":{\"type\":\"heatmap\",\"colorAggregation\":\"Sum\",\"nodeColorField\":\"cvss_endpoint_score\",\"heatmapPalette\":\"greenRed\"}}},\"name\":\"query - 15\"},{\"type\":1,\"content\":{\"json\":\"## Compliance Benchmark - Pass Rate\"},\"name\":\"text - 10\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyCompliance_CL | where Rule_ID_s <> \\\"\\\"\\n|summarize Total=count(), Pass=countif(Status_Category_s has \\\"Pass\\\"), Fail=countif(Status_Category_s has \\\"Fail\\\")\\n|extend PassRate=(Pass*1.0/Total)*100\\n|project PassRate\",\"size\":1,\"timeContext\":{\"durationMs\":604800000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"tiles\",\"tileSettings\":{\"titleContent\":{\"columnMatch\":\"PassRate\",\"formatter\":12,\"formatOptions\":{\"palette\":\"redBright\"}},\"showBorder\":false}},\"name\":\"query - 11\"},{\"type\":1,\"content\":{\"json\":\"## Top 10 Benchmark Failures\"},\"name\":\"text - 12\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyCompliance_CL \\n|where Rule_ID_s <> \\\"\\\" and Status_Category_s has \\\"fail\\\"\\n|summarize Count=count() by RuleID=Rule_ID_s\\n|top 10 by Count\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 13\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Comply\"},\"customWidth\":\"100\",\"name\":\"cvss_group\",\"styleSettings\":{\"maxWidth\":\"100\"}},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Unmanaged OS Platform\\n\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDiscoverUnmanagedAssets_CL\\n|where Os_s <> \\\"\\\" \\n|distinct MacAddress_s,Os_s\\n|summarize count() by Os_s\\n\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"name\":\"query - 1\"},{\"type\":1,\"content\":{\"json\":\"## Unmanaged Device Type\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDiscoverUnmanagedAssets_CL\\n|where MacOrganization_s <> \\\"\\\" \\n|distinct MacAddress_s,MacOrganization_s\\n|summarize count() by MacOrganization_s\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Unmanaged Open Ports\"},\"name\":\"text - 4\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDiscoverUnmanagedAssets_CL\\n|where Ports_s <> \\\"\\\" \\n|distinct MacAddress_s,Ports_s\\n|summarize count() by Ports_s\\n\\n\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"name\":\"query - 5\"},{\"type\":1,\"content\":{\"json\":\"## All Unmanaged Assets\"},\"name\":\"text - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDiscoverUnmanagedAssets_CL\\n| where HostName_s <> \\\"\\\"\\n| project Hostname=HostName_s, MacAddres=MacAddress_s, IPAddress, MacOrganization=MacOrganization_s, LastDiscoveredTime=LastDiscoveredAt_s\\n| sort by LastDiscoveredTime\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 7\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Discover\"},\"name\":\"discover_group\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"title\":\"MIcrosoft Tooling Health \",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Defender AV Status\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDefenderHealth_CL\\n|where Antivirus_State_s <> \\\"\\\"\\n|summarize count () by Antivirus_State_s\\n|project Antivirus_State=Antivirus_State_s, Count=count_\\n|render piechart \\n\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 1\"},{\"type\":1,\"content\":{\"json\":\"## Defender AV Process Status\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDefenderHealth_CL\\n|where Defender_Process_s <> \\\"\\\"\\n|summarize count () by Defender_Process_s\\n|project Defender_Process_Status=Defender_Process_s, Count=count_\\n|render piechart \\n\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Defender AV Signature Update Age\"},\"name\":\"text - 4\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDefenderHealth_CL\\n|where Signature_Update_Age_s <> \\\"\\\"\\n|summarize count () by Signature_Update_Age=Signature_Update_Age_s\\n|project Signature_Update_Age=Signature_Update_Age, Count=count_\\n|render columnchart \",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 5\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Microsoft Tooling Health\"},\"customWidth\":\"50\",\"name\":\"group - 5\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"title\":\"MEMCM Health\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## MEMCM Health Status\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumSCCMClientHealth_CL\\n|where Health_Status_s !has \\\"N/A\\\"\\n|project Computer_Name=Computer_Name_s,Health_Status=Health_Status_s, Reason=Reason_s\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 1\"},{\"type\":1,\"content\":{\"json\":\"## MEMCM Health Issues\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumSCCMClientHealth_CL\\n|where Reason_s <> \\\"\\\"\\n|summarize count() by Reason_s\\n|project Health_Status=Reason_s,Count=count_\\n|render piechart\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 3\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Microsoft Tooling Health\"},\"customWidth\":\"50\",\"name\":\"sccm_group\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Intel Names over time\"},\"name\":\"text - 1\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n|project Computer_Name_s,Timestamp_t,Intel_Name_s\\n|summarize count () by Timestamp_t, Intel_Name_s\\n|render areachart\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 0\"},{\"type\":1,\"content\":{\"json\":\"## Threat Response Alert Types\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n| summarize count() by Intel_Type_s\\n| render piechart \",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## THR Alert by User\\n\"},\"name\":\"text - 4\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n| summarize count() by Match_Details_match_properties_user_s\\n| render piechart \",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 5\"},{\"type\":1,\"content\":{\"json\":\"## Threat Response Alerts by Process Name\"},\"name\":\"text - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n| where isnotempty(Match_Details_match_properties_name_s)\\n| extend ActingProcessName = Match_Details_match_properties_name_s\\n| summarize event_count=count() by bin(Timestamp_t, 7d), ActingProcessName\\n| top 20 by event_count\\n| render barchart\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 7\"},{\"type\":1,\"content\":{\"json\":\"## All Alerts by Computer Name\"},\"name\":\"text - 8\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n|summarize count() by Computer_Name_s, Intel_Name_s\\n|project-rename Computer_Name=Computer_Name_s, Intel_Name=Intel_Name_s, Count=count_\\n|sort by Count\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 9\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Threat Response\"},\"name\":\"Threat Response\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Reboot Required\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumHighUptime_CL\\n|project TimeGenerated, Computer_Name_s,Reboot_Required_s\\n|where Reboot_Required_s contains \\\"Yes\\\"\\n|count\",\"size\":4,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"card\",\"tileSettings\":{\"showBorder\":false},\"textSettings\":{\"style\":\"bignumber\"}},\"name\":\"query - 1\"},{\"type\":1,\"content\":{\"json\":\"## Endpoints with High Uptime (>30 days)\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumHighUptime_CL\\n|where High_Uptime_s !in (\\\"Less than 30\\\", \\\"N/A\\\")\\n|extend Days=split(High_Uptime_s,\\\" \\\",0)\\n|project Computer_Name=Computer_Name_s,toint(Days=Days[0])\",\"size\":1,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"table\",\"tileSettings\":{\"showBorder\":false,\"titleContent\":{\"columnMatch\":\"Computer_Name\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"Days\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"graphSettings\":{\"type\":0}},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Patch Compliance - All Patches\"},\"name\":\"text - 4\",\"styleSettings\":{\"margin\":\"50\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumPatchListCompliance_CL\\n|where Patch_List_Name_s == \\\"All Patches\\\"\\n|summarize count () by Compliance_Status_s\\n|render piechart \",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 5\"},{\"type\":1,\"content\":{\"json\":\"## Severity of missing Patches\\n\"},\"name\":\"text - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumPatchListApplicability_CL\\n|where Superseded_s has \\\"False\\\" and Install_Status_s has \\\"Not Installed\\\"\\n|summarize count() by Severity_s\\n|render piechart \",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 7\"},{\"type\":1,\"content\":{\"json\":\"## Patch by install status\"},\"name\":\"text - 8\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumPatchListApplicability_CL\\n|where Superseded_s has \\\"false\\\"\\n|summarize count() by Install_Status_s,Severity_s\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"categoricalbar\",\"chartSettings\":{\"seriesLabelSettings\":[{\"seriesName\":\"Not Installed\",\"color\":\"red\"},{\"seriesName\":\"Installed\",\"color\":\"green\"}]}},\"name\":\"query - 9\"},{\"type\":1,\"content\":{\"json\":\"## Important/Critical Missing Patches by Year\"},\"name\":\"text - 10\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumPatchListApplicability_CL\\n|distinct Title_s,Install_Status_s,Severity_s,Release_Date_s\\n|where Install_Status_s has \\\"Not Installed\\\"\\n|where Severity_s in (\\\"Critical\\\", \\\"Important\\\")\\n|extend Year=(split(Release_Date_s,\\\"/\\\",2))\\n|summarize count() by Year=tostring(Year[0])\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"categoricalbar\"},\"name\":\"query - 11\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Patch\"},\"name\":\"Patch\"}],\"fallbackResourceIds\":\"[]\",\"fromTemplateId\":\"sentinel-TaniumWorkbook\",\"$schema\":\"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"}\n", + "serializedData": "{\"version\":\"Notebook/1.0\",\"items\":[{\"type\":11,\"content\":{\"version\":\"LinkItem/1.0\",\"style\":\"tabs\",\"links\":[{\"id\":\"885a9b5d-b2d6-4316-a6f9-6f65941b55b8\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Threat Response\",\"subTarget\":\"Threat Response\",\"style\":\"link\"},{\"id\":\"786ffe19-a17d-4ca9-9355-f97406ae048f\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Comply\",\"subTarget\":\"Comply\",\"preText\":\"Comply\",\"style\":\"link\"},{\"id\":\"efd238ee-2305-4384-a38c-a96d850ab4c9\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Discover\",\"subTarget\":\"Discover\",\"style\":\"link\"},{\"id\":\"a34745a8-6073-484d-adc5-d5c8e7fb9209\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Microsoft Tooling Health\",\"subTarget\":\"Microsoft Tooling Health\",\"style\":\"link\"},{\"id\":\"32a1a85f-978f-4b42-b27f-41cfb90e4e14\",\"cellValue\":\"selectedTab\",\"linkTarget\":\"parameter\",\"linkLabel\":\"Patch\",\"subTarget\":\"Patch\",\"style\":\"link\"}]},\"name\":\"links - 8\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Top mission critical computers with CVSS hits >= 9.0\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL \\n| join TaniumMainAsset_CL on Computer_Name_s| where CVSS_Score_s startswith \\\"9\\\"\\n| extend Host_0_HostName = Computer_Name_s\\n| extend Malware_0_Name = CVE_s\\n| extend IP_0_Address = IP_Address_s\\n| summarize count() by Computer_Name_s | limit 4\\n| sort by count_\\n\",\"size\":4,\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"tiles\",\"tileSettings\":{\"showBorder\":false,\"titleContent\":{\"columnMatch\":\"Computer_Name_s\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"count_\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"graphSettings\":{\"type\":0,\"topContent\":{\"columnMatch\":\"Computer_Name_s\",\"formatter\":1},\"centerContent\":{\"columnMatch\":\"count_\",\"formatter\":1,\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"mapSettings\":{\"locInfo\":\"LatLong\",\"sizeSettings\":\"count_\",\"sizeAggregation\":\"Sum\",\"legendMetric\":\"count_\",\"legendAggregation\":\"Sum\",\"itemColorSettings\":{\"type\":\"heatmap\",\"colorAggregation\":\"Sum\",\"nodeColorField\":\"count_\",\"heatmapPalette\":\"greenRed\"}}},\"name\":\"query - 2\"},{\"type\":1,\"content\":{\"json\":\"## Top operating systems with CVSS hits >= 9.0\"},\"name\":\"text - 4\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL \\n| join TaniumMainAsset_CL on Computer_Name_s| where CVSS_Score_s startswith \\\"9\\\"\\n| extend Host_0_HostName = Computer_Name_s\\n| extend Malware_0_Name = CVE_s\\n| extend IP_0_Address = IP_Address_s\\n| summarize count() by Operating_System_Generation_s\\n| sort by count_\",\"size\":4,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\",\"tileSettings\":{\"titleContent\":{\"columnMatch\":\"Operating_System_Generation_s\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"count_\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}},\"showBorder\":false}},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Vulnerability distribution by year\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL\\n|distinct CVE_Year_s,Computer_Name_s, CVE_s\\n|summarize count() by CVE_Year_s\\n|render barchart \\n|sort by CVE_Year_s asc\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Vulnerability Distribution by OS\"},\"name\":\"text - 5\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL\\n|distinct CVE_s, Computer_Name_s, Operating_System_Generation_s\\n|summarize count() by Operating_System_Generation_s\\n|render barchart\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 4\"},{\"type\":1,\"content\":{\"json\":\"## Vulnerability Distribution by Severity\"},\"name\":\"text - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL\\n|distinct CVE_s,Severity_s\\n|summarize count() by Severity_s\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"graph\",\"tileSettings\":{\"showBorder\":false,\"titleContent\":{\"columnMatch\":\"Severity_s\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"count_\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"graphSettings\":{\"type\":2,\"topContent\":{\"columnMatch\":\"Severity_s\",\"formatter\":1},\"centerContent\":{\"columnMatch\":\"count_\",\"formatter\":1,\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}},\"nodeIdField\":\"Severity_s\",\"graphOrientation\":3,\"showOrientationToggles\":false,\"staticNodeSize\":100,\"hivesMargin\":5},\"textSettings\":{\"style\":\"bignumber\"}},\"name\":\"query - 7\"},{\"type\":1,\"content\":{\"json\":\"## System Outliers (Based on CVE Count & Aggregate CVSS Score)\\n\"},\"name\":\"text - 14\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyVulnerabilities_CL\\n|join kind=inner TaniumMainAsset_CL on Computer_Name_s\\n|distinct CVE_s,Computer_Name_s,CVSS_Score_s, Operating_System_Generation_s\\n|summarize CVECount=dcount(CVE_s), cvss_endpoint_score=sum(todecimal(CVSS_Score_s)) by Computer_Name_s, Operating_System_Generation_s\\n|project cvss_endpoint_score, CVECount, Computer_Name_s, Operating_System_Generation_s\\n|render scatterchart\\n|sort by cvss_endpoint_score asc\",\"size\":0,\"timeContext\":{\"durationMs\":604800000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"scatterchart\",\"tileSettings\":{\"showBorder\":false,\"titleContent\":{\"columnMatch\":\"Computer_Name_s\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"cvss_endpoint_score\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"graphSettings\":{\"type\":0,\"topContent\":{\"columnMatch\":\"Computer_Name_s\",\"formatter\":1},\"centerContent\":{\"columnMatch\":\"cvss_endpoint_score\",\"formatter\":1,\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"chartSettings\":{\"xAxis\":\"cvss_endpoint_score\",\"yAxis\":[\"CVECount\"],\"showLegend\":true,\"customThresholdLine\":\"{cvecount}\",\"customThresholdLineStyle\":5},\"mapSettings\":{\"locInfo\":\"LatLong\",\"sizeSettings\":\"cvss_endpoint_score\",\"sizeAggregation\":\"Sum\",\"legendMetric\":\"cvss_endpoint_score\",\"legendAggregation\":\"Sum\",\"itemColorSettings\":{\"type\":\"heatmap\",\"colorAggregation\":\"Sum\",\"nodeColorField\":\"cvss_endpoint_score\",\"heatmapPalette\":\"greenRed\"}}},\"name\":\"query - 15\"},{\"type\":1,\"content\":{\"json\":\"## Compliance Benchmark - Pass Rate\"},\"name\":\"text - 10\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyCompliance_CL | where Rule_ID_s <> \\\"\\\"\\n|summarize Total=count(), Pass=countif(Status_Category_s has \\\"Pass\\\"), Fail=countif(Status_Category_s has \\\"Fail\\\")\\n|extend PassRate=(Pass*1.0/Total)*100\\n|project PassRate\",\"size\":1,\"timeContext\":{\"durationMs\":604800000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"tiles\",\"tileSettings\":{\"titleContent\":{\"columnMatch\":\"PassRate\",\"formatter\":12,\"formatOptions\":{\"palette\":\"redBright\"}},\"showBorder\":false}},\"name\":\"query - 11\"},{\"type\":1,\"content\":{\"json\":\"## Top 10 Benchmark Failures\"},\"name\":\"text - 12\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumComplyCompliance_CL \\n|where Rule_ID_s <> \\\"\\\" and Status_Category_s has \\\"fail\\\"\\n|summarize Count=count() by RuleID=Rule_ID_s\\n|top 10 by Count\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 13\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Comply\"},\"customWidth\":\"100\",\"name\":\"cvss_group\",\"styleSettings\":{\"maxWidth\":\"100\"}},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Unmanaged OS Platform\\n\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDiscoverUnmanagedAssets_CL\\n|where Os_s <> \\\"\\\" \\n|distinct MacAddress_s,Os_s\\n|summarize count() by Os_s\\n\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"name\":\"query - 1\"},{\"type\":1,\"content\":{\"json\":\"## Unmanaged Device Type\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDiscoverUnmanagedAssets_CL\\n|where MacOrganization_s <> \\\"\\\" \\n|distinct MacAddress_s,MacOrganization_s\\n|summarize count() by MacOrganization_s\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Unmanaged Open Ports\"},\"name\":\"text - 4\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDiscoverUnmanagedAssets_CL\\n|where Ports_s <> \\\"\\\" \\n|distinct MacAddress_s,Ports_s\\n|summarize count() by Ports_s\\n\\n\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"piechart\"},\"name\":\"query - 5\"},{\"type\":1,\"content\":{\"json\":\"## All Unmanaged Assets\"},\"name\":\"text - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDiscoverUnmanagedAssets_CL\\n| where HostName_s <> \\\"\\\"\\n| project Hostname=HostName_s, MacAddres=MacAddress_s, IPAddress, MacOrganization=MacOrganization_s, LastDiscoveredTime=LastDiscoveredAt_s\\n| sort by LastDiscoveredTime\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 7\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Discover\"},\"name\":\"discover_group\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"title\":\"MIcrosoft Tooling Health \",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Defender AV Status\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDefenderHealth_CL\\n|where Antivirus_State_s <> \\\"\\\"\\n|summarize count () by Antivirus_State_s\\n|project Antivirus_State=Antivirus_State_s, Count=count_\\n|render piechart \\n\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 1\"},{\"type\":1,\"content\":{\"json\":\"## Defender AV Process Status\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDefenderHealth_CL\\n|where Defender_Process_s <> \\\"\\\"\\n|summarize count () by Defender_Process_s\\n|project Defender_Process_Status=Defender_Process_s, Count=count_\\n|render piechart \\n\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Defender AV Signature Update Age\"},\"name\":\"text - 4\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumDefenderHealth_CL\\n|where Signature_Update_Age_s <> \\\"\\\"\\n|summarize count () by Signature_Update_Age=Signature_Update_Age_s\\n|project Signature_Update_Age=Signature_Update_Age, Count=count_\\n|render columnchart \",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 5\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Microsoft Tooling Health\"},\"customWidth\":\"50\",\"name\":\"group - 5\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"title\":\"MEMCM Health\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## MEMCM Health Status\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumSCCMClientHealth_CL\\n|where Health_Status_s !has \\\"N/A\\\"\\n|project Computer_Name=Computer_Name_s,Health_Status=Health_Status_s, Reason=Reason_s\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 1\"},{\"type\":1,\"content\":{\"json\":\"## MEMCM Health Issues\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumSCCMClientHealth_CL\\n|where Reason_s <> \\\"\\\"\\n|summarize count() by Reason_s\\n|project Health_Status=Reason_s,Count=count_\\n|render piechart\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 3\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Microsoft Tooling Health\"},\"customWidth\":\"50\",\"name\":\"sccm_group\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Intel Names over time\"},\"name\":\"text - 1\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n|project Computer_Name_s,Timestamp_t,Intel_Name_s\\n|summarize count () by Timestamp_t, Intel_Name_s\\n|render areachart\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 0\"},{\"type\":1,\"content\":{\"json\":\"## Threat Response Alert Types\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n| summarize count() by Intel_Type_s\\n| render piechart \",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## THR Alert by User\\n\"},\"name\":\"text - 4\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n| summarize count() by Match_Details_match_properties_user_s\\n| render piechart \",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 5\"},{\"type\":1,\"content\":{\"json\":\"## Threat Response Alerts by Process Name\"},\"name\":\"text - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n| where isnotempty(Match_Details_match_properties_name_s)\\n| extend ActingProcessName = Match_Details_match_properties_name_s\\n| summarize event_count=count() by bin(Timestamp_t, 7d), ActingProcessName\\n| top 20 by event_count\\n| render barchart\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 7\"},{\"type\":1,\"content\":{\"json\":\"## All Alerts by Computer Name\"},\"name\":\"text - 8\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumThreatResponse_CL\\n|summarize count() by Computer_Name_s, Intel_Name_s\\n|project-rename Computer_Name=Computer_Name_s, Intel_Name=Intel_Name_s, Count=count_\\n|sort by Count\",\"size\":0,\"timeContext\":{\"durationMs\":2592000000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 9\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Threat Response\"},\"name\":\"Threat Response\"},{\"type\":12,\"content\":{\"version\":\"NotebookGroup/1.0\",\"groupType\":\"editable\",\"items\":[{\"type\":1,\"content\":{\"json\":\"## Reboot Required\"},\"name\":\"text - 0\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumHighUptime_CL\\n|project TimeGenerated, Computer_Name_s,Reboot_Required_s\\n|where Reboot_Required_s contains \\\"Yes\\\"\\n|count\",\"size\":4,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"card\",\"tileSettings\":{\"showBorder\":false},\"textSettings\":{\"style\":\"bignumber\"}},\"name\":\"query - 1\"},{\"type\":1,\"content\":{\"json\":\"## Endpoints with High Uptime (>30 days)\"},\"name\":\"text - 2\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumHighUptime_CL\\n|where High_Uptime_s !in (\\\"Less than 30\\\", \\\"N/A\\\")\\n|extend Days=split(High_Uptime_s,\\\" \\\",0)\\n|project Computer_Name=Computer_Name_s,toint(Days=Days[0])\",\"size\":1,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"table\",\"tileSettings\":{\"showBorder\":false,\"titleContent\":{\"columnMatch\":\"Computer_Name\",\"formatter\":1},\"leftContent\":{\"columnMatch\":\"Days\",\"formatter\":12,\"formatOptions\":{\"palette\":\"auto\"},\"numberFormat\":{\"unit\":17,\"options\":{\"maximumSignificantDigits\":3,\"maximumFractionDigits\":2}}}},\"graphSettings\":{\"type\":0}},\"name\":\"query - 3\"},{\"type\":1,\"content\":{\"json\":\"## Patch Compliance - All Patches\"},\"name\":\"text - 4\",\"styleSettings\":{\"margin\":\"50\"}},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumPatchListCompliance_CL\\n|where Patch_List_Name_s == \\\"All Patches\\\"\\n|summarize count () by Compliance_Status_s\\n|render piechart \",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 5\"},{\"type\":1,\"content\":{\"json\":\"## Severity of missing Patches\\n\"},\"name\":\"text - 6\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumPatchListApplicability_CL\\n|where Superseded_s has \\\"False\\\" and Install_Status_s has \\\"Not Installed\\\"\\n|summarize count() by Severity_s\\n|render piechart \",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\"},\"name\":\"query - 7\"},{\"type\":1,\"content\":{\"json\":\"## Patch by install status\"},\"name\":\"text - 8\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumPatchListApplicability_CL\\n|where Superseded_s has \\\"false\\\"\\n|summarize count() by Install_Status_s,Severity_s\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"categoricalbar\",\"chartSettings\":{\"seriesLabelSettings\":[{\"seriesName\":\"Not Installed\",\"color\":\"red\"},{\"seriesName\":\"Installed\",\"color\":\"green\"}]}},\"name\":\"query - 9\"},{\"type\":1,\"content\":{\"json\":\"## Important/Critical Missing Patches by Year\"},\"name\":\"text - 10\"},{\"type\":3,\"content\":{\"version\":\"KqlItem/1.0\",\"query\":\"TaniumPatchListApplicability_CL\\n|distinct Title_s,Install_Status_s,Severity_s,Release_Date_s\\n|where Install_Status_s has \\\"Not Installed\\\"\\n|where Severity_s in (\\\"Critical\\\", \\\"Important\\\")\\n|extend Year=(split(Release_Date_s,\\\"/\\\",2))\\n|summarize count() by Year=tostring(Year[0])\",\"size\":0,\"timeContext\":{\"durationMs\":86400000},\"queryType\":0,\"resourceType\":\"microsoft.operationalinsights/workspaces\",\"visualization\":\"categoricalbar\"},\"name\":\"query - 11\"}]},\"conditionalVisibility\":{\"parameterName\":\"selectedTab\",\"comparison\":\"isEqualTo\",\"value\":\"Patch\"},\"name\":\"Patch\"}],\"fromTemplateId\":\"sentinel-TaniumWorkbook\",\"$schema\":\"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"}\n", "version": "1.0", "sourceId": "[variables('workspaceResourceId')]", "category": "sentinel" @@ -251,37 +242,30 @@ } } ] - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_workbookContentId1')]", + "contentKind": "Workbook", + "displayName": "[parameters('workbook1-name')]", + "contentProductId": "[variables('_workbookcontentProductId1')]", + "id": "[variables('_workbookcontentProductId1')]", + "version": "[variables('workbookVersion1')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName1')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-ComplyFindings playbook", - "displayName": "Tanium-ComplyFindings playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName1'),'/',variables('playbookVersion1'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName1'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-ComplyFindings Playbook with template version 2.0.1", + "description": "Tanium-ComplyFindings Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion1')]", @@ -312,10 +296,18 @@ }, "TaniumServerHostname": { "defaultValue": "hostname", - "type": "String", + "type": "string", "metadata": { "description": "The hostname for your Tanium server e.g. tanium.example.com" } + }, + "UseIPAddressIfPresent": { + "defaultValue": false, + "type": "bool" + }, + "LinkToCve": { + "defaultValue": true, + "type": "bool" } }, "variables": { @@ -342,7 +334,7 @@ }, { "type": "Microsoft.Logic/workflows", - "apiVersion": "2019-05-01", + "apiVersion": "2017-07-01", "name": "[[parameters('PlaybookName')]", "location": "[[variables('workspace-location-inline')]", "dependsOn": [ @@ -360,14 +352,20 @@ "$connections": { "type": "Object" }, + "TaniumApiGatewayApi": { + "type": "String" + }, "TaniumApiToken": { - "type": "securestring", + "type": "SecureString", "metadata": { "description": "The Tanium API Token provides access to the Tanium Server. Access is restricted to the level of access available to the user who generated the token." } }, - "TaniumApiGatewayApi": { - "type": "String" + "UseIPAddressIfPresent": { + "type": "Bool" + }, + "linkToCve": { + "type": "Bool" } }, "triggers": { @@ -387,38 +385,72 @@ } }, "actions": { - "Add_comment_to_incident_(V3)_2": { + "Condition": { + "actions": { + "Add_comment_to_incident_(V3)_4": { + "runAfter": { + "inject_url_into_table": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

@{body('inject_url_into_table')}

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "inject_url_into_table": { + "type": "JavaScriptCode", + "inputs": { + "code": "var d = workflowContext.actions.Make_table_for_cves.outputs.body;\r\n\r\nvar regex = /(cve-\\d+-\\d+)/gi; \r\n \r\nreturn d.replace(regex, function(match) { \r\n return '
' + match + ''; \r\n}); \r\n" + } + } + }, "runAfter": { - "Create_HTML_table": [ + "Make_table_for_cves": [ "Succeeded" ] }, - "type": "ApiConnection", - "inputs": { - "body": { - "incidentArmId": "@triggerBody()?['object']?['id']", - "message": "

@{body('Create_HTML_table')}

" - }, - "host": { - "connection": { - "name": "@parameters('$connections')['azuresentinel']['connectionId']" + "else": { + "actions": { + "Add_comment_to_incident_(V3)_2": { + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

@{body('Make_table_for_cves')}

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + } + } + }, + "expression": { + "and": [ + { + "equals": [ + "@parameters('LinkToCve')", + "@true" + ] } - }, - "method": "post", - "path": "/Incidents/Comment" - } - }, - "Create_HTML_table": { - "runAfter": { - "Flatten_API_Gateway_endpoints": [ - "Succeeded" ] }, - "type": "Table", - "inputs": { - "format": "HTML", - "from": "@body('Flatten_API_Gateway_endpoints')" - } + "type": "If" }, "Entities_-_Get_Hosts": { "type": "ApiConnection", @@ -488,7 +520,7 @@ }, "type": "JavaScriptCode", "inputs": { - "code": "var e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nfunction sensorReadings(r) {\r\n\treturn r.columns.map(c => {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" + "code": "function flD(e, l) {\r\n v = e.node.compliance.cveFindings.map((f) => {\r\n return {\r\n name: e.node.name,\r\n ipAddress: e.node.ipAddress,\r\n cveId: f.cveId,\r\n cvssScoreV3: f.cvssScoreV3,\r\n severity: f.severity,\r\n summary:\r\n f.summary.replace(/[^a-z0-9.-_, ]/gi,'').substr(0, 70)+\r\n (f.summary.length > 70 ? \"...\" : \"\"),\r\n };\r\n });\r\n return srtD(v).slice(0,l)\r\n }\r\n\r\nfunction srtD(fld) {\r\n fld.sort((a, b) => {\r\n if (a.cvssScoreV3 !== b.cvssScoreV3) {\r\n return b.cvssScoreV3 - a.cvssScoreV3; // Descending order by cvssScoreV3\r\n } else {\r\n // Descending order by CVE ID year\r\n let yearA = parseInt(a.cveId.split(\"-\")[1]);\r\n let yearB = parseInt(b.cveId.split(\"-\")[1]);\r\n return yearB - yearA;\r\n }\r\n });\r\n\r\n return fld;\r\n}\r\n\r\nlet e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nreturn e.map((item) => flD(item, 20))" } }, "For_each_incident_host": { @@ -496,33 +528,98 @@ "actions": { "If_ip_address": { "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] + "IP_Address_and_FQDN_is_provided_and_contains_\".\"": { + "actions": { + "Append_to_endpoint_filters_h+f.ip": { + "runAfter": { + "Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address": [ + "Succeeded" + ] + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "endpoint filters", + "value": "@outputs('Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address')" + } + }, + "Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address": { + "type": "Compose", + "inputs": { + "filters": [ + { + "op": "CONTAINS", + "path": "ipAddress", + "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" + }, + { + "any": true, + "filters": [ + { + "path": "name", + "value": "@{body('Parse_host_json')?['hostName']}" + }, + { + "path": "name", + "value": "@{trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))}" + } + ], + "negated": false + } + ] + } + } }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "type": "Compose", - "inputs": { - "filters": [ + "else": { + "actions": { + "Append_to_endpoint_filters_h.ip": { + "runAfter": { + "Compose_endpoint_filter_for_host_and_ip_address": [ + "Succeeded" + ] + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "endpoint filters", + "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" + } + }, + "Compose_endpoint_filter_for_host_and_ip_address": { + "type": "Compose", + "inputs": { + "filters": [ + { + "op": "CONTAINS", + "path": "ipAddress", + "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" + }, + { + "path": "name", + "value": "@{body('Parse_host_json')?['hostName']}" + } + ] + } + } + } + }, + "expression": { + "and": [ { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" + "not": { + "equals": [ + "@body('Parse_host_json')?['additionalData']?['FQDN']", + "@null" + ] + } }, { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" + "contains": [ + "@trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))", + "." + ] } ] - } + }, + "type": "If" } }, "runAfter": { @@ -532,28 +629,84 @@ }, "else": { "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] + "FQDN_is_provided_and_contains_\".\"": { + "actions": { + "Append_to_endpoint_filters_h+f": { + "runAfter": { + "Compose_endpoint_filter_for_(fqdn_or_host)_only": [ + "Succeeded" + ] + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "endpoint filters", + "value": "@outputs('Compose_endpoint_filter_for_(fqdn_or_host)_only')" + } + }, + "Compose_endpoint_filter_for_(fqdn_or_host)_only": { + "type": "Compose", + "inputs": { + "any": true, + "filters": [ + { + "path": "name", + "value": "@{body('Parse_host_json')?['hostName']}" + }, + { + "path": "name", + "value": "@{trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))}" + } + ], + "negated": false + } + } }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "type": "Compose", - "inputs": { - "filters": [ + "else": { + "actions": { + "Append_to_endpoint_filters_h": { + "runAfter": { + "Compose_endpoint_filter_for_host_only": [ + "Succeeded" + ] + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "endpoint filters", + "value": "@outputs('Compose_endpoint_filter_for_host_only')" + } + }, + "Compose_endpoint_filter_for_host_only": { + "type": "Compose", + "inputs": { + "filters": [ + { + "path": "name", + "value": "@{body('Parse_host_json')?['hostName']}" + } + ] + } + } + } + }, + "expression": { + "and": [ { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" + "not": { + "equals": [ + "@body('Parse_host_json')?['additionalData']?['FQDN']", + "@null" + ] + } + }, + { + "contains": [ + "@trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))", + "." + ] } ] - } + }, + "type": "If" } } }, @@ -566,10 +719,17 @@ "@null" ] } + }, + { + "equals": [ + "@parameters('UseIPAddressIfPresent')", + "@true" + ] } ] }, - "type": "If" + "type": "If", + "description": "Added AND false to always go down False line for now = IGNORE IP Address (dynamic environments)" }, "Parse_host_json": { "type": "ParseJson", @@ -652,7 +812,7 @@ { "name": "api gateway query", "type": "string", - "value": "query ($incidentHosts: EndpointFieldFilter, $endCursor: Cursor, $source: EndpointSource) {\n endpoints(source: $source, first: 10, after: $endCursor, filter: $incidentHosts) {\n edges {\n node {\n name\n ipAddress\n sensorReadings(\n sensors: [{name: \"Comply - Compliance Percentage\"}]\n ) {\n columns {\n sensor {\n name\n }\n name\n values\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n}" + "value": "query endpointVulnerabilityCVSSv2($incidentHosts: EndpointFieldFilter, $endCursor: Cursor, $source: EndpointSource) {\n\tendpoints(source: $source, first: 10, after: $endCursor, filter: $incidentHosts) {\n\t edges {\n\t\tnode {\n\t\t id\n\t\t name\n\t\t ipAddress\n\t\t compliance {\n\t\t\tcveFindings (\n\t\t\tfilter: {any: false, filters: [{any:true,path:\"cveId\",op:CONTAINS,value:\"-\"}]}\n\t\t\t){\n\t\t\t cveId\n\t\t\t cvssScoreV3\n\t\t\t lastFound\n\t\t\t severity\n\t\t\t summary\n\t\t\t}\n\t\t }\n\t\t}\n\t }\n\t pageInfo {\n\t\tstartCursor\n\t\tendCursor\n\t\thasPreviousPage\n\t\thasNextPage\n\t }\n\t}\n }\n" } ] }, @@ -694,7 +854,7 @@ }, "Initialize_API_Gateway_query_cursor": { "runAfter": { - "Parse_API_Gateway_response": [ + "Stop_if_endcursor_is_null_due_to_no_tanium_host_matches": [ "Succeeded" ] }, @@ -763,6 +923,17 @@ ] } }, + "Make_table_for_cves": { + "runAfter": { + "Flatten_API_Gateway_endpoints": [ + "Succeeded" + ] + }, + "type": "JavaScriptCode", + "inputs": { + "code": "var d = workflowContext.actions.Flatten_API_Gateway_endpoints.outputs.body;\r\nconst gT = (d) => { \r\n if (!d || d.length === 0) return ''; \r\n let iK = [...new Set([].concat(...d.map(e => Object.keys(e[0]))))];\r\n\r\n let table = `${iK.map(k => ``).join('')}`; \r\n iK = iK.slice(2,10);\r\n \r\n let count = table.length; \r\n for (let i of d) { \r\n let rows = i.map(r => {return \"\" })\r\n rows[0] = rows[0].replace('
${k}
\" + iK.map(k => {return r[k]} ).join(\"\") + \"
', `
${i[0][\"name\"]}${i[0][\"ipAddress\"]}`)\r\n for (let r of rows) {\r\n if (count + r.length > 28000) break;\r\n table += r; \r\n count += r.length;\r\n } \r\n } \r\n return table + '
'; \r\n};\r\nreturn gT(d)" + } + }, "Paginate_API_Gateway_query_if_needed": { "actions": { "Until": { @@ -932,6 +1103,58 @@ "items": { "properties": { "node": { + "properties": { + "compliance": { + "properties": { + "cveFindings": { + "items": { + "properties": { + "cveId": { + "type": "string" + }, + "cvssScoreV3": { + "type": [ + "number", + "null" + ] + }, + "lastFound": { + "type": "string" + }, + "severity": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "type": "string" + } + }, + "required": [ + "cveId", + "cvssScoreV3", + "lastFound", + "severity", + "summary" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "ipAddress": { + "type": "string" + }, + "name": { + "type": "string" + } + }, "type": "object" } }, @@ -945,10 +1168,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -958,20 +1193,6 @@ } }, "type": "object" - }, - "errors": { - "items": { - "properties": { - "message": { - "type": "string" - } - }, - "required": [ - "message" - ], - "type": "object" - }, - "type": "array" } }, "type": "object" @@ -1020,6 +1241,53 @@ } } }, + "Stop_if_endcursor_is_null_due_to_no_tanium_host_matches": { + "actions": { + "Add_comment_to_incident_(V3)_3": { + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

No hosts were matched in Tanium

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Switch_to_TS_from_TDS_if_needed": { "actions": { "Requery_the_API_Gateway": { @@ -1117,6 +1385,12 @@ "TaniumApiToken": { "value": "[[parameters('TaniumApiToken')]" }, + "LinkToCve": { + "value": "[[parameters('LinkToCve')]" + }, + "UseIPAddressIfPresent": { + "value": "[[parameters('UseIPAddressIfPresent')]" + }, "TaniumApiGatewayApi": { "value": "[[variables('TaniumApiGatewayApi')]" } @@ -1158,7 +1432,7 @@ "description": "This playbook starts with a Microsoft Sentinel incident, gets the hosts associated with that incident, queries the Tanium API Gateway for Comply Findings for those hosts, and then adds a comment to the incident with that information.", "prerequisites": [ "1. Microsoft Sentinel incidents with associated hosts.", - "2. A [Tanium API Token](https://docs.tanium.com/platform_user/platform_user/console_api_tokens.html) granting access to your Tanium environment: the query will be made with the user priviledges of that token.", + "2. A [Tanium API Token](https://docs.tanium.com/platform_user/platform_user/console_api_tokens.html) granting access to your Tanium environment: the query will be made with the user privileges of that token.", "3. A hostname for your Tanium environment reachable from Logic Apps." ], "postDeploymentSteps": [ @@ -1170,7 +1444,7 @@ "tags": [ "Enrichment" ], - "lastUpdateTime": "2022-09-15T00:00:00Z", + "lastUpdateTime": "2023-11-30T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", @@ -1179,37 +1453,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId1')]", + "contentKind": "Playbook", + "displayName": "Tanium-ComplyFindings", + "contentProductId": "[variables('_playbookcontentProductId1')]", + "id": "[variables('_playbookcontentProductId1')]", + "version": "[variables('playbookVersion1')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName2')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-GeneralHostInfo playbook", - "displayName": "Tanium-GeneralHostInfo playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName2'),'/',variables('playbookVersion2'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName2'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-GeneralHostInfo Playbook with template version 2.0.1", + "description": "Tanium-GeneralHostInfo Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion2')]", @@ -2107,37 +2374,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId2')]", + "contentKind": "Playbook", + "displayName": "Tanium-GeneralHostInfo", + "contentProductId": "[variables('_playbookcontentProductId2')]", + "id": "[variables('_playbookcontentProductId2')]", + "version": "[variables('playbookVersion2')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName3')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-MSDefenderHealth playbook", - "displayName": "Tanium-MSDefenderHealth playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName3'),'/',variables('playbookVersion3'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName3'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-MSDefenderHealth Playbook with template version 2.0.1", + "description": "Tanium-MSDefenderHealth Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion3')]", @@ -3035,37 +3295,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId3')]", + "contentKind": "Playbook", + "displayName": "Tanium-MSDefenderHealth", + "contentProductId": "[variables('_playbookcontentProductId3')]", + "id": "[variables('_playbookcontentProductId3')]", + "version": "[variables('playbookVersion3')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName4')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-QuarantineHosts playbook", - "displayName": "Tanium-QuarantineHosts playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName4'),'/',variables('playbookVersion4'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName4'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-QuarantineHosts Playbook with template version 2.0.1", + "description": "Tanium-QuarantineHosts Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion4')]", @@ -5682,37 +5935,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId4')]", + "contentKind": "Playbook", + "displayName": "Tanium-QuarantineHosts", + "contentProductId": "[variables('_playbookcontentProductId4')]", + "id": "[variables('_playbookcontentProductId4')]", + "version": "[variables('playbookVersion4')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName5')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-ResolveThreatResponseAlert playbook", - "displayName": "Tanium-ResolveThreatResponseAlert playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName5'),'/',variables('playbookVersion5'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName5'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-ResolveThreatResponseAlert Playbook with template version 2.0.1", + "description": "Tanium-ResolveThreatResponseAlert Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion5')]", @@ -6015,37 +6261,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId5')]", + "contentKind": "Playbook", + "displayName": "Tanium-ResolveThreatResponseAlert", + "contentProductId": "[variables('_playbookcontentProductId5')]", + "id": "[variables('_playbookcontentProductId5')]", + "version": "[variables('playbookVersion5')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName6')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-SCCMClientHealth playbook", - "displayName": "Tanium-SCCMClientHealth playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName6'),'/',variables('playbookVersion6'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName6'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-SCCMClientHealth Playbook with template version 2.0.1", + "description": "Tanium-SCCMClientHealth Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion6')]", @@ -6943,37 +7182,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId6')]", + "contentKind": "Playbook", + "displayName": "Tanium-SCCMClientHealth", + "contentProductId": "[variables('_playbookcontentProductId6')]", + "id": "[variables('_playbookcontentProductId6')]", + "version": "[variables('playbookVersion6')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName7')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-UnquarantineHosts playbook", - "displayName": "Tanium-UnquarantineHosts playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName7'),'/',variables('playbookVersion7'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName7'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-UnquarantineHosts Playbook with template version 2.0.1", + "description": "Tanium-UnquarantineHosts Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion7')]", @@ -9552,37 +9784,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId7')]", + "contentKind": "Playbook", + "displayName": "Tanium-UnquarantineHosts", + "contentProductId": "[variables('_playbookcontentProductId7')]", + "id": "[variables('_playbookcontentProductId7')]", + "version": "[variables('playbookVersion7')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName8')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-SecurityPatches playbook", - "displayName": "Tanium-SecurityPatches playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName8'),'/',variables('playbookVersion8'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName8'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-SecurityPatches Playbook with template version 2.0.1", + "description": "Tanium-SecurityPatches Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion8')]", @@ -10926,37 +11151,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId8')]", + "contentKind": "Playbook", + "displayName": "Tanium-SecurityPatches", + "contentProductId": "[variables('_playbookcontentProductId8')]", + "id": "[variables('_playbookcontentProductId8')]", + "version": "[variables('playbookVersion8')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName9')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-Apply-SecurityPatches-WithoutReboot playbook", - "displayName": "Tanium-Apply-SecurityPatches-WithoutReboot playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName9'),'/',variables('playbookVersion9'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName9'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-Apply-SecurityPatches-WithoutReboot Playbook with template version 2.0.1", + "description": "Tanium-Apply-SecurityPatches-WithoutReboot Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion9')]", @@ -13986,37 +14204,30 @@ ] } } - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId9')]", + "contentKind": "Playbook", + "displayName": "Tanium-Apply-SecurityPatches-WithoutReboot", + "contentProductId": "[variables('_playbookcontentProductId9')]", + "id": "[variables('_playbookcontentProductId9')]", + "version": "[variables('playbookVersion9')]" } }, { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentTemplates", + "apiVersion": "2023-04-01-preview", "name": "[variables('playbookTemplateSpecName10')]", "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, - "properties": { - "description": "Tanium-Apply-SecurityPatches-WithReboot playbook", - "displayName": "Tanium-Apply-SecurityPatches-WithReboot playbook" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('playbookTemplateSpecName10'),'/',variables('playbookVersion10'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "Playbook" - }, "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('playbookTemplateSpecName10'))]" + "[extensionResourceId(resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspace')), 'Microsoft.SecurityInsights/contentPackages', variables('_solutionId'))]" ], "properties": { - "description": "Tanium-Apply-SecurityPatches-WithReboot Playbook with template version 2.0.1", + "description": "Tanium-Apply-SecurityPatches-WithReboot Playbook with template version 3.0.0", "mainTemplate": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "[variables('playbookVersion10')]", @@ -17046,142 +17257,35 @@ ] } } - } - } - }, - { - "type": "Microsoft.Resources/templateSpecs", - "apiVersion": "2022-02-01", - "name": "[variables('analyticRuleTemplateSpecName1')]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "properties": { - "description": "Tanium Analytics Rule 1 with template", - "displayName": "Tanium Analytics Rule template" - } - }, - { - "type": "Microsoft.Resources/templateSpecs/versions", - "apiVersion": "2022-02-01", - "name": "[concat(variables('analyticRuleTemplateSpecName1'),'/',variables('analyticRuleVersion1'))]", - "location": "[parameters('workspace-location')]", - "tags": { - "hidden-sentinelWorkspaceId": "[variables('workspaceResourceId')]", - "hidden-sentinelContentType": "AnalyticsRule" - }, - "dependsOn": [ - "[resourceId('Microsoft.Resources/templateSpecs', variables('analyticRuleTemplateSpecName1'))]" - ], - "properties": { - "description": "TaniumThreatResponseAlerts_AnalyticalRules Analytics Rule with template version 2.0.1", - "mainTemplate": { - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion": "[variables('analyticRuleVersion1')]", - "parameters": {}, - "variables": {}, - "resources": [ - { - "type": "Microsoft.SecurityInsights/AlertRuleTemplates", - "name": "[variables('AnalyticRulecontentId1')]", - "apiVersion": "2022-04-01-preview", - "kind": "Scheduled", - "location": "[parameters('workspace-location')]", - "properties": { - "description": "Alerts from Tanium Threat Response (THR) that can be acted upon by Microsoft Sentinel Playbook", - "displayName": "Tanium Threat Response Alerts", - "enabled": false, - "query": "let cap = (s:string) { strcat(toupper(substring(s,0,1)), substring(s,1)) };\nTaniumThreatResponse_CL\n| extend TaniumUrl = pack(\"computer_name\", Computer_Name_s, \"alert_guid\", Alert_Id_g, \"ip_address\", Computer_IP_s, \"platform\", Match_Details_finding_system_info_platform_s)\n| extend TaniumTHRLabel = strcat(cap(Intel_Type_s),\" - \", cap(Intel_Name_s), \" - \", cap(Match_Details_match_type_s))\n| where Computer_IP_s !contains \"N/A\"\n", - "queryFrequency": "PT5M", - "queryPeriod": "PT6M", - "severity": "High", - "suppressionDuration": "PT1H", - "suppressionEnabled": false, - "triggerOperator": "GreaterThan", - "triggerThreshold": 0, - "status": "Available", - "requiredDataConnectors": "[variables('TemplateEmptyArray')]", - "entityMappings": [ - { - "fieldMappings": [ - { - "columnName": "TaniumUrl", - "identifier": "Url" - } - ], - "entityType": "URL" - }, - { - "fieldMappings": [ - { - "columnName": "Computer_IP_s", - "identifier": "Address" - } - ], - "entityType": "IP" - }, - { - "fieldMappings": [ - { - "columnName": "Computer_Name_s", - "identifier": "HostName" - } - ], - "entityType": "Host" - }, - { - "fieldMappings": [ - { - "columnName": "TaniumTHRLabel", - "identifier": "Name" - } - ], - "entityType": "Malware" - } - ] - } - }, - { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", - "name": "[concat(parameters('workspace'),'/Microsoft.SecurityInsights/',concat('AnalyticsRule-', last(split(variables('analyticRuleId1'),'/'))))]", - "properties": { - "description": "Tanium Analytics Rule 1", - "parentId": "[variables('analyticRuleId1')]", - "contentId": "[variables('_analyticRulecontentId1')]", - "kind": "AnalyticsRule", - "version": "[variables('analyticRuleVersion1')]", - "source": { - "kind": "Solution", - "name": "Tanium", - "sourceId": "[variables('_solutionId')]" - }, - "author": { - "name": "Tanium", - "email": "[variables('_email')]" - }, - "support": { - "name": "Tanium Inc.", - "email": "support@tanium.com", - "tier": "Partner", - "link": "https://support.tanium.com" - } - } - } - ] - } + }, + "packageKind": "Solution", + "packageVersion": "[variables('_solutionVersion')]", + "packageName": "[variables('_solutionName')]", + "packageId": "[variables('_solutionId')]", + "contentSchemaVersion": "3.0.0", + "contentId": "[variables('_playbookContentId10')]", + "contentKind": "Playbook", + "displayName": "Tanium-Apply-SecurityPatches-WithReboot", + "contentProductId": "[variables('_playbookcontentProductId10')]", + "id": "[variables('_playbookcontentProductId10')]", + "version": "[variables('playbookVersion10')]" } }, { - "type": "Microsoft.OperationalInsights/workspaces/providers/metadata", - "apiVersion": "2022-01-01-preview", + "type": "Microsoft.OperationalInsights/workspaces/providers/contentPackages", + "apiVersion": "2023-04-01-preview", "location": "[parameters('workspace-location')]", "properties": { - "version": "2.0.1", + "version": "3.0.0", "kind": "Solution", - "contentSchemaVersion": "2.0.0", + "contentSchemaVersion": "3.0.0", + "displayName": "Tanium", + "publisherDisplayName": "Tanium Inc.", + "descriptionHtml": "

Note: There may be known issues pertaining to this Solution, please refer to them before installing.

\n

The Tanium solution for Microsoft Sentinel enables you to ingest Tanium Threat Response alerts as Microsoft Sentinel incidents as well as incorporate Tanium's real-time endpoint data.

\n

Workbooks: 1, Playbooks: 10

\n

Learn more about Microsoft Sentinel | Learn more about Solutions

\n", + "contentKind": "Solution", + "contentProductId": "[variables('_solutioncontentProductId')]", + "id": "[variables('_solutioncontentProductId')]", + "icon": "", "contentId": "[variables('_solutionId')]", "parentId": "[variables('_solutionId')]", "source": { @@ -17256,11 +17360,6 @@ "kind": "Playbook", "contentId": "[variables('_Tanium-Apply-SecurityPatches-WithReboot')]", "version": "[variables('playbookVersion10')]" - }, - { - "kind": "AnalyticsRule", - "contentId": "[variables('analyticRulecontentId1')]", - "version": "[variables('analyticRuleVersion1')]" } ] }, diff --git a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json index e503e7595fe..7d97573878f 100644 --- a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json @@ -6,7 +6,7 @@ "description": "This playbook starts with a Microsoft Sentinel incident, gets the hosts associated with that incident, queries the Tanium API Gateway for Comply Findings for those hosts, and then adds a comment to the incident with that information.", "prerequisites": [ "1. Microsoft Sentinel incidents with associated hosts.", - "2. A [Tanium API Token](https://docs.tanium.com/platform_user/platform_user/console_api_tokens.html) granting access to your Tanium environment: the query will be made with the user priviledges of that token.", + "2. A [Tanium API Token](https://docs.tanium.com/platform_user/platform_user/console_api_tokens.html) granting access to your Tanium environment: the query will be made with the user privileges of that token.", "3. A hostname for your Tanium environment reachable from Logic Apps." ], "postDeploymentSteps": [ @@ -14,7 +14,7 @@ ], "entities": [ "host" ], "tags": ["Enrichment"], - "lastUpdateTime": "2022-09-15T00:00:00.000Z", + "lastUpdateTime": "2023-11-30T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" @@ -50,10 +50,18 @@ }, "TaniumServerHostname": { "defaultValue": "hostname", - "type": "String", + "type": "string", "metadata": { "description": "The hostname for your Tanium server e.g. tanium.example.com" } + }, + "UseIPAddressIfPresent": { + "defaultValue": false, + "type": "bool" + }, + "LinkToCve": { + "defaultValue": true, + "type": "bool" } }, "variables": { @@ -62,26 +70,26 @@ }, "resources": [ { - "type": "Microsoft.Web/connections", - "apiVersion": "2018-07-01-preview", - "name": "[variables('AzureSentinelConnectionName')]", - "location": "[resourceGroup().location]", - "properties": { - "displayName": "[variables('AzureSentinelConnectionName')]", - "customParameterValues": {}, - "api": { - "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuresentinel')]" - } - } + "type": "Microsoft.Web/connections", + "apiVersion": "2018-07-01-preview", + "name": "[variables('AzureSentinelConnectionName')]", + "location": "[resourceGroup().location]", + "properties": { + "displayName": "[variables('AzureSentinelConnectionName')]", + "customParameterValues": {}, + "api": { + "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azuresentinel')]" + } + } }, { "type": "Microsoft.Logic/workflows", - "apiVersion": "2019-05-01", + "apiVersion": "2017-07-01", "name": "[parameters('PlaybookName')]", "location": "[resourceGroup().location]", "dependsOn": [ - "[resourceId('Microsoft.Web/connections', variables('AzureSentinelConnectionName'))]" - ], + "[resourceId('Microsoft.Web/connections', variables('AzureSentinelConnectionName'))]" + ], "properties": { "state": "Enabled", "integrationAccount": { @@ -95,14 +103,20 @@ "defaultValue": {}, "type": "Object" }, + "TaniumApiGatewayApi": { + "type": "String" + }, "TaniumApiToken": { - "type": "securestring", + "type": "SecureString", "metadata": { "description": "The Tanium API Token provides access to the Tanium Server. Access is restricted to the level of access available to the user who generated the token." } }, - "TaniumApiGatewayApi": { - "type": "String" + "UseIPAddressIfPresent": { + "type": "Bool" + }, + "linkToCve": { + "type": "Bool" } }, "triggers": { @@ -122,38 +136,74 @@ } }, "actions": { - "Add_comment_to_incident_(V3)_2": { + "Condition": { + "actions": { + "Add_comment_to_incident_(V3)_4": { + "runAfter": { + "inject_url_into_table": [ + "Succeeded" + ] + }, + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

@{body('inject_url_into_table')}

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "inject_url_into_table": { + "runAfter": {}, + "type": "JavaScriptCode", + "inputs": { + "code": "var d = workflowContext.actions.Make_table_for_cves.outputs.body;\r\n\r\nvar regex = /(cve-\\d+-\\d+)/gi; \r\n \r\nreturn d.replace(regex, function(match) { \r\n return '' + match + ''; \r\n}); \r\n" + } + } + }, "runAfter": { - "Create_HTML_table": [ + "Make_table_for_cves": [ "Succeeded" ] }, - "type": "ApiConnection", - "inputs": { - "body": { - "incidentArmId": "@triggerBody()?['object']?['id']", - "message": "

@{body('Create_HTML_table')}

" - }, - "host": { - "connection": { - "name": "@parameters('$connections')['azuresentinel']['connectionId']" + "else": { + "actions": { + "Add_comment_to_incident_(V3)_2": { + "runAfter": {}, + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

@{body('Make_table_for_cves')}

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + } + } + }, + "expression": { + "and": [ + { + "equals": [ + "@parameters('LinkToCve')", + "@true" + ] } - }, - "method": "post", - "path": "/Incidents/Comment" - } - }, - "Create_HTML_table": { - "runAfter": { - "Flatten_API_Gateway_endpoints": [ - "Succeeded" ] }, - "type": "Table", - "inputs": { - "format": "HTML", - "from": "@body('Flatten_API_Gateway_endpoints')" - } + "type": "If" }, "Entities_-_Get_Hosts": { "runAfter": {}, @@ -225,7 +275,7 @@ }, "type": "JavaScriptCode", "inputs": { - "code": "var e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nfunction sensorReadings(r) {\r\n\treturn r.columns.map(c => {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" + "code": "function flD(e, l) {\r\n v = e.node.compliance.cveFindings.map((f) => {\r\n return {\r\n name: e.node.name,\r\n ipAddress: e.node.ipAddress,\r\n cveId: f.cveId,\r\n cvssScoreV3: f.cvssScoreV3,\r\n severity: f.severity,\r\n summary:\r\n f.summary.replace(/[^a-z0-9.-_, ]/gi,'').substr(0, 70)+\r\n (f.summary.length > 70 ? \"...\" : \"\"),\r\n };\r\n });\r\n return srtD(v).slice(0,l)\r\n }\r\n\r\nfunction srtD(fld) {\r\n fld.sort((a, b) => {\r\n if (a.cvssScoreV3 !== b.cvssScoreV3) {\r\n return b.cvssScoreV3 - a.cvssScoreV3; // Descending order by cvssScoreV3\r\n } else {\r\n // Descending order by CVE ID year\r\n let yearA = parseInt(a.cveId.split(\"-\")[1]);\r\n let yearB = parseInt(b.cveId.split(\"-\")[1]);\r\n return yearB - yearA;\r\n }\r\n });\r\n\r\n return fld;\r\n}\r\n\r\nlet e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nreturn e.map((item) => flD(item, 20))" } }, "For_each_incident_host": { @@ -233,34 +283,101 @@ "actions": { "If_ip_address": { "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] + "IP_Address_and_FQDN_is_provided_and_contains_\".\"": { + "actions": { + "Append_to_endpoint_filters_h+f.ip": { + "runAfter": { + "Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address": [ + "Succeeded" + ] + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "endpoint filters", + "value": "@outputs('Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address')" + } + }, + "Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address": { + "runAfter": {}, + "type": "Compose", + "inputs": { + "filters": [ + { + "op": "CONTAINS", + "path": "ipAddress", + "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" + }, + { + "any": true, + "filters": [ + { + "path": "name", + "value": "@{body('Parse_host_json')?['hostName']}" + }, + { + "path": "name", + "value": "@{trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))}" + } + ], + "negated": false + } + ] + } + } }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ + "else": { + "actions": { + "Append_to_endpoint_filters_h.ip": { + "runAfter": { + "Compose_endpoint_filter_for_host_and_ip_address": [ + "Succeeded" + ] + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "endpoint filters", + "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" + } + }, + "Compose_endpoint_filter_for_host_and_ip_address": { + "runAfter": {}, + "type": "Compose", + "inputs": { + "filters": [ + { + "op": "CONTAINS", + "path": "ipAddress", + "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" + }, + { + "path": "name", + "value": "@{body('Parse_host_json')?['hostName']}" + } + ] + } + } + } + }, + "expression": { + "and": [ { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" + "not": { + "equals": [ + "@body('Parse_host_json')?['additionalData']?['FQDN']", + "@null" + ] + } }, { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" + "contains": [ + "@trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))", + "." + ] } ] - } + }, + "type": "If" } }, "runAfter": { @@ -270,29 +387,87 @@ }, "else": { "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] + "FQDN_is_provided_and_contains_\".\"": { + "actions": { + "Append_to_endpoint_filters_h+f": { + "runAfter": { + "Compose_endpoint_filter_for_(fqdn_or_host)_only": [ + "Succeeded" + ] + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "endpoint filters", + "value": "@outputs('Compose_endpoint_filter_for_(fqdn_or_host)_only')" + } + }, + "Compose_endpoint_filter_for_(fqdn_or_host)_only": { + "runAfter": {}, + "type": "Compose", + "inputs": { + "any": true, + "filters": [ + { + "path": "name", + "value": "@{body('Parse_host_json')?['hostName']}" + }, + { + "path": "name", + "value": "@{trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))}" + } + ], + "negated": false + } + } }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ + "else": { + "actions": { + "Append_to_endpoint_filters_h": { + "runAfter": { + "Compose_endpoint_filter_for_host_only": [ + "Succeeded" + ] + }, + "type": "AppendToArrayVariable", + "inputs": { + "name": "endpoint filters", + "value": "@outputs('Compose_endpoint_filter_for_host_only')" + } + }, + "Compose_endpoint_filter_for_host_only": { + "runAfter": {}, + "type": "Compose", + "inputs": { + "filters": [ + { + "path": "name", + "value": "@{body('Parse_host_json')?['hostName']}" + } + ] + } + } + } + }, + "expression": { + "and": [ + { + "not": { + "equals": [ + "@body('Parse_host_json')?['additionalData']?['FQDN']", + "@null" + ] + } + }, { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" + "contains": [ + "@trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))", + "." + ] } ] - } + }, + "type": "If" } } }, @@ -305,10 +480,17 @@ "@null" ] } + }, + { + "equals": [ + "@parameters('UseIPAddressIfPresent')", + "@true" + ] } ] }, - "type": "If" + "type": "If", + "description": "Added AND false to always go down False line for now = IGNORE IP Address (dynamic environments)" }, "Parse_host_json": { "runAfter": {}, @@ -392,7 +574,7 @@ { "name": "api gateway query", "type": "string", - "value": "query ($incidentHosts: EndpointFieldFilter, $endCursor: Cursor, $source: EndpointSource) {\n endpoints(source: $source, first: 10, after: $endCursor, filter: $incidentHosts) {\n edges {\n node {\n name\n ipAddress\n sensorReadings(\n sensors: [{name: \"Comply - Compliance Percentage\"}]\n ) {\n columns {\n sensor {\n name\n }\n name\n values\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n}" + "value": "query endpointVulnerabilityCVSSv2($incidentHosts: EndpointFieldFilter, $endCursor: Cursor, $source: EndpointSource) {\n\tendpoints(source: $source, first: 10, after: $endCursor, filter: $incidentHosts) {\n\t edges {\n\t\tnode {\n\t\t id\n\t\t name\n\t\t ipAddress\n\t\t compliance {\n\t\t\tcveFindings (\n\t\t\tfilter: {any: false, filters: [{any:true,path:\"cveId\",op:CONTAINS,value:\"-\"}]}\n\t\t\t){\n\t\t\t cveId\n\t\t\t cvssScoreV3\n\t\t\t lastFound\n\t\t\t severity\n\t\t\t summary\n\t\t\t}\n\t\t }\n\t\t}\n\t }\n\t pageInfo {\n\t\tstartCursor\n\t\tendCursor\n\t\thasPreviousPage\n\t\thasNextPage\n\t }\n\t}\n }\n" } ] }, @@ -434,7 +616,7 @@ }, "Initialize_API_Gateway_query_cursor": { "runAfter": { - "Parse_API_Gateway_response": [ + "Stop_if_endcursor_is_null_due_to_no_tanium_host_matches": [ "Succeeded" ] }, @@ -503,6 +685,17 @@ ] } }, + "Make_table_for_cves": { + "runAfter": { + "Flatten_API_Gateway_endpoints": [ + "Succeeded" + ] + }, + "type": "JavaScriptCode", + "inputs": { + "code": "var d = workflowContext.actions.Flatten_API_Gateway_endpoints.outputs.body;\r\nconst gT = (d) => { \r\n if (!d || d.length === 0) return ''; \r\n let iK = [...new Set([].concat(...d.map(e => Object.keys(e[0]))))];\r\n\r\n let table = `${iK.map(k => ``).join('')}`; \r\n iK = iK.slice(2,10);\r\n \r\n let count = table.length; \r\n for (let i of d) { \r\n let rows = i.map(r => {return \"\" })\r\n rows[0] = rows[0].replace('
${k}
\" + iK.map(k => {return r[k]} ).join(\"\") + \"
', `
${i[0][\"name\"]}${i[0][\"ipAddress\"]}`)\r\n for (let r of rows) {\r\n if (count + r.length > 28000) break;\r\n table += r; \r\n count += r.length;\r\n } \r\n } \r\n return table + '
'; \r\n};\r\nreturn gT(d)" + } + }, "Paginate_API_Gateway_query_if_needed": { "actions": { "Until": { @@ -675,7 +868,58 @@ "items": { "properties": { "node": { - "properties": {}, + "properties": { + "compliance": { + "properties": { + "cveFindings": { + "items": { + "properties": { + "cveId": { + "type": "string" + }, + "cvssScoreV3": { + "type": [ + "number", + "null" + ] + }, + "lastFound": { + "type": "string" + }, + "severity": { + "type": [ + "string", + "null" + ] + }, + "summary": { + "type": "string" + } + }, + "required": [ + "cveId", + "cvssScoreV3", + "lastFound", + "severity", + "summary" + ], + "type": "object" + }, + "type": "array" + } + }, + "type": "object" + }, + "id": { + "type": "string" + }, + "ipAddress": { + "type": "string" + }, + "name": { + "type": "string" + } + }, "type": "object" } }, @@ -689,10 +933,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -702,20 +958,6 @@ } }, "type": "object" - }, - "errors": { - "items": { - "properties": { - "message": { - "type": "string" - } - }, - "required": [ - "message" - ], - "type": "object" - }, - "type": "array" } }, "type": "object" @@ -764,6 +1006,54 @@ } } }, + "Stop_if_endcursor_is_null_due_to_no_tanium_host_matches": { + "actions": { + "Add_comment_to_incident_(V3)_3": { + "runAfter": {}, + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

No hosts were matched in Tanium

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Switch_to_TS_from_TDS_if_needed": { "actions": { "Requery_the_API_Gateway": { @@ -847,8 +1137,7 @@ }, "type": "If" } - }, - "outputs": {} + } }, "parameters": { "$connections": { @@ -863,6 +1152,12 @@ "TaniumApiToken": { "value": "[parameters('TaniumApiToken')]" }, + "LinkToCve": { + "value": "[parameters('LinkToCve')]" + }, + "UseIPAddressIfPresent": { + "value": "[parameters('UseIPAddressIfPresent')]" + }, "TaniumApiGatewayApi": { "value": "[variables('TaniumApiGatewayApi')]" } @@ -870,4 +1165,4 @@ } } ] -} +} \ No newline at end of file From b7eeb4f1cbeb368bb14fc91ed0c15f526a7e5b53 Mon Sep 17 00:00:00 2001 From: alex collins Date: Wed, 6 Dec 2023 16:09:23 -0700 Subject: [PATCH 02/15] wip:foreach section of ComplyFindings moved to js --- .../Tanium-ComplyFindings/azuredeploy.json | 305 ++---------------- 1 file changed, 22 insertions(+), 283 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json index 7d97573878f..28fa0ead431 100644 --- a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json @@ -205,7 +205,7 @@ }, "type": "If" }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "runAfter": {}, "type": "ApiConnection", "inputs": { @@ -251,7 +251,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -259,7 +259,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -278,289 +278,28 @@ "code": "function flD(e, l) {\r\n v = e.node.compliance.cveFindings.map((f) => {\r\n return {\r\n name: e.node.name,\r\n ipAddress: e.node.ipAddress,\r\n cveId: f.cveId,\r\n cvssScoreV3: f.cvssScoreV3,\r\n severity: f.severity,\r\n summary:\r\n f.summary.replace(/[^a-z0-9.-_, ]/gi,'').substr(0, 70)+\r\n (f.summary.length > 70 ? \"...\" : \"\"),\r\n };\r\n });\r\n return srtD(v).slice(0,l)\r\n }\r\n\r\nfunction srtD(fld) {\r\n fld.sort((a, b) => {\r\n if (a.cvssScoreV3 !== b.cvssScoreV3) {\r\n return b.cvssScoreV3 - a.cvssScoreV3; // Descending order by cvssScoreV3\r\n } else {\r\n // Descending order by CVE ID year\r\n let yearA = parseInt(a.cveId.split(\"-\")[1]);\r\n let yearB = parseInt(b.cveId.split(\"-\")[1]);\r\n return yearB - yearA;\r\n }\r\n });\r\n\r\n return fld;\r\n}\r\n\r\nlet e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nreturn e.map((item) => flD(item, 20))" } }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "IP_Address_and_FQDN_is_provided_and_contains_\".\"": { - "actions": { - "Append_to_endpoint_filters_h+f.ip": { - "runAfter": { - "Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "any": true, - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - }, - { - "path": "name", - "value": "@{trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))}" - } - ], - "negated": false - } - ] - } - } - }, - "runAfter": {}, - "else": { - "actions": { - "Append_to_endpoint_filters_h.ip": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['FQDN']", - "@null" - ] - } - }, - { - "contains": [ - "@trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))", - "." - ] - } - ] - }, - "type": "If" - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "FQDN_is_provided_and_contains_\".\"": { - "actions": { - "Append_to_endpoint_filters_h+f": { - "runAfter": { - "Compose_endpoint_filter_for_(fqdn_or_host)_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_(fqdn_or_host)_only')" - } - }, - "Compose_endpoint_filter_for_(fqdn_or_host)_only": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "any": true, - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - }, - { - "path": "name", - "value": "@{trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))}" - } - ], - "negated": false - } - } - }, - "runAfter": {}, - "else": { - "actions": { - "Append_to_endpoint_filters_h": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['FQDN']", - "@null" - ] - } - }, - { - "contains": [ - "@trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))", - "." - ] - } - ] - }, - "type": "If" - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - }, - { - "equals": [ - "@parameters('UseIPAddressIfPresent')", - "@true" - ] - } - ] - }, - "type": "If", - "description": "Added AND false to always go down False line for now = IGNORE IP Address (dynamic environments)" - }, - "Parse_host_json": { - "runAfter": {}, - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;i Date: Wed, 6 Dec 2023 16:25:58 -0700 Subject: [PATCH 03/15] wip: finished ComplyFindings updates --- .../Tanium-ComplyFindings/azuredeploy.json | 107 ++++-------------- 1 file changed, 25 insertions(+), 82 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json index 28fa0ead431..8feb01d0190 100644 --- a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json @@ -54,14 +54,6 @@ "metadata": { "description": "The hostname for your Tanium server e.g. tanium.example.com" } - }, - "UseIPAddressIfPresent": { - "defaultValue": false, - "type": "bool" - }, - "LinkToCve": { - "defaultValue": true, - "type": "bool" } }, "variables": { @@ -111,12 +103,6 @@ "metadata": { "description": "The Tanium API Token provides access to the Tanium Server. Access is restricted to the level of access available to the user who generated the token." } - }, - "UseIPAddressIfPresent": { - "type": "Bool" - }, - "linkToCve": { - "type": "Bool" } }, "triggers": { @@ -136,74 +122,37 @@ } }, "actions": { - "Condition": { - "actions": { - "Add_comment_to_incident_(V3)_4": { - "runAfter": { - "inject_url_into_table": [ - "Succeeded" - ] - }, - "type": "ApiConnection", - "inputs": { - "body": { - "incidentArmId": "@triggerBody()?['object']?['id']", - "message": "

@{body('inject_url_into_table')}

" - }, - "host": { - "connection": { - "name": "@parameters('$connections')['azuresentinel']['connectionId']" - } - }, - "method": "post", - "path": "/Incidents/Comment" - } - }, - "inject_url_into_table": { - "runAfter": {}, - "type": "JavaScriptCode", - "inputs": { - "code": "var d = workflowContext.actions.Make_table_for_cves.outputs.body;\r\n\r\nvar regex = /(cve-\\d+-\\d+)/gi; \r\n \r\nreturn d.replace(regex, function(match) { \r\n return '' + match + ''; \r\n}); \r\n" - } - } - }, + "Add_comment_to_incident_(V3)_4": { "runAfter": { - "Make_table_for_cves": [ + "Add_CVE_Link_To_Table": [ "Succeeded" ] }, - "else": { - "actions": { - "Add_comment_to_incident_(V3)_2": { - "runAfter": {}, - "type": "ApiConnection", - "inputs": { - "body": { - "incidentArmId": "@triggerBody()?['object']?['id']", - "message": "

@{body('Make_table_for_cves')}

" - }, - "host": { - "connection": { - "name": "@parameters('$connections')['azuresentinel']['connectionId']" - } - }, - "method": "post", - "path": "/Incidents/Comment" - } - } - } - }, - "expression": { - "and": [ - { - "equals": [ - "@parameters('LinkToCve')", - "@true" - ] + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

@{body('Add_CVE_Link_To_Table')}

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Add_CVE_Link_To_Table": { + "runAfter": { + "Build_CVE_Table": [ + "Succeeded" ] }, - "type": "If" + "type": "JavaScriptCode", + "inputs": { + "code": "var d = workflowContext.actions.Build_CVE_Table.outputs.body;\r\n\r\nvar regex = /(cve-\\d+-\\d+)/gi; \r\n \r\nreturn d.replace(regex, function(match) { \r\n return '' + match + ''; \r\n}); \r\n" + } }, "Get_Hosts_From_Incident": { "runAfter": {}, @@ -424,7 +373,7 @@ ] } }, - "Make_table_for_cves": { + "Build_CVE_Table": { "runAfter": { "Flatten_API_Gateway_endpoints": [ "Succeeded" @@ -891,12 +840,6 @@ "TaniumApiToken": { "value": "[parameters('TaniumApiToken')]" }, - "LinkToCve": { - "value": "[parameters('LinkToCve')]" - }, - "UseIPAddressIfPresent": { - "value": "[parameters('UseIPAddressIfPresent')]" - }, "TaniumApiGatewayApi": { "value": "[variables('TaniumApiGatewayApi')]" } From 42945e3300d1cf7dbc8b9ad1742e5d2461b91100 Mon Sep 17 00:00:00 2001 From: alex collins Date: Thu, 7 Dec 2023 13:50:44 -0700 Subject: [PATCH 04/15] GeneralHostInfo playbook new targeting --- .../Tanium-GeneralHostInfo/azuredeploy.json | 173 +++--------------- 1 file changed, 22 insertions(+), 151 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json index 06fcc433f4b..8d0d622df6d 100644 --- a/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json @@ -155,7 +155,7 @@ "from": "@body('Flatten_API_Gateway_endpoints')" } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "runAfter": {}, "type": "ApiConnection", "inputs": { @@ -169,6 +169,18 @@ "path": "/entities/host" } }, + "Set_Endpoint_Filter": { + "inputs": { + "name": "endpoint filters", + "value": "@body('Build_Endpoint_Filter_from_Hosts')" + }, + "runAfter": { + "Build_Endpoint_Filter_from_Hosts": [ + "Succeeded" + ] + }, + "type": "SetVariable" + }, "Exit_early_if_no_hosts_are_found": { "actions": { "Add_comment_to_incident_(V3)": { @@ -201,7 +213,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -209,7 +221,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -228,157 +240,16 @@ "code": "var e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nfunction sensorReadings(r) {\r\n\treturn r.columns.map(c => {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" } }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "runAfter": {}, - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;i Date: Thu, 7 Dec 2023 14:45:39 -0700 Subject: [PATCH 05/15] added notification if hosts return no data for: general host info complyfindings msdefenderhealth --- .../Tanium-ComplyFindings/azuredeploy.json | 20 +- .../Tanium-GeneralHostInfo/azuredeploy.json | 78 +++++- .../Tanium-MSDefenderHealth/azuredeploy.json | 251 +++++++----------- 3 files changed, 188 insertions(+), 161 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json index 8feb01d0190..74635a73273 100644 --- a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json @@ -304,7 +304,7 @@ }, "Initialize_API_Gateway_query_cursor": { "runAfter": { - "Stop_if_endcursor_is_null_due_to_no_tanium_host_matches": [ + "Stop_If_Tanium_Has_No_Hosts_From_Incident": [ "Succeeded" ] }, @@ -471,10 +471,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -694,7 +706,7 @@ } } }, - "Stop_if_endcursor_is_null_due_to_no_tanium_host_matches": { + "Stop_If_Tanium_Has_No_Hosts_From_Incident": { "actions": { "Add_comment_to_incident_(V3)_3": { "runAfter": {}, @@ -702,7 +714,7 @@ "inputs": { "body": { "incidentArmId": "@triggerBody()?['object']?['id']", - "message": "

No hosts were matched in Tanium

" + "message": "

No data found in Tanium for hosts.

" }, "host": { "connection": { diff --git a/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json index 8d0d622df6d..279e5a9c5ac 100644 --- a/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json @@ -305,7 +305,7 @@ }, "Initialize_API_Gateway_query_cursor": { "runAfter": { - "Parse_API_Gateway_response": [ + "Stop_If_Tanium_Has_No_Hosts_From_Incident": [ "Succeeded" ] }, @@ -374,6 +374,54 @@ ] } }, + "Stop_If_Tanium_Has_No_Hosts_From_Incident": { + "actions": { + "Add_comment_to_incident_(V3)_3": { + "runAfter": {}, + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

No data found in Tanium for hosts.

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Paginate_API_Gateway_query_if_needed": { "actions": { "Until": { @@ -461,10 +509,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -560,10 +620,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" diff --git a/Solutions/Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json index e5ece261562..911ff504b0d 100644 --- a/Solutions/Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json @@ -155,7 +155,7 @@ "from": "@body('Flatten_API_Gateway_endpoints')" } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "runAfter": {}, "type": "ApiConnection", "inputs": { @@ -201,7 +201,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -209,7 +209,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -228,157 +228,16 @@ "code": "var e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nfunction sensorReadings(r) {\r\n\treturn r.columns.map(c => {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" } }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "runAfter": {}, - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Initialize_Tanium_Endpoint_Source_to_TDS": { "runAfter": { - "For_each_incident_host": [ + "Set_Endpoint_Filter": [ "Succeeded" ] }, @@ -590,10 +509,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -689,10 +620,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" From 3258b97e88e5d9e3010bcc7451845b00a6d1345e Mon Sep 17 00:00:00 2001 From: alex collins Date: Thu, 7 Dec 2023 15:00:48 -0700 Subject: [PATCH 06/15] finished sccm playbook --- .../Tanium-SCCMClientHealth/azuredeploy.json | 251 +++++++----------- 1 file changed, 97 insertions(+), 154 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json index 7c0de0a8077..ba15b869606 100644 --- a/Solutions/Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json @@ -155,7 +155,7 @@ "from": "@body('Flatten_API_Gateway_endpoints')" } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "runAfter": {}, "type": "ApiConnection", "inputs": { @@ -201,7 +201,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -209,7 +209,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -228,157 +228,28 @@ "code": "var e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nfunction sensorReadings(r) {\r\n\treturn r.columns.map(c => {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" } }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "runAfter": {}, - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Initialize_Tanium_Endpoint_Source_to_TDS": { "runAfter": { - "For_each_incident_host": [ + "Set_Endpoint_Filter": [ "Succeeded" ] }, @@ -590,10 +509,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -689,10 +620,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" From c1cfaf9eb05b52ef09b173d627155ee989c1fde5 Mon Sep 17 00:00:00 2001 From: alex collins Date: Thu, 7 Dec 2023 15:04:20 -0700 Subject: [PATCH 07/15] updated lastUpdateTime for all playbooks so far --- .../Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json | 2 +- .../Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json | 2 +- .../Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json | 2 +- .../Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json index 74635a73273..27520d1702e 100644 --- a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/azuredeploy.json @@ -14,7 +14,7 @@ ], "entities": [ "host" ], "tags": ["Enrichment"], - "lastUpdateTime": "2023-11-30T00:00:00.000Z", + "lastUpdateTime": "2023-12-07T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" diff --git a/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json index 279e5a9c5ac..288a9d83e98 100644 --- a/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-GeneralHostInfo/azuredeploy.json @@ -14,7 +14,7 @@ ], "entities": [ "host" ], "tags": ["Enrichment"], - "lastUpdateTime": "2022-09-15T00:00:00.000Z", + "lastUpdateTime": "2023-12-07T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" diff --git a/Solutions/Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json index 911ff504b0d..965757dfe57 100644 --- a/Solutions/Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-MSDefenderHealth/azuredeploy.json @@ -14,7 +14,7 @@ ], "entities": [ "host" ], "tags": ["Enrichment"], - "lastUpdateTime": "2022-09-15T00:00:00.000Z", + "lastUpdateTime": "2023-12-07T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" diff --git a/Solutions/Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json index ba15b869606..42061a3ea3b 100644 --- a/Solutions/Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-SCCMClientHealth/azuredeploy.json @@ -14,7 +14,7 @@ ], "entities": [ "host" ], "tags": ["Enrichment"], - "lastUpdateTime": "2022-09-15T00:00:00.000Z", + "lastUpdateTime": "2023-12-07T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" From 32dbd87ad3ece1566508792f8786ef13797b27fc Mon Sep 17 00:00:00 2001 From: alex collins Date: Fri, 8 Dec 2023 12:37:11 -0700 Subject: [PATCH 08/15] finished SecurityPatches playbook --- .../Tanium-SecurityPatches/azuredeploy.json | 375 +++++++++--------- 1 file changed, 195 insertions(+), 180 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-SecurityPatches/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-SecurityPatches/azuredeploy.json index b9cd9800686..cbc3de1c480 100644 --- a/Solutions/Tanium/Playbooks/Tanium-SecurityPatches/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-SecurityPatches/azuredeploy.json @@ -15,7 +15,7 @@ ], "entities": [ "host" ], "tags": ["Enrichment"], - "lastUpdateTime": "2022-11-18T00:00:00.000Z", + "lastUpdateTime": "2023-12-08T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" @@ -29,6 +29,19 @@ "defaultValue": "Tanium-SecurityPatches", "type": "string" }, + "IntegrationAccountName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The name of an existing Azure Integration Account (required to run inline JavaScript actions)" + } + }, + "IntegrationAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name for the existing Azure Integration Account" + } + }, "TaniumApiToken": { "defaultValue": "", "type": "securestring", @@ -72,6 +85,9 @@ ], "properties": { "state": "Enabled", + "integrationAccount": { + "id": "[resourceId(parameters('integrationAccountResourceGroupName'), 'Microsoft.Logic/integrationAccounts', parameters('integrationAccountName'))]" + }, "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", @@ -207,7 +223,7 @@ "type": "If", "description": "If we don't then we'll use the refresh cursor until we have endpoint data." }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "runAfter": {}, "type": "ApiConnection", "inputs": { @@ -253,7 +269,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -261,7 +277,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -577,174 +593,117 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", + "Build_Endpoint_Filter_from_Hosts_With_FQDN": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Parse_API_Gateway_response": { "runAfter": { "Check_for_successful_results": [ @@ -1252,10 +1255,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" From fb005b064e9366e410dd10cdb704826a351f4fd2 Mon Sep 17 00:00:00 2001 From: alex collins Date: Fri, 8 Dec 2023 13:48:56 -0700 Subject: [PATCH 09/15] finished patches for with and without reboot --- .../azuredeploy.json | 333 ++++++++-------- .../azuredeploy.json | 364 +++++++++--------- 2 files changed, 352 insertions(+), 345 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-Apply-SecurityPatches-WithReboot/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-Apply-SecurityPatches-WithReboot/azuredeploy.json index f98cefd3852..9f63b563a93 100644 --- a/Solutions/Tanium/Playbooks/Tanium-Apply-SecurityPatches-WithReboot/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-Apply-SecurityPatches-WithReboot/azuredeploy.json @@ -2,7 +2,7 @@ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": { - "title": "Tanium-SecurityPatches", + "title": "Tanium-Apply-SecurityPatches-WithReboot", "description": "This playbook starts with a Microsoft Sentinel incident, gets the hosts associated with that incident, queries the Tanium API Gateway for applicable security patches for those endpoints, adds a comment to the incident with that information, then directs Tanium Patch to apply those security patches and then reboot the endpoint.", "prerequisites": [ "1. Microsoft Sentinel incidents with associated hosts.", @@ -15,7 +15,7 @@ ], "entities": [ "host" ], "tags": ["Enrichment"], - "lastUpdateTime": "2022-11-18T00:00:00.000Z", + "lastUpdateTime": "2023-12-08T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" @@ -29,6 +29,19 @@ "defaultValue": "Tanium-Apply-SecurityPatches-WithReboot", "type": "string" }, + "IntegrationAccountName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The name of an existing Azure Integration Account (required to run inline JavaScript actions)" + } + }, + "IntegrationAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name for the existing Azure Integration Account" + } + }, "TaniumApiToken": { "defaultValue": "", "type": "securestring", @@ -77,6 +90,9 @@ ], "properties": { "state": "Enabled", + "integrationAccount": { + "id": "[resourceId(parameters('integrationAccountResourceGroupName'), 'Microsoft.Logic/integrationAccounts', parameters('integrationAccountName'))]" + }, "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", @@ -283,7 +299,7 @@ "type": "If", "description": "If we don't then we'll use the refresh cursor until we have endpoint data." }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "runAfter": {}, "type": "ApiConnection", "inputs": { @@ -329,7 +345,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -337,7 +353,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -1137,174 +1153,101 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", + "Build_Endpoint_Filter_from_Hosts_With_FQDN": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Parse_API_Gateway_response": { "runAfter": { "Check_for_successful_results": [ diff --git a/Solutions/Tanium/Playbooks/Tanium-Apply-SecurityPatches-WithoutReboot/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-Apply-SecurityPatches-WithoutReboot/azuredeploy.json index 73bc888a508..805f75b48be 100644 --- a/Solutions/Tanium/Playbooks/Tanium-Apply-SecurityPatches-WithoutReboot/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-Apply-SecurityPatches-WithoutReboot/azuredeploy.json @@ -2,7 +2,7 @@ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": { - "title": "Tanium-SecurityPatches", + "title": "Tanium-Apply-SecurityPatches-WithoutReboot", "description": "This playbook starts with a Microsoft Sentinel incident, gets the hosts associated with that incident, queries the Tanium API Gateway for applicable security patches for those endpoints, adds a comment to the incident with that information, then directs Tanium Patch to apply those security patches without rebooting the endpoint.", "prerequisites": [ "1. Microsoft Sentinel incidents with associated hosts.", @@ -15,7 +15,7 @@ ], "entities": [ "host" ], "tags": ["Enrichment"], - "lastUpdateTime": "2022-11-18T00:00:00.000Z", + "lastUpdateTime": "2023-12-08T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" @@ -29,6 +29,19 @@ "defaultValue": "Tanium-Apply-SecurityPatches-WithoutReboot", "type": "string" }, + "IntegrationAccountName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The name of an existing Azure Integration Account (required to run inline JavaScript actions)" + } + }, + "IntegrationAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name for the existing Azure Integration Account" + } + }, "TaniumApiToken": { "defaultValue": "", "type": "securestring", @@ -77,6 +90,9 @@ ], "properties": { "state": "Enabled", + "integrationAccount": { + "id": "[resourceId(parameters('integrationAccountResourceGroupName'), 'Microsoft.Logic/integrationAccounts', parameters('integrationAccountName'))]" + }, "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", @@ -86,7 +102,7 @@ "type": "Object" }, "TaniumApiToken": { - "type": "securestring", + "type": "SecureString", "metadata": { "description": "The Tanium API Token provides access to the Tanium Server. Access is restricted to the level of access available to the user who generated the token." } @@ -283,7 +299,7 @@ "type": "If", "description": "If we don't then we'll use the refresh cursor until we have endpoint data." }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "runAfter": {}, "type": "ApiConnection", "inputs": { @@ -329,7 +345,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -337,7 +353,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -1137,174 +1153,102 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", + "Build_Endpoint_Filter_from_Hosts_With_FQDN": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, "runAfter": { "Parse_API_Gateway_response": [ "Succeeded" ] }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, + "Initialize_API_Gateway_query_cursor": { + "runAfter": { + "Stop_If_Tanium_Has_No_Hosts_From_Incident": [ + "Succeeded" + ] + }, "type": "InitializeVariable", "inputs": { "variables": [ @@ -1415,13 +1407,7 @@ ] } }, - "Initialize_Endpoint_Filters_array": { - "runAfter": { - "Initialize_API_Gateway_Query": [ - "Succeeded" - ] - }, - "type": "InitializeVariable", + "Initialize_Endpoint_Filter": { "inputs": { "variables": [ { @@ -1429,11 +1415,17 @@ "type": "array" } ] - } + }, + "runAfter": { + "Initialize_API_Gateway_Query": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" }, "Initialize_Tanium_Endpoint_Source_to_TS": { "runAfter": { - "For_each_incident_host": [ + "Set_Endpoint_Filter_if_needed_from_Hosts_without_FQDN": [ "Succeeded" ] }, @@ -1931,10 +1923,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -2080,10 +2084,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" From 767df5585c2c024bedce05b7e6cf15ddff1777f1 Mon Sep 17 00:00:00 2001 From: alex collins Date: Fri, 8 Dec 2023 14:08:43 -0700 Subject: [PATCH 10/15] finished quarentine and unquarentine --- .../Tanium-QuarantineHosts/azuredeploy.json | 225 ++++++------------ .../Tanium-UnquarantineHosts/azuredeploy.json | 225 ++++++------------ 2 files changed, 144 insertions(+), 306 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-QuarantineHosts/azuredeploy.json b/Solutions/Tanium/Playbooks/Tanium-QuarantineHosts/azuredeploy.json index c32d722090f..d42164b1ee1 100644 --- a/Solutions/Tanium/Playbooks/Tanium-QuarantineHosts/azuredeploy.json +++ b/Solutions/Tanium/Playbooks/Tanium-QuarantineHosts/azuredeploy.json @@ -14,7 +14,7 @@ ], "entities": [ "host" ], "tags": ["Remediation"], - "lastUpdateTime": "2022-09-15T00:00:00.000Z", + "lastUpdateTime": "2023-12-08T00:00:00.000Z", "support": { "tier": "developer", "link": "https://www.tanium.com" @@ -159,6 +159,54 @@ "path": "/Incidents/Comment" } }, + "Stop_If_Tanium_Has_No_Hosts_From_Incident": { + "actions": { + "Add_comment_to_incident_(V3)_3": { + "runAfter": {}, + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

No data found in Tanium for hosts.

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Add_comment_to_incident_-_hosts_that_will_be_targeted": { "runAfter": { "Create_HTML_table_of_matched_endpoints": [ @@ -634,7 +682,7 @@ "from": "@variables('unknown action results')" } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "runAfter": {}, "type": "ApiConnection", "inputs": { @@ -680,7 +728,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -688,7 +736,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -829,157 +877,28 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "runAfter": {}, - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "runAfter": {}, - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

" + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, "runAfter": { "Parse_API_Gateway_response": [ "Succeeded" ] }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, + "Initialize_API_Gateway_query_cursor": { + "runAfter": { + "Stop_If_Tanium_Has_No_Hosts_From_Incident": [ + "Succeeded" + ] + }, "type": "InitializeVariable", "inputs": { "variables": [ @@ -1937,7 +1856,7 @@ ] } }, - "Initialize_Endpoint_Filters_array": { + "Initialize_Endpoint_Filter": { "runAfter": { "Initialize_API_Gateway_Query": [ "Succeeded" @@ -2005,7 +1924,7 @@ }, "Initialize_Tanium_Endpoint_Source_to_TDS": { "runAfter": { - "For_each_incident_host": [ + "Set_Endpoint_Filter": [ "Succeeded" ] }, From eb288a78c704dc7f6c752180cfc513188b462920 Mon Sep 17 00:00:00 2001 From: alex collins Date: Fri, 8 Dec 2023 14:25:49 -0700 Subject: [PATCH 11/15] feat: build new release with fixes --- Solutions/Tanium/Package/3.0.0.zip | Bin 83759 -> 83082 bytes Solutions/Tanium/Package/mainTemplate.json | 2825 ++++++++------------ Solutions/Tanium/SolutionMetadata.json | 2 +- 3 files changed, 1114 insertions(+), 1713 deletions(-) diff --git a/Solutions/Tanium/Package/3.0.0.zip b/Solutions/Tanium/Package/3.0.0.zip index 6ba9c1daded92c4024983a768ef8732cf0f86307..3ba4261f6696ea6f30d9f7a9fb1c4784db4a1c63 100644 GIT binary patch literal 83082 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 delta 82511 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
  • A267Z2OQBvO%o5HRSj?6WZIhXJu`b+U{ib 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 diff --git a/Solutions/Tanium/Package/mainTemplate.json b/Solutions/Tanium/Package/mainTemplate.json index a9f850e0b67..054bc9fc671 100644 --- a/Solutions/Tanium/Package/mainTemplate.json +++ b/Solutions/Tanium/Package/mainTemplate.json @@ -300,14 +300,6 @@ "metadata": { "description": "The hostname for your Tanium server e.g. tanium.example.com" } - }, - "UseIPAddressIfPresent": { - "defaultValue": false, - "type": "bool" - }, - "LinkToCve": { - "defaultValue": true, - "type": "bool" } }, "variables": { @@ -360,12 +352,6 @@ "metadata": { "description": "The Tanium API Token provides access to the Tanium Server. Access is restricted to the level of access available to the user who generated the token." } - }, - "UseIPAddressIfPresent": { - "type": "Bool" - }, - "linkToCve": { - "type": "Bool" } }, "triggers": { @@ -385,74 +371,39 @@ } }, "actions": { - "Condition": { - "actions": { - "Add_comment_to_incident_(V3)_4": { - "runAfter": { - "inject_url_into_table": [ - "Succeeded" - ] - }, - "type": "ApiConnection", - "inputs": { - "body": { - "incidentArmId": "@triggerBody()?['object']?['id']", - "message": "

    @{body('inject_url_into_table')}

    " - }, - "host": { - "connection": { - "name": "@parameters('$connections')['azuresentinel']['connectionId']" - } - }, - "method": "post", - "path": "/Incidents/Comment" - } - }, - "inject_url_into_table": { - "type": "JavaScriptCode", - "inputs": { - "code": "var d = workflowContext.actions.Make_table_for_cves.outputs.body;\r\n\r\nvar regex = /(cve-\\d+-\\d+)/gi; \r\n \r\nreturn d.replace(regex, function(match) { \r\n return '
    ' + match + ''; \r\n}); \r\n" - } - } - }, + "Add_comment_to_incident_(V3)_4": { "runAfter": { - "Make_table_for_cves": [ + "Add_CVE_Link_To_Table": [ "Succeeded" ] }, - "else": { - "actions": { - "Add_comment_to_incident_(V3)_2": { - "type": "ApiConnection", - "inputs": { - "body": { - "incidentArmId": "@triggerBody()?['object']?['id']", - "message": "

    @{body('Make_table_for_cves')}

    " - }, - "host": { - "connection": { - "name": "@parameters('$connections')['azuresentinel']['connectionId']" - } - }, - "method": "post", - "path": "/Incidents/Comment" - } - } - } - }, - "expression": { - "and": [ - { - "equals": [ - "@parameters('LinkToCve')", - "@true" - ] + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

    @{body('Add_CVE_Link_To_Table')}

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Add_CVE_Link_To_Table": { + "runAfter": { + "Build_CVE_Table": [ + "Succeeded" ] }, - "type": "If" + "type": "JavaScriptCode", + "inputs": { + "code": "var d = workflowContext.actions.Build_CVE_Table.outputs.body;\r\n\r\nvar regex = /(cve-\\d+-\\d+)/gi; \r\n \r\nreturn d.replace(regex, function(match) { \r\n return '' + match + ''; \r\n}); \r\n" + } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "type": "ApiConnection", "inputs": { "body": "@triggerBody()?['object']?['properties']?['relatedEntities']", @@ -496,7 +447,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -504,7 +455,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -523,282 +474,28 @@ "code": "function flD(e, l) {\r\n v = e.node.compliance.cveFindings.map((f) => {\r\n return {\r\n name: e.node.name,\r\n ipAddress: e.node.ipAddress,\r\n cveId: f.cveId,\r\n cvssScoreV3: f.cvssScoreV3,\r\n severity: f.severity,\r\n summary:\r\n f.summary.replace(/[^a-z0-9.-_, ]/gi,'').substr(0, 70)+\r\n (f.summary.length > 70 ? \"...\" : \"\"),\r\n };\r\n });\r\n return srtD(v).slice(0,l)\r\n }\r\n\r\nfunction srtD(fld) {\r\n fld.sort((a, b) => {\r\n if (a.cvssScoreV3 !== b.cvssScoreV3) {\r\n return b.cvssScoreV3 - a.cvssScoreV3; // Descending order by cvssScoreV3\r\n } else {\r\n // Descending order by CVE ID year\r\n let yearA = parseInt(a.cveId.split(\"-\")[1]);\r\n let yearB = parseInt(b.cveId.split(\"-\")[1]);\r\n return yearB - yearA;\r\n }\r\n });\r\n\r\n return fld;\r\n}\r\n\r\nlet e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nreturn e.map((item) => flD(item, 20))" } }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "IP_Address_and_FQDN_is_provided_and_contains_\".\"": { - "actions": { - "Append_to_endpoint_filters_h+f.ip": { - "runAfter": { - "Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_(host_or_fqdn)_and_ip_address": { - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "any": true, - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - }, - { - "path": "name", - "value": "@{trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))}" - } - ], - "negated": false - } - ] - } - } - }, - "else": { - "actions": { - "Append_to_endpoint_filters_h.ip": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['FQDN']", - "@null" - ] - } - }, - { - "contains": [ - "@trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))", - "." - ] - } - ] - }, - "type": "If" - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "FQDN_is_provided_and_contains_\".\"": { - "actions": { - "Append_to_endpoint_filters_h+f": { - "runAfter": { - "Compose_endpoint_filter_for_(fqdn_or_host)_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_(fqdn_or_host)_only')" - } - }, - "Compose_endpoint_filter_for_(fqdn_or_host)_only": { - "type": "Compose", - "inputs": { - "any": true, - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - }, - { - "path": "name", - "value": "@{trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))}" - } - ], - "negated": false - } - } - }, - "else": { - "actions": { - "Append_to_endpoint_filters_h": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['FQDN']", - "@null" - ] - } - }, - { - "contains": [ - "@trim(string(body('Parse_host_json')?['additionalData']?['FQDN']))", - "." - ] - } - ] - }, - "type": "If" - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - }, - { - "equals": [ - "@parameters('UseIPAddressIfPresent')", - "@true" - ] - } - ] - }, - "type": "If", - "description": "Added AND false to always go down False line for now = IGNORE IP Address (dynamic environments)" - }, - "Parse_host_json": { - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo hosts were matched in Tanium

    " + "message": "

    No data found in Tanium for hosts.

    " }, "host": { "connection": { @@ -1385,12 +1094,6 @@ "TaniumApiToken": { "value": "[[parameters('TaniumApiToken')]" }, - "LinkToCve": { - "value": "[[parameters('LinkToCve')]" - }, - "UseIPAddressIfPresent": { - "value": "[[parameters('UseIPAddressIfPresent')]" - }, "TaniumApiGatewayApi": { "value": "[[variables('TaniumApiGatewayApi')]" } @@ -1444,7 +1147,7 @@ "tags": [ "Enrichment" ], - "lastUpdateTime": "2023-11-30T00:00:00Z", + "lastUpdateTime": "2023-12-07T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", @@ -1615,7 +1318,7 @@ "from": "@body('Flatten_API_Gateway_endpoints')" } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "type": "ApiConnection", "inputs": { "body": "@triggerBody()?['object']?['properties']?['relatedEntities']", @@ -1628,6 +1331,18 @@ "path": "/entities/host" } }, + "Set_Endpoint_Filter": { + "inputs": { + "name": "endpoint filters", + "value": "@body('Build_Endpoint_Filter_from_Hosts')" + }, + "runAfter": { + "Build_Endpoint_Filter_from_Hosts": [ + "Succeeded" + ] + }, + "type": "SetVariable" + }, "Exit_early_if_no_hosts_are_found": { "actions": { "Add_comment_to_incident_(V3)": { @@ -1659,7 +1374,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -1667,7 +1382,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -1686,154 +1401,16 @@ "code": "var e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nfunction sensorReadings(r) {\r\n\treturn r.columns.map(c => {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" } }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] } ] - } + }, + "type": "If" }, "Paginate_API_Gateway_query_if_needed": { "actions": { @@ -2044,10 +1668,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -2140,10 +1776,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -2365,7 +2013,7 @@ "tags": [ "Enrichment" ], - "lastUpdateTime": "2022-09-15T00:00:00Z", + "lastUpdateTime": "2023-12-07T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", @@ -2536,7 +2184,7 @@ "from": "@body('Flatten_API_Gateway_endpoints')" } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "type": "ApiConnection", "inputs": { "body": "@triggerBody()?['object']?['properties']?['relatedEntities']", @@ -2580,7 +2228,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -2588,7 +2236,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -2607,154 +2255,16 @@ "code": "var e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nfunction sensorReadings(r) {\r\n\treturn r.columns.map(c => {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" } }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Initialize_Tanium_Endpoint_Source_to_TDS": { "runAfter": { - "For_each_incident_host": [ + "Set_Endpoint_Filter": [ "Succeeded" ] }, @@ -2965,10 +2534,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -3061,10 +2642,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -3286,7 +2879,7 @@ "tags": [ "Enrichment" ], - "lastUpdateTime": "2022-09-15T00:00:00Z", + "lastUpdateTime": "2023-12-07T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", @@ -3446,20 +3039,67 @@ "Succeeded" ] }, - "type": "ApiConnection", - "inputs": { - "body": { - "incidentArmId": "@triggerBody()?['object']?['id']", - "message": "

    ISSUED TANIUM ACTIONS
    \n@{body('Create_HTML_table_of_issued_actions')}

    " - }, - "host": { - "connection": { - "name": "@parameters('$connections')['azuresentinel']['connectionId']" - } - }, - "method": "post", - "path": "/Incidents/Comment" - } + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

    ISSUED TANIUM ACTIONS
    \n@{body('Create_HTML_table_of_issued_actions')}

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Stop_If_Tanium_Has_No_Hosts_From_Incident": { + "actions": { + "Add_comment_to_incident_(V3)_3": { + "type": "ApiConnection", + "inputs": { + "body": { + "incidentArmId": "@triggerBody()?['object']?['id']", + "message": "

    No data found in Tanium for hosts.

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" }, "Add_comment_to_incident_-_hosts_that_will_be_targeted": { "runAfter": { @@ -3931,7 +3571,7 @@ "from": "@variables('unknown action results')" } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "type": "ApiConnection", "inputs": { "body": "@triggerBody()?['object']?['properties']?['relatedEntities']", @@ -3975,7 +3615,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -3983,7 +3623,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -4117,154 +3757,28 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;i {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" - } - }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } + "runAfter": { + "Add_comment_to_incident_(V3)": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" } } }, "runAfter": { - "Initialize_Endpoint_Filters_array": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, - "type": "Foreach" + "expression": { + "and": [ + { + "less": [ + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", + 1 + ] + } + ] + }, + "type": "If" + }, + "Flatten_API_Gateway_endpoints": { + "runAfter": { + "Parse_endpoints_array": [ + "Succeeded" + ] + }, + "type": "JavaScriptCode", + "inputs": { + "code": "var e = workflowContext.actions.Parse_endpoints_array.outputs.body;\r\n\r\nfunction sensorReadings(r) {\r\n\treturn r.columns.map(c => {\r\n\t\tif (c.sensor && c.sensor.name) {\r\n\t\t\treturn { name: [c.sensor.name, c.name].join(' - '), value: c.values.join(' ') };\r\n\t\t} else {\r\n\t\t\treturn { name: c.name, value: c.values.join(' ') };\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction flatten(obj, pk = '') {\r\n\tif (pk !== '') pk += ' ';\r\n\tlet flat = {};\r\n\tObject.keys(obj).forEach((key) => {\r\n\t\tif (key === 'sensorReadings') {\r\n\t\t\tsensorReadings(obj[key]).forEach((r) => {\r\n\t\t\t\tflat[r.name] = r.value;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tif (typeof obj[key] === 'object' && obj[key] !== null) {\r\n\t\t\t\tObject.assign(flat, flatten(obj[key], pk + key));\r\n\t\t\t} else {\r\n\t\t\t\tflat[pk + key] = obj[key];\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\treturn flat;\r\n}\r\n\r\nreturn e.map(function(e) { return flatten(e.node); });" + } + }, + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Initialize_Tanium_Endpoint_Source_to_TDS": { "runAfter": { - "For_each_incident_host": [ + "Set_Endpoint_Filter": [ "Succeeded" ] }, @@ -6852,10 +6287,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -6948,10 +6395,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -7173,7 +6632,7 @@ "tags": [ "Enrichment" ], - "lastUpdateTime": "2022-09-15T00:00:00Z", + "lastUpdateTime": "2023-12-07T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", @@ -7818,7 +7277,7 @@ "from": "@variables('unknown action results')" } }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "type": "ApiConnection", "inputs": { "body": "@triggerBody()?['object']?['properties']?['relatedEntities']", @@ -7862,7 +7321,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -7870,7 +7329,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -8004,154 +7463,28 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", - "actions": { - "If_ip_address": { - "actions": { - "Append_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_and_ip_address": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_and_ip_address')" - } - }, - "Compose_endpoint_filter_for_host_and_ip_address": { - "type": "Compose", - "inputs": { - "filters": [ - { - "op": "CONTAINS", - "path": "ipAddress", - "value": "@{body('Parse_host_json')?['additionalData']?['LastIpAddress']}" - }, - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - }, - "runAfter": { - "Parse_host_json": [ - "Succeeded" - ] - }, - "else": { - "actions": { - "Append_host_only_to_endpoint_filters": { - "runAfter": { - "Compose_endpoint_filter_for_host_only": [ - "Succeeded" - ] - }, - "type": "AppendToArrayVariable", - "inputs": { - "name": "endpoint filters", - "value": "@outputs('Compose_endpoint_filter_for_host_only')" - } - }, - "Compose_endpoint_filter_for_host_only": { - "type": "Compose", - "inputs": { - "filters": [ - { - "path": "name", - "value": "@{body('Parse_host_json')?['hostName']}" - } - ] - } - } - } - }, - "expression": { - "and": [ - { - "not": { - "equals": [ - "@body('Parse_host_json')?['additionalData']?['LastIpAddress']", - "@null" - ] - } - } - ] - }, - "type": "If" - }, - "Parse_host_json": { - "type": "ParseJson", - "inputs": { - "content": "@items('For_each_incident_host')", - "schema": { - "properties": { - "Type": { - "type": "string" - }, - "additionalData": { - "properties": { - "AvStatus": { - "type": "string" - }, - "FQDN": { - "type": "string" - }, - "HealthStatus": { - "type": "string" - }, - "LastExternalIpAddress": { - "type": "string" - }, - "LastIpAddress": { - "type": "string" - }, - "LastSeen": { - "type": "string" - }, - "LoggedOnUsers": { - "type": "string" - }, - "MdatpDeviceId": { - "type": "string" - }, - "OnboardingStatus": { - "type": "string" - }, - "RiskScore": { - "type": "string" - } - }, - "type": "object" - }, - "friendlyName": { - "type": "string" - }, - "hostName": { - "type": "string" - }, - "osFamily": { - "type": "string" - }, - "osVersion": { - "type": "string" - } - }, - "type": "object" - } - } - } + "Build_Endpoint_Filter_from_Hosts": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ "Succeeded" ] }, - "type": "InitializeVariable", - "inputs": { - "variables": [ + "expression": { + "and": [ { - "name": "API Gateway Response", - "type": "object", - "value": "@body('Query_API_Gateway')" + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] } ] - } + }, + "type": "If" }, "Initialize_API_Gateway_query_cursor": { "runAfter": { - "Parse_API_Gateway_response": [ + "Stop_If_Tanium_Has_No_Hosts_From_Incident": [ "Succeeded" ] }, @@ -9100,7 +8480,7 @@ ] } }, - "Initialize_Endpoint_Filters_array": { + "Initialize_Endpoint_Filter": { "runAfter": { "Initialize_API_Gateway_Query": [ "Succeeded" @@ -9168,7 +8548,7 @@ }, "Initialize_Tanium_Endpoint_Source_to_TDS": { "runAfter": { - "For_each_incident_host": [ + "Set_Endpoint_Filter": [ "Succeeded" ] }, @@ -9775,7 +9155,7 @@ "tags": [ "Remediation" ], - "lastUpdateTime": "2022-09-15T00:00:00Z", + "lastUpdateTime": "2023-12-08T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", @@ -9816,6 +9196,19 @@ "defaultValue": "Tanium-SecurityPatches", "type": "string" }, + "IntegrationAccountName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The name of an existing Azure Integration Account (required to run inline JavaScript actions)" + } + }, + "IntegrationAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name for the existing Azure Integration Account" + } + }, "TaniumApiToken": { "defaultValue": "", "type": "securestring", @@ -9863,6 +9256,9 @@ ], "properties": { "state": "Enabled", + "integrationAccount": { + "id": "[[resourceId(parameters('integrationAccountResourceGroupName'), 'Microsoft.Logic/integrationAccounts', parameters('integrationAccountName'))]" + }, "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", @@ -9994,7 +9390,7 @@ "type": "If", "description": "If we don't then we'll use the refresh cursor until we have endpoint data." }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "type": "ApiConnection", "inputs": { "body": "@triggerBody()?['object']?['properties']?['relatedEntities']", @@ -10038,7 +9434,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -10046,7 +9442,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -10348,171 +9744,115 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", + "Build_Endpoint_Filter_from_Hosts_With_FQDN": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" } - } - }, - "expression": "@equals(body('Parse_paginated_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['hasNextPage'], false)", - "limit": { - "count": 60, - "timeout": "PT1H" + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] }, - "type": "Until" + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } } }, "runAfter": { - "Initialize_endpoints_array": [ + "Parse_API_Gateway_response": [ "Succeeded" ] }, @@ -10926,8 +10309,8 @@ "and": [ { "equals": [ - "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['hasNextPage']", - "@true" + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" ] } ] @@ -11017,10 +10400,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -11142,7 +10537,7 @@ "tags": [ "Enrichment" ], - "lastUpdateTime": "2022-11-18T00:00:00Z", + "lastUpdateTime": "2023-12-08T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", @@ -11183,6 +10578,19 @@ "defaultValue": "Tanium-Apply-SecurityPatches-WithoutReboot", "type": "string" }, + "IntegrationAccountName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The name of an existing Azure Integration Account (required to run inline JavaScript actions)" + } + }, + "IntegrationAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name for the existing Azure Integration Account" + } + }, "TaniumApiToken": { "defaultValue": "", "type": "securestring", @@ -11235,6 +10643,9 @@ ], "properties": { "state": "Enabled", + "integrationAccount": { + "id": "[[resourceId(parameters('integrationAccountResourceGroupName'), 'Microsoft.Logic/integrationAccounts', parameters('integrationAccountName'))]" + }, "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", @@ -11243,7 +10654,7 @@ "type": "Object" }, "TaniumApiToken": { - "type": "securestring", + "type": "SecureString", "metadata": { "description": "The Tanium API Token provides access to the Tanium Server. Access is restricted to the level of access available to the user who generated the token." } @@ -11434,7 +10845,7 @@ "type": "If", "description": "If we don't then we'll use the refresh cursor until we have endpoint data." }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "type": "ApiConnection", "inputs": { "body": "@triggerBody()?['object']?['properties']?['relatedEntities']", @@ -11478,7 +10889,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -11486,7 +10897,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -12267,171 +11678,99 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", + "Build_Endpoint_Filter_from_Hosts_With_FQDN": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Initialize_API_Gateway_query_cursor": { "runAfter": { - "Parse_API_Gateway_response": [ + "Stop_If_Tanium_Has_No_Hosts_From_Incident": [ "Succeeded" ] }, @@ -12542,13 +11928,7 @@ ] } }, - "Initialize_Endpoint_Filters_array": { - "runAfter": { - "Initialize_API_Gateway_Query": [ - "Succeeded" - ] - }, - "type": "InitializeVariable", + "Initialize_Endpoint_Filter": { "inputs": { "variables": [ { @@ -12556,11 +11936,17 @@ "type": "array" } ] - } + }, + "runAfter": { + "Initialize_API_Gateway_Query": [ + "Succeeded" + ] + }, + "type": "InitializeVariable" }, "Initialize_Tanium_Endpoint_Source_to_TS": { "runAfter": { - "For_each_incident_host": [ + "Set_Endpoint_Filter_if_needed_from_Hosts_without_FQDN": [ "Succeeded" ] }, @@ -13057,10 +12443,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -13204,10 +12602,22 @@ "pageInfo": { "properties": { "endCursor": { - "type": "string" + "type": [ + "string", + "null" + ] }, "hasNextPage": { "type": "boolean" + }, + "hasPreviousPage": { + "type": "boolean" + }, + "startCursor": { + "type": [ + "string", + "null" + ] } }, "type": "object" @@ -14178,7 +13588,7 @@ } ], "metadata": { - "title": "Tanium-SecurityPatches", + "title": "Tanium-Apply-SecurityPatches-WithoutReboot", "description": "This playbook starts with a Microsoft Sentinel incident, gets the hosts associated with that incident, queries the Tanium API Gateway for applicable security patches for those endpoints, adds a comment to the incident with that information, then directs Tanium Patch to apply those security patches without rebooting the endpoint.", "prerequisites": [ "1. Microsoft Sentinel incidents with associated hosts.", @@ -14195,7 +13605,7 @@ "tags": [ "Enrichment" ], - "lastUpdateTime": "2022-11-18T00:00:00Z", + "lastUpdateTime": "2023-12-08T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", @@ -14236,6 +13646,19 @@ "defaultValue": "Tanium-Apply-SecurityPatches-WithReboot", "type": "string" }, + "IntegrationAccountName": { + "defaultValue": "", + "type": "string", + "metadata": { + "description": "The name of an existing Azure Integration Account (required to run inline JavaScript actions)" + } + }, + "IntegrationAccountResourceGroupName": { + "type": "string", + "metadata": { + "description": "The resource group name for the existing Azure Integration Account" + } + }, "TaniumApiToken": { "defaultValue": "", "type": "securestring", @@ -14288,6 +13711,9 @@ ], "properties": { "state": "Enabled", + "integrationAccount": { + "id": "[[resourceId(parameters('integrationAccountResourceGroupName'), 'Microsoft.Logic/integrationAccounts', parameters('integrationAccountName'))]" + }, "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", @@ -14487,7 +13913,7 @@ "type": "If", "description": "If we don't then we'll use the refresh cursor until we have endpoint data." }, - "Entities_-_Get_Hosts": { + "Get_Hosts_From_Incident": { "type": "ApiConnection", "inputs": { "body": "@triggerBody()?['object']?['properties']?['relatedEntities']", @@ -14531,7 +13957,7 @@ } }, "runAfter": { - "Entities_-_Get_Hosts": [ + "Get_Hosts_From_Incident": [ "Succeeded" ] }, @@ -14539,7 +13965,7 @@ "and": [ { "less": [ - "@length(body('Entities_-_Get_Hosts')?['Hosts'])", + "@length(body('Get_Hosts_From_Incident')?['Hosts'])", 1 ] } @@ -15320,171 +14746,99 @@ }, "type": "Foreach" }, - "For_each_incident_host": { - "foreach": "@body('Entities_-_Get_Hosts')?['Hosts']", + "Build_Endpoint_Filter_from_Hosts_With_FQDN": { + "inputs": { + "code": "var hosts = workflowContext.actions.Get_Hosts_From_Incident.outputs.body.Hosts;\r\nvar filters=[];for(let i=0;iNo data found in Tanium for hosts.

    " + }, + "host": { + "connection": { + "name": "@parameters('$connections')['azuresentinel']['connectionId']" + } + }, + "method": "post", + "path": "/Incidents/Comment" + } + }, + "Terminate_no_hosts_in_Tanium": { + "runAfter": { + "Add_comment_to_incident_(V3)_3": [ + "Succeeded" + ] + }, + "type": "Terminate", + "inputs": { + "runStatus": "Succeeded" + } + } + }, + "runAfter": { + "Parse_API_Gateway_response": [ + "Succeeded" + ] + }, + "expression": { + "and": [ + { + "equals": [ + "@body('Parse_API_Gateway_response')?['data']?['endpoints']?['pageInfo']?['endCursor']", + "@null" + ] + } + ] + }, + "type": "If" + }, "Parse_API_Gateway_response": { "runAfter": { "Check_for_successful_results": [ @@ -17231,7 +16632,7 @@ } ], "metadata": { - "title": "Tanium-SecurityPatches", + "title": "Tanium-Apply-SecurityPatches-WithReboot", "description": "This playbook starts with a Microsoft Sentinel incident, gets the hosts associated with that incident, queries the Tanium API Gateway for applicable security patches for those endpoints, adds a comment to the incident with that information, then directs Tanium Patch to apply those security patches and then reboot the endpoint.", "prerequisites": [ "1. Microsoft Sentinel incidents with associated hosts.", @@ -17248,7 +16649,7 @@ "tags": [ "Enrichment" ], - "lastUpdateTime": "2022-11-18T00:00:00Z", + "lastUpdateTime": "2023-12-08T00:00:00Z", "releaseNotes": { "version": "1.0", "title": "[variables('blanks')]", diff --git a/Solutions/Tanium/SolutionMetadata.json b/Solutions/Tanium/SolutionMetadata.json index d3d3e9aea17..a376af1c221 100644 --- a/Solutions/Tanium/SolutionMetadata.json +++ b/Solutions/Tanium/SolutionMetadata.json @@ -2,7 +2,7 @@ "publisherId": "taniuminc1646329360287", "offerId": "tanium_sentinel_connector", "firstPublishDate": "2022-05-16", - "lastPublishDate": "2022-09-12", + "lastPublishDate": "2023-12-08", "providers": ["Tanium"], "categories": { "domains" : ["Security - Network", "Security - Threat Protection"], From c8a40f115e0f3b99d3629d1fae73371cf4dd0c67 Mon Sep 17 00:00:00 2001 From: alex collins Date: Wed, 13 Dec 2023 10:42:05 -0700 Subject: [PATCH 12/15] feat: added new complyfindings image --- .../images/Tanium-ComplyFindings.png | Bin 22025 -> 78284 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/images/Tanium-ComplyFindings.png b/Solutions/Tanium/Playbooks/Tanium-ComplyFindings/images/Tanium-ComplyFindings.png index 7d24200b7932e6f67a3556f82bf09291c84d3665..f94cd1a87b76a9beae22fc1e3d331d71e93fc92c 100644 GIT binary patch literal 78284 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%0Ab3_!DqZ?< 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%0An%GW#e~ax!kROg zk|bhcKlWE+zWau`G~SRQ@pw|6KWXM_o&Z=L0(qyDftM!o$?Cx&=xDW#l!LgK1>G$! zlUeS$Ch=`ti^;U4D>z;rS*6qd^Upl4^`}G)ctCgk55#jWq>^3*gci^Tx**9 zcNOMBtY9lyiMqbMMG4>ikYp*LSQ;ssJC;b0Z<6&50G;MGyE`kq?uH;;9Eps8%FEoR zDyItoWX6o8x)+5rFm}MubbbS<9#T`3BSP33{u_Oj7F*t@*9X=n`*Z83Ff$D#!3|Kq5p1JXXjQnN} zr+468tKVP?#Sos>AOeIw%~Vgv>?9d~iS#K$t0t`%PtAvgDWvOj;81I>EoJ{68pXgw`Avu z#^0UUp|4NQPkPyIG7sE^O5-=?>~;zMVP@Pt&&`N0A7{ttI??TQ-^kj>yiYU1QexJL zI+#KI=pxjSe~nVteT!S`qfI7BB2I!rlq^EpisjD=7s9DhH}&Z0UTMLMZ9f#%DcH6? z$V|1_P%u$i$CG{A7Un_+jCq15N&vn9GnH=TiUe2)>{~gIc6?C>o=UHA5b5s3;W5LI zsfLY8G*h!t_F0vx1JLx;C&2}J8(NV|>aFIX!cTbk+wC{-D)a5z+C#>J$Q_6y-p?AD zWr$9fb>t4e)cqFJ$XEG+-kFgY(slfBPo4u%gs+0h4XozSVt?GMymUdsx z{#^e@*@n%;cC`cutzQXS58TeC3cU z<=2vp$ZY+o@SnWD{?rwNJI8C(*ZZ~0$)ZnlKg9Ozn3;Qj6L_!5EJRl8wQ7y=uCMm* zf55xR;wdV6}cLzeigjo(eSj2MqS`x?O z+}agu#(#-aCJ$i%jP+SyZt@CwFiSBs@-3Sk>?%c3v2*^i)3>;oVf7ZL0zUEO0&BD{G;eX zbClW1Zw&JF(hpX{7fhJklV+8FI{oD4(djK2>Z8cd>h(~o3L<2E<6e3@(YCa3{xtUt zz)$rF^F-`#ptMmVARshU;9vC{t6Vi0!EkIG$KV`o3)Nc8))?O#h172i#JgYgiB#eX zKcCLT?d|S{C~sNyp3o3e)s;zYhoNp7PvK-fs3xa{xgmpJ_;^sb2X3fxDM+G@slez) z$CO{H>y}`jV%9Cu=cQ{x>|A^q+?C@>ucdCT#E`f}4w1WRYYih3({eY*U5y?qLR@E8F`2+HEDDBt=*%Hl1U5wRb#6LI`ct#|1``NSo zW_s~NX|RcDD6;RtZDiF8a568sR7*6f){&gM0Dbkhi3de*lTCjytEN^(_&g#QgdD#t zC{Cs!xg6@G1Nxoo{c+}}pe~OK-;Ur3fL~0XSRNpyy9Uzk9^&Zf5fB%{Qx`m02EC0%qhf0Jxi;mJw zbB2}3;<3IpdsNetmK<5T<-=T!H#|?pY%O`eG4WR7`jwPc&M`bSV7fw<+k^yAl?Iu6tBca6hZHpv~usD@{ zr&MM9Mx7VDl@4oyltY)811GJ7MuzF^8n)PNK0RaqYy+$eN_HefU9{kzk-Ylnju7@A zd?3;&vY&%8nC{d6u(AK(r&@pW1hh{5tnGfl1}Xti-==?V!Q->|(9+YMdT51XLHvHt zp(c(m$2-AB{;U$m62QZia-As*B~;tm=#^R`^Tg?Up6^!CuU{jTL1l$ z@OOf^{pAkbE=rg7nMe#*bk{5p#q>DFipE=d%YY5ye{PxJhN|p9s`apGJq>i&{{b+6 z-~xZz2|}BB`Txkbe_i%(_JP}F^^*Mm8{*9U`}s_Ojr;$u{g?jK!v5Ps|G&Nb_WM~b zv=64_ayT-@?@e#?(h3Yr37b1UdmO<|n&FN&uQN_^0g;=rRI*NAvTv zfx({)hpvpE?_REboXtEOYx8d6^LiVi@>0{(z(0}PL#XMF=2a|Z#KR&GxY`KW>%G~n zj-kd!HSmL$r5~kd^|d5tKgrR7Q6?w`Y!TM8A;L#u%2rFm(tuGGK>TyFf;n_$C%t0_ zFv$OWBJ%ggDD>cTH71fOr=P(;{p*8&{gmc6a7XMX9TBkqa|IFDp{RhUQ_aK$uYWH2 z@85?L1jAeoeZx}z@PDqL3=X8%?DDBoG!y-|3Bd0MiYbWDwwZr zasOX7IdBMQ2^dWv4UFw(Cfy|WW$IIEl)I#Oz~ zrCj~_ze6{M4e{gs*HQGLC3%X-8)-oK(@VPg*sH~tWO$wQRzx}0U!J}y-xj!n+GU$} z**ry)ep{xt#Dh1cU8E!pM~&4Zei|?Lr;yF&qcj`%a(AOt-bDG|VG_whlksRjII(JS zrbO|FxOf9~|K_hTmeHIKmO%d%ST};QNc`5a!PNOa^46i?^+rFm!SxDE$bSzT9P;0R zKhm~QY7{l>g}uzEH!c5dn|zUaPrSJp67FL%Vas;CqUk*0_h{;;0>zq_(_x^Voq+Zr z-fjJ#Yov(uQx+JJLO!fo&pL}5PTynDr=6|2sDW!9{?%2G$m_8oGl1 z)x049gEhz_7xm{RSmYZ!YV_;VgHBZ&(evrOeBQ-UGyAA6``mTWvPS4PyoHJ=S9@)$ zrW*MFHS+~c*@>`sSy3l193l$W!C8(xW;8S77rx?GjC*+tPGRtzF-8Z)r z8-?hoyMcW@CO^D*n`Lonb;NpANO?N`^QA37K~tV}Bkej~JvfGGsx|J<$DOaHWiQzN$x;s+ z=qjEz2!Jdg9UmW8X?H&83$xwo(YwzsKfO5^M7Bo~V2R@b@_x|V4i$fqQniBZuO0e7lWT>#&EHP9V^!6-N zXFpzk`RbSv+SR3$#%#dUY`vJYI~;An*Xh3nlt3srIrkv!U}0g6dIvM<1U}%a=@Ne! z^NRXIIoD%Eo9Sorksp6gKlw2@0jW3Flqyuq!yo+ZGj!G~bZMD0ds%LW9WkuNt<23d-?ugOT1ru$)JsuH1o;A)oQ`9(gT}z3Eq|tmH z$ZP&wEOoPD60hYHdpr}_7I!ZMdu+awivLt^ywgbj{Ty&#j-9t|*@rrV4LZ(sxQr5dj9u*v ze%y*7a2_LN1F~-jTF-%#Es}xbc+7d;mUJAZ>xj-jxnCq(o~}3Br0Y8NL;fh1M()2o zYnFM=^E||L_}qTpvbLY1syJSEZdm)ZO=v|!WVZI7=LmGF2#|rhpR6R5Xj9v*4#a8@ zT2JCTbddsj_%~qpOw$yLk{B=aB;yAlyQe1?i zVq=t#yZ3oIDR&;HOb2CSXqO?@{cJFc&hb3V{F`6hdD;E2*|_@^;9A@XsdCDFpYPps z-FH(<5UF!rlTaptuLOS2iC25v2O|sBJzFNHC-T?t$!bF68Mdj!h113KxY)HR+O0O# zzakooXm$0A9tC5*0_TyWcECyIciMo@b;myWm4M4OLq3yjIP5b? z$2F2MOd$|VH95)L%fP7JR3{d-yi6_~mjWyglgkGFjL5<-b&Qk#$O2aZm~PWqoQ=ES zm-u3E;ymOfC zBS?Kfui3#w^^ z=+mqx%5&?wb2O%8ilpwqEbcClhw{_@OHJ3!r{}u9k6_41ATKL)DIHWR7+#03BFBb} zA7+67Aa#A;yDz*qW8`+czxG98gYP0x$>pCG$y)MvaFn@@eL!x{_vbc{LUumyuMgs+ za5>MB)OmHbpp5OnSex)KwfYZ+m>#X*)&HOlSgKKUs&GO^$kJ z2kwHQ!QOovTu)R^Hac53&&=+0iO=W@jx_%Dqz(*L{7@LsCs}tDPKYYe)w~R-j^>aoM2Z55 zFnj`$5oj?hN@8*-pMc1xl+)VYO|O@$ue*${AD_NLCq~TmXGeV|QY!QAp5A5+31)BE zb1PMdr~!su4$#k!-NS_=l=DBrPnnz$}-0={8uCOZS-;t8ZpS24S+!@Av|9&%hFPzXg3 z-l?g;9m173&LCkLNWznSTcA|*uK#SBd#hmhWQNYf>n74il&f%+)dBd>d;>Ah|csqwk-DZVA&Wrnu}Cm7xT z&rWz<{f$7MBeMy%fsfPiTO#TSFPNMWN^d0%J&`vd!kr>V-C>}Rp+;{vT((i^O zG(49Zv7U=)A0%=m)HL!$z+0^}?4~$=;`GlegR&vam3AIjER1Z(RlfflEyA|*rYT=k zdDavejH5*e!&EN+a+IC^cYb7w+Hurv7@I1i!LTKhsJS8{iCpxhGid~2AUT0Sn;c`% z1_ncdWjCwt0|XT=$xB$k=vquUfx|cW?gC5bV-ynkB-cInFa~{dwbO?IZ z*%9z0jIi{XkS?J00>D0sWgA9AuiYU!O(U=2R%Kw{1G4febZo(;sD2JJznl4+x%rVLW95JLA^|8O zZD=}CFcehF!edeAT@%#RIm;+0{x8?kP}d`VwHf65eYj*Pzgo!{E0 zOVxHTAB^Fg6f&d}NYk#O_6{z#dV3M&`tc)=9!k^o8<0^zG^o|0Qp8F;I}rH61Wj9= zv46BB&X4l_?TK-&OvBkF_=@IPcXmRra1n?=4Y{Q9xrSmQ=r-q^I6U?O$0*DSbfO`A zL6fs_CVHTlN@&(8rjh==Dds4g=~m>B(mln;pSvxQz+K-Ahf)mde3y*}(R}3Zms= z(}FtI2+y?_wdUdINwC3O=g@bY_Sx(r%T%k2^xUofVP(OW>~<<9uCm2kXhw%=GaVHP z#7gF=eoUSx5CYqqv1lwF5NP&dbc=V=dZj&*y(37a{~)q*Jxc5#7zaE#LJ?!H^3feQ zcA+l02B6A%Uv8p%HPcQ($=B9wEJ>#!SK=t_AhsmbIMGic5Q`OXD^@kc{%izFrwY*viwd z%33iaMv%sJ(=C6n^O;K+=t#5=mUrUXdpI<-PPb4D^0eEWg?bbk_uQp7`bzWmISe|D z1b#GN>x<|SIYJPZD)rRW{_Pb?>~$HrZWV}QbhJU<{Yg}7)BcJigw-)w(`}Q@QEAKj zvYQLx7`R)@9$K4zJ;&~dr=f{J@UkB;gPyVaJI@UnDvzEFm6u&cAOo?@9TJy&w#cS! zQWA)#Oj&$a)lDF2tRubv3dwW#qGP{=PTS{cg#pNc&^}en7x};quff3gv589+9 zNJ{B0S7!hvZxtQ1Xskr$w{_Ci?4JbLUznMMt5z5{wA0`Tv9XnlY$^P=LB5}`Am3ze zN8?4+n2x?xh6z6nLEhly3Ga4&d%g63KXpH~K!Qym4Fc)aei&4J@PB{s&+Mw<6&MEN zw*|Zm?jraDOtpv(H1!qh>H6_`4_)iE2y?~(q-1I9bDJ8cn+-c@75KBa+x@`@K;mH? zGBPL{mjQb`!rK>ENzWe#Q^_$t?0_)~EDa6p8c}Vo3}fu&O29zkI!z7*?JZKKgo0Tx z`QmR`wCr_Ds-edPK4f0<6u~)|^9;H~_6>W-!5mBnz-R7=258!?O6wTy#CT^2)y10) zD5C7uN$d8<^fVw4?-m8eWLW#PUO5J2bU$Boisza6KRP0`+3(CiqZ?Owe%KT0IBS>; z>HnsMi!6^2MHvl)oCH0O(}ZIu4D+}h7_N*X7BjYevmK1Q8qQP0>ULchmH0VCp6*3I zDizfR(cl4UaB;Hz)|iY!!@ntC5_oaNOdgFy9Sk2YSi6Y4?{da#l6r97syIkpmmvEZh(V24Bx;hfB` z?2enpSb}TImX+)9B#;V}s}Vv1sbr?G0+#>TmB1Arb}dRp&YzEa`q)PnRL~7}KM&$@ zuA@&qZx4q{+oWKU6b4GICZoLFwamU4%=vXWc0r1C9WH?;11xWaK~Rfw6YLWBACFT^W|!6D-XYwL8!h^S$C>S4Q1@v5%rEAtMNOJQ{SFVfDLcB2BvH3gjje zl_w)i*LZH2NA`1Y*(iGTJN%Mek=`m=68PI(bA0CU&ju^=nNO*3l<20r>*s8p{^FA#>(>vi8vbezn9HMFG?=@lIg2B5dIM1|TCx%X`YxOPxdP4bj+)6Izn}O~v^vtWuAu_ywO3`C6_BTyzXZe6C zf8@sN+p^jZvNyptqico^Xn-^!_@t*`t={2V?L|+Cd zdD8Jo4(|`rl_bm{CxF3b$boUh~ZP z?iNy~ZCQ33S6QETvyk0@$V)2@7sW*iqDJgrhkNy8rf7O$W}CrOU|=^dFOYF4LUq znl8i%LP$IME3x5N4Z$c+eKyZ8#sUnt8{M}v{I^xIzcW+pLwv4S#!UG_GTOo7zvpCl ze<5BiCdJ$`lLB5xsvK6 zFIbn?W(?9o2=v_h-0pOs+?!qlEsF>}iH$q5YjJ$7E8b7$e+||?i zWE#eoH(0K&-7$K7&}{(p&usn-Fb~l}!7e*Ts~@_Ru&~!7d2D~CwMugON}_I$_|5Cm z@p+DZ%_;pAg+=_R60SGg{p>4R6krJq!NtpL6R0~Dr%0--zza!_nrNt*{j<4Fz>LU< zXSbL(bW&Rx2{?U|b>|CJ3hJnm$GDOKO(^-UB@blVS^VK8Jbj^iVsvjj1Pj4=5XCYC zk!2h4k_%ngaA+yXV8!f19sXS}0V+ujh*zrkrNJX)L$@YvhC9@HNPI}QEzut|ZmT#~6cW1TF4gRZr#z8}3 zEtwgH1;q)_@0^!hPS^v#*G;Z{N$6Cpq!XX5qUzq#HDeF4>FpJU)&bc+mPpD4#oC%l)K0kyQR&}I=y&KFFQK2<1*-MD}c8fCD3P@ zBtn52f64~N66zwJES%2ai(pK^W*U(I2^LSe1A#}J`An~fvKs8s zi>a9a4&=cNB{_tu4SGW`bWR;n4JCR}0@(hy%9;jb`3Rc{l96Br6(&6hUeD@rZ+Ug- z8z^+Fr1U%+B9s?W4pU*0WlpQLu0nRvSJ>8A78)YUw%PH$JRNcm0bI2l)ThD03ieH` zIsF^i&Q>S^nnb&glZsFPz+jI7j4&&Kte{T?bEi=9K-Goo#hl%{+ej|}iK3!f^ z%@A@KAQpl#l)yFqKFN>gzT^DJRu{wfN;|zW!}>ihx`ovGhTBiOAYT&^x(VQrywS3X+ojy|i8sN3aPl7N3;qF9%6P&1 z3}1NH=kr#0-a4c4HMpBmc3#*OFc!)*?a1j-2l8~6^-Y}7?~Mcs91Z4?hlF=* z1t^ltfB5%$pUxcwiHh9nV#l0*?WXwvp*!W~-XVt9yZY|c4)jb{sw4yt>9$?x^T)G| zuy7s5dx$G_C{N;IUe&hs=7`@Uh5h$uIrK@?i>HaPWe1~C%Kym%sBUMR2W#hc9KR2jN)ni>2dRriald*Ptz$0<}my|ByDq2Zv>Xu^xMm1w$;S zt$6fGu1aTMpWFn+x!hgd?<{HVIXi5j`BR-5&3p1yw7 zy@qIGJvs%3&U5;-|1Mj>pgJaRCBQ<~G88Hz%u!;J=4lZLU4fEE@juH>h){hrTJHm7 zBtv2bSyE|x$G-xidmR%pCd?-)$(?DW`6P6>;cR@dulnBSocKuS)veiq{raEfc%+nN zppb=QyhQ|l5CcJy^PnW&TDj2UmRnpa;$6PVdoO5?c`PwA7?be{7)&jNKUVS!iJ5Im26Si3fJ<^>~mbC3GN zDwZ|`2iYDFkYn~w?iKrzziherzo3ncOrHHYFKN;JcUeHh9fl;U_wf+l8%8WL6AYHr zNz8hs&WNjnc1ZEDY^klR4SK z$d%uUM8iEK#km3jR{@Es*DQ6`i*!0^<0d$2(N4ZFYb5X7PVYJS;kXtt2YssXU#ZuF zmGg7(jwFZB>1ToyqQ4XIyH{a;uhAd6JNwyqPWOOtUKkrPFqO@%1ciXJ9reosjJhE2 z6x=Vc+4~=91SRvs4jd?f6@ulX?Q0lxs;21>EjW%6*QUG#HYo{+5?873EH%Peg3D<( zWjJ_ZDvfD9bj5NeaQXHy+o2_>`mbMk!czjoLryIKjywpz0VuYBbQ@a@Kg+heL`)xh zl$MEs8X`X-PJHz;GI50hoC?3C9&YG&m}zk~I0S5si9v9yqU+or;j=lc&@@LnzbhyX zaoyCRf7*qb9Kc77y=D=&gxjHKu@Irnj93>30~ajcw1HZ6_GRrl{+&FLh)80=I~TM4&sOa&-&<|r{l9Bt&Y}TTbfz+qrbA?%jvoXT5mxRLB^51)fTY%8 zej}v2&uMKI)Kx#F)N@9O{c|Mg;l`x`X(VX)SS>xC-T=$6Wm$$z6p2c{_XTe@8er1x z=jsX(I9MSKCm=%>{GD+370o#*S+uC7h~=GhL2rsJA7pbq1RZ%wDVMe)nr9k#jSNCi z?e>lE1Z2o_L&XrETs}83$?oeT`vMAnBgGjXW;uZs(}3|vR+|d;8T43>yc<({r}hI+ zn7vpqG6Rzi!s(#rirtQFeVy~ne`=jW5dr>W1W*oW?%T~I@hnAAbr4-;Or<2r7of(H zZP?+;DGQGFvF@YaOyri&cc;`L{ya|81;!AxL0F$U zDI75$fGpenJ+}EyD8iA6?T7hTcZq$jL}}E*KX!HLRdKG-%E81gk16l|@otrFJgZ*Q zfnHt`K1qDo8D0~b*)xbgT-T-&f*rcpQ1-bu(5Z$PKwHV~*eaVMw<8ihol;7eHptE~ zx)qkKz>V9}Y+ft8<#!LOm%sV_^_%4iZLv(=7$J)Rbzfo8qP>@k*TQ9 z3J5$>?=m_^=H{h(AZu3R0bCe7imFUO*PVgTmYfG+foXxEIbtY(v@rBoCnOa?wsur0 ze4O7I^K}W1M?)@(9pb+vr;;hD@Pg4d-KHkTItdg6wW;3!mi*qjxmFv31*0nulo(k`#YvQ>Cnk=w5}~o+Fl6B^SU%)VJ~Qs3Fa}0+Qyed}s(8OAoCf&N zg|Z?)!!*NuO2u{6EwO_+wW(>B${>iC!y%%=sf%P?Nzil&;Upy;st~?gP%Zp5hO;{$ zbDX^e808I3cJyFiolX{#Q~M*7@!L?+M0+Ez-GfCM`Gi(q<=ux2zpP3#2rP5r>2!hW zb=`lOsmFNZdIFf1^yIz)IA5fE%CZ!7VkDZH5L4QQtSQyh22*}EE@u9jKD%md8S^G> zYmAOfxj=pc32kuOJ+`^j2ovMPYD2^cQap3=Xy;M_QY_p1^>5;AgQZ4(R%t&g4^gY| zoA|d+L^A3ihRhX8noAGmXj#GVmAKHacS}n5h^wMsWfN!~(xxlT8uC!~&d%|DA{0D= zS%PO`HS!VuAM)NRsE&0D+f9HV0Rn_1xLbk-2tILwTX2E}cejZLcXtoL-F@Qj&cxka zg4=2KT6^uiZ%);zI`!ZDmuXTxyFcwQzUO@hK1kMwS%}N~MHAYG)qdyNb74<^97{-} zqeoF(rr6gVUaT~5MHd)&g@;Xh?qj4Kawew{m62a?diy1Aa^-dc#DThdu`xvOEK#ra zFA>)`QywZzYSACZs`Z`J^cF1Vvo#*%tSO2*E~IK{JlmyTlw%c_`6)W|8~D?$v8aC( zb=d2ZQUyWXy=BO?rJUrZBgsHfP6(93)Z5EFc)pMi(<#hUhk`1)n!-!^jq*>yYB0DT z-qyxTmz9s>dYb3Rr3$d(nUiBtrIa;uz;+$)g{79sfjB`mAr>RK(lx%S zL|$&@ahum=V+KCkOf+CVT}k}uUk4EH-oR|YIBFC5X7j`pRO98WF|*4ClM^ z%gz!hJgcxh=5g9NM;(8NeLsuqT4y$)d1KvWvFof?FFQoTdK~+lytAh!@9z?cjdygP zqek;6C#lkUKED17!tlJN1Xz>i()1c0G^8q)RlKGlzK%vN<=9Wq$@t}=)-D{03E@o< z+c`Fm8EWqNn0Oter-tGo{<|R=8Rnmn{2^3?a^DF#a~mK}=QTzJ6HI??RL>y_K00vh zkAMXTc~6jH=)Nh0m8i)fz7L%4ernbj=7yO0tzFQ3z}&M@sy6c?Pv#H%Z?J(l;!(Nz z#~%@w3^*O(pD|9K?#6wNz3ls@ZA00(aPK-|mi61kzE4Rf7t9b$RO@r#y{<5|{N6-# z-=M+C8kSx}QbKf_|98rq4+#!)^krz9x?SPh2tz}Qnnb=mT+8#E)O@D?tdT+uo`%xF za2iJm8fL38l(>-}R5&DV{o48)K2&jH*>YdAQ%-ewmkS;Im>PcnbH`2w&z%^7`%4+M z5;z;lADuTW8=jSg196M_a+T^Q%A394DPU~XwVdrQX0Ex7Xq*Sc%4?zL^>aWiLjiG^E+Hk4*-&NKacj@huY-7)*3!*+84z-kjn8Tn3Q< zBTS~uB>SJC@jUo^BLN_)9XwS%@;{e>H|(-c`!OXBtgruWqhD~Z$vivTXN(VRS1CT* zbY}Y2p4T7LR}4_JsuPynXCmYk{Wi>|cwUj8d8%^50+uaZ7;lS4DxzBYCsuO+5Bq)a zX6fSF<5;D#(pcqq6!4Q-m@AGVMUou?I{)_(T>qb-Gvaape|sTL{2C_NF{i&ms&D+4 zjdi{{=QoGrMJle#gJ^1fCJ$fMWAWIxNMFe_j4);)%oKu$v4iCR?xi=AL-SAn^0kpf zsN%d!X*QOL;VVI+Rc}$VxcQM?G+U#*r%X+63q6QBDy9~1d83$p&K#`Qra_k_dHM&7 z@9r|#&UH=3Y4!K5uu86Y3*$hx(v41r0}5|Ti5;lQ>@OVW@Ab^iC8q(&HvEQmR z8;7S{wd>$GIGER$Nl~cT27MdZugw)beBG5LR{fUA=}~ESjMJRxl>xm}R8%*!o0&Hg zlYSekv3zZnAT)JAmxjYPlXX_$SX`K6Ep`QV^-|BPZ;@H6ZNf_`^NLWQ}L0{5^5M`tO+Wh@lye^oP> zXtACGj;}VOo#vSW_PGt__ljKvc_#~V{+ZG5)Pe0q&Z@Ndk`@atpj=vdmdc*`1Dcw| zg-xK%J&C^l_(HLbQzP}+EYW<{*P$p@)_H<29*Y*ck7sXdsV6KzlE67Nb%2FoputI| zbwJ_2BSl%5S3iNN2xEm&ja*J8TW$9H-6uJrY4hb|ZNA@6l2}Qj5l}z{)pc=4NuCA$ zwtEVVG1tgd$Vu3zqfGAoT1t@9TR08iIwI`)4l)(Xdi;`k4BZVtBC8H)oDA&|m|4-!#7P^&>;|Hhnz z4NA%7cDhuGu$MAxyzEI|xOU5j2|e$6?|F$j&;)fY zb?fUtz|v(;Xm3K2HwU*i^$*M9Ds*-tGt%d!^CL4tN`T$O$_fd@c8lY5c%dv1ihcLk zc-GVY%I4vMZO$6YqGzKoz4zxMTZ7`=%|tkFFHUYc?LM>=&3qXswUc7MmG6bERd<4R zvwC+da92@Trnjqea{<+=uoac;_uFr2v9Vl6pKIAHD~{&95siv=yeq8TM}ATvp0BY$ zU5H-{Rg>b@lD-2q`s-7-*zbP;c(Q`Uw4@~Jbm<$R8nfAyeDx|ko!OpWwp&|sa8pZZGCx(ZX%bb8S%6*WHLGW7j!g9V$T9U$QgttJ32?eC zbaPm%#RRT59K8SDubf8=q|;FN+vFF2cVWl@CCxbQ4(M$bFW7u9yE+8w9`EMeiEkb5 z4q^2dZ}0DF7)VI?)0{3}zg zSV1%%fhT+=vmHp~@TDDOUT>E_&U831l5M}A`OKDK!r=-B^!c2w>pk8(*{DQQ;t0si zq^G3N5{2Q>1b=viSU*JavEvEx$w#4J%Lb>K1zzj%e zN3OR_KdIFerA%ysj2GC~TlaoFuB)bU8^)mqa-0uVZjK6~RbDhajuLddJ7#m*W2{1vg4kRY2erbRkv%|U`sq&(&i20T&HI|APu+NK3A@|l z*_0@wCqT*~P2KL4!axg28T99-e}F->G?+eiJX>Pk+~cucHb**DXRcXlu9kOciN>eN z)$}Mh-Q)IK82g&&uH9L_T!F$Tq`h@_=2m|z;_K;r`JQPh)fVd^kDE;@mt(~O_1Vj8 zlc^K$V~;O`Cv`+lLJ}OClfyOXlVWv)MXJnZh!bK|4pB9SVX?oz25;TEU(~RTKdjIx zN5oCpYDAReTz>uQBg#hd*Y|3ZsDy-%vDC_u;<40*1>10BkdO9qWADX8)9!t2qK5gl1j4l?n_0@8_(03Y^Ki(OWk@$`A zjLjsLxt@K>6$hMOVRXA59&$ar5thw;RRFScvw-H#r~M1W&31b$y5{oGCBI0cR%x!9 zOL~cUEkPC&h2O=#rTJ3(7f@b=X>IIj)*l|ofoWafvK)9LpuGhKSGkKnDjsQoY8ahH zPRN3@ng1B)2QE7q+GmT7 z%l+R(YGZdNTE5t$UVcEMYq{?a-r^C(^B1hgv#6U}K)%~d(4FfGYI&;JTynZYwIy<; z5FwgS;(4&E0No8nJGlHHIwqox&UK~jA#_Q(uijz6;oL|Yt%o27JOZA#eLM$db9G~3 z7$-+p^yjTC*6r*r%S{i%$xOGixdM$uH_P6ao>Bfys~tp9md$++54Z&jv_cI;kj>X~ zHah(K5tskw|M{d5Q=Fzb&bskR`^1EW5S)Z$K&RyOS5HS3iX#c9p%=2ye0k;mcm~V$ z!c#cVnHJmg4>^qUuO-|+}r&^Y1L{JPU758yVzI@Iqz-hb=**LwlOoa!A5XC zfTo5Pv%L>DiFkG4G1$0n_6@W@$*8-<#=1bU1Fiu~fiI?2}y zRw_~%<54+*Z?!CIx=U+Y16_l@ggR~0d6bv!Bi=S1HA9bhy93sa7Kf|76*>riID~-z zXxDFUdE$UBVp?vK_67aNE=jzP%Tc^;5!YpSZWeezDSAshz>;T2BYQgOQY`3?DPTz> zz0{=E9p)x8orsVG(7VpTv-(TUC{4%wjp`-p98PC}JsVqU@N*ZD;n_%TN&o?E0D92! zOW6G5Uj6>*PAluKO|9e?U11%)k+Q;F=3gI7P6EI52c{`EbdrlyPHP8KPODQq_}N?t zeSl4vx%jiia8uWpT;SX>sNaY}&UQQ=*rYutZWB_C zG#g3NqnYEm0Y}NQ!CtXi%%Jb0t5)sEoc}848$Pu0qx1hrmHE170?jf&R2S3vTaM&x zz(sxPXU_W*GQsww!yW=?TQjPa{=&AwIUm2;e2vt$6j!9_`Z#1Fa)+0JIjFYm1 zD*r4qy`7W297v!%x4-khQ213}f)27AFf z8|M~3>d(lLM+jJNH|exw;}q4gVrcRo{{HF)QSi}H3nW3GIvaUTR>&@0J5^dP=LY1; zbtu~Av4`IV<)8&!(nCw+m09tu*Q;AXvC0E({9`|9bb~9DogI@$Bd4}p-yhas%IxWN zajzmZG3=W*&8qk>)Q6x>tL41bvQ$H1v zhn}u;I>AHK%IW=aYVB>X-gn-rQ|*c##6g!wOCvwGvOIY0xTn1_4Jy{9p}=Z>oQ;{)j; z+LFyHbB-1v2!#H*h{}rAk6IRJGooS8!QhZ8<)>g?ZMKBxr9a^*k zW;mPWkcDbJ#kqCj>z-5iM?`w98p+2;C>K@<4aE6=J^bbp&9IKCf!hV{B;=+`KwLa1 zf|7pefNzsOEDo7)2yKw&no=s+*Jpl=viUl@4^n-Af`=`pAjI*Qa33{yftoBU z*X`!(M_RZxo(b^B(-fUf7iRXu$qDJ&eV_9C>-8(8Iu@2g6La`uy3ep=+r!B;hhb9Z zOK1J*Cok6AN0_v!vZM$4v0Zy#2zOF%+nv@$hV9Sn>fM|b8eiUpd=y%F)(l)mNE66J zhVv#F396jvwdl5gx#q@r_o4lzk3o@EdK{fkEqs3dCxAQH(S}C8O z_?9ITca+n~=j0R=eb;Ebh^hY9Iwe?3S|OglA6X@n*xLwu>X$q$Ljp4_Ou0Lk&cX2* zr{I2|2UzfeM|j%5fG0ea?@q|Vs+Rl8btl$F7R#4-SWWB#$jK>Z{Mlx*vkqc`?X~ay z&`Do4Kr_c(9(KlWX(DZ-j#x!l`f>)`39DdgJ)MeRx>9&4S2k!hiG2NgXSrRM{Hr%N zqFRwF*?J3?En>D<#QV``9K_RW6!lj6rp$}+9I~E+s#x)COueqHCdwXrRj2C(PKV_b zeXgvhx>y@CK{NETJ&7_W zuFXqX)5-oLYn&~>RZEAlpNYD#c2WqSYVRsU6ca3bqFM$+=|)12tJ2$fTr!3)q`(L@#?GGKkv z7;;L=6<*QOd_H_kd4<{p)l)JidvejsLh-PR33W0&A^9EqG6$;ZnECX%aVdAiLvQ70 zve_0ESlw0367R89`WpC1%Kp<_6(1VUyB<<0psJ>>Pp4KBrAbMcQezF;9`1)ntJgYe z-hab!9uj@{>l>lo5#*e3cPTTzxKJ-Y$|kIjex1dG=M8_9?9v*N_qa134TCjo3~ih zKAU24er!*}(%;!ibwsK7yVi`KMSEn2cTwuCZRA7k0PpDhrNRO~&V{a>r{ zwgLiDY`IK+>5B=x2kI4>~s*E$uYiTh5 zh|T9?#nm&;sSTs_4-Ip--BbV*+dRmQ7d${PxT*4Z)O$P3lfXS?OXKM+`pb6WETdAH zA^xLcKY2f|*eAIRJuk^?x8OmX(ZM4T+H_N&b1LMT@78WbiL8q_x>`v%BUjEq`S9F% z)%v$ca!Zqn_y^-JbYpSAM8n2{;g%n)PgA{xs@`y?kSnp3A z1X%gukIoP6@ecu;MkwXjyBV~iJI?#Qjt;&oJuV124Y%qCwQ5)Hw|AnAnY&~yytXt& z#v-yVO^3*}DN_%7-1Pqnon+%KN>%vlqvpbakA@JtAZtOk0yzQJBhmMAnk03pEJf<- z(`G~Xf=#B!Jc-p`#O9`CuogPMufK0`YZu>zHW$2~DM|A>Q*Bm%g~zsc+cDWe?=Wt@ zety=hoCJ+39jLQD9(W>j=fnMCrl&>ZGO%N_gig$R{6LvYKZ}cf-A!W!GMcG|s%t~M zD9mR(gC)95oq>3VRfeIoF*JGLO?$^37Ci#9eIyzV39rGRn!`9|e-9}dlYQYQPYChP zyx|foHio$j`)&qLJA3pNx6wEnPY}gPd|>hsn?XGQ#g)910cbzR9BlrS)B38SQ$9>pvG~Q@;;uN`{BVo7MvyGquJC!4M8*2rj1SXMVU+ zJo!Q5EE&lZ{ofc??j5=fP?R}UAhnVVjsJEZP+9~Me{{CvHiYAJuN|@YGf(j$~Y_9v1W2J$UIWB3Nt9JoM|AHtQ_xYtVsrcJj?~(pVyO))TP3_a%9hJO8`4FX(Rm; zTFu3s-3T6WxJ=^3>SmCHtxx2W)wUE_VHv2 z3_KwEYfd<;Tb<9}d=aeXVZ)=TfNR?P!Rsu08wYSOnGe{!dI4j_bL;N7c>rBUu%HIm z3=Q*U@RrklX!>%k4|S*-rt8XQYfLxBhopa=MH!{0--l*rf3@Ab9;8NK*2i|;qLo{k zU)bPxxY++!QhDVErs$KobD7$2K&^BW(z?=Ty3u!Z!Gvg6Ot0l4!|Cp=>CUR_$NLmj|!s{7z&=Hk3RE zYrSZ2leVcuC0;co%NRe1*ZS#PHUX>^1Y<+@>3S4ccchv3YZ&H>;cgr!Ndmcp17WWm2-(=s5cs zRj2f(zAZ}$auzgjkcAmwr6XV2-*&*O1q{a7A@74yt`GZ?aqSyqY>Sh;^HYp|KLeG9 zS);4+2=HML)^P{ZxF?2JcDfnxQ_}WT&oN&P*%E9{1?WF^e3Z%W(vc))C?UxpiIt@0 zw$TI`Mm5NFoz^A*9-A ztQMTdOm)ADrD-_67YSu=bc)1*sLV+=9?FmiPoslo9~HD`huS3Pbs`aFJsxcO`==_c zR*4*vj;)Cd@X1y#MQ+uBgf{53Q`Bi8giMy}Gh9Nx_3k)D2Ad|r8t(PT%~o=0-||5G zfQI9;%MZ?C!#+%y`iI3;^B6y0u<=gC+g{3-Iwh4f5o4>>H17s3t!K^V_!+`vFOf}g zzm{mUjCOPsw{u>`hb&aE4F2hMUm8mZyl-{a9A*-FRop^qJtvkF6IvOji|SD0K-b8JL(KTB=( zU2HOZJ!m6lbDBDDF_-LiGW`31`TB7J#S#PsRKOvhL!DI5;Rjt%!QPjvb>$UCr&^a8 z5q(i6(?$CA93?;vfH-3RxjQRGbM=U$(+9v?CiU2sV{z#FksziHr z@o(MfKI?m7o6HLvQcFw?_(Z@ACLn@}sr`NC?!@;4g5iI)>{vQktUU6%vPbw0TB`50 zE#>^_Tn~{{O!h$Bj8r0;c%+QKO}QkVsOV|I3_?L2@4Zz3FO_Z-4@_ z5ps3Jm7&{&EZKQJI3WWFy(Mh)29zpR(=TkgJm`^8aW89O%V!%MWoC_XMky_CQf4bR zfDGr%?nM4o9~EKcp~dL0jL>Y6KRQ*0XEEVJj6Ho?!H-cHf=A`^fr2f&-KN>u9F7BV z#fQK297eCS+#hBoG2L^rlB`HPZbka74k)l3<0&LQAbYu9v~2eeZwP=kKC{A>e{Xa! zpT~m#%KTF96?35}67vu{8ZPAFOcS>Il^#pm*m|aL!ouPD(2OVRnV%T!Ed*mXl6EI0 zhH79;h}q@S1;m`NSD5!sAuq{FUGUYT24WJVPfHlO?)}rbWPP2}nC7n&aAGt>;_t`J zhGj#30vA4+Ax_)Hc_Th-Hm-D6j?IfR=PHtGx7<)^h%6?YqpHuaj>2DDdK#% zi7(7_x$Uv;aA{;L6R7`&8W+*09;rA)zzAf99h5|#C=Tx_}59o;4i*k5BMeKAhjO^Im} za3PJs_6<$oKxBQ_Y@5R}d3tyCBmb2Bj+KBP_>xtG zz#Njz>lfraU)~E&Mfzqfj1M9-6JkPpF(ip7dN^ksty<3%9CF1C8yFJU&brCFuK zTDy0|k>RPIm6w+fJ&}w9{0{`3wdUmMn>GYgE5MOv3uSGJn3vIPuR*=wP=uH4?56Yd z4|7Bg35lY+$D0<)H9Ye-d#dF&zT7--m5-6o=Pb^0{0Sj4(?zO>i^T)h!hGCNYlpU~ z`o9iT(eYrw*f>>z0e0SO7|LHChgt$_S-U#lW5%uMgr5?-3~}*?IX0@jNy3oEjHLLR? z+9p&Ag&9_k7yqgJsx0DH%kiUs(MPwvzHdxcD^h2J%naCQM~qC`YwwZ;n>?QIHW;IA zqU-caV?Y14Uc9YdlFHDxOeT|}7b;@Qpc@Hu@9VZ(PYmz=ow)Kb!$=^H`q;)uHwGCA zY1gK}DAKM)UrD`b3PEbghfRa-5ix7|siJdBIn)qIRo*3i1);$@TPc5;h@ zqu=2ZdA1&VnC|Qr+aB875kv03NJi9`0(@b-tK`X0T(nQ#o82DQ{2$|R_(S6zw?azI zVNZtXSv6M|aJ>;_%C-q~*MB{1qZW8{hgfbLdo&evUXjK%c{4Qi*zMU>NTyt8gz_42 z!CnP8QHHw~PMez{!jNG4sAOej&DezE5|APVA~7xME%V*yW*xA=!h2Lqz3mB!PsctS zxYHz&kkY^=w84&APUKG;h@-EbZ+fynunUq*ILW~HvwvuyQ|3)Oz9CSR`Z5HBVh!?U zOjXQR|2qAoRy)7NQ_0m9$rUyd+kK7_OdM<{?QtWj-lUI&jFbd1-X2cf;y2Ew+oN33 z>1sSE7KuMc@cbiEd_P8L?)$cv4Q?x87W1yTTGHf+iv#7;RnGDP`6N#c$J6rm{>If* zqu%t-oQy+g^Hpssaku$Q97Lu+_9Hd(U2eSgaz}b;YrW74Xfba>5^HGO6p1O1WAKZjQY?U7hiEo*d0#i366?X~5qi z@_pwj_3`K`xPAg`7Cl5P0UGHHB=hnvy3%(uHwd$BO!=huK%9Oph{kKeJrQGgmIDY{ z2T+z=rqddir=Y5y3oTE@OnN8W4lo~un3>(yQZ*q)kqbA=YS|X44U{1U!3%chd@gg} z!nsX^?npnWl|YEu`@m~#*CniLClK3_7@+LcY%Pps3-h$r;D$~qJ(iYTekg@V#0N&V zecju!B2{Fr#(lsagS66MsLT=_l0oRxbHJ$0ign4Z1^=dD(LmEW*3i+5%n?6b@5iZu z^6Ale`a~mx5eL4q<*ZdSTPV(XTpv2~EJ~3Za|fLIQePe9V#nr@_*ZnVkQ0GUqB^Kw z-lQBGv-gN4<>c-|VuMv9Xev`PCr(l;hMdi#tXI1<0MIr+zgG=ZYCt;_(!|V;tj`I=X$ETf}O`rGqxODe>{xtB}tmK6=)u)V9AX)N;rl<*F9hG9kH)WImg94WMoL)sp zYr849{**_Vl@xcRvC`ZR03h-`ISw^&cmkQX+lXoWA}O&*d3ZiL@?1o7ldCUQxp@bU zl>qUM!b0A0H(p73bo;gL#OyZhIEMz#6;4>;JistYtfWE$*MInrUP-rZYB==l86F{S zY&eS4F~jp-`q3260{{nUnZ9yCsvBe8K+hxt9q-b#WCLL$eS&vCz;(vcE=ABTem9_H zGis-Z{g6ds0P8w4I}-_R!_o=79fu$bqA962u5w&V&6Wfd$ug zfC8KO$S|D9Boy*BSkjwk_NZEP`%j!M(90eiCGo*ejy)V`4URDM#}zGaGn-WD}{7U^v7yt~~-IT*T=Z0r#Q9hM`ki zA3b5keib7-pP(zBEjVTDrD;bFRrJ?|M7FFilf?5L>wXFyC!O zmB=6Voag4jlo9EUDA0d9WZD5c%f%fJtQa@i&HlAMk>bpmytN*V`OGa3d@)$P*^r}PyVe73h)A`tdGRT82|NO0q6%E6<`9#WXJ!5@Ba0YuYp8R=FhCJ z|Gw*AC@S9$52#iWW_xI84zrn8G#J~%@ z7X2>t-yA9*67b+%_WwUTc;L5~F;ekgt?1Z{t}33p1D;0#6S zHT^$tBfImA;Qp!o3G*KS4!C!~`)3}NH2>m%8tR=h@QcU~biZEwPqXSglZ!>7CfxsS zpnv_OB9{%6m%a=g~;JTyBFt7iX()@LQVkMxvdj3y7 zGM^6cBrjt4-oXKW0I{3NSK<%iUC)jJvrUdI2Q!s21uZ-AZRui$)*KyFXp{i|L&qLSF^dAXvpv_?wRhH6?W<=Rs6 zR1t>w8%NeSrmhLC7l-o<oc&wF~J*^C6yY*v|8YNlPf>>_MdJdmO;vDTsZsl<$L|x0A3hJ4~XV1 zfifd`(JudQqzgV3-GDtbk9mvuMGsw%MN00c_iGl(?tq8c-*ed4AL#gY+v4inS>m!~ zAICwJ3VG)mu`BUAv}2QY!DdE%)Pt0Vt~H;>sBuEBTrLE zgexmGDBi5y!prshgdQ*oEU5m*xi`XJ`!7cSB`|#(UZ@Kl3LGFQFst$fVYf972bdlI z6naVw=yHF!qf=53f3SC^l+1Yx>D*y^(}y4NKoFHorzUc2N}CdJ3jQiYz8!MoHma}0})U8ek?N@H>J#F zg~ZThXyv2h|3j_HA|mCz{pf?G(TGpr>2M*@m)x}9yRKy!m4ikfl}V^Ux+r!3=gQ-_ zU-o4N$#SB3)0{$YS?c>5DABF*&h{7sn*ntu9x&CYmLN{5 zaltvQ00OuHSlNf=7{%!mx?gLHiHpCcjh{FlOk$BxDv=~&eyig24$s!v-D3(U>>OFF zR(s2~?VRddf4M|dvpG#Eo$|5KLI2(*a-LJy%~c6%Fr311HYP&!DvdR6*|!z5^Hlgf z)Y|p5YS&5Tms^J%(?d7>*}1uYZxtSHZ!Iit-xL9pUtr4LHh{Z!M%{hd!$wL<(+g0c zM?zPXo$cx9!VR~~3lv}#(o1dyGE$pGmBUf>w%fv>%e&*2c*Vl;9!VkElrCwXwJPI@ z_BfypcoR@K26W(l90o-ELQ&DtP00cSs;N{8qqRTlG%NH1ElsBj0rR-QlNV7F=XWDM zqm38SY7fb_P0~#O8rJ-0AIk9O9Ecvb3zjA)6%v{BgUn_tD3mWYF4|Nz@JgO6TOK~l zgs8Y!&I01w50ez2Q-#fYWbb&;XDiqdngq ziI-6`0uFgBI3Ynk#p(Sg>gNUSyW`n5 zlix)85)IREIQ<=8j+_A@kRkU;@%QSA?LSA31L^L!`S{K|8RK=bo-(W-XHfKmwP}fc@oSTBdX=X9o4j z(MSSghi2uoSK!IkxO<4MY7VOE6f7R$K^^O4#|3f)fJVENT3ITTYH9$4jKOiWD6Ns! z&Dmx)P@SSi{HP7ckIv~nY!icm9IR67FV&L)UyrrAyD0AP%qn# zaIe9^w(kLPPvvjD_3luc0lHeBz52^J(`=!@w>INqRQdsj!Y_DEJ29sPLx0%x5SL-- zKRYD?gqn&rLB6}RPcF8#AGpUf=*Jaac_*ShoDz@$+I+ZLjxX2kxecDRhhsq_z#ae^ zw&fnUs${lo-9zw9KhC->J@v6m%^?H>~^$PMb=#oKLi)V-^?<9h&DPf_}Y#D`J-Y{&d`?nq|}G8|3@JK1c1z zyl)u|U@O=A)1GV~w(}A-Jb1Cpe}va=w_^)R0#cZ#1;)vLr!Xnu(7z#;i4Zz;qj-6}OIcox*l)H1) zg>E|;>_s^;=@vvfAb+)E4m6BMf67iPC0fXZkJ=U?g>;I)1ZWX^9eKf9c+`6KfgT@_ z{W`210(n~fV{<}Tz_n73NE3`Lpk8Y{(VZ4l%LjS~*F=J3BH=!lv&PA*fodN7*UE)2 z3j_8(Wg;`UZacr5kl|HDGk>^kyV+^-dV9>GsS#p^8NdYcMP!CpOosmadZJ<7^`7<1 z%Moi}Jvm?m`W?0DR#^S*G+#mxCR@#D%hT6_bkYD@L&SHW5_dr%diA=`)g+*1Vmv8wG9LG;N$#|Lx16~p?L1I_~4x`4c{Mzeqpcr8vH?9 zx8&hsr73p^@a)S3owULp*-g*miK!z@b+oBt9&u150kfM9)N9oO4*i@ZFT*|6*heqY zK{~V)gi8Q&Oi~6L7`W^HY3*0)s*|A58FebtQi5S8*{tZZeXrZ? zpYrl{{B11Yf&Id#Llk)JPk*c&09oCtQs`pC9l1NM3`qupX0V;6^6>n$QGet5^&i54 z2ClSAbgq!ADN~CU$7IJu1Pnp}h_EQ)>X%`N{q@LkztH(E_w-aB6>k=A7M%+D>G0z( z=b1OKgdugjq&OLGea^4xXg(bD;2nh^G!v82zK+~yx!q{$X}VJx?sN2H!(>|mXS%hL znfbl!1oz;ie|G+}Bf9{)5aDFIJ1_Ko`mhcCVA>ed`jWiN{)&go7-izuU8psoN69kT zf7n5>xGp@VZE-0U61{)C@;t)8n%nUdEeWS*LQI;AZ%y}fD9B=`+{Q3g!gG0*B0Xgx zUg2za%TJF~DC7gk9fCo*l^#!z4#Z^MI5#BI(Pgl_9Yu3|2M3WNgvPqIIFs8#C|B&u zui$CdLiJWMwL0OZq^{u^TZh}HjxU)-G0^^m5pbCq1tTk4-QDQnxozF~vHQFf0L5)t zI%YNCv6$$6rLsgdLc993`a%`wVFlIGl*_u)Cmx;9hB)MUe;p`h)?H+qPF&FwPL!T0 zk15b8NNC^s!jk9V6pw@%McU3S2L$D$`2Ze7(pcl!@OR$<4y8=mq_=;O5bg1%cIG>E^_Cr$8Pwt^|Y0F$#b~KFt|io>eli# z3Hp(QH=*yxZB_9{SWd;7+{H37MS6F)Yy~Fy#L}549b0wY$?S$jHp3fwoRd{f4u}Dg zs$Qr4Vo>1O9z``pxe>c!ewN6_MUu|9`&&!)Y{8@&fa1kDS^wPfBG z0YM@}ZePCC^;P>qLs3?A(9t|(!LbiO`$G?>NATYg3${I5#V(b>3%q0aW!YHf?19&W13pS4M!fE2|!f`a{W^wIB={*KKwW*#-9B@C=-c(}-$9D6lV+ zSxmPI`Yx!Jb%pRxmph{|Z3+9X2|nBH$U2?%Q593gScQv{kW7Bv3Qo3Y5G!fequ$>Y z3b9Ei9<|Xy9C>r~x#Sk~%)V=Ubb))t;u4(R{LrM8g{uJ~_$&R|-EGAG}1uYZIU(6r9#^e_lL z{%YXYLP--S15bpHY59Cvdh3pH-jgsX0j9=)H`#@&7$7=M)lz3J`~eEum!|abH2XlG zt-%?)l6_F|x`bj|?Gzs~ZM9tz!h$g$@?(|idq;3jp)DNNhkW--Oyt3EHjB7Jcfo|! zi$8wft_L<82ui_9hgRFIT>Z)Kg%ll7c&s)bTlZalg*u%3c{#K^-tM!$Nj^zU!G^+m zCQm)^r(6HHR@Lu=0jGcuqhv7J>1)8ki3b4O5k$h65j**NAw5=UDctkb#z!=bY!$1>_MXqWMC@|$5 zxSntft54H)Jo>1$G*&n4O3Fl%g-^dM{*!SP3w zZ5&f4+Q(GC?l?#uT6*Xipz3ne~&YKm`#gq^G`VR)&@78 zme^?E{1ofPT!Pt{gg`mu2>x&cC@Rr{D=|VbL{inXhn#@%*HP_@e|lh zOz~1DOJ1_bE|a=TZ+-Y3O%le!Fs>3kWnt}+ePPCkhRfAJQ8pLgM_|_`Rm7rc-7Z+d zS@IiW=GC!jFOgz9C}p+nHEuwMsbU2UF+|L_ThgxFmHTkGG(8bXsJ{^}CK{(yMcU>d zN<7#$@~fvLHY8&u)9(Z+pYx(4nqWy^+%Fu-XLt8SFRZhjTd) ziinaoXP2Pwjc)_g{$GsiX7en=%a<$%aRD){69BO}geF;xyVK1X3kphKfqUd7Q3A&p zrb94$(gp}HEz>*gNJG%4Ah_g7b%#C{fz@Y z_#2J-5wUDk%+Sxd91it0KKVbuou>`2HdTdv$YcX_yAn`*uTN7@@+#i%c!(3DA)ya< zqgkp#RGH6CV!qp_JSP~bu*8#{tPs)nPFp8Y&s3neB*)Ad_*|EI_ys>BN|Y!c_Juw~ znl5XRxy>tnfhD2QGrB)HAE$I}^xo&bW z^~9fzmmFxoRGNw-Z*=Sw6&aF=8>K=JaRdwE#De2BtF%kMlq78>YE)QY7hG`!A{F+t?RdH()HhUcv)woF_B^-Fu;M=`*^} zCGg>LK$kPXLEH+98l4HAWm@%3uIp43lgwgXV@Z9rsW)sKrm^>@+gZ53QZh}$l1CG? ziLymTs4VrIsYPdi8}~@=mI$s+1lip~*E^ssA%dPXCJ7DL%$md23#$`QVFcJq+BS0h(3 zHp5UUddae+0!N?*FA}s7Vgi&CnS&Z+bA(MAhI zq_jzfORBRvc_ShBNsL?o<4*S+ZeK950i#J7N#%z3%Z z9|5{4Z{T_Mh#y)#a0`yA*KhcW)aeH#6KAX@zrV)zlmlv;G~6Zo94fM4;-2kRUzi&q zV)jKK&*RK@%s!=RDjprFE22-cNUB#~)mim)u3uJ;@Teuc@K(NkwA1SFLq$e?GzO{+ zq{1gnS_b49$pv(gg~Kiyu%C^#!=Y|;p!UDK2QY8tcT3PT(^50 zqGR=Qi(2T%DVTOxa@T-z-o*~AUBuQy9qjAO*l0iNhIcQt$I07&EeLYM+9W#3cU3=` z>^Ww~lAheRC-HpF8^&86sClwH2CZa% zY-WEXCiz3(bVVrzm;LeO`%c={)|R-dvE2<>h%Es5?H$G|(sHN$H=Q+d%(XXD)QyrJa3OR0Vg-!Zz<+XnG{~&AyBJNln zcRrJS5mwyBKk50!{+nVea)_h0Zl5N>fFJS;qzFDy488+iNS4YwI806{gZG^-WN+|q z8W>mKF1dgew55Yr6MSt?tSXGgNZas|fY4~Zgx#=TK!G%eV8EHo)euN0Ip5g(h_hHM zsPGc6vV+P$!g_;+I3O%P4L_7$Bzz3vK;>4Xw;t4OZRb{*+y#;aaXULkiw=zyJI6pu ztXc%;p~ED9hXI9S*l;L`0*}=!0w@>3+1=_*RPiEFztdX7hdhy@@3f}#_QR_T3B;Fe zCax!5$^O<^dT@q~{#?1Ndw!bto}ZaNxAvz2B^amO+DJmMwn$rT!(Igy{XgV=RZv{p z7A+7Q0v!mhjcbqucPF?L+(VGy(zv@jgkS+eaCdiy5Zv9}9p2{1z4zyRz0X(GMWwpB zcGg;ZE*o>qF^D~@;50nuf-{5y9tSyUP~Awxj@0xq?Y}bBVSFA zavD^(0o0@H)=DB~dH)IocOkO;>AUfR?9wX#+<8nFAl(96MtA^cW*GE(7IzLjb5ffz z^&2I08m$^j?ghlbh)&R!Z$KP~ z)i)>zD97lZD%QGW3El_nX3Vlstd<7$FyB4Rw0JanuC!B~=^HH}b@8BfkbFN;Sp6W5 zJMZ~;w|kFp4P9e~7X-yOjb~akql7^UjX?@{?m|Id0S+*`-@u}8M9_r%RmB1C;U8!n zSi~~`Jh>MTN%|eUbb#F{BnDar@JkosQes(eFpM|)OnjOcQGB$ zR`yQ0MIeB>ZacLiPDrbWU>*UVmIfxt%HRMW(x0au06;Xyvy}4@^N>;8#s2lU)qb8b z!RhBV^AjnfF){{!W8Q8~w5Sg~=zxX*>tVh`AU>iFBxm(7DC?_qBEy@U2!A0JbUap3 zuU?O};-Ysso^9jdgipzJ5g(Ev_ujVt?e~!!82TF@!~qcdEidd!`g?1|i~ffgFrtFC zX|RDI`A2V9NpILcp-^3EEQp^G6)VkYn#vI|S>U1TtQNTsyL)oD5V>$gDX4r5g^7pk zeTZ{799S{8eAW?#+G!Q886)EpJX%OFB;&$hEVy z>+M`)s0()j5D3yWkx!j*5z*+@M*in-d|}bAQmtEPUl9BdOzLlYw|E<{tOzdmGrSm*95CA$Ogr%| zlBq#n2onN4TCLCF^GANv7>gsF^)sdiG97Rlwa4L>d=66wYt+C3%#9%!j3A6h>ICwN z_zf~H^_j-@MFqovco4CC6ntH@P^pU>V5~X2@Py?~M!O7C_uKa)-@28p_eSl9xJj}E zdx9sr%%>_q-$30vJOhSqK#{&H8IfTbOBUMc60^U*e(cZj4*rwA4ir?DC?xlj72(Vm zu3ZV1R`KDjCaOj`+}?b^mzL_C@2evc|3Lkr=zSvJ z#d+LSMnqzBzcm-x`$<-4+TEPYJu2Jy(=WU8gk2hgnp<3LDxON!0K>R992`g@uPO#7W8) z`ZCmK7xyMtHloB@UDJ?|pO3$)bt z?QAWK$vkVZ)>@CqKD=q{B%Qnx!T(p9(1b8284nWb&`GqfP0C;dk&}704i6|0dX!06 z{Kbc+k*vf6)Sg_2IO?c@73lZ<{^Y~FhWS8;{UcDFQn!Trl9>>2NVdW3swAfmTf{XG zrnDP1YC5ffF@mam*Kr9b@B>;Dtwq#d*NVFU*cgx7kmJj48I!X1!Y+zW-BGe4xyf(+ z>uDpOUmTzI5HFwLP`0Zq5qfM^NbmKMou<>OkLn&W)l}TGmB-!&C0X)OKIR=yOQ(-6 z+Xxq}%~dk18CxpzCA|yV94UMo8S8GonsUDP+@wWy80|9#H)*$5&nu5oa9D06o)@a4 zz{U@YFY@$+zLs0zdyP)k^G&Bi8%tM{!2xz`*X(4EEFRVXMSXzO5^Q(MykfS4!1`5? zv;%Yo<6}W>$v60e_YP^y^mSI7Cq#19OpMpnHC35_ZypY9CrD?RZ_ton9TA;t=B{EQ z{!%q*9M`~o#iN%mqzoT->61P$%hgWCM-;QiqkUIiD|x6^9++IC-TE5Sp=JuwUb&1U zcP=u^kJ?&vsYS#pa_oeh^q^_En$Pl0XwN$e^il8ZbW#pVe%Pp~Gk#Y!l$!}ktwTOT z0jAV9Oz%(Sm{WDkut{lUJuKE?t1A%AWH$JjO3#ZM! znemXb>m>+Y?M?8Ij+Zb-oKnl4(^j}rY1AX)CT{CS@I`Z$_Y4-F$B{3?yr&d?yd3s| z5Q5KZGGJf)>m!K;9lEcwYPf1c_Pfl|sXp6@n9K2~sp+8;yn8YBj>G3LtlLXsr2n{a zEmvfCfi{#_z+U(0-o11|gCi=kRZh{H2iQ0M{;*O&2L>4T85m`k!us3|WQTi|J#k=1 z&t=#2mkx|CRQVo5c)!1Qxn$Wb>atHnyzUQ8H5wV{H2-5X3V)j;@z_KoMgDKQ5Z?fc zHJCN}Kzt6PFM+Lcf<8qSM7LHt{BU2_v|OF6WowLE|2){tdK&pdsgV;0*2b^%^*?<= zgoZ&yLGlqY#`zNnrL;*&nj2K{8eybwnU16S)cC$(OBJk7$_Lr;8rM>j308(jJHVD`|r5CgMN+|?l~mUl7mT-(U-X=J2Twxz#zz= z5wo9vE>)`hq&81D?L0k5f3t0dLj3NqK5YI!tpSU+>9Y7MAk1Q6)DgnWRv5?r(70*s z-(=pX|K~R#IapkKBDw70mRR60{qHA-7I?8Ax(5gT-r4_dOh*V*wWH2$Ts z^gnF|{$VENy~ZtjT4DFkJNfG%WH8~g|as7kjF`=m+;p2oA(#z#! zUeC923C~5JVuALY0Nr^t8qWsL;v?i21ZTVNTWe+{9`Uw9y7d(7^*sBZAErQgI>Qd& zVq?(676tupj}DN49z8M&Lj7-#d|n#=|HCgu1Nop~NTCG~3HcIeo{6}~O^`)D`Vhuo zcpWu;=XKLX-jca({XI4w63a#wCu%%GAt6s$H<_-NmdeH&H_vbNpAhs%^NAlIb-3$E zk8U%;oOz4M^w>Jfc)vFCarZ&7!fM%USA{3z!rUQY;cNVT&pTx z^X{GV)NrYVoWdU07R2}MXsQ?;&H&x{6iFP<9tDwzPwu?DB>QGcONoqJN-J1yFL4N5 z>86UPU-${@-(VMH#*}obhqI@jWyg?2fRP_vq;JO8-NcysBAkPK>0K5mq$2-Juja)e z@UxhUE{zGYOl~tc7wlex0qp?z+AANH`mf zUTX_omm1a9$L01VUcZvW|DBSc23Q~_8;l0ib>N}9K4pC5WTHG1Vq#-p(sqzw^b1^rP2V7dP;sn9P= zDs%9G@CuT40=*JoMM;4WnPHzAz2lP0qxz*UuMo|`mQOXn-=Ut0>j~dvKfW)WY>QjX z1atT9)Ja|SRVr2@w(5CZ&27NHvxRgWSP@3*jCvFEz&wdtFWC$=Jp!aBxS-{VCN0JDdT=W~<6bq9O{B0t%7cEeKuC2HTD@qy9HR$YNRrUxhRQ;u( zNF@WI?{s|rKXSA@4hqH+S+PHOGt1`!#zE@6`xH!(NN2$M>kAs z(*ybkQ}^gZ+%y7DbqXcTH9kP)sB#J2FYLU%1yz83Lvr6?X2IOW7H}D<{Rh807jTiOL zPmLNas)u}TM@0)ZBFZ{w2u_D{`6R+}X}q)?%XWnmh0ewAqDVkF0!$hVw`bc)4UVO@ zhqd>17dwh6Tt?px6dwkYN;B_$?N0DVzuiU@P> zgtPX2@?oCQ+>Rw<3uI(u4vPfrR?*4HxLnx4!q9jO-OX00h0_!flg~pZ9bcqbElj-6 zA(*lML7a1^t0UwxhFoGJ)l9G7bMm-AwP5!i>GI*>+>mbs@BogTpR2;;WuBb{vavB( z^obt^tmqGBL-X->_hiX;i1tB_otu90qHnw z%b?UTdm=0Hk*B{;BXw_X)Vlp@>Z)@w%qVj-tMSkLFbd>qjQh!4F20*#mw-t@a(jv33=8|x+2T=sPP;r`3tAOc@~kc@IG9Uy&$6PMP} z+{DpNdN|3x-mG8k+}OyEQ>vFzP2oIsOp+jS^tkH>ihYC4XZm7Bk-Bsz%_k`(M!ui< zpDjIIC@XRH=y??b|AlT$0)3)%_1@&><#g|W{pf4uAD%VXnWgf$g>d|PLW_Vb9ajtT zS}w`{eHpegP)k0xhIL>2b)F9WvPI91{uF-oVyG;u!f~*bGiUy$<9t-AUn%!(kT$E; z0ZsGr5yD<;p%%3cNf#fnjXor~ZaaO%?xxS6{T1w*BZ+%vkaVWcFbWfD(swTVkMS6R zI^53D<9YJ*F}S%TtgMA%uR`C_(gDQ9M8JFXg0@e{Bub?jKIT5bIa&Aw$_ixIPZS+D(fw*_Y#ywjbF(q7mXgELPa_wjYlbCwMrXkJ&eFO}1iuRinfm1M}@P8>owEq~h+ zp=A&8{~ZQ17?lcp&#Hj_--(M&o*D+80`v+uru}MiDTIWVmZuHSA)0 zNPVT01WcMKn%yqP=BeY89DxE@rA$HS{z6{wsEb|73@?6Flv4nr?az+7aB5V^?vc&0 z-?nlk5hbSbU-Wd7XnxIdHKld@F{Q#}6VTw>zw&Ig3BeAaiDuH{cX@8Et)|AF2Qaz> zAHTqr!h@x1>7TTURVP7|Fic+;PB|Hy=BxKJqf$wDoF4L;0ogksn>^QYeMGVQt7(t# z*i8W^px3e7mGf8T-ASS=BE)sZhVjORnUz(k<-ssC|IZ;NI>EHgvLw=DjH_4WXO3NY z#04#@7S%vh4=L+qcY72wTWRIP7&dD}tNPsBD#dkJt%eJAjb_(`tD@Sv>I7GBm+5Y# zM+Sw=Oy1iKW}TW~jPEDr%eJOC&96`S477c(lUS=A@3CN^{^1&l;n~?o2Xem6iTFsA| zg#wyl_7~jfi|M?iBhEtaQ?a``!1Ev!`1YZG?2>2|%j@a3(V{UEnck-?@T+1Lz@3?J zK(aV!)D2M!CNyGWY8mKdFNsjU2The#m<;Bh#4p}8UP?UPP4C*()><sb~96VtK$?se?EW`1lz@8_Z7OBc^;cJV0% zJYbk30*Ea9pH_qp`8N~1ZgaQcX1Vp97iLwR=;Q$FpuCYgUjzyH`8wNX6;&{)nn46> z%iNAe)HwTIzV4$rW05Q#<`3hV&eiv*Xh_JkkrO)9fI0qCW=cTcn1$EBO`R#^3mzJvh@LY1qP$gi zBhbTS!8CJfEWPu)X=i^QL2V()6xXZ6#loiPTOAWJ)<*dr_6~eF)_H&4oyP)?(bkg+ z>=Nr17F~EWcNsT8nQ30MTd$McjO~I19o3dj93W~1tBzAyXt<9Sz^?fuKc+WM)^ouv zsTP8bb9^vnddL_U$QcNSZO=8zg(C7EpTc$e(G>9BGZX~5?AXiNOE`ZHB&^HnUV!}=3~Ys%-H z(IPr0LQH|;YZSB_b0ayncje{fB@Jjq{2O;xk4oBnqQrczT@BJGPcpG*#Lo0@4GH?6 zor6C0&JbZB!ulAUhPaO5GWZ>t*&thnh9r5|(nh6ytRvmON=qybise(>dJx4byd7p4ymUn#rmL?}0^_Vi6U360c_0>oEh|bW||@YDyaKEhf=+7`uTX4wZnevxms7 z`+(_OXW04A!enKCH;60Z<6*D5o@WVPQ8Hl&DphcC_4_UnYAUL_xiBR6_mjqg{>s{s z;3xd0FI}5U^XHzkC5FWY!xP5+v*u)*01$jZAqm-f^V1g;-7_$cCQr}X$;ofu!=c$V zTb*s@V9y4&52V+{b!_{Qotlr3idOdqI@FFnfZTJ$)eom=+HsUB^>RF6aHP&@U40w@1u`P|*4B z^p5B5q#(6#a@x*6Kw@m4YU!p3uW3D*^ou+eCF+jV8T1O4OIFmuT@-|7|b!F00l`YFT-T0aol91+{dUpI1~NK93;^oIV#EN zs9NbK!Z#KBJ6s9t+(}J;*l9h#c6(88p6)j0ikDkfY_8zZrZ7qI*XMy1*pz& zeD$TOgIjwoqgm9`%@=1h5~IbJu1?D_DbQd%YB|EBJ#!4>`I_2!tZ`z8t}uc7A?34@ z(4fF1!t~9c`-^JEP zX1=tZUQG`JUk(#4i#qKItU;u7jSjmswaz;^0j9Mj&eD02Umd4nWTf=36)x3_H5bn( z-p(Ux;AP$c2kg?bCxncK=6vRWSAS1=qdx~C=ECH}RBP+<`!`-)y5u9C1KSz9ES(hc z3ts7g9PhKmBb2WT8}yb^aytD^m_u-#tgpw|F84n6$L8jEG^*_xur@BtRa9HV7GC1x zN-WU(O>Qh1c8BiQ;(nd4lCMNC-mmuCb^BRYH%{wk_bw{{K!Di2H8gE%oqZ2lE@Lx4ne&(XQDXeVWzDG63Sis^4QpnwPynmVZ%Qyrd`+|R)` zGr!(L{w&Sd7(<>B2Xl+kM;>)GzKG9loH6iIed~OXESewU zn@)QlO^jy!mDK&+q*dK2_ohdBA*_zoVaP@8yQcCsuH-gcL_br^@|9pfVJ>iz)b+H0 zWEECTWO)p&D}X1!|I=XSxGNR^5~Day? z#q-6kGWYus)08S)a%yb3qE%aQ+z6yjA%ZuxBm{0Ud<$51m&=uhp9$9E^&ZpN4Opih z<*wf>Nv^o2ZztOiQ}eFjA{guT(_r^46J2PV#w(iglydrL6;M3eGJNMzLf#6G2QpO@ z)-{MJm(E2+xC*MZNQU*r7$eJHIe&IvI-1Wq7)d43GdZ${C~mi}?6N2FSom)!I&Px0 zcbhST4+3yv|3qiC0vE%d7G0j-91N3l{1_0XAX1&789vnBDh5uszP6Nkgbg=- zAqxYk>{b)$U6FLXj8wZqZ-F0fRv6p%mgFHGy`bC*MIPETY86iKvcMf}$rOi*s zJb-OarmtYmw_(|+N6d>)r;a&rQnhrh2kV#dO2D4$X8UXhwu^MS=5$%Mk-P(DLR zIgn*KKdZaKKpKkW57NMEof3UDE_YT%S(pI|&_d4uc5tjmuTqaf2EVgz;#UFiYbk0J zt1it>dVb?6tKG>HI>s_tzO1tpYG+*{3)4G4lW3ON!SSQRTW{SPgS(6TvpssI0#wA! z2UnAQ4fI-N`8HZTX7h@{EEFc)V_m+E7z@_)wOanZd#821D!*}>6AIMD4lgCQUSJUs7Ob*^Ne`H#q@;0e@vyKb=X{f?l;HW1b@Q~Rnzg`yipT$rZW{HkezoQNx>?Dn z>46;rU4nFJ&b&V+UnlAnPDAn5P;}`v=P=6#al)%ig9EOIvhLF~-=KH6T-Bm1;0Jb- zfwVZS9#UNe)DCz`sE`fqmNTgX_dKS)w=UVCccv~iIBKcOZP6tZ{?Z;LBBbuFXQS|E z$7a$X7H&owF0lz0w%2|&Ngui|7-P%_{;0on$LVr<@4?z)^wG?QW#QE-AvLf61yX|Q z1|1f=A*zNb@sn%bg{6YRk?M01dx6KFE(u6k_VP>--!zBn2&470tK`;$y$nu(`op-} zfTsMQ!m?ID|2ssSo6T)XrJOH{X#vof<3;et8*w5C12;(4^@c?(t7s^Myf-T%Q$HTk zrC=bGZc@cZrfeIuSMFcRfqt8m$fD^m1p9UiGqWJoLsIp$NxLuYT_eY1xQTm`q|0%c0A<&U7WwmUB9N7MlWa1x_})}8P{juz8fgJg`KjTP3SsD^ zx~WbsuqT4&^98C_VD{GMr&R3zsc*%nhg0tDPFxPz72+RmcyrzgZhE>g?zc#WZYU#aaWFa#`HxoA1UNq>J4tR^Z#6F zte0Q1(=*k3fuzWBptV+N2;jR*GRfvdMWeUoerB3m%7h@uo!}^aZ zx!$R~0AqZrm6d@Tt#y4+b}D;Pz5VC?hSmNa7`(cup=M((u=C56TQK@f<~Da9y#Fu~ z8ccF<9nV!!)%Pm6^BV1`^9J9u2}Us!(fu{MQPbys=l!VNPy4IIp&!e6Kjs&(_kNGz z8rbKvYv-SK=}X`%REN_jW07-}n+2Op!1lc|KTXk%D2e@v^_c2$Sitbg{dPBxWaARa z2o8mXqM!)fsJD4lN|xPqf?lZxP(QyId*WW+J6V+Ta>fG-^KwQIZ9%CU0bt!;wlNPQSGN`K1F^nE7&jH0Al zw8@|bpcM7j0aMWB8i$k7^JbE=!zVSsQsWSf=crTUEq1ueL3uCHp!N~;{tSc8U6}4~ z`1-`OA$7g95tNB1X%oC(`}YM1`{)$ExZd@Ukyq}76F-%)ZJ&$_0I2$ttzkYhc{HE& z=Mb0jM59ua&Cqx_54yeI(GPS9#C8S*ou1TgS5to6^jm(U@ z_SX_xOp%Ll^juXLnPV~64{bxpvL===eaDrihR$Wp zcmC(;Y*4BeMFZzJrFDgx2;neAq_$8qIvapN?u7cjm7tK-8RhXzas^e<)aau8SQ>W~ zxCmZw_9}f_9~2{e*nBN8l?A?uoH=bg+BCG^SfPe zwx}OY@6GFLJYQ`K>qhe4eX)LQoO(!S%)^Gp7clstOVf*^#WZ;q{Te#df`Dd04CV=g znPvJZQG#pdWX)v}$5?Xs7B82<(7y)du6Qx=66dgGc=DW{K8)iOy02TO=k zE1)``@cwbQG|awflNfFLp)Sxglm9f60GS`%8`A zU7K;YWr!Lj4~8k+ovYg~QNS_{FxPMcUg4E?UD97!4bpJLA;t0~g6KE7x5FP@np6QO z^7HUF0b>B{kJU4275em=n0rMm06->0z1Dh%00=$O6;rv!l1t-po({|T$xjoWukmch zIT6GB$Im>2imfPtcN44cD@})g$GMf~eCV*$KcD<_02Ir{J9<6m*77(sb=sB_TOWof zo4tu53Uf4Z5V{)#DtClss zKX!;wh|$XlK;ZdCr$p^s@<-}o&T&vZUG8RJ1cA!ZGcMOpwaljD7KDkq^lHX13*1ia z1VB4U^(*gxFzscprMoX9mzTT!Q|d0n*RtN2_#W>Kk^agN`+%stzc27OS*kB}4V+z! zi%h}}>p56^-G9vmYBUj)6p^_7-(Bus2Zwds*kE*Qn+0Da>3Ir8!%<5$ zH}3+ac-)Jbg(uxipy}hndUzVGPu&F~O_#^h67p1HF>q2ckpOxuCy&SyhU;t{cF9?d z5OzaKNrftmYI~C!UstI2%zb+`p8_OKGVX9aAr?Hu#JZ3t4O)$Yc->s zLz=MMx;H$_tuLeS$FW&3f1-PKMXd zI;JUf^JE#`-C_=#Z;`emF?>Pke!i1T?@b06=)_hl_MQ)_50~TJFB^ zEdvx1E$dClkQdB__Wfum<=+ed;b`v^{jie5xn^m%0`S~Q3j5OT=YhfyIGYurrl&jc z0Smmm04CVm>*dj;&%;)KxawJAt|zBsmE}ux&hs7~r#0IjVC2VrAIqWNSzB5jC~7oq zP}kQUJT}mD7`;H7Ue`6BMgi1=Xx^xqinY&JdFf(WJYu{tm3H*&VB)Y?uF=^1(%jQj z*YxJDL8lI;>KpXu+<~n%;}?vtdysq(HL>aVyw9kCb1hK4M4O6;XKA+&7v@j@5|9GW z&g)sJ-xl8^(?2$Y*a((3F!YsUESwm)+EOgY z3ltPdBBInkUPU$pD{I*E^OsveRXn=itTvXMH!Wg*hNiY4x>-6d=P$X%S)6bW1dOoU zuveX+073%-6j|X5X8{_cuMW11E|(?P1ahVi-qfLyVr zt5tA=%g;9HB{fuoSO6=K*=8+kS0l>-H&3!=Q-Mo`wc)1IGbiFmz5-S}zW0{D7&Iy* znSK}xI~Hxb7=_pouooruXLuATtCR5}UIU=+&!Xx`>D~2xYZ*HN2@8)0VoqQw^fBuH z_BUUIl@vNy#%M~08Z#aTf0p*AJHM*wyZUOe_sTMJ)r~sD9yzsuUV)HFH&^kRxy7#g zLh!1`_9A-jmodYV3c0YAuHK9(F!|QElVn3MrO{NkvpeII(KNAg)GdQzQ;z1GXW{Hb z29FBrhqH*S!6f-!lKE;Pu3r0%J}`hY;%1Z)@i;?dW0Ge(-fkApr%ZHuvsj1A;*E|L zDbgjF4S9|(TFtjWz?gCeW1ptE08A9ao@ywFLi@#oWUGrpNNT`85$Qy)?ZS% zcbGFjsn!kFa9L9sG%vDKuge{FS(Sd-7zowD{sDE6{)ky7h}$InRu+-G1;A!=PVh@> zK!yLFQLvCMAecyh&~Xl{7j`*Q-CK#qu;K@b;KNa$c-Ty$tWXXyeo#7_a`N~7U}cv* zV(~gF0?z;Q$c?yw3`Cc_dVUF)XL9mGL;a9aoZ#wZAQ*mr-2Jp*d4>Bhr3Xd~H%KhZ z(?+%2WU%$lpg=a&$*vmN`quj1X`1D{n?Twh)c}L`56>EZGW#LD{kJDkryN`?FSK)2 zHJpYUav-0?Jw*U!XV&v*f@l`-50U9{A{oU+M`w=KddjN?7-%M^?=urYoaQ-vu*@&J z(v_d$)^Kowgyi-pAL$z9x>&bMpKJu5mfSQGU;kR0i(&#zT+7aa1627fgD-gYw~~l2 zQ6!r*zyBQUofkWdWhmfhP6(vErJ)M?B`?oy0_I(2YPtBvb#N78)OT^Zif~-;(Zx*_ z?X;wX0pAL45?&bd?~t_M1Fdi@PY826eIdWm1@eey6Q4|Y715!Yt-m6K`Me^IyWKN@ zGHjgJx$c|R^DroWify?!v{a`ZnJpv+%~gNR?}bH&2QahY;$KXICh#dEVXR7gF zqAZ~PxyMZsCj#UR$?EO4V|?L|k+C_>K3FrHZw*tY9qo_-i9ZFFqgfTFcqgkoBUE^r zMBMvpftv{njr|ZrCbL{6dZ*n#ilvaS?r-jkm{aGEw^lkEC@3P$XJ=oqmX{QmFicwR zmF4S_`rqO>Yd)s5x)Z!N&q2lKJvgIB{(~>v>?IV+mpLqTh&yt}qlRt8{myzR#!jq^ zQcF&<)!J#7a&)^i${uqXG#=6OH5MsNN^0G%e&Ox}!^3W~AnMGN3`pwl&>hv`W6 zj{NbrI!~_J>A~5~>wtv;xOs8&Svalx_pWYz%g=96KhQ(W<F-FUB3EPQ@XdA`bhra$r+gw zuFDAc%PW(l0bD$ukzXM{UEZ2fpLe4i9F9mJi*(Jnz4P64A+lz$U0xBQkP0Y=;Lin! z)!1#x+!3r67j4%|o+n8&HkkCZsgv-HUe`pRGJV=W$&x~J_RS2^Xm#TeASXfDI7V|V zd4HDHR+C5j!lm?`#5p{e`@^+y-L7ilhm7P?S2Gu0UH&IiX5?)LzDcxr{*IVDXHB_r z1LXs#@e6Q=6cUB9t#jgv^k924OZ33TW4rC}PE_6;d%wJpI!IG#DV3|5$Z%vM;L6F< zJW7YoC@-L(X!^Q)FoaK-`GLinLDs!Nhwn?$n<>sCpwYMK*V({2lz#km{?6OfpKU-3 zXlO=nEU+P+%aKAO!1Tt~JxK?+hwHp0S4B2WNSr*YOQavg+vL?T=#Gq2sx@}P18%5K zs!Z}KcB(bzlP2REjcEIbZ#;>?a zLOF@Cy|{-J&EzRSSNahBq4IHK_B=N8Gm9bXy7(nJCXxJiu45If>o_PRe;Vi_1y0Ag zBG4gGqZrJpEI>(V>dk1r7S3!ze%vXc0;5?ds%%~7Q+OToFt%Drf6G1G{J?gun^XC% zE%;+Nhe{tMQ#Io|y=NDd3|5CL;`(A&-IR&?s;060_=_(J3h+ZSht=G~6#sI=`Zxg| z;QNtJ<+;0(r0P>cN~J1jA$)1^iG5niQkzk++KC4w0e0d8DgHSwo%`{ErCO}C@(g>w zw8(;rl(VQm{Bb$yYFOo_sXt zDpVlI5A+O~=u;wTDO)Uw!$B*REYcSsD5BRo@qtU_C-ml}XQ>6A$DH)nQ0a_P=a0=} z1edVA9rfg!L|A0P|D|}n2Da}kmdFD!d=Rd^+eeqvnsd6h6l07Y>6c1us*&cSaK<(d zUbSx%pvM9(jr(A@VxKwaV|l`4yfT}*x~caj@y@w&?kaWtmj6Q=WkvJZXuZSB8@8lH z(q?&KpeFvs4`2Knw0EO=D^e$9d z(tqC03zQ`L(pavNga5GZUSJDu5I`|S*lD8pmx}lDF}R zb{g7mmyiGZ7$g$DZnc76sE=={Bw zH`M=j9!3n9KmR}cG8okj238Qp6U6CCr|3k;N1c0a8Uw>cM)9-&$K`U>^mYg@X6*o2 zyD_k0K9aGT#%Av|PM(=YMHj`S6gA$Y{fDXO|3Xv#tzSX!LtRF@RdkV2u6NZ-`Ng2w zY8h|$6MgN4RkEIyi(62USB39JxRfWf!;`P%IEPbTqfRK2s8ea_6#$R*Kc_ZNl>~n% zjwU~OZ4&WMC;{7m5b15Hr^1Jz2vVOFFqFLGJ-SmrN-=VOn&a6{ASKNup*@*mD1Ezj zy+ZuZyp8bDuQUf#H~_S#d|`C&4;UxG5y(p}V$2#(`Q`fNDO)1_8vy|48epR4?wWk! zLNewBn5Ypky3^bCNER2QN&&8dpE^kkOdlMz|6-y>#Eswt)XnzF{~NqMCtx6Q`HhCt zfBLq;VJ)5R*C_v~x2jN|JHJ4q6 zNZD2v{hLVZ>VOsTfG0h(+b*O@gV2KZJG~Nq(ja*G$zJ%VI77W<*+IAfXSl$qa`+b9{<*L0o4pbPl1^Ccc4|nrMlt4R*>=G%+{1q+t2Z!N5mCt+K@gY#73^pksS{!a zvUzUs*tt}2_tQn~C&rSzV!rf_ah*KKK(d95!@=DyvAU|?50n8$RlA1&8xfUZAXQr$ zX?>UO=iM09Em7%2f#y3r)_d=wWiRo>!v1hf9xO)&3$zX8-J2}|l{w3^xc`X~<}Gf2 z_&6OT2A^%!#OU%cbPJ!ahPlqY>2U(iy^ZhuLFkAFS<5|rvI+K5B}ET<18_nAQvFF$ zkra^pS2HUIpWb{?;BJ&@$@7=FxeZovF$>dv@0#kMbUNO8$a|;;Ei9sz@1e7|eq&EDSA=rjrN=sa=Vcjs7^hjlMU%@Pq=M+G}fTgi%2qKFw~|0{{UOpsMM~ z#~mHa*UAHGddXCdL3X)y*Dd!)jnaE-W7!g$0DZH>YbFpNSjspZ%cUd4e;XJ-^gAkHcv29gfZT@cd+I`@W7TFE~Sg;!2KmcLDzm(_zR;3i6E4Mgj3mE#=11-q~ z1lG>BQmq?^P;w&xLsL~izmAk+!Nzae$_J2|djL=Cx)o2`r6WWU@lXjoUc~X}MTBVuG0U~mf=n(*GYjQi0UR|yyf*`NkQCQeF zo|xa6Asiad(y+9U^}E8IiMaQ!~taIx&h!Y3i#>fug%FF zGXeV%A54>HAgR7i0E@_n!_QD=!*#fQ61T z&oiK^Wix-}OwM*4((0Jb@1bec`sh@@9?3&N*0E^2d5A0OyxI|90+1=6boWA&vg=yb z`dozmn!`T&WFR7#&VPUKzJB-T%gurjC;^)XXtFUtIz-E@0Z7P` z0e;-m9hgfR5J%I|^kP06Ku|2t6HdVSNSju*Aim0cQYwipfl<3o;R%p-WHbko3hw|1 z$EhGdDTT?WmV=H?3S}9ni5&n03#opM;+A;boEQkr7Y9zS17hK^fXdsKD4Mw>9%rlB zR)(P@_(P}8I2Saz>`QSq=_X@k~b z=jYc2q}+54DgCFb0dccfMlJS5*ecU@UpTvI9cPWyjk`#8Z&^#rqAGxx3ouP{qdXoj zr+uIF94A#>31n>20Cn@duT}PQRb~yZUj(E`;}JS4fh@}$&;2mR@{ZAowkBQ*3PJkq z`Sx_WzKs|cuS)xG=kV7(`BsY!4XsY73fN##r|DPp7e=G$e6ED^Rc3x`h9wdA$mkZh zMi*FyXMon-w2^m#(Fhjg9%eu?Q!7N}O&;qpSt2FX!ZQNeKSidA0}8M&7s>#vE7%;~(_0%)#2G~G$e zTi0)53*jPkVH^MogZ4-Qko*_dZN?L1EV`U1kuSm_0O~p}eIbrB^HZ{rCs#7YRs8?z9Ocx+75Xs(iWC%S(uX5p@mYAzVnCNv~zWa^Mv@ zZzc)$iJ&(E0>pKU3U>}U1|A&5jLh?D6wtZrf03nRvzVILRLFCohn_O(30K@zf4}R= z&0^C)+yvNwUQNJ|eD#;W^6*`q3pPO@;FVeNd2NK?ca23xa7_Yn#ZUeuMm-mDkG}3- ziwcA!76hVf1ey*^+xFO+K(87*=br^C$`=4N#XEynV6i$J*UP=!V=jM-%rpq7{gK14 z3$Yf2Hm}%q!C;ZE?Yt8 z5e2Ok7heI~K{IGnbZXuhki!XuaD3Z|1aTH6ND5Gjj05BZMcp1&6a#91cM)b22a6&S zL6i+>(B-L`zA?)X`zde)J_fgnrII#0JzndX%~j=d9o+eI;C*cXChMhuJrpK(#Nk4{ zGQiRPF^`T;?{9K{b$Gd&m+mUX?XZ*CP3F{Q5mND@-nihpU#xkNT0s+p5CO-pl9E0u6zt0(aLYTl|*7N>Kg3y4&no`H2}_-j@`O4O?4UjDf5rqeZ}og6*O zdK$g)9@d%-Lewz_H$s{zW|8EZ~M zmms94-w0tAWGd(Yoyn_Y;V)Ul!QA9Uia1>-{z#ZI)!ZN2tFu}JGX-Hqw8BdlB^lhTko7wLJF_k} zVZ(42BYkJS_+F9MU970?U_ko<&SK%cXw~UV>VEFlc;!1@8ZNw^9?hi^LSfJF+r1## zAo+MAW_@o9oS6>4uXpga5neM<{h>Y|!po7e>H*JFAVslsCksvd*{@saDFcsz(dgd- z&J|<~ZyPa7T2WF%J3eX+1A!(ZfQ;^Jfd$(IY_^MC1jwJd35C(Zh5X6*h?+`23-AV? z=o0t^jhj2}O^kt|K+2$L#PhQE!IY5h)lE-8SJUwma#PI7gXc**!W}dWu~e`cj|fTX z2eThW(T9;**WecHA6LMt_1h37-ICf*GHB<6%*l!G2_7z_E$%C7#{@5@pdk6uyt%%9 z-Ky-XwcMCfIAIS!(2zT)Ta$QM77{*-&JuneuHoYL*C<6rMoyu#{p5H5*78mM;JhiX zjEU_t-?FB)`CeJ#;RCK70t0#)XWH41MUHOwkwHvd z9td$JXg_<(7%4!Ou#w#v(_uaOcn@i2f z9xx{`T!he44( z>MNjCN%SwKCp5yzWDZcoy8bMr{MhJlCqp6!E2<4~U{UC=?exwUZ-~ugMEzH>1bDC2 zvXG;=d4C75vaf=j9LYyn2ii$%u$goZkS%qVmq@fX89hdp)L;~H);^U!QR)jEg z?QtW0yj%(R{yvNS#(-G66uF;i6{*n2s;U)s>$^^jQos6vvU5euokFw7zsPv2y0ouT zj)bAZ64bOnMZ09t9XSrL^q}(ukd@21|dzeQI01q^+P?iTdz#V}Oy+UvFN}MdHx~x5mc%6uho_`22J&V4s|k zBngE_1}e3{(m$EtJ0E&a+fsibfA+>Ib#bogslFKa zf<+nZM6~pZwFbF8Bol$f~~#W4?^}vvRHwOVly;Y zH4v962%!yh#t`ls0o8_ovVl0h8Sq6irSc$n^6K$~Sc41RL_#0Ge<@ONpgJ-vS}hk3MkMagM@;MR zNL>PxrL3*VA#B(h0?-KSmy~AcEGeWp4Tm!wDSU3U zN~sco7srX8FW8RF&clG?s>~*PZx+R&=Ar$6nmf;^Cfaok15$z@2_n6PA`$5X5HOSk z6p$vM6zRpn2O1ENP^E+>p|{XQ5JZutfIvWcR|F-f)X=4d2q;B76TiLpx6j}6>#(x2 z@?+NUPBN3sbHCSnJ!+5h(k=ZMUL^>^)vvFUV@_|EEO84+^g%CW-_DUfs?m{PAiR&V z0=*UAX6hlxvfYxfs=Zsj2v(Srto#kwmRTh$Md(uk+DqKOcWcyD1drYJ7jRG|Foa=R z>^f~3V^xNkOq&Bm#Gzm1!`VouO&Es-2{A-@j`Z$OkQs+L$yakvN4h94-zmBQa#v+{ z_O}N}_vr2V;0H#~o#wrHyu~AB%=vb~WzumdAd9fu9wiq%$$xP7QV?YIL=s%$e8h#& z3;V!+y4t=4lJn*TOgCHcvv=vHV?Qfw``x=CU}~&I4&t9*+WK7>{+HY)8X=y|s#5Ck znhET1jH^=X4W9GYd+aN%F&=$h%b+c?P3C&41wH3`PDzH0XPUmEW|Uj;$zRqI2PwUS zt8i%M#HYTq-&OKH%pEi-ez8}Uyj@2zzdbf5aPj*Kb=>0n92?5Brgh5@rJIVYFo)(= zatBN0l31C{+%=7E^64?XWD$*5T?bf zY+o>9t5sT=kk6xP54JHjm#P?XAh3fZ42`wC9X9R9d0+gH0$R)YMt;8+k_7i}d# z5&=6Dnli6{IGlkz6o0vYkMxC{mrkz_Ica^s)xlrYpCUX~XjLxTc67g=p0GGnHz>$z z%035UR}5=_K=61hqbYk2dk1e?_Uu@s|5(?D!(2mdL1bWKj8LFHi^n9BzAzI>Xfry7 z%Z&-Sa>8MPDW2ra`+G}se<97CD89ohIR&9ObA3d{@)FXH`8Ka>zCJXJU!+5}{ceUs ztXu`flWCccg2)v+$A1;#T3TY=;`+p6t`n3A?=3s`w&9x`ebrNIhMcz6RG$No*T|_! z8`kHI7KzA6PjAz6>O9$rSJ`dQb{x!08_^V@f#RUg6}(x#oSHqgtli7+B59Nuf=rEYZ|_ zOB^d>w5QI05@9-Bnj#@NS%mn!`Wf$lLiPb~O2y$d2GBQ@TH0@a6jw@2*=Ab7DN1=< za=_FL_;Y*qmQ&ydJGsBzi$X0H^C)|x#frB>Mz2_qA3Y58_ip&EILgSyp=~E7Ax}yY zGtbL5qAeAMjFB-3!dlaut_jTk)`Sx;%0^`KX$XP0R9eazgtUiaxIEbG7G^G~Fc^J! zHMkhhaACdHrfmY}QxV;NH(rKUxPs%DusGVSfH{|dyr$lgbKz#kBK+m0^`~Bh)Vob* z%t9nX=G4R?ASzr5sjFc-4HBUPay2`a=`Y~SQ2?zRKe_xU8N(?SffKP>G&s*=mc65IeLN1| z;FKtaR&}c z9Ro4f^c1*Iauv{O;VI|e!)FvEg0ka$O4&mHP>1pyUJn}thh%O}=+Bsc=0G6RGFgk9zmWJrMTL?lf)5X&qVD>KJD_ z(Hcz)G+CqOQu?*qG1R4R%ec(fzn*{3Kn- zk3ZC;mGBR0xUXGJr6xaL#%?g5{F|E0dmRW1I4iHTKFt`gSe{#z$}YpwuaWj+g;k_C zLqBwrh%%Qp9sO;RdriMD@1aRw-&R`c+C1T}OHbUEPCQ)*Qcl@!mD^iY3OyX_P-@{{ z$|~i|^XZ(M#NB~d^_{>OorW01_9|!7R0QZN#BBrZ9yr{PVZEnG^tdF#5xXASSDDkCKjXTr|Q>FStf#hASVw11)g7};~GDchgxti zKYdr1>ttog({aC$-R%r3hZKN{QD2h(;TH-`s={%x^DAQf*q5P5#9E)RvHF+tLThxj?320Y7Cr@Ucgrp{8ukNUd`b@AY&%bUPyz7_ zBTDptF|se3R?fU$ajYH>kUScJft;jQBCpv1pPc>g{QLW;*e52#>9;;7`5d)yeO*fD z;Mo}i z`gk^hfy*$Q=WS}H!}#u)9)c`#vt+qtZH@3+HBs6C^H^u|?hP-9Q^DFS4^w>vy&XW^ zBg2(KyX68KEqojB>iP{oAOoLk3ZQB+REBv zS?nb{BlLjQ2Zd5)^){atuh?tVjkk}k>08~&f8n&+CO!)2;`^VO6%WZ$ua%M$fGwxw zgs%hOETL*tR6$NIFZ~ow4l^+=e2aF9$`Z6OO=f0dl+)-aO#aUQjoDj>qAB+F;@lMb zwmnnaCwPjJeE1H0^zXMv(84;E=uc^leu>2=}1FC*hMHKnKdl z_{KuM;xC{b@)NoV#uTE2TR8GSi{PxSg1?-=_w4|3PsxKQou9zyj364xSF$)9MLrP7&dkiSXX)*iL0ss7Qg>x zhGSLNSBqWj*ch5nX0J-T%1ijRy|XD+adM6q9Z#-yn&w05irRv)&<^E;A6r{Z6&AVB zM~6V$a)z7la+Db+l8MP{@d*w3q8`Yf-^pdbZF|Z+oNkD5SnlAD_-I$j2VY zEATe%S_-6u+?BhA?-2w`tFm31q#Mw%D_8M0!MWobcx!<;_Bx z$&6Z*KCv50q~KUncnYMZj(iKHg#6sj&r$_F_H6T3y`1M|ph2VJEW^snA%LtF|XEpn5$1m-w4Ue|*~YjtAS0-s3BhBX1p5qBOH zL?0-Oj0wPRwol|DuZg+!Ve57E^w!2C6Uw+1C{94DXJAG0^g!FhJ;X7PY=11c}&P1giHuEfD<5eWjbNhr~F z2uaGPWC@U@Ozxtdu>ius!Z@4^nT+x*2Ie`oV>~iU+%l1GdVt^6!Y2lO=UlPMY$z|3 z)4}O+YOclagINV4;J>VXVVuHy1<;Jir+TrOZ%#gw1I`Zyb64_GWTf0?&xEHC1c*kM zBruaHyMWx#59$CU^Q6+iUyok_6BF$%;SKzkt&3?^v3ipq31d3m8wOIC2Fc1uf6vc~ zf6pXH>C(9H@~TpU{*93+$mP#SBO{y?kxK+bX6!UfsAd{wl_uWx-~z`Q8SUv>hmBP% z)(CqyO;@^WjL&QlqawT#8%wKHL_8UU)`3Xhg7FleI0ww+lMC-Ox-0ci5rp39wgdB; zK;@kw`;g~7&?^b;7Kzp#FNy@CVTA9Xe(mW!AkMXmxr33ty7&^85mWw=+kdABFnxZt zJ%!%kFhvx#j6;ZIH!&=uvl^ZrcU1(@#?z@hn-FuSo)6_VwEObV8?83xD$~2wZVdJD zx{&lzEPNK~MOhC}<0^dpGu}NVr%>E_DcI32;>+Rz;xVuiWvXD`U)GGX_0AGvp;NPv zFd?u62oKvh#lt>;Vzqg&a6&(Mr^A9p4rX4;TLkjPd4cDd_ZqUvcBoGxSUS`x?`DX5 z!Gp%}u97PV)}OA^U$L0`vB(lJY}pr#HPAYsG)kt!`2!deVvML?R`%9JjLBmLQu^u9 zOir;+qvfNlgn!GAeB_xHZ40_<`3oDvhx&xQ+7`ryR=Ho)S$qmyTefe}6PTzq$u1fh z7Y}-ioMGpScp%0mq_6@RI0yGzy%wV7%wI#o+r{yC28$8}qLU$AE4i9B6LT+x(sd>; zZVFGnT7j{GL!PDmm;DgmCMdj-S<6t{S8_4_o2BSmzXntPHG%PF7Y^|z7q);#WAgzx z=vz~9gTa1;S)~w(kkegzg^J(3P?t0NC6jbbN}~W+S5~?wE!p^rqBhPD?+Dz{oyGtv z!<_{bHVBG4q0oKH&%nr67lZ@w~{ycAMEG`&ssW6z=; zM-eyVMgB#9qBpT1O-N&6<&%Vw&=Jr9qRe%KMe;v(6p3jJi|D z={1?X{*IHR#>XL{rr4<^qAZA~2)7H!xn1 z0|F6nM7+(g;<0Bjo6$}rnQ}AB$9SiAre3{{xxftJIa}13#%xWZJs~=hRU`xXK#WUS z5{NbYL~B}I*3KVaPeOoJ8m0pW>r~lRbq|fMAcuWwHcWY&zstrnmxEn#1~?+*j6h^B z@9tsX%C;q#Ye`X3;GMr0>Ik9w5vX;zQyP6AAkyf~FG2TwpWtkRb>n8}DC5(Z5Lv?e zR~fSo#~7QIeE9iSugg;m<)YZU6MQJkvDGam*c-@F{mljL%hrnaYSr%4XkMQN^(mKU zcc?hH+&Bult7lz&JlI&;(2A*_DmR7@h(|NT@3S>~uzh08-}&}x==r8J`r)a4GE6V3Q`<`P!lfmuP9?*>o^eduJcxy0{KBSvMZb4;e< z1KwxThsEuZftW0VTfO65TEZIAntLF7r{ad9BUfWXs6)VdG@au7ajN;Z=jV_W%Ip1V z3ZpjyY8BeIcM~r?jX8heYB%~{^hPSP_B9J@*!S569Q6(ar|jUl!6{mOXV3si1iLYZ zw>JmhxOsr_JP6%?X6qeis#*n;b;y8A)&~w2`IwWQr*jl}-Sh3vtNr29)cW@NzEUEYS7K<)yAc$ zgs$?CJkm=N89*8SP+eFWK$r;O(S1M~;NTglO`e1YB)x~+w_{#ez9%EzcSL&_Fd@mS zx%D_*3V&%&vM2-{Nw{yjTVk^FD&+JODPvUmf0&tV_ydmT|XC8&Q;H+ zL$#{zr!845kN$(q!~n?53hr!BDjU7gP~GxVk!SJCe#bL|B}?BCN&jdgd2_?MXEJLp zb`Syf^6z0#pMf=-0A9DnKD+xLz7N})9N>-+twZ6zIT~s~<3&M;1cbRDylaR`K`fjeX4a3_YwW0uk|&1 zk|2NoX^>$gY9<U+PrAP8>oC2T({|J|s543cNi zxQfIe^6Z%Y$q5?SkXF!LkL+LVKlMo%K>Jw{7!fKF1cXYuQAYL0^?UST`WX?nxNg$? zZn@ZY*)W*Duwt+nvlg%!Gbe#K^MZ-N;W*$Z`CG|{@P!yd@k0@ktc3M|ghdM(L=%O; z)Vxq2AYg6a;G|KJ^(XilRCgdAj%&fNB)cOZyf7djtRP{MV^Q>qq+H?4*r(T^22B`E zb$5H*zrRo6At0Qh?#7{={yQ2U3`d2$m+|2*CCL70p zcMI4-rr$YCER4)d|8K>d%uWA4iv7;{SFwNk^{?vqehcGKFn2St(hxPb25J@9GyxWN zcD{eA`77st8~U%3Dvl-&BDU7Rf=&YeYnFc({_o5`3;t83`u|qR&CL1VRsL7bf0g{* z1s-_^b6{--zjY|U!pHR2y?;N?$Mjpl|E2JMS@WN}KywPf@iG06YY4zij`9I#1R)S9 zQQ7YOg$HfF2inKyLC@MhIfaH-))XgXHS1;{s zQDG!Cb_oVN%Pzm+|5?$cSa<5%!CdVj9a=WkpBhCA!-puLAB=V|W&EpJ5}+=?dk4Dz z>?sN-jDkiK{@%FupOz330t$l)iuC_WmJQ0~+wDMeyz73#A9jE+WbhXNyd?_&V%rLR z2g|q%lqz>^4)Q#NOjv&Gx)J|r>s14=i!T!-7koZBMPQ>l2|5RXMf8KuQ(cyP6+iz_sH_~R(@(JZo8Kt2OgKF z&kEa-)Cpbpr*mdHtq$yY`mTEomJ3y5S8Qe%qxEYH;c%uM2px8cjM}XP73J=h;0jY! z8_lQ{ZtiUV=|p!Hsol_;g0Dv7C#=d1YJ8WA_&DQ{0)W67e@2D8eO`XjY1=EKne__s zJ&o_3IlUV4(!Ia`v=b{3?{2v;c3t%(^_>9u!BgvJA0dyulK9j&suS0<_^ePQ8OFXE z?VivAk-%1AU)5YxC?zJ&i#4WKDp}b3uw@gOkwl6}nK!j%$=d$#y`1n+ z-a5o?kg*+G*F^DT+TpNC+b49$zWdIB(`wz0SGmpE_2XQOv-tL_R!F#6P1>oF z2k`glD2QWmsoIc;;}wBxk?C{Hc|P0AQqV{O|Bm-esX@m|I+l8CE_Di%y3kXTIVrAE zVQa;d(QXgbWmOG^tag3BS^tr8a2Ve?pmqaWdT)$wXev9|iIlRFms~l@aKmR)pWF2+ zuZW}&_ve$@JLseJZH{YjEe=eIQL(%yLsPrPMQZU_N(w9TUSiTnf^_dgk0VzLlQXUR zA_9m&0+lO?R0mxz5x1oCgY6B+Vo6w>6WOnMww7f7iKyCceyjaEx*lf-;(LJ3szjOMdNiEC}H zqtp2k6F!@HU8>i+BXl&%MF`krd6tviW)shFHpBVFqD~XI zcm3fzqhpDWOLb-lfW8oOBq`H%5&0hPha65@pK$C8Ec7WmKFWWlC77sgLS-yoWZdr& zhSPj4#y>5s3nVKu!LWer@r2N4d%6AXg$O22qnH0y^`2H{RNxe$L(909723I-3l-tOASmvan0cS z@ZehvkTs~d&j`&$k)fzrV<~nOwD-v(cSZF0>i-^C_tjX>m z&l7C^)I`q*YwfGy%bUp<*4Rv8Bt^p&C70uV6s_RxG5d^D6#jia0avwNazilufy{K? z!0rfDj)TmHq;48z%8?A)H+jrSSoA?W3VKmS-F6b+m-x?`jaGD2^4W3U*wz?s)GD=E zM$IYRj|$avu5>y)R0d-R8G!3fibkF3@OKet3Z2%QA2fVXs4W*g=3?bC4z z-G{*9cS^fJ3(baz)_ZSW>!NY>25~rnI2~Qq%9#0NL>u=+ET&{i%GFxg43n*pu3OCm zGrZv?0QT;Qo*4{A31zHG$`j_8)OCg+U)nvp-SNlAzUGNf+0=Jo?W$FctyX6&Tb{2U zg&9ms6Q~kv;IX9e5-U^W`Dr8ps%#P$vsa0?orHtQ6?=aElvR*>g~#i%%x;5=knoU> z&$Sz=!n);m&AEx^;}>dOpA$Xy#w>J^bNDE7@UiRWiqJD?Wbxe3Ya|MNf*qdP0jZ3o zyc^rm88(QuB+@0E!qts|!@s~ju z18;L#-kZ=7z1AivgI=@yr_JM5`zfNwf&m#YOA2jQ1M`>4K1&Zm-*w!#j!Xex-A?cP ztn4}yTuIN(h;gIhvFdn_{Xpz=>7kG&p5p56ov!5J<5FvU1zU8Svb6#+8H)aT)T+6P z3T%-6nrumsO^m%ulT-O|{s$f`H*eGYB}IU`;lz$=vgx}w;mtpRvZ3TQOHy!pm@ zP~{wOhd4hLt7}1N-l0BVmHB2o!;WGm(m}eIBeS`%Zb$nT__xAwwr0L2aQZbZMpD9Qz(;~ zj6}Fz+k|6sR)BziSHbt@=Dfgt`f|H~hc0jEe%aIRaJq07H;GX2X7`dPJpJjO6*5nCX$LjO9MWwqK`>jAQMgd)wO*zaMDZ_nIJP?QlOY{7`ClU*vR{cDidiU8yo3$dUED zlgfT(Ym3R^RZwq5z%MM0D|UzGkhDR^BDBufn0DMRv(z@2l?uQ&AGssEZPpAoG!;&q zNWVXMZzHYVtoZ0|c_-zYl?p*&+Pz!K>a=gQ1lX~g1w}~iD9VTR-}ZOP>aZi7dC3dZ zzO8Ug<~)C0SbYX0>@D8XKu`2ChQ{RlI@$EvJ7#a7^c+LS>Mxmn{m=tOgkskX0{-Uv z?joTQl&=(n_ic#y0KkUR#GS;C@ex5`{B8F`>`#NxDnz_;aCnMqerg#G8`XtnA8gI9 zIz3lC=u`#CxYX4Ei05>Fux2Ko`D@Gyk+8y*VPb?Pwn`89U>buL2&E=3T>opmJRN8T z<+AF$H)OU^fCt+<3S6?FL1y@nb|0m;z^rh3@ar=d6QnosZHHWJtWz$z%#%}5e%EL5 ziEJvFu7}S$<5?!5p~W1GE_98blf&Uthf`2DEIg{!(UL~bWpk8G>|5>i#Fw~|2lP@Z z73Nhn>i-$43;?%{=@_A9fioL+hmiZ?Y>!67uZaqR`xR^YNtw{&e8V4>Cvy>(zwX=Q z`-oWSURFw|GS#K`qz@mj@yvD#SEjdr*QrbRs7U6#(g%p+D5GCKc>g+i@KG5&xBL4m z;Z+xBgU(ekVzv8_5J{4lXH?^Y7Vo!-U2t&Ay$uBAJcauvLau^rWJ%jjD-9Km)0Z_n zwpgc5q)Afi#dp2@Ct*b_gPs6YaC|$^G0>QeAn^yC?wwhob0d6qVy6Fm`_V_%LK6>@XSweC|Dv98Y79B9ON49tOx ze6W^}!B#NvNZ|qZ&putq4i>`JK^o*}xmNJA`DhMd|vTwolxPav!zR zvd|>Cc`g8}zFkX>>Bzg#(nO>9qnVuk4d%BC;7N}OOagNxJMZe`SF%)f&S%UgTc3^Q zLb|h1Bgp7O=ObbOI7y4_9%=g(z9(2*CiGmh&MTIuZVdT%&K9NDL1Gfs$VZ%4W?g+> zg#gf_FOI|;pAS53WptIPY>LS_MtjC}`Bjz%Usku?Jw=G`%W5omAPHXyH+-q^Ly^#$ z3q-j^7ejzN3zG-&Ne`5H6fqBXT@fHMB-cR7iKkSWoL#F1M~(vax~kZB4LgFP$_H4 z+UWAlX{}75LEop?Zhtt)Df?1-o4FCjjH=@}7~kzCMq;~8o@WV*PRR`C1h!y}P8FjJ z*=o0ySLx^i8~_{$jhFR)kZ3j?h0@82g?1~A6_X^K$q$C&8rnxZ?-yM|5btBjWt%)h zgujCrVKNYx{9?B6fdiW{)RFTQ=vef64!gf-&bWG2Fd2PNoa*s$@1 zPq1thtvg>d*M#M9Ey;|VG!DDr=sneQp}}0`ho7>xuvvb>>%Nt*)hJJqWlJMt&v-X; zujepUXdNy@!{c-1eSlXJ9JVc6_`1A~e;Y_7!X2^)o<*%ruj$PqN$Y$}1|IE+Z5&!t z{gg0#ZCQa~XC~I7PcG0(r_TepIk>AvIt2`3F1Dr^pd$T(rna-=Yy>*1}?VH zF8HHA{s&|KngX{(vKGf5>}@_%x=J-7>Qo+Mo#1#FjNNe~GAT#%w2~7!B|nDlkdq|T zqe!YjMBX@3bix>vn_nq7R1uqB*-JGcQ;pAJnBn6E4Q`+S#RCU=E%bJcx=WUm4Eu+e zZiN*mf~%_eWRgtBR`-g6aH^+P)9-ZAP^x6b-2dug`-iVST3wW zLtruKmS8nN6Ac>#9$`6BZRw`>(N}rqjR`5rGkjSgqS+#_9%BL$ra)(QP9nW zF%r%QBd>kYjMQpGXrd2PsL!L#b`S8R?=L0KPej~Seqa#=H*UJUkgV z;H+heji4;=&rU5dt5%=*-mZvnqC#!CKN;-;IcB9w)9V)-{j8tuJ3@3M5NYSvFY6{Pz%@K?ClmmBFl$+xKuUY6#Q1T}8aT zN2%gGETH4#)<2s1!6oz=AdY?A#}mnXL@xNp%j%!na8TD}n&Un(a}qdA)YHTr)`Oxp zBsS_w7}F3ec1E`rAZ6cWAW7=`oDjcyv^7Mg4^zMRtDsiK$h8>mOB(v)(Pz&5P~p|6 zHI8phQ!P`S9hb_av|9>N4?c*OkUq3e3!X_TH88~-97|;?T`7iQ_O(O2=YJ|``{Z>r zBi6vdVSXKeXwmpyngGW+ui0>n(==5LI#LY+oEk+@`_~A08&6&)6DVX(R!8zB`r5%7 zZ8uEmgE_r)`@H0+H{~=MEP|2d4OmEqTO1FfAn$`T9kR-DdJ(zQD)~%nGJ;!KY4_buny&)S3!nhavS68{ByFkJ53^4 z!rIU3q65;#j}3cu!{aCQktyB5j6b%&6~8RiS$s*W3mIS_@r)&!<+eQR=S`OEz?l%V z^X=CzeOapg!HWUKN|Hu*OjFW?GJY1I#d>_u5-IYfrP@I6)s?lGf>j*FTQS8t4nqaE>lvRsT z+32~8;~E;Ix`21Z!(KQ$mpR&D4{3k)Jw8HZd;jg6l= zR7~>VnxSBIud9*FNO>Pd8`vSeg$A0<%C>bB-PVev*w`v$oNaPjAgHN~Uc#_~r z;%%330_OH>2)gQ#o7a0X69@EgCAX*sEU`#nu1e}Kqz^BFS%5GjFD39PYNh_QVDwRC zI5xk40n767w5zhoSgYy0=oRVj%|z4ep1##hp-6-Zbo2rh{_n%k#!okT<39?6y>AYH5?A8xIZ~@?`k}mG)E9m1CakdYbc?68e0bYga zucxb=;dKZg1Ygp+lv)#Zeo8;l7x9b`c?2!q77uUK;kGmrq6{zh){;mcxX{F!RV1j_0x4>8yHe`f2o*owCTn)ik0Sxd~ne&@=o7W0E?aEND>|&>L(MMznu)}nQx7W(Q8(hH|p+F-b6wyi+d#^UCrQ!TtK6e zE{SN*DxQ1VKag2x21tJ==v=*!sZ-kLApBVEwNaubk$+7UN!6;X{yyvDGu2!oaGU%Tk5wD_`g*dOVSfS zZz#e(kqg-l$xI#Kij#vJ9`12$+W`UZd#qEPwpPiJYhM_#{Pz94i7gV|;5&_1#vF}Z zag|1G5C#W0l{!7FLznq|0I7n*{`fbORlbAtWT`UPRe~*cg9}42ER5yqaYa^3*9qK?i@C+?IMIUY zq*$uT>LOWKie9Y7FAp^{H9ISKysAkJ+wK$DLoO5PDi-b)dR_5jV37cILQLtB;#!zg zW%|oHv#E2tvY~B(e;=GKVOG;6QQNs*BVbjlONm_;#0>S5`^=bfsSVea{Gofrm8LcN z0@$mG^m~xiEvh$Rv3zP66|<4+D&yqnVotPQn8#xH@0f4CelZ~BGs4Vz=i2IET&@YN z4K~?t`bIHU5j;3(vLlXgwG+JMoZa`8i{5A$xm-LOEEo-5N?()^4qjC|3vj@bYBI;h z7n4(}B<1nZQ{bU;B;L~HTTg0YW14@0m7!hr`aW);@&&<3AEle7 zxhlAHCr;Bux<#YVs`W}EdC79V73=2EW^}~o9AYn4MNm=g(nd&86gThl>5Has@8Uhk zRJmq($qnngMG{+*ID&_$nw4&OWL7ltE$mT$TL8~o=Xu2>OYh?IDaWby;u^<K+|>e2y&VzIfoCv+M;8xVU%wj|E05_fNhOack$CBevrR|pws@v)3nDf z^0prTT&_)uNk*|-jMx_|JnM9OHIiGjt=Cf5$p?FRQNxq=Cg!(#(7Uzv#YM` zd|E?S9o;^!Ps6So-uYO)A&5ECLxw)2`%8rY1>v4foZWLR_`R>yPN^a0ym zJ}SGNt-jD+8vAOFUd+bkZ(U{sjCp~!3_gGfwaWKI%4k=H>YWojfh*8LcJ=G$i>^{M zLIDA-x;{O7Mx0%D=e`iU< z+EqnwST=BV;vDBobRs34)Vf7S?7WWTHX0hw94Rk4B^!;@3IZh}(b11z+8uM@0goc< z-7Gy8$d`sz{n7skcQ`T27H>LQQmq%_YHd|MYwHS8h}vD@vYf60z;m}n={4M3lQ(|a zbi&t1!0vSgTH8!wS!}n|1a=W-%lTueRP$5D*d65+T z%d`BM+I^m3#{Gguxk}_Suld1R&#QwUuDYKmEq&rT#3<2ujdXDn^WEy<^apb1Yt5dHAtaLYoR)1}mq>IvXRuCrKq1Lnnwe~N zPjEYDg2d$KGi;ZI6@!9jCXa5gkdrosAC_Y4J=-?20aQ_l_=#EvVEjEEl}zV75gTfJ zs2$MF2QKr$H~NM}lT|_`HVL3nOOS6Kqxp z1X6KyEn)o2_nL(_D;2PIpe*)TD^Z5$_{RCM9|@OQ0xkC@n-hHZ0h1`rYR80~_OK_^ zZ@ebP2b>cYvptT5PJ@JN-s9ZB-Gz%&zWv(!ZlXcuT_yVTVh<<$zk|-?C@NsC!T1(m z(5IdyNpK*<-vrbcnq5q04hJ7AG$dhiTKrDTY3s&$gCX)hk^J;v~^o#x? zD5Rj|*5b&(MU0UDL6PuJBL^}OD9r&HfAJt>e)AwGAP0>9;z4`{@=mTX=(c^zf z45Rps`zHh#vi{WqN?4#Ysbw#$|Dg2$=|MjlkceR_dgc>cY@^qZ}UjvBqG;M z@i=|0TH8zcucng>L)03Npzh+}5(3#k+T_2X5kJ!pF86Aj)VK7-n@Q*zP@x};{zdu- z%LIYm`(W0O0<_B;YA*f{-%Ol{{}T2Ok7pYLs5|=~&EGWsw8UjBNV3>F7YoK;>ZSpj zXy=PPTiu@q-y{YKd$TvB{!><%@^4Ql-8MD-)33S(fx=#Q`W60^g;M<6eU%3$#{YC* zKVJy6C+w*2lAGtGcCSy)vY!JWV0$T!yWZat@i}cI+ug3neY|3VgTOHc&{0`p4U=3a ztnVGx&+&%u?LM8)Jq5a8oYAbzcs5_N{=<{nga$U-N60X)8%Dd`O;OkSDxg3z{!=F* zpLRQq^SWW?)7X^5%R^TJjiYI)PFrOYiO2Z_=kkc2Z$*53{-EUB3vx@aR+mpjz2%A$ zEx)GN)7{yH3j+tScAJYVFsMVf(rA;6P9;AKzC;|S*>E!KeQy#KZ`EMCpu}ON&Xn(q zLxn7m##u7O2gK;dGdLxHDEW8iJ%4Bi$qo<1*GkT5sqwwB)V&(oJqq`03|7~5vZLAO z55Hpp2#+>F#$ze`Jc<&J>r#n>W8Y?rZ++T%A>jq+3#C)1lsqN(g+Q;bSz`q!{|5cV6*BaXu%X9mLw?{wI!T@RWz_e~m@EtbdK zt4uu+KEx>ejJwSfGsZgzV)rG3@(5D9DPE#G0U?uk_EB1@|f@3HN$~0X8)P zx4&i+=rvfI99it`9@2NXF;!Tn4zF$idEh?4?G= z88=_KyX8$rXgXN8z8zw)pXTywxXwrR96nvDTQvk?lm<~Wk(1C8g|e>e#8I!_p7$l! z$GF%~*x=TFgaG+d6R2kllTMY${`@O;NwJTBdW|LlBCz)&hWf-H727J7aRC1Zj2bGdfH@Lf(TO#5u zty9#bBkZ!kqtTpGZhM80`C5~04!K;Wy2IY6^|3Hoi_=j;jmKHi$wHM>3_;6h?&8`W zBje|z;tmx>QIBlz#&8TqZBY(jjQrb0*TDAA?|}~6{q`eiEOo}CNm8?W4e~ege8v5je1d`>8!WR}4kaM%CY?e{)Q9q2A zpFiuab(<TD!C_RtF-nA@+h?VJ;#V=*+SrPO}_CZdKl`ggf8F zsm$koWEnd#2PFhe*49n(oXi0UK1qE*B&=ro5KCI1^82J_A(6BF{rMVY4lX&6bYio` zk1QVbqR5!hy3lx5W-+(cXkFIGyS{CgqPN{IRnKV5Id2BTb-{)p^0{Loojs#yP76P% zR?K5(AhPO6#Cs%xA~J<$-Jji3wd`66IQ9@zX_QUbsGYC7J?@Y&e5!yreb88Plx(xbw+;?spe~@p6q6pFhIa-b_1sykr z=u0(5ZR`HTS5523wDR+A(wBWmu334p7>Tzh^T*E3$33#9gHh%ltMy0lGj9!?Dy3cr zS(DerM{dGIKF!rmM^D*W5?`45w*?QGKU!VZk2OqP`#VEaMxpFJ2O@h$p6O4ey_IEO z%-rg@cS&%5W48>E(FigOa;TZ7s&*X>HH9F`Z$(K;Rc`HgP7#O>ceh zu?r6V6oSO3ZZ@7K)!K32nMA81-nT4R)itllE3W5r8?B4a`e6Bu%RbZVL6O*fJN%eK zyJh~Iik*l|vAujvW= zs`YGv)CcG6%B@j}`Em_ep69Xv>pn~-T_v47)Dn$4>_VMq&U&_&D~XG-mq!Ce$7W!Z zxN2GBU9Xt)GxRgHoK*4&FcYv~Olf4OlJ*jiCK{;w5%ddN>ogHgB@SKqTc9!;s-$J@31C5>;P$Jc$z@-vbf zMM5X9$LppxQl9FpmXscI4?MwK0z;z|f^&U3ile|%R46}Z;>F?Dn9Od^sb0STCNLr$ ztG6?3p+;i`qa3z+Jzu0YrWz(a==xH1eN-r;-lfL+-ii!B`a;Coek1bH7q<(%qX607 zY;)qxr6ObkE+HSh=ll-(=p1)B9v4w9&$5ZDJN#CwCA6dIR~@wux2GeI>&dn?inyn^ zp9mbelSy=X!pQ>@MU}#roj{H#|Hk{g^)meOmCZ%x*%QBnSJ&q(TyuiS4L4?d9;+m$ zJ9P)U&!)vDnP!na~+&f{#%U*Sw$PpZ(wzCg~7*K$*nZm*-YXSLO1&W~zO&o1u< zR1P1T-|zu6viFea3LlCR{{`Vq`=s5=n%Sgjtu(iqaa%@)bd9SDCTc%CIM z)vEG0`_*)d^B9<`Y=9|t0M1ecbBpfWpw)EmoC{9)SgKsy9PnMBYq_>zEaCyM8$L6K zpy1atU-4dY+XFQS(Dm65o!y(hfgV)D^vTC7j_2&uJV4eI-s6k7ba+} z@cmP8q0g&$deMgOyDW5PH(0=f=l$bn293^#&#Wm}?R5<~m1R?dotV@JUwKiHmuG-G zhtW9Fjm0q^+Ydhk!;Hsc^BcT{+WgxC`>^$H9BE)+(8r&Y3#C=Op`iLVztALyzjm;AGa#{B|{>2=!`FvWhs*1J<%why`KWhxbXW$EcgHU2ehunZ-%WdByQ zbm>my_48H>QVeCjA`C+Hq^Yf)F29qw?Ch=|b_W7nNwxhoq!(@Z(bv|ZL#X4(0IEI$ z=YCq~q)$$H2>8U2+X}QWG%QLy}Saw2>t99H|0p`hHo^>4c|8q=c~__J1V;b zJ?sGTxz<4d-G4z&XJkSq)9_0(g=5m-J7{LSGQ5qpv*JYgcSb{R`rK;leId#Ja5+j>akB`J zABxG^Lp18}i$sM0%>48Rvdh5AgkmyVoQNyq>wGduamR<-bassof7&+eSo1>SF+;tP ze~weg0iytC{00oyf`A3X!LO@Fc8A;=VA*Jk6caeNh(~L3{X!z=kvKFKzFYmWT#Z~< zXRd4n$r(ry2RtKK;2!o&2m;r<0q{bnlX-^a$8yE|qA{^wA%ucHVFS}09U=is2}<_PtC=;jo=a- zr*sUOKMLVS`PS_b?9?GI8y0vEKglv^)+;ywzMlHsXA=i^y8{ zbF|C4$7nVe$!3}7t9Q4Ko&nXU*-min{kgSZ|(Bm)W$T;1(vNfc+C|f%y!k2=76Q*lPD- zjgZB#q}8<-4z9_*UIfMVthEE#nk32cml49uCw=oO)ryeEwXa8N1i)b5&--blsI!j* zTkfc6Xn9vEAFXNmKx@O z4`fvi%z%G-CVR#ePT7-{HOodd>OQWt|UrRGXq}1DbZ1k4WF9{O|;% z#?SD8g3qW}$Uc%kM+OK`+r~X&2)HM_a;^45Pf*#8%X=;!1zns7=}8p&nP+&;7W8g# z=0#7kBhl?-gB^}&6k02^SpgE60jS=#3A5_%ByL0yCJ1*A$Ro*gsjUiceC`30{yoSq zM{LD~W>c{ftF=x)`ttxy9=EjL_zz;KCu(M(As?vJ&a0hvIMgeDZpp-v_-ii2VV{ar zuGT|nw_*(T%?oSGSntn#I`!&G;^gHRNeG!!R%W^7dDBl8hS|Ro%JtHJD^i{*kSZhO zr~Xwv`pIIx{0t%Qc_1P=u4&yz;{L2{3n8cn8wNw9*)|^>vZuYOOsy9yt;GTgo@AJg zCjcb_`EzlXl8R0xXf@2bi+faqd z{_>n9M;dyK%ka*Sy#8`R#B!+<42gQdY# z6a5)v2DF|v$}+$DXY2J-Zx_p*+X3j&yxD}X=gf=KTl@uf+Vb-wFX$}56$%N@E%cuL zKqmm3DG0GqUtv_b`UIK2RPgPgWBkoKg*K|1)qtc&Ik$e5*%6mC4f_JauBmb;kxG`? zk%xGO+irLkGBFf_6FTnn#p-!-WrLv~Q#B-f?hJKE^;^wF3^+0)KI}6pk12+mq-kAP zJW~%qv(ZZm0Ew+s5010gw)MbJZ*Kn#m4AXPbf;q-~+J3PCg&*oYbvA!Cz!AUbx&wI2IsP%a*4n`|G;x8c-E+16-8zt* z`9cuFv7>@(tbgIzy3ax8cbx5aY%MRRK9&Gh>lZlTfwSd8>pt#-dm9~&I4KLOM?XEe zVxB0?l9{#&e44wxz3^bnV~^7V)5wi^mxargDl`RwDw|VDh!>~QRDRv-=N%7&%oqaH zsBK1#+Tn3$cL^mN3goSdBqlvYorKN#5J>dXRSC~E$LF6SkT)3H-7r4s_2$MqgNUZn zIBdnck#9;f&4u$7D?-dvhY1=eV2srYSQ#AN)6HnkGji2+AC7T-t7Cy1mB{7p(ExXT z{V=}n?fU_2Jv#g-@%xJfwIAuh#LO3HN}XPX)D)1?_*{!Eg|Ym1K?`ojxC=Z^Xo`%7 zi&!6}ql@*o&|dB-4sQ%9F=t}Mv~&4B8FbhAX0!I~&D<{)dykW$6esidx}A7EdxQYm zo1PBZ&s(}I&C+fuYBWkL&Sg)U%y4XnFl9RidEZ8;h|4Ipy8U0l=swKE01o*C47DLR z-#UbUsQAukVR$fFFV{1Qp;A?IMOJZHJ!5RJTz@HY;?7bFNyeKFkH!|vPGZo~Wgt~F z53Gixg)l)XD{g@CycWjo?Lf8}bu(k(+VV0Zb}wiyIys!~OW@GaY;oJlJCf9MWB@Bb zX7SBa_T8V*GsKv#=AKE*fJ)W31hVwYn;EMOb9OG~bDjcSK~>o;{X-fyGDP<$ku0}( zb$H9rpu`aPns6+M&*^kpqppd~_>?Pk+i1&FL)^>siFCgd7Jsw+HcmZFP1T&%Y;LtcG`pCP?-#?K#_I=0RAVy68&qlo=|lfa@|VtS8yab6ezwc#X1zC8nuW&H!S zQ8lBX56LpA8(p_2==NDt&)|2^_LmV;ETq6Tt|G{8OYlfV;mdVyhN0@yKv1Y*D6h9~ zjmR9WVe7W|A^!kf&FB!l<1nt9B9NdvU7;i4MJq5H15KMM zVOCvHumC-mI}q@ASf;`U0+h+f_ZVy0A1r&Wq6q2i-iO(run@DPU7 zS&-fh?E6`a{q3hc_L5VS+TEni3T)USAbE^Y_@D`;>DNJop|J?jYz=22ETOQJdywy% zHjsW@922sh$NXOO)2Fzc6vR;Xo-M{WT9-+%R*z;16W76;C@d!ccbO~pNC30xc;R$| zWHFxUM_Fquee>m0vHaEfg&4S13wuJqEHGxdqlYlfm*n6I&0hn3$Aa=YNK%nj@ z#syzH#{Ao@S@){fz*a@MOe#%Tr1j=fVpJgkVD#twgGHc~E(+1MJMiTn(A#pMPUbW; z)EuC{%|F2nIGhM-C4JcLhnvPB@8w10G@`%pALwCB^ZzD9k@pnHGt<{zR;?;xAJ`iu z3^gt>-vgy(dpbYVmxb_BA?QX->ZZq%hKbo@3$Y)(yn#!-4&>@3lxx&lv@IR^+MaB} zE-NE6=5~JXa46!;JMb`lPQz`_J7_RVNCkfwnmziTIZllIA{2wt2#&a3+D0Vz;4qx#o|Yws+-Z8D09NW#_#N7xgVE zjNTp#ZTrY-wgzNB1nt&DHAEZMkm}#O1TC5w7Xu&r(v-1v{7<$KcUn)(W$X6RX`N|R zK7n~7K?xC+Dd}SNw*at?z?g6frh9M%$wZbuk;X`8gt_wft7m@a(|{HCzMQLEF>|w- zuG~>(VQf-DC;7=`l_@Ehwz%P>*CjO+`(9=e&OPjSFp1?Rr?0THV%w+vgsMk!(d6BE zz@gs7oqctk20XT}Q=*_bSpEo^pjlI3fE8>~JhO8XkDcr^3*BHF?{FhXIk?1}&S@9# z7f?u1fSApY`%&!XGHmy1LrW(=&{srE=*k;lJtgKGIhj*+Kq99;Q0)i1U%2IIHm!nz zO2t#sxh<8&V>L<9E2aik;VYTi#Iq&Ovss(XW$zZu`{Rl`2N$T=z@}EzIS=bDm9U$K zZSY9!{g3+`jy7B8(EfX4kJ)+I?lP%RNSE@Wx6sn=P8g16NY8K^g+~KRPaX~z6l-Yn(-aY1lxKBDiQ-veA!b?L+els;L&}9 z!8clBs0W$OYau;YIZ6I`VW1z>%}A>nzgB2HQ}I|?6RiG5dW5QhxDNuB)Zk7cNXp3& zAJMacLk_6>Rt&173099V?%pIozrehCBZ*2|%pmxNor-Qo(vTVCL=U02^O3sT5V#r; zHIy69jnS$A8o60PKu~jj|1W?aqxrF_;g3NOTj6i>#PpRxpbX=lHeXlKI%vp*CFOqR z`PGKIuD5K;|0FXL6@cw-Gi}lE#t(3YKVGoKv5EhX!wCTU4TPaDq7I1Oi1|skw~TnyR{fTxeNi77$R=^fymS(I80(^9l+`%FtTb4j6j%-?aL+r zQI^tIC;s1W;AuD8>83F0QD$&jC&k5m@emLRLHK{#xzczj*FG!}Do6I>q|qB;WKXFv zV@dXreT;n=j*6U782gen#mHJ1Yp4u^vL}-z22-+Cmh5{nqAnno(ReVle%br;%=FtGpn)tS~~0jzphLX~}O-Y=1iH@;Z`p!DfTDO6j9caOIh) zRGyycrrWMBj)(z?y_D9w`1?RT_n^K{%lg+j)1JoB(>>)=`sJCM?TQ6aW%`v5Mgnz-U=w+Ob z$%iL@Slhv$dB}Q8{CT@8ejTUe)}!~nd{- ze%{^H{_M>{WE8}STgpBs*L$6uT3WanXA*&ABtpI9n}ef)m|ykf50ZK=w$Q>$X3msC_cu7z5;|AN60TE*60W*(jhp z^3`SSUz`$@wd?i$leq&<9zIxU+97Sl^I(-IMUeyjk~ zM62=WhX#|rzdE$h7W^8pe{ilhE@u!OB5jXgs<7{fh0LzDUi+YwnTJY(TOywz^UKjV z&4QrtR-)uJ1Mp9K^rfue!>? zA)tVNGGdxCkF6WcYpbKWjgC+aCTbPDrj;5Fh>Z{Xj3k~L`2*bG9|#KE49K5ZVH<$b zvg=}IR5qyO?VcjX;~Nw48<@3u^Si=&rvSdQy=Sazy_Tz`!tkL0X7-c%hT9_7RW0GO zn6w2ypw6{24=-gd#d%}r`Y6#*FG;!}_GCA|1VYFA^9M)SI(IJNfmf$muO86i4m+Qt zbfP9*BqKbGUF`7Zr}8Bd;~VIXBvYSuAc;HnMr?;x(NZut;XFptLQ}Ga2@8WOrwu^$ zM`mbPuStdkpec-NLe7F?D5fMsE}Rbt?JJ@POGYrd1Vweg%p||MPI`{Of{FU+DgpI# z0~=5);fzUs5pkCO#3BixUlUhe#JR}W+}hY&knMX=<@m}k^enfR5G6z9I6+P-T_vOs z|I}?rS+JuT-}>6rNcBwGfH$d=Rans_*Sj)`YX?3PHRd9b1hC7vc9_vSY`lJ|bRvWD zF@J1kp8E2Z3v}rI*{s9@eL=F@Dx}&}Bc^4jDWe9XKS0PV0CM>SI&ZbjRt~3v+G5@n z!i)8DR3qT9=}A#&r;*n|8>`F|V;g*ep;x=v_A zw2gR)FBlw5Vj&$m2zeU2^r6x5gfO@&Eq;qW%k83;hqvC8*I^dy)x95l>mp_UE)7cb zZ=ndZ)op86Hzy*pZry0&UhUlsg;-VBaQf071L*D$OD zm%R@alTS|{;FudERsfoge5=DnIh7u3L62LW< zUp{8@3=`3P?0R2qi3^|&z))u%n3wyl=@q;3ow8@PG}K8vrE8-uV^=L9dauvK=-45A z@=dpQ9Mf#bnjq8kx~tvE(pHxbaBU+?GWo$4J=icni)tzMd9H9_{!Gco$^m{u$G!*3 z?vD=(Ly;x-l%X@qnvq*99mV|B)zhzWrd%JN2ineRb%PbMYubNHjgX5yKCZF(BTwMwwW050dyYb%&zGaRW;rA6#Bl3E|67) zGjDYXD!C)-gv`@B%Z!5A?pK<>KRmZnVv!9$K5D`$sif3t*xR~1bkhD>9O)2QY)Bk; z@9{ZUD3iW0lrwDSioh}@QH#GFyXta{&ugZ$zb3}>;xNjBR@rfM2xXKO;Zpwa>&O`s zLVycjTg9a;3}LM0n2!Z>dH+(gP z&iPp!;`4E_01dotimwAfY~>8 zij7jV*n8@MIw3f9D_svh4a5qBl~D9uDRL%PA#1GuI9|o;@~|D<7RN^@@B|yqdEQ+U zknPTyElc3yLl=Ic6`P)33%F?`tEp);@*ERp&iyn~rl~AfMP-AxRao}Rt8)VTkDvEc zIJ~~SWf=aY7XByD zR{P4{T&r^DEm>xH*XsBISH466>c3zK`NO;Z5fCE-$N*6PAwm`F_J-e|xESicE2yKp zPF_Z(EF;ElB{I8u?*%C@PcYPfIn8o=-*u#oq5gAX?Oxmqg+gG!%QiJ*9DfmE0tnH! zkSZ+XM}@0Cpm2sTktLZBI2JLo4%3RlPs4a=s|6Yfz6>$t6Y^_c<%{3jsSuXW#>}Fk zy050Tf2{W#@9f<0~7N90sJuC`=8A~X$LBd#m*?I zF8%bcD*$zFpZzA@vP2GW;zshuFL5m3yRf*`--3Qip%v%g&9)613B;(i|kY%uf&8uRP&54-g8iSX5g zaTlduS28h)p~6Ob8Yu7WDnL7$3EVhs+iJKMeE-)rJ8TaV+!B)M8te?0PhBneC4z=S G*uMeyU Date: Fri, 15 Dec 2023 11:35:16 -0700 Subject: [PATCH 13/15] rebased against master, rebuilt solution --- Solutions/Tanium/Package/3.0.0.zip | Bin 83082 -> 83080 bytes Solutions/Tanium/Package/mainTemplate.json | 2 +- Solutions/Tanium/Package/testParameters.json | 32 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 Solutions/Tanium/Package/testParameters.json diff --git a/Solutions/Tanium/Package/3.0.0.zip b/Solutions/Tanium/Package/3.0.0.zip index 3ba4261f6696ea6f30d9f7a9fb1c4784db4a1c63..d901bd4450c01983e1b1a9bd47d8b98d59893f03 100644 GIT binary patch delta 15754 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 Date: Wed, 27 Dec 2023 10:57:36 -0700 Subject: [PATCH 14/15] feat: rebase against master + rebuild solution --- Solutions/Tanium/Package/3.0.0.zip | Bin 83080 -> 83080 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Solutions/Tanium/Package/3.0.0.zip b/Solutions/Tanium/Package/3.0.0.zip index d901bd4450c01983e1b1a9bd47d8b98d59893f03..b61a61b1e80b599fea980acce3386af23ffbfa23 100644 GIT binary patch delta 55 zcmeC^WbNo= E0Eh+-^Z)<= delta 55 zcmeC^WbNo= Date: Wed, 3 Jan 2024 08:25:56 -0500 Subject: [PATCH 15/15] rebuild solution with latest master branch --- Solutions/Tanium/Package/3.0.0.zip | Bin 83080 -> 83080 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Solutions/Tanium/Package/3.0.0.zip b/Solutions/Tanium/Package/3.0.0.zip index b61a61b1e80b599fea980acce3386af23ffbfa23..50e8980e39c308ab200a53c3779aa5916c19b497 100644 GIT binary patch delta 59 zcmeC^WbNo=K F1puBE4s`$k delta 59 zcmeC^WbNo=