[
  {
    "path": ".deployment",
    "content": "[config]\nproject = Azure/WebSite/site"
  },
  {
    "path": ".gitattributes",
    "content": "###############################################################################\n# Set default behavior to automatically normalize line endings.\n###############################################################################\n# Prevent from further automatic changes\n* text=binary\n\n###############################################################################\n# We assume following configuration\n# Some sh files and other could be changed from Windows too\n###############################################################################\n#* text=auto\n#*.sln text eol=crlf\n#*.csproj text eol=crlf\n#*.cs text eol=crlf\n#*.cpp text eol=crlf\n#*.h text eol=crlf\n#*.config text eol=crlf\n#*.sql text eol=crlf\n#*.asax text eol=crlf\n#*.css text eol=crlf\n#*.js text eol=crlf\n#*.xsd text eol=crlf\n#\n#*.wxs text eol=crlf\n#*.wixproj text eol=crlf\n#\n#*.cmd text eol=crlf\n#\n#*.ino text eol=lf\n#*.py text eol=lf\n#*.sh text eol=lf\n#\n#Devices\\DirectlyConnectedDevices\\NodeJS\\*.* text=binary\n#Devices\\DirectlyConnectedDevicesParticleCore\\*.* text=binary\n###############################################################################\n\n###############################################################################\n# Set default behavior for command prompt diff.\n#\n# This is need for earlier builds of msysgit that does not have it on by\n# default for csharp files.\n# Note: This is only used by command line\n###############################################################################\n#*.cs     diff=csharp\n\n###############################################################################\n# Set the merge driver for project and solution files\n#\n# Merging from the command prompt will add diff markers to the files if there\n# are conflicts (Merging from VS is not affected by the settings below, in VS\n# the diff markers are never inserted). Diff markers may cause the following \n# file extensions to fail to load in VS. An alternative would be to treat\n# these files as binary and thus will always conflict and require user\n# intervention with every merge. To do so, just uncomment the entries below\n###############################################################################\n#*.sln       merge=binary\n#*.csproj    merge=binary\n#*.vbproj    merge=binary\n#*.vcxproj   merge=binary\n#*.vcproj    merge=binary\n#*.dbproj    merge=binary\n#*.fsproj    merge=binary\n#*.lsproj    merge=binary\n#*.wixproj   merge=binary\n#*.modelproj merge=binary\n#*.sqlproj   merge=binary\n#*.wwaproj   merge=binary\n\n###############################################################################\n# behavior for image files\n#\n# image files are treated as binary by default.\n###############################################################################\n#*.jpg   binary\n#*.png   binary\n#*.gif   binary\n\n###############################################################################\n# diff behavior for common document formats\n# \n# Convert binary document formats to text before diffing them. This feature\n# is only available from the command line. Turn it on by uncommenting the \n# entries below.\n###############################################################################\n#*.doc   diff=astextplain\n#*.DOC   diff=astextplain\n#*.docx  diff=astextplain\n#*.DOCX  diff=astextplain\n#*.dot   diff=astextplain\n#*.DOT   diff=astextplain\n#*.pdf   diff=astextplain\n#*.PDF   diff=astextplain\n#*.rtf   diff=astextplain\n#*.RTF   diff=astextplain\n"
  },
  {
    "path": ".gitignore",
    "content": "# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)\n[Bb]in/\n[Oo]bj/\n\n# mstest test results\nTestResults\n\n## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\nAzurePrep.sln.ide/\nConnectTheDotsWebSite.sln.ide/\nGatewayService.sln.ide/\n\n# User-specific files\n*.suo\n*.user\n*.sln.docstates\n\n# Build results\n[Dd]ebug/\n[Rr]elease/\nx64/\n*_i.c\n*_p.c\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.log\n*.vspscc\n*.vssscc\n.builds\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opensdf\n*.sdf\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*\n\n# NCrunch\n*.ncrunch*\n.*crunch*.local.xml\n\n# Installshield output folder \n[Ee]xpress\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish\n\n# Publish Web Output\n*.Publish.xml\n\n# NuGet Packages Directory\npackages\n\n# Windows Azure Build Output\ncsx\n*.build.csdef\n\n# Windows Store app package directory\nAppPackages/\n\n# Others\n[Bb]in\n[Oo]bj\nsql\nTestResults\n[Tt]est[Rr]esult*\n*.Cache\nClientBin\n[Ss]tyle[Cc]op.*\n~$*\n*.dbmdl\nGenerated_Code #added for RIA/Silverlight projects\n\n# Backup & report files from converting an old project file to a newer\n# Visual Studio version. Backup files are not needed, because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\n\n# NuGet Packages\n*.nupkg\n.nuget\n\n#Thumbs.db\nThumbs.db\nAzure/MachineLearning/UpgradeLog.htm\n\n# Node modules directory\nnode_modules/\n\n# Visual Studio config files\n.vs/\n\n# VS Code config files\n.vscode\n\n# Website exception for bin\n!/Azure/Website/site/bin/"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"Devices/DirectlyConnectedDevices/WindowsIoTCorePi2WeatherShield\"]\n\tpath = Devices/DirectlyConnectedDevices/WindowsIoTCorePi2WeatherShield\n\turl = https://github.com/ms-iot/iot-build-lab.git\n\tbranch = ConnectTheDotsSample\n"
  },
  {
    "path": "Azure/ARMTemplate/CustomizeTemplate.md",
    "content": "You can adapt the deployment of services in order to extend, optimize and customize your own ConnectTheDots solution.\nThe deployment of the ConnectTheDots solution is driven by the Azure Resource Manager.\nAzure Resource Manager simplifies the deployment, maintenance and management of Azure resources. You can read about it extensively [here](https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/).\nThe ConnectTheDots.json file (in the same folder as this document) is the template used for ConnectTheDots deployment.\nBelow you will find a description of what's in the template and [here](https://azure.microsoft.com/en-us/documentation/articles/resource-group-authoring-templates/) you can read details about ARM templates syntax and formatting.\n\n## Resources in the template ##\nHere is what you will find in the template that will get deployed\n\n![](images/Resources.png)\n\n- Storage:\n  - The storage account is necessary for reading alerts from the Event Hub in the Website.\n  - If you remove it then you won't be able to read alerts any longer.\n- IoTHub:\n  - The Azure IoT Hub service is your cloud gateway for devices.\n  - This is the service that is used to securely connect devices to Azure IoT. When deploying the sevice using the ARM template, you will be prompted to select a SKU. You can choose to pick the free SKU which should be plenty enough for your ConnectTheDots solution (note that you can only deploy one of the free SKU of IoTHub per Azure subscription)\n  - You cannot remove this service as it is core to the ConnectTheDots architecture.\n- Service Bus:\n  - This is the Service Bus instance that hosts the Event Hub used for alerts flow.\n  - If you don't want to implement alerts or other alerts, you don't need this service and can comment it out. If you do so you will also have to customize the Website code that assumes this service is deployed.\n- Stream Analytics Job:\n  - This is the Stream Analytics job that does near real time analytics on the stream of data coming from devices (computing averages and triggering alerts)\n  - You can customize the query as described in [this document](../StreamAnalyticsQueries/SA_Setup.md).\n  - You can remove this service from the template with no impact on the rest of the solution (other than not having alerts triggered any more)\n- Web Plan: \n  - This is the App Services plan for the Web dashboard.\n  - If you remove this one, you won't be able to deploy the Website any longer\n- DashboardWebApp\n  - This is the Website dashboard\n  - The site itself is deployed using a Webdeploy package. Read [here](../WebSite/WebsitePublish.md) if you want to customize and redeploy the site.\n\n## Template walk through\n\n    ```\n    {\n        \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json\",\n        \"contentVersion\": \"1.0.0.0\",\n    // The parameters below are used to configure the deployment\n        \"parameters\": {\n            \"iotHubSku\": {\n        // The SKU for the IoT Hub service is to be selected during deployment. F1 is for the free SKU (only one instance of the F1 SKU can be deployed per subscription)\n        ...   \n            },\n            \"iotHubTier\": {\n        // The tier for the IoT Hub instance is set by default to \"Standard\"\n        ...\n            },\n            \"packageUri\": {\n        // This URI is for the website WebDeploy package. The package is published by the ConnectTheDots team, but if you want your own package to be deployed, you can create it locally and change the below URI to point to it.\n            \"type\": \"string\",\n            \"defaultValue\": \"http://aka.ms/connectthedotswebsitepackage\"\n            },\n            \"sbSku\": {\n        // The Service Bus SKU is set the cheapest available one by default\n        ...\n            },\n            \"solutionName\": {\n        // During deployment, you will be prompted for a solution name. This name is used as a prefix for naming the resource group and the various services. Use a unique name!\n        ...\n            },\n            \"storageAccountSku\": {\n        // The Storage account SKU is set the cheapest available one by default\n        ...\n            },\n            \"webSku\": {\n        // The Storage account SKU is set the cheapest available one by default\n        ...\n            },\n            \"webWorkerCount\": {\n        // This is used to scale the web plan. we only have one worker\n        ...\n            },\n            \"webWorkerSize\": {\n        // Set to the minimum available\n            }   \n        },\n    // The variables below are used whithin the template deployment process and don't need to be changed...\n        \"variables\": {\n        ...\n        },\n    // Below is the list of resources that will be deployed\n        \"resources\": [\n            {\n        // Storage account\n            \"apiVersion\": \"[variables('storageVersion')]\",\n            \"location\": \"[variables('location')]\",\n            \"name\": \"[variables('storageName')]\",\n        ...\n            },\n            {\n        // IoT Hub\n            \"apiVersion\": \"[variables('iotHubVersion')]\",\n            \"type\": \"Microsoft.Devices/Iothubs\",\n            \"name\": \"[variables('iotHubName')]\",\n        ...\n            },\n            {\n        // Service Bus + Event Hub (forthe alerts Event Hub)\n            \"apiVersion\": \"[variables('sbVersion')]\",\n            \"name\": \"[variables('sbName')]\",\n        ...\n            \"resources\": [\n                {\n        // Event Hub\n                \"apiVersion\": \"[variables('sbVersion')]\",\n                \"name\": \"[variables('ehOutName')]\",\n                \"type\": \"eventHubs\",\n        ...\n                }\n            ]\n            },\n            {\n        // Stream Analytics job\n            \"apiVersion\": \"[variables('saVersion')]\",\n            \"type\": \"Microsoft.StreamAnalytics/streamingjobs\",\n            \"name\": \"[concat(parameters('solutionName'), 'alerts')]\",\n        ...\n                \"Transformation\": {\n                \"Name\": \"AllToBlob\",\n        // Here is the inline default query that you can customize\n                \"Properties\": {\n                    \"Query\": \"SELECT \\r\\n    'TempSpike' AS alerttype, \\r\\n    'Temperature over 80F' AS message, \\r\\n    displayname,\\r\\n    guid,\\r\\n    measurename,\\r\\n    unitofmeasure,\\r\\n    location,\\r\\n    organization,\\r\\n    MIN(timecreated) AS timecreated,\\r\\n    MAX(value) AS tempMax,\\r\\n    MAX(value) AS value\\r\\nINTO\\r\\n    DeviceInfoEvents\\r\\nFROM \\r\\n    IoTHubStream TIMESTAMP BY timecreated\\r\\nWHERE\\r\\n    measurename = 'temperature' OR measurename = 'Temperature'\\r\\nGROUP BY \\r\\n    displayname, guid, measurename, unitofmeasure, location, organization,\\r\\n    TumblingWindow(Second, 5)\\r\\n HAVING\\r\\n   tempMax > 80\",\n                    \"StreamingUnits\": 1\n                }\n                }\n            }\n            },\n            {\n        // Webplan\n            \"apiVersion\": \"[variables('webVersion')]\",\n            \"name\": \"[variables('webPlanName')]\",\n            \"type\": \"Microsoft.Web/serverfarms\",\n        ...\n            },\n            {\n        // WebSite (deployed using webdeploy package\n                \"name\": \"[variables('webSiteName')]\",\n                \"type\": \"Microsoft.Web/sites\",\n                \"location\": \"[variables('location')]\",\n        ...\n            }\n        ],\n    // The below are outputs printed at the end of the deployment for the user to have references such as connection strings\n        \"outputs\": {\n        ...\n        }\n    }\n    ```"
  },
  {
    "path": "Azure/ARMTemplate/Readme.md",
    "content": "## How to deploy Azure services for ConnectTheDots.io\nTo deploy the ConnectTheDots solution to your Azure subscription you will need to follow the below instructions.\nWe are using Azure Resource Manager to deploy the needed services and connect them to one another.\nWe are also using the Azure cross platform CLI tool which will allow you to deploy the services from your favorite development machine, running Windows, Linux or OSX.\nThe below services will be deployed in your Azure subscription:\n   - 1 instance of Azure IoT Hub (using the SKU of your choice, considering you can only deploy 1 instance of the free SKU per subscription)\n   - 1 Storage account (Standard performance)\n   - 1 Service Bus instance (Basic tier) with 1 Event Hub (1 throughput Unit)\n   - 1 Stream Analytics Job (1 streaming unit)\n   - 1 App Service plan (Standard: 2 Small SKU) with 1 Web app\n   \nYou can edit the [ARM template](azuredeploy.json) if you want to add more services or edit the parameters. If you edit the ARM template manually, you will have to deploy it using the command line instructions, not the \"Azure Deploy Button\". \n\nThe ConnectTheDots website can allow you to manage your IoTHub instance (get devices connection strings, add/remove devices). This feature is NOT enabled by default and requires manually configuration in Active Directory described [below](#enable-iothub-management).\n\n## Your connect the dots resource groups\nAll the services will be deployed under a single resource group in Azure.\nThe [Azure resource groups](https://azure.microsoft.com/en-us/updates/resource-groups-in-azure-preview-portal/) are a concept allowing to manage a set of resources all together.\nThis allows you to easily find the various resources for your ConnectTheDots solution in the Azure portal.\n\n## Editing the deployment ARM template\nThe default Azure Resource Manager template doesn't require editing unless you want to change the architecture of your solution to go from the default ConnectTheDots one to your own version of it.\nYou can find information on how to customize the ARM template for ConnectTheDots [here](CustomizeTemplate.md).\nIf you edit the template file, then you will have to deploy it using the command line instructions, not the \"Azure Deploy Button\"\n\n## Deploy using the Azure Deploy Button\nThere are several ways to deploy Azure resources to your subscription using Azure Resourre Manager templates. The simplest one is to click on the button below and follow instructions.\nIf you prefer command line tools, skip to the next chapter.\n\n[![Deploy to Azure](http://azuredeploy.net/deploybutton.png)](http://azuredeploy.net/?repository=https://github.com/Azure/connectthedots/raw/master/Azure/ARMTemplate)\n\nOnce you have clicked on the button, login to your subscription. You will be directed to the first step of the deployment: the setup.\n\n![](images/AzureDeploy1.png)\n\nSelect the appropriate fields:\n- Directory: this is the Azure Active Directory your account has access to and that you want to use\n- Subscription: if you have several subscriptions, you can pick the one you want to deploy your solution to\n- Resource group/Resource Group Name: the Azure resources/services will all be deployed to a single resource group, allowing for better management of the resources once deployed. You can choose to create a new resource group for your solution or deploy to an existing one.\n- Region: pick the region you want to deploy your services to.\n- Solution Name: this is the name for your connectthedots solution. This name has to be **all lower case** and **less than 16 characters**\n- IoT Hub Sku: you can select F1 (free), S1 or S2 (see [here](https://azure.microsoft.com/en-us/pricing/details/iot-hub/) for details on pricing for these skus). Note that only 1 instance of the free SKU of IoT Hub is allowed per Azure subscription.\n- AdminName: this is the user email you want to use as an admin if you want to activate the IoTHub management features in your site. **Use the email address you used to login into your Azure Subscription**\n\n**Important**: the IoT Hub SKU selected by default is an S1 which has a cost (see pricing details link above). If you want to use the free tier, remember to switch the selection to F1. You will then be limited to 8K messages/day.\nOnce you have made your selections, click on **Next**\n\n![](images/AzureDeploy2.png)\n\nYou can see the list of services that will be deployed.\n\nClick on **Deploy**. You will see the progress of the deployment and if everything goes well, you will see this:\n\n![](images/AzureDeploy3.png)\n\nTo access the resource group in the Azure portal directly, you can click on the green **Manage** link.\n\nAt this point you can go a start setting up your devices.\n\nRead the chapter after next for instructions on how to clean up your Azure subscription once you are done playing with ConnectTheDots.\n\n## Deploy using Azure CLI tool and the ARM template\nNow here is how to deploy the whole ConnectTheDots solution in a few command lines:\n\n1. Install the Azure CLI tool following the instructions [here](https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-install/).\n1. Once you have installed the Azure CLI, you will need to connect to your Azure account. To do so, follow the instructions [here](https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-connect/).\n1. If you have multiple subscriptions, select the one you want to deploy the solution to following the instructions [here](https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-connect/#multiple-subscriptions) \n1. Set the Resource Azure Manager mode typing the following command:\n\n   ```\n   azure config mode arm\n   ```\n\n1. Create a new resource group typing the following command (you can replace \"ConnectTheDotsRG\" with the name of your choice for the resource group):\n\n   ```\n   azure group create -n \"ConnectTheDotsRG\" -l \"East US\"\n   ```\n\n1. Navigate to the Azure\\ARMTemplate folder in the repo\n\n   ```\n   cd C:\\My\\Repo\\Location\\Azure\\ARMTemplate\n   ```\n\n1. Deploy the solution typing the below command. You will actually be prompted for the following:\n\n   * region: you can use one of the following: \"East US\", \"West US\", \"North Europe\", \"West Europe\", \"East Asia\", \"South East Asia\", \"Japan East\", \"Japan West\", \"Australia East\", \"Australia SouthEast\", \"North Europe\"\n   * iothub SKU:  you can select F1 (free), S1 or S2 (see [here](https://azure.microsoft.com/en-us/pricing/details/iot-hub/) for details on pricing for these skus). Note that only 1 instance of the free SKU of IoT Hub is allowed per Azure subscription.\n   * solution name: this name has to be **all lower case** and **less than 16 characters**\n   * AdminName: this is the user email you want to use as an admin if you want to activate the IoTHub management features in your site.\n\n   ```\n   azure group deployment create -f \"azuredeploy.json\" ConnectTheDotsRG ConnectTheDotsDeploy \n   ```\n\n1. If you are seeing errors during the deployment, you can diagnose following instructions on how to debug ARM deployments: [http://aka.ms/arm-debug](http://aka.ms/arm-debug).\n\n## Enable IoTHub Management\nThe ConnectTheDots website can allow you to manage your IoT Hub instance: create/delete devices in the IoT Hub device registry, retreive connection strings.\nIn order to ensure this is a secured process, you will need to create a new Azure Active Directory application and register your instance of the website to enable the features.\nBut keep cool, there is a simple process for this:\n\n1. Go to the [Azure portal](https://portal.azure.com)\n1. Look for the resource group created during the deployment of the solution\n1. Select the website in the list of resources to bring up the website blade\n1. In the Settings section, look for and click on \"Authentication/Authorization\"\n1. Turn \"App Service Authentication\" to on\n1. Select \"Log in with Azure Active Directory\" in the \"Action to take when request is not authenticated\"\n1. Click on the Azure Active Directory provider to configure it\n1. Select \"Express\" and \"Create new AD App\", then click OK\n1. Save the new Authentication/Authorization setting\n\nOnce you have done so you can go back to the site where you will be prompted to login. Use the same account as your Azure Subscription's one. There you should see a new collumn in the devices list as well as a couple buttons allowing you to create a new device or delete an existing one.\nNo more need to toy around with IoTHub in the portal!\n\n## Deleting a ConnectTheDots solution from your Azure subscription\nYou can easily delete all the Azure resources at once when you are done with your project and want to clean up your Azure subscirption.\nYou can do this using a command line in the Azure CLI tool or in the Azure portal.\n\n## Delete the resources using Azure CLI\nIf you are already logged in in the Azure CLI tool, go directly to step #4\n\n1. Connect to Azure following the instructions [here](https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-connect/).\n1. If you have multiple subscriptions, select the one you want to deploy the solution to following the instructions [here](https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-connect/#multiple-subscriptions) \n1. Set the Resource Azure Manager mode typing the following command:\n\n   ```\n   azure config mode arm\n   ```\n\n1. Delete the resource group typing the following command (you need to replace \"ConnectTheDotsRG\" with the name you used in step 5 of the deployment if you changed it):\n\n   ```\n   azure group delete -n \"ConnectTheDotsRG\"\n   ```\n"
  },
  {
    "path": "Azure/ARMTemplate/azuredeploy.json",
    "content": "{\n    \"$schema\": \"http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json\",\n    \"contentVersion\": \"1.0.0.0\",\n  \"parameters\": {\n   \"region\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"East US\",\n        \"West US\",\n        \"North Europe\",\n        \"West Europe\",\n        \"East Asia\",\n        \"South East Asia\",\n        \"Japan East\",\n        \"Japan West\",\n        \"Australia East\",\n        \"Australia SouthEast\",\n        \"North Europe\"\n      ],\n      \"metadata\": {\n        \"description\": \"The Region to deploy the solution to\"\n      }\n    },\n    \"solutionName\": {\n      \"type\": \"string\",\n      \"maxLength\": 16,\n      \"metadata\": {\n        \"description\": \"The name of your ConnectTheDots solution (will be used to prefix the services names)\"\n      }\n    },\n    \"iotHubSku\": {\n      \"type\": \"string\",\n      \"allowedValues\": [\n        \"F1\",\n        \"S1\",\n        \"S2\"\n      ],\n      \"defaultValue\": \"S1\",\n      \"metadata\": {\n        \"description\": \"The Iothub Sku\"\n      }\n    },\n    \"adminName\": {\n      \"type\": \"string\"\n    },\n    \"repoUrl\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"https://github.com/Azure/connectthedots\"\n    },\n    \"branch\": {\n      \"type\": \"string\",\n      \"defaultValue\": \"master\"\n    }\n\n  },\n  \"variables\": {\n    \"location\": \"[parameters('region')]\",\n    \"storageVersion\": \"2015-06-15\",\n    \"storageName\": \"[concat(parameters('solutionName'), 'storage')]\",\n    \"storageId\": \"[resourceId('Microsoft.Storage/storageAccounts', variables('storageName'))]\",\n    \"storageAccountSku\": \"Standard_LRS\",\n    \"ehOutName\": \"ehalerts\",\n    \"sbKeyName\": \"RootManageSharedAccessKey\",\n    \"sbSku\": 1,\n    \"sbName\": \"[concat(parameters('solutionName'),'sb')]\",\n    \"sbVersion\": \"2017-04-01\",\n    \"sbResourceId\": \"[resourceId('Microsoft.Eventhub/namespaces/authorizationRules', variables('sbName'), variables('sbKeyName'))]\",\n    \"saVersion\": \"2015-10-01\",\n    \"saName\": \"[concat(parameters('solutionName'), 'alerts')]\",\n    \"webVersion\": \"2015-04-01\",\n    \"webPlanName\": \"[concat(parameters('solutionName'), 'plan')]\",\n    \"webSiteName\": \"[parameters('solutionName')]\",\n    \"iotHubVersion\": \"2016-02-03\",\n    \"iotHubTier\": \"Standard\",\n    \"iotHubName\": \"[concat(parameters('solutionName'), 'hub')]\",\n    \"iotHubResourceId\": \"[resourceId('Microsoft.Devices/Iothubs', variables('iotHubName'))]\",\n    \"iotHubKeyName\": \"iothubowner\",\n    \"iotHubKeyResource\": \"[resourceId('Microsoft.Devices/Iothubs/Iothubkeys', variables('iotHubName'), variables('iotHubKeyName'))]\",\n    \"saCGName\": \"streamanalyticscg\",\n    \"websiteCGName\": \"websitecg\",\n    \"webSku\": \"Standard\",\n    \"webWorkerCount\": 2,\n    \"webWorkerSize\": 0\n  },\n  \"resources\": [\n    {\n      \"apiVersion\": \"[variables('storageVersion')]\",\n      \"location\": \"[variables('location')]\",\n      \"name\": \"[variables('storageName')]\",\n      \"properties\": {\n        \"accountType\": \"[variables('storageAccountSku')]\"\n      },\n      \"type\": \"Microsoft.Storage/storageAccounts\",\n      \"tags\": {\n        \"displayName\": \"storage\"\n      }\n    },\n    {\n      \"apiVersion\": \"[variables('iotHubVersion')]\",\n      \"type\": \"Microsoft.Devices/Iothubs\",\n      \"name\": \"[variables('iotHubName')]\",\n      \"location\": \"[variables('location')]\",\n      \"sku\": {\n        \"name\": \"[parameters('iotHubSku')]\",\n        \"tier\": \"[variables('iotHubTier')]\",\n        \"capacity\": 1\n      },\n      \"properties\": {\n        \"location\": \"[variables('location')]\"\n      },\n      \"tags\": {\n        \"displayName\": \"IoTHub\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"[variables('iotHubVersion')]\",\n          \"name\": \"[concat(variables('iotHubName'), '/events/', variables('websiteCGName'))]\",\n          \"type\": \"Microsoft.Devices/Iothubs/eventhubEndpoints/ConsumerGroups\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Devices/Iothubs/', variables('iotHubName'))]\"\n          ],\n          \"tags\": {\n            \"displayName\": \"Website Consumer Group\"\n          }\n        },\n        {\n          \"apiVersion\": \"[variables('iotHubVersion')]\",\n          \"name\": \"[concat(variables('iotHubName'), '/events/', 'debug')]\",\n          \"type\": \"Microsoft.Devices/Iothubs/eventhubEndpoints/ConsumerGroups\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Devices/Iothubs/', variables('iotHubName'))]\"\n          ],\n          \"tags\": {\n            \"displayName\": \"Debug Consumer Group\"\n          }\n        },\n        {\n          \"apiVersion\": \"[variables('iotHubVersion')]\",\n          \"name\": \"[concat(variables('iotHubName'), '/events/', variables('saCGName'))]\",\n          \"type\": \"Microsoft.Devices/Iothubs/eventhubEndpoints/ConsumerGroups\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Devices/Iothubs/', variables('iotHubName'))]\"\n          ],\n          \"tags\": {\n            \"displayName\": \"Stream Analytics Consumer Group\"\n          }\n        }\n      ]\n    },\n\n    {\n      \"apiVersion\": \"[variables('sbVersion')]\",\n      \"name\": \"[variables('sbName')]\",\n      \"type\": \"Microsoft.Eventhub/namespaces\",\n      \"location\": \"[variables('location')]\",\n      \"properties\": {\n        \"messagingSku\": \"[variables('sbSku')]\",\n        \"region\": \"[variables('location')]\"\n      },\n      \"tags\": {\n        \"displayName\": \"Service Bus\"\n      },\n      \"resources\": [\n        {\n          \"apiVersion\": \"[variables('sbVersion')]\",\n          \"name\": \"[variables('ehOutName')]\",\n          \"type\": \"eventHubs\",\n          \"location\": \"[variables('location')]\",\n          \"dependsOn\": [\n            \"[concat('Microsoft.Eventhub/namespaces/', variables('sbName'))]\"\n          ],\n          \"properties\": {\n            \"path\": \"[variables('ehOutName')]\",\n            \"MessageRetentionInDays\": 1\n          },\n          \"tags\": {\n            \"displayName\": \"Alerts Event Hub\"\n          },\n          \"resources\": [\n            {\n              \"apiVersion\": \"[variables('sbVersion')]\",\n              \"name\": \"[variables('websiteCGName')]\",\n              \"type\": \"ConsumerGroups\",\n              \"dependsOn\": [\n                \"[variables('ehOutName')]\"\n              ],\n              \"tags\": {\n                \"displayName\": \"Website Consumer Group\"\n              }\n            },\n            {\n              \"apiVersion\": \"[variables('sbVersion')]\",\n              \"name\": \"debug\",\n              \"type\": \"ConsumerGroups\",\n              \"dependsOn\": [\n                \"[variables('ehOutName')]\"\n              ],\n              \"tags\": {\n                \"displayName\": \"Debug Consumer Group\"\n              }\n            }\n\n          ]\n\n        }\n      ]\n    },\n    {\n      \"apiVersion\": \"[variables('saVersion')]\",\n      \"type\": \"Microsoft.StreamAnalytics/streamingjobs\",\n      \"name\": \"[variables('saName')]\",\n      \"location\": \"[variables('location')]\",\n      \"dependsOn\": [\n        \"[concat('Microsoft.Storage/storageAccounts/', variables('storageName'))]\",\n        \"[concat('Microsoft.Devices/Iothubs/', variables('iotHubName'))]\",\n        \"[concat('Microsoft.Eventhub/namespaces/', variables('sbName'))]\"\n\n      ],\n      \"tags\": {\n        \"displayName\": \"Stream Analytics Job\"\n      },\n      \"properties\": {\n        \"sku\": {\n          \"name\": \"standard\"\n        },\n        \"EventsOutOfOrderMaxDelayInSeconds\": 10,\n        \"EventsOutOfOrderPolicy\": \"adjust\",\n        \"outputStartMode\": \"JobStartTime\",\n        \"outputStartTime\": null,\n        \"Inputs\": [\n          {\n            \"Name\": \"IoTHubStream\",\n            \"Properties\": {\n              \"DataSource\": {\n                \"Properties\": {\n                  \"consumerGroupName\": \"[variables('saCGName')]\",\n                  \"iotHubNamespace\": \"[variables('iotHubName')]\",\n                  \"sharedAccessPolicyKey\": \"[listkeys(variables('iotHubKeyResource'), variables('iotHubVersion')).primaryKey]\",\n                  \"sharedAccessPolicyName\": \"[variables('iotHubKeyName')]\"\n                },\n                \"Type\": \"Microsoft.Devices/IotHubs\"\n              },\n              \"Serialization\": {\n                \"Properties\": {\n                  \"Encoding\": \"UTF8\"\n                },\n                \"Type\": \"Json\"\n              },\n              \"Type\": \"Stream\"\n            }\n          }\n        ],\n        \"Outputs\": [\n          {\n            \"Name\": \"DeviceInfoEvents\",\n            \"Properties\": {\n              \"DataSource\": {\n                \"Properties\": {\n                  \"EventHubName\": \"[variables('ehOutName')]\",\n                  \"ServiceBusNamespace\": \"[variables('sbName')]\",\n                  \"SharedAccessPolicyKey\": \"[listkeys(variables('sbResourceId'), variables('sbVersion')).primaryKey]\",\n                  \"SharedAccessPolicyName\": \"[variables('sbKeyName')]\",\n                  \"PartitionKey\": \"PartitionId\"\n                },\n                \"Type\": \"Microsoft.ServiceBus/EventHub\"\n              },\n              \"Serialization\": {\n                \"Properties\": {\n                  \"Encoding\": \"UTF8\",\n                  \"Format\": \"Array\"\n                },\n                \"Type\": \"Json\"\n              }\n            }\n          }\n        ],\n        \"Transformation\": {\n          \"Name\": \"AllToBlob\",\n          \"Properties\": {\n            \"Query\": \"SELECT \\r\\n    'TempSpike' AS alerttype, \\r\\n    'Temperature over 80F' AS message, \\r\\n    displayname,\\r\\n    guid,\\r\\n    measurename,\\r\\n    unitofmeasure,\\r\\n    location,\\r\\n    organization,\\r\\n    MIN(timecreated) AS timecreated,\\r\\n    MAX(value) AS tempMax,\\r\\n    MAX(value) AS value\\r\\nINTO\\r\\n    DeviceInfoEvents\\r\\nFROM \\r\\n    IoTHubStream TIMESTAMP BY timecreated\\r\\nWHERE\\r\\n    measurename = 'temperature' OR measurename = 'Temperature'\\r\\nGROUP BY \\r\\n    displayname, guid, measurename, unitofmeasure, location, organization,\\r\\n    TumblingWindow(Second, 5)\\r\\n HAVING\\r\\n   tempMax > 80\",\n            \"StreamingUnits\": 1\n          }\n        }\n      }\n    },\n    {\n      \"apiVersion\": \"[variables('webVersion')]\",\n      \"name\": \"[variables('webPlanName')]\",\n      \"type\": \"Microsoft.Web/serverfarms\",\n      \"location\": \"[variables('location')]\",\n      \"tags\": {\n        \"displayName\": \"Web Plan\"\n      },\n      \"properties\": {\n        \"name\": \"[variables('webPlanName')]\",\n        \"sku\": \"[variables('webSku')]\",\n        \"workerSize\": \"[variables('webWorkerSize')]\",\n        \"numberOfWorkers\": \"[variables('webWorkerCount')]\"\n      }\n    },\n      {\n          \"name\": \"[variables('webSiteName')]\",\n          \"type\": \"Microsoft.Web/sites\",\n          \"location\": \"[variables('location')]\",\n          \"apiVersion\": \"[variables('webVersion')]\",\n        \"dependsOn\": [\n          \"[concat('Microsoft.Storage/storageAccounts/', variables('storageName'))]\",\n          \"[concat('Microsoft.Devices/Iothubs/', variables('iotHubName'))]\",\n          \"[concat('Microsoft.Eventhub/namespaces/', variables('sbName'))]\",\n          \"[variables('ehOutName')]\",\n          \"[variables('websiteCGName')]\",\n          \"[concat('Microsoft.Web/serverfarms/', variables('webPlanName'))]\",\n          \"[concat('Microsoft.StreamAnalytics/streamingjobs/', variables('saName'))]\"\n        ],\n          \"tags\": {\n              \"[concat('hidden-related:', resourceGroup().id, '/providers/Microsoft.Web/serverfarms/', variables('webPlanName'))]\": \"Resource\",\n              \"displayName\": \"DashboardWebApp\"\n          },\n          \"properties\": {\n              \"name\": \"[variables('WebSiteName')]\",\n              \"serverFarmId\": \"[resourceId('Microsoft.Web/serverfarms/', variables('webPlanName'))]\",\n              \"siteConfig\": {\n                  \"AlwaysOn\": true,\n                  \"WebsocketsEnabled\": true,\n                  \"appSettings\": [\n                    {\n                      \"name\": \"Azure.IoT.IoTHub.ConnectionString\",\n                      \"value\": \"[concat('HostName=', reference(variables('iotHubResourceId')).hostName, ';SharedAccessKeyName=', variables('iotHubKeyName'), ';SharedAccessKey=', listkeys(variables('iotHubKeyResource'), variables('iotHubVersion')).primaryKey)]\"\n                    },\n                    {\n                      \"name\": \"Azure.IoT.IoTHub.EventHub.Name\",\n                      \"value\": \"[reference(variables('iotHubResourceId')).eventHubEndpoints.events.path]\"\n                    },\n                    {\n                      \"name\": \"Azure.IoT.IoTHub.EventHub.ConnectionString\",\n                      \"value\": \"[concat('Endpoint=', reference(variables('iotHubResourceId')).eventHubEndpoints.events.endpoint, ';SharedAccessKeyName=', variables('iotHubKeyName'), ';SharedAccessKey=', listkeys(variables('iotHubKeyResource'), variables('iotHubVersion')).primaryKey)]\"\n                    },\n                    {\n                      \"name\": \"Azure.IoT.IoTHub.EventHub.ConsumerGroup\",\n                      \"value\": \"[variables('websiteCGName')]\"\n                    },\n                    {\n                      \"name\": \"Azure.ServiceBus.EventHub.Name\",\n                      \"value\": \"[variables('ehOutName')]\"\n                    },\n                    {\n                      \"name\": \"Azure.ServiceBus.EventHub.ConnectionString\",\n                      \"value\": \"[listkeys(variables('sbResourceId'), variables('sbVersion')).primaryConnectionString]\"\n                    },\n                    {\n                      \"name\": \"Azure.ServiceBus.EventHub.ConsumerGroup\",\n                      \"value\": \"[variables('websiteCGName')]\"\n                    },\n                    {\n                      \"name\": \"Azure.Storage.ConnectionString\",\n                      \"value\": \"[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageName'), ';AccountKey=', listkeys(variables('storageId'), variables('storageVersion')).key1)]\"\n                    },\n                    {\n                      \"name\": \"AdminName\",\n                      \"value\": \"[parameters('adminName')]\"\n                    },\n                    {\n                      \"name\": \"ObjectTypePrefix\",\n                      \"value\": \"\"\n                    },\n                    {\n                      \"name\": \"SolutionName\",\n                      \"value\": \"[variables('webSiteName')]\"\n                    }\n                  ]\n              }\n          },\n          \"resources\": [\n            {\n\n              \"apiVersion\":\"[variables('webVersion')]\",\n              \"name\":\"web\",\n              \"type\":\"sourcecontrols\",\n              \"dependsOn\":[\n                \"[concat('Microsoft.Web/sites/', variables('webSiteName'))]\"\n              ],\n              \"properties\":{\n                \"repoUrl\":\"[parameters('repoUrl')]\",\n                \"branch\":\"[parameters('branch')]\",\n                \"isManualIntegration\": true\n              }\n            }\n          ]\n      }\n  ],\n  \"outputs\": {\n    \"iotHubConnectionString\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('HostName=', reference(variables('iotHubResourceId')).hostName, ';SharedAccessKeyName=', variables('iotHubKeyName'), ';SharedAccessKey=', listkeys(variables('iotHubKeyResource'), variables('iotHubVersion')).primaryKey)]\"\n    },\n    \"Azure.IoT.IoTHub.EventHub.Name\": {\n      \"type\": \"string\",\n      \"value\": \"[reference(variables('iotHubResourceId')).eventHubEndpoints.events.path]\"\n    },\n    \"Azure.IoT.IoTHub.EventHub.ConnectionString\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('Endpoint=', reference(variables('iotHubResourceId')).eventHubEndpoints.events.endpoint, ';SharedAccessKeyName=', variables('iotHubKeyName'), ';SharedAccessKey=', listkeys(variables('iotHubKeyResource'), variables('iotHubVersion')).primaryKey)]\"\n    },\n    \"Azure.IoT.IoTHub.EventHub.ConsumerGroup\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('websiteCGName')]\"\n    },\n    \"Azure.ServiceBus.EventHub.Name\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('ehOutName')]\"\n    },\n    \"Azure.ServiceBus.EventHub.ConnectionString\": {\n      \"type\": \"string\",\n      \"value\": \"[listkeys(variables('sbResourceId'), variables('sbVersion')).primaryConnectionString]\"\n    },\n    \"Azure.ServiceBus.EventHub.ConsumerGroup\": {\n      \"type\": \"string\",\n      \"value\": \"[variables('websiteCGName')]\"\n    },\n    \"Azure.Storage.ConnectionString\": {\n      \"type\": \"string\",\n      \"value\": \"[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageName'), ';AccountKey=', listkeys(variables('storageId'), variables('storageVersion')).key1)]\"\n    }\n  }\n}\n"
  },
  {
    "path": "Azure/EHConsole/EHConsole/App.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <startup>\n    <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5\" />\n  </startup>\n  \n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-7.0.0.0\" newVersion=\"7.0.0.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n  <system.serviceModel>\n    <extensions>\n      <!-- In this extension section we are introducing all known service bus extensions. User can remove the ones they don't need. -->\n      <behaviorExtensions>\n        <add name=\"connectionStatusBehavior\" type=\"Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"transportClientEndpointBehavior\" type=\"Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"serviceRegistrySettings\" type=\"Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </behaviorExtensions>\n      <bindingElementExtensions>\n        <add name=\"netMessagingTransport\" type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus,  Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"tcpRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"httpRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"httpsRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"onewayRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </bindingElementExtensions>\n      <bindingExtensions>\n        <add name=\"basicHttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"webHttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"ws2007HttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netTcpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netOnewayRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netEventRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netMessagingBinding\" type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </bindingExtensions>\n    </extensions>\n  </system.serviceModel>\n  <appSettings>\n    <!-- Service Bus specific app setings for messaging connections -->\n    <add key=\"Microsoft.ServiceBus.ConnectionString\" value=\"Endpoint=sb://[your namespace].servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=[your secret]\" />\n  </appSettings>\n</configuration>"
  },
  {
    "path": "Azure/EHConsole/EHConsole/Microsoft.ConnectTheDots.EHConsole.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{AAAAA552-F973-4683-8CF9-8B719A69E49C}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.EHConsole</RootNamespace>\n    <AssemblyName>EHConsole</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <SolutionDir Condition=\"$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'\">..\\</SolutionDir>\n    <RestorePackages>true</RestorePackages>\n    <NuGetPackageImportStamp>1610c4c5</NuGetPackageImportStamp>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Hyak.Common\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Hyak.Common.1.0.2\\lib\\net45\\Hyak.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Common\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.Azure.Common.2.1.0\\lib\\net45\\Microsoft.Azure.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Common.NetFramework\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.Azure.Common.2.1.0\\lib\\net45\\Microsoft.Azure.Common.NetFramework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.IdentityModel.Clients.ActiveDirectory\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.IdentityModel.Clients.ActiveDirectory.3.5.207081303-alpha\\lib\\net45\\Microsoft.IdentityModel.Clients.ActiveDirectory.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.IdentityModel.Clients.ActiveDirectory.Platform\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.IdentityModel.Clients.ActiveDirectory.3.5.207081303-alpha\\lib\\net45\\Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ServiceBus, Version=2.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\..\\AzurePrep\\packages\\WindowsAzure.ServiceBus.2.7.5\\lib\\net40-full\\Microsoft.ServiceBus.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Threading.Tasks\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.Bcl.Async.1.0.168\\lib\\net40\\Microsoft.Threading.Tasks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Threading.Tasks.Extensions\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.Bcl.Async.1.0.168\\lib\\net40\\Microsoft.Threading.Tasks.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Threading.Tasks.Extensions.Desktop\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.Bcl.Async.1.0.168\\lib\\net40\\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Common\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Common.1.4.1\\lib\\net45\\Microsoft.WindowsAzure.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Common.NetFramework\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Common.1.4.1\\lib\\net45\\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Configuration, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.ConfigurationManager.3.1.0\\lib\\net40\\Microsoft.WindowsAzure.Configuration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.4.1.1\\lib\\net40\\Microsoft.WindowsAzure.Management.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.Compute\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.Compute.12.2.0-preview\\lib\\net40\\Microsoft.WindowsAzure.Management.Compute.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.MediaServices\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.MediaServices.4.1.0\\lib\\net40\\Microsoft.WindowsAzure.Management.MediaServices.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.Monitoring\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.Monitoring.4.1.0\\lib\\net40\\Microsoft.WindowsAzure.Management.Monitoring.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.Network\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.Network.7.0.3\\lib\\net40\\Microsoft.WindowsAzure.Management.Network.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.Scheduler\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.Scheduler.6.1.0\\lib\\net40\\Microsoft.WindowsAzure.Management.Scheduler.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.ServiceBus\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.ServiceBus.0.17.1-preview\\lib\\net40\\Microsoft.WindowsAzure.Management.ServiceBus.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.Sql\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.Sql.5.2.0\\lib\\net40\\Microsoft.WindowsAzure.Management.Sql.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.Storage\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.Storage.5.1.1\\lib\\net40\\Microsoft.WindowsAzure.Management.Storage.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.WebSites\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.WindowsAzure.Management.WebSites.4.4.2-prerelease\\lib\\net40\\Microsoft.WindowsAzure.Management.WebSites.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\..\\AzurePrep\\packages\\Newtonsoft.Json.7.0.1\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Management\" />\n    <Reference Include=\"System.Management.Instrumentation\" />\n    <Reference Include=\"System.Net\" />\n    <Reference Include=\"System.Net.Http\" />\n    <Reference Include=\"System.Net.Http.Extensions\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.Net.Http.2.2.29\\lib\\net45\\System.Net.Http.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Primitives\">\n      <HintPath>..\\..\\AzurePrep\\packages\\Microsoft.Net.Http.2.2.29\\lib\\net45\\System.Net.Http.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.WebRequest\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"packages.config\">\n      <SubType>Designer</SubType>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"..\\..\\..\\license.txt\">\n      <Link>Docs\\license.txt</Link>\n    </Content>\n  </ItemGroup>\n  <ItemGroup>\n    <WCFMetadata Include=\"Service References\\\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\AzurePrep\\Common\\Microsoft.ConnectTheDots.CloudDeploy.Common.csproj\">\n      <Project>{987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}</Project>\n      <Name>Microsoft.ConnectTheDots.CloudDeploy.Common</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Azure/EHConsole/EHConsole/Program.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.EHConsole\n{\n    using System;\n    using System.Linq;\n    using System.Text;\n    using System.Threading;\n    using System.Threading.Tasks;\n\n    //--//\n    \n    using Microsoft.Azure;\n    using Microsoft.ServiceBus;\n    using Microsoft.ServiceBus.Messaging;\n    using Microsoft.WindowsAzure.Management.ServiceBus;\n    using Microsoft.WindowsAzure.Management.ServiceBus.Models;\n    using Microsoft.WindowsAzure.Management.Storage;\n\n    //--//\n\n    using Microsoft.ConnectTheDots.CloudDeploy.Common;\n\n    //--//\n\n    class Program\n    {\n        internal class CloudWebDeployInputs\n        {\n            public string NamePrefix;\n            public string SBNamespace;\n            public string Location;\n            public string StorageAccountName;\n            public SubscriptionCloudCredentials Credentials;\n        }\n\n        //--//\n\n        private static readonly LogBuffer _ConsoleBuffer = new LogBuffer(\n            ( m ) =>\n            {\n                Console.WriteLine( m );\n            }\n        );\n\n        //--//\n\n        public bool GetInputs( out CloudWebDeployInputs result )\n        {\n            result = new CloudWebDeployInputs( );\n\n            result.Credentials = AzureConsoleHelper.GetUserSubscriptionCredentials( );\n            if( result.Credentials == null )\n            {\n                result = null;\n                return false;\n            }\n\n            ServiceBusNamespace selectedNamespace = AzureConsoleHelper.SelectNamespace( result.Credentials );\n            if( selectedNamespace == null )\n            {\n                result = null;\n                Console.WriteLine( \"Quiting...\" );\n                return false;\n            }\n            result.NamePrefix = selectedNamespace.Name;\n            if( result.NamePrefix.EndsWith( \"-ns\" ) )\n            {\n                result.NamePrefix = result.NamePrefix.Substring( 0, result.NamePrefix.Length - 3 );\n            }\n\n            result.SBNamespace = selectedNamespace.Name;\n            result.StorageAccountName = result.NamePrefix.ToLowerInvariant( ) + \"storage\";\n\n            result.Location = selectedNamespace.Region;\n\n            return true;\n        }\n\n        bool Run( )\n        {\n            CloudWebDeployInputs inputs = null;\n            if( !GetInputs( out inputs ) )\n            {\n                return false;\n            }\n\n            Console.WriteLine( \"Retrieving namespace metadata...\" );\n            // Create Namespace\n            ServiceBusManagementClient sbMgmt = new ServiceBusManagementClient( inputs.Credentials );\n\n            var nsDescription = sbMgmt.Namespaces.GetNamespaceDescription( inputs.SBNamespace );\n            string nsConnectionString = nsDescription.NamespaceDescriptions.First(\n                ( d ) => String.Equals( d.AuthorizationType, \"SharedAccessAuthorization\" )\n                ).ConnectionString;\n\n            NamespaceManager nsManager = NamespaceManager.CreateFromConnectionString( nsConnectionString );\n\n            EventHubDescription ehDevices = AzureConsoleHelper.SelectEventHub( nsManager, inputs.Credentials );\n\n            var serviceNamespace = inputs.SBNamespace;\n            var hubName = ehDevices.Path;\n            \n            var sharedAccessAuthorizationRule = ehDevices.Authorization.FirstOrDefault( ( d )\n                => d.Rights.Contains(AccessRights.Listen)) as SharedAccessAuthorizationRule;\n\n            if( sharedAccessAuthorizationRule == null )\n            {\n                Console.WriteLine( \"Cannot locate Authorization rule for WebSite key.\" );\n                return false;\n            }\n\n            var receiverKeyName = sharedAccessAuthorizationRule.KeyName;\n            var receiverKey = sharedAccessAuthorizationRule.PrimaryKey;\n            //Console.WriteLine(\"Starting temperature processor with {0} partitions.\", partitionCount);\n\n            CancellationTokenSource cts = new CancellationTokenSource( );\n\n            int closedReceivers = 0;\n            AutoResetEvent receiversStopped = new AutoResetEvent( false );\n\n            MessagingFactory factory = MessagingFactory.Create(ServiceBusEnvironment.CreateServiceUri( \"sb\", serviceNamespace, \"\" ),\n                new MessagingFactorySettings\n                {\n                    TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider( receiverKeyName, receiverKey ),\n                    TransportType = TransportType.Amqp\n                } );\n\n            EventHubClient eventHubClient = factory.CreateEventHubClient( hubName );\n            EventHubConsumerGroup eventHubConsumerGroup = eventHubClient.GetDefaultConsumerGroup( );\n\n            int partitionCount = ehDevices.PartitionCount;\n\n            for( int i = 0; i < partitionCount; i++ )\n            {\n                Task.Factory.StartNew( ( state ) =>\n                {\n                    try\n                    {\n                        _ConsoleBuffer.Add( string.Format( \"Starting worker to process partition: {0}\", state ) );\n\n                        var receiver = eventHubConsumerGroup.CreateReceiver( state.ToString( ), DateTime.UtcNow );\n\n                        _ConsoleBuffer.Add( string.Format( \"Waiting for start receiving messages: {0} ...\", state ) );\n\n                        while( true )\n                        {\n                            // Receive could fail, I would need a retry policy etc...\n                            var messages = receiver.Receive( 10 );\n                            foreach( var message in messages )\n                            {\n                                //var eventBody = Newtonsoft.Json.JsonConvert.DeserializeObject<TemperatureEvent>(Encoding.Default.GetString(message.GetBytes()));\n                                //Console.WriteLine(\"{0} [{1}] Temperature: {2}\", DateTime.Now, message.PartitionKey, eventBody.Temperature);\n                                _ConsoleBuffer.Add( message.PartitionKey + \" sent message:\" + Encoding.Default.GetString( message.GetBytes( ) ) );\n                            }\n\n                            if( cts.IsCancellationRequested )\n                            {\n                                Console.WriteLine( \"Stopping: {0}\", state );\n                                receiver.Close( );\n                                if( Interlocked.Increment( ref closedReceivers ) >= partitionCount )\n                                {\n                                    receiversStopped.Set();\n                                }\n                                break;\n                            }\n                        }\n                    }\n                    catch( Exception ex )\n                    {\n                        _ConsoleBuffer.Add( ex.Message );\n                    }\n                }, i );\n            }\n\n            Console.ReadLine( );\n            cts.Cancel( );\n\n            //waiting for all receivers to stop\n            receiversStopped.WaitOne( );\n\n            bool saveToFile;\n            for( ;; )\n            {\n                Console.WriteLine( \"Do you want to save received data to file? (y/n)\" );\n\n                string answer = Console.ReadLine( );\n                string request = \"do not\";\n\n                saveToFile = false;\n                if( !string.IsNullOrEmpty( answer ) && answer.ToLower( ).StartsWith( \"y\" ) )\n                {\n                    saveToFile = true;\n                    request = \"\";\n                }\n                if( ConsoleHelper.Confirm( \"Are you sure you \" + request + \" want to save received data?\" ) )\n                {\n                    break;\n                }\n            }\n            if( saveToFile )\n            {\n                string fileName = inputs.SBNamespace + DateTime.UtcNow.ToString( \"_d_MMM_h_mm\" ) + \".log\";\n                string filePath = Environment.GetFolderPath( Environment.SpecialFolder.Desktop );\n                string fileFullName = filePath + @\"\\\" + fileName;\n                if( _ConsoleBuffer.FlushToFile( fileFullName ) )\n                {\n                    Console.WriteLine( \"Output was saved to your desktop, at \" + fileFullName + \" file.\" );\n                }    \n            }\n            \n\n            Console.WriteLine( \"Wait for all receivers to close and then press ENTER.\" );\n            Console.ReadLine( );\n\n            return true;\n        }\n\n        static int Main( string[] args )\n        {\n            var p = new Program( );\n\n            try\n            {\n                bool result = p.Run( );\n                return result ? 0 : 1;\n            }\n            catch ( Exception e )\n            {\n                Console.WriteLine( \"Exception {0} at {1}\", e.Message, e.StackTrace );\n                return 0;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Azure/EHConsole/EHConsole/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"EHConsole\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"EHConsole\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"54c0c07c-bea0-423c-b360-03c11e593049\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Azure/EHConsole/EHConsole/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Hyak.Common\" version=\"1.0.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.Common\" version=\"2.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.Common.Dependencies\" version=\"1.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Bcl\" version=\"1.1.10\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Bcl.Async\" version=\"1.0.168\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Bcl.Build\" version=\"1.0.21\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.IdentityModel.Clients.ActiveDirectory\" version=\"3.5.207081303-alpha\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Net.Http\" version=\"2.2.29\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Common\" version=\"1.4.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Common.Dependencies\" version=\"1.1.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.ConfigurationManager\" version=\"3.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management\" version=\"4.1.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Compute\" version=\"12.2.0-preview\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Libraries\" version=\"2.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.MediaServices\" version=\"4.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Monitoring\" version=\"4.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Network\" version=\"7.0.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Scheduler\" version=\"6.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.ServiceBus\" version=\"0.17.1-preview\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Sql\" version=\"5.2.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Storage\" version=\"5.1.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.WebSites\" version=\"4.4.2-prerelease\" targetFramework=\"net45\" />\n  <package id=\"Newtonsoft.Json\" version=\"7.0.1\" targetFramework=\"net45\" />\n  <package id=\"WindowsAzure.ServiceBus\" version=\"2.7.5\" targetFramework=\"net45\" />\n</packages>"
  },
  {
    "path": "Azure/EHConsole/EHConsole.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2013\nVisualStudioVersion = 12.0.30723.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Microsoft.ConnectTheDots.EHConsole\", \"EHConsole\\Microsoft.ConnectTheDots.EHConsole.csproj\", \"{AAAAA552-F973-4683-8CF9-8B719A69E49C}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Microsoft.ConnectTheDots.CloudDeploy.Common\", \"..\\AzurePrep\\Common\\Microsoft.ConnectTheDots.CloudDeploy.Common.csproj\", \"{987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{AAAAA552-F973-4683-8CF9-8B719A69E49C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{AAAAA552-F973-4683-8CF9-8B719A69E49C}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{AAAAA552-F973-4683-8CF9-8B719A69E49C}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{AAAAA552-F973-4683-8CF9-8B719A69E49C}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{987E2AAB-AC91-4781-89B7-C1AD0AF01D8A}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Azure/EHConsole/nuget.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <config>\n    <add key=\"repositorypath\" value=\"..\\AzurePrep\\packages\" />\n  </config>\n  <packageRestore>\n    <add key=\"enabled\" value=\"True\" />\n    <add key=\"automatic\" value=\"True\" />\n  </packageRestore>\n</configuration>"
  },
  {
    "path": "Azure/MachineLearning/MachineLearningCloudService.md",
    "content": "Once you have setup devices and Azure Event Hubs to receive data from your devices, you can do some analytics on the data.\nAzure Machine Learning offers a wide range of APIs, along with a platform to create advanced machine learning algorithm.\nIn this example we use the Anomaly Detection API that is available on the [Azure Data Market](http://datamarket.azure.com/dataset/aml_labs/anomalydetection).\n\nIn order to implement the sample you will need to do one of the following (the instructions below assume you are doing the first one):\n\n* [Sign up](http://datamarket.azure.com/checkout/f33b2da0-af7c-42dd-85eb-d625e688f876?ctpa=False) for the free trial (that gives you up to 25,000 transactions per month)\n* Create your own Machine Learning endpoint (we are not covering this here, but you can learn how to do so [here](http://azure.microsoft.com/en-us/services/machine-learning/))\n\nThe sample consist in a Cloud Service that reads real time data from ehDevices Event Hub and calls the Machine Learning Anomaly Detection API, then sends alerts triggered by the API to the ehAlerts Event Hub so that Web sites and clients can display the alerts.\n\n## Prerequisites ##\n\nMake sure you have all software installed and necessary subscriptions as indicated in the Readme.md file for the project. To repeat them here, you need\n\n1. Microsoft Azure subscription ([free trial subscription](http://azure.microsoft.com/en-us/pricing/free-trial/) is sufficient)\n1. If you have not done so already, [Sign up](http://datamarket.azure.com/checkout/f33b2da0-af7c-42dd-85eb-d625e688f876?ctpa=False) for the Anomaly Detection API service.\n1. Visual Studio 2013 – [Community Edition](http://www.visualstudio.com/downloads/download-visual-studio-vs)\n\nIn addition, you must have run the AzurePrep program discussed in that section, as it creates the event hubs from which the Cloud service pulls data. If you already have the event hubs, you can find information needed below in your Azure portal (see below)\n\n## Deploy the Cloud Service ##\n\n* Open the ConnectTheDots\\Azure\\AzurePrep\\AzurePrep.sln solution in Visual Studio.\n* Open and edit the configuration file WorkerHost\\app.config:\n    * Find the lines for the Connection Strings (look for Microsoft.ServiceBus.ConnectionString, Microsoft.ServiceBus.ConnectionStringDevices and Microsoft.ServiceBus.ConnectionStringAlerts)\n   * Replace the connection strings with the appropriate values for your subscription, found in [https://manage.windowsazure.com](https://manage.windowsazure.com) as follows:\n         * **ServiceBus.ConnectionString**. Select Service Bus from the left nav menu, highlight the Namespace Name created earlier, click on Connection Information at the bottom of the screen, and copy the RootManagedSharedAccessKey.\n         * **ServiceBus.ConnectionStringDevices**. Select Service Bus from the left nav menu, select the Namespace Name created earlier, highlight ehdevices, click on Connection information at the bottom of the screen, and copy the WebSite Connection string.\n         * **ServiceBus.ConnectionStringAlerts**. Select Service Bus from the left nav menu, select the Namespace Name created earlier, highlight ehalerts, click on Connection information at the bottom of the screen, and copy the WebSite Connection string.\n   * Find the lines for the Anomaly Detection settings and edit appropriately\n      * **AnomalyDetectionApiUrl**:\n         * if you are using the data market API, keep the URL unchanged (https://api.datamarket.azure.com/aml_labs/anomalydetection/v1/)\n         * If you are using your own Machine Learning endpoint use its URL\n      * **AnomalyDetectionAuthKey**:\n         * If you are using the data market API, go to [https://datamarket.azure.com/account](https://datamarket.azure.com/account) (login in with the account used to subscribe to the Anomaly Detection API) and search for \"Primary Account Key\"\n         * If you are using your own Machine Learning endpoint use the authentication key provided.\n      * **LiveId**:\n         * If you are using the data market API, use the Windows ID you used to subscribe to the API\n         * If you are using your own Machine Learning endpoint this parameter is ignored\n      * **UseMarketApi**:\n         * If you are using the data market API, leave this one unchanged (\"true\")\n         * If you are using your own Machine Learning endpoint, set to \"false\".\n   * The settings **TukeyThresh** and **ZScoreThresh** can be adjusted to fine tune the Anomaly Detection algorithm.\n   * The **AlertsIntervalSec** sets the minimum time in seconds between 2 alerts from the Anomaly Detection algorithm\n\n* You can test the service locally by hitting F5 in Visual Studio \n* If you have created and published a website using the samples in this project, you should see anomalies detected in the charts and in the alerts table when sensors data changes.\n* To deploy the Cloud Service, right click on the WorkerRole project, click on \"Publish\" and follow the prompts\n\n"
  },
  {
    "path": "Azure/MachineLearning/SQL/SQL.sqlproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\" ToolsVersion=\"4.0\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <Name>SQL</Name>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectVersion>4.1</ProjectVersion>\n    <ProjectGuid>{37fa4922-ac28-474c-9eb9-1544437997f8}</ProjectGuid>\n    <DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureDatabaseSchemaProvider</DSP>\n    <OutputType>Database</OutputType>\n    <RootPath>\n    </RootPath>\n    <RootNamespace>SQL</RootNamespace>\n    <AssemblyName>SQL</AssemblyName>\n    <ModelCollation>1033, CI</ModelCollation>\n    <DefaultFileStructure>BySchemaAndSchemaType</DefaultFileStructure>\n    <DeployToDatabase>True</DeployToDatabase>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <TargetLanguage>CS</TargetLanguage>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <SqlServerVerification>False</SqlServerVerification>\n    <IncludeCompositeObjects>True</IncludeCompositeObjects>\n    <TargetDatabaseSet>True</TargetDatabaseSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <OutputPath>bin\\Release\\</OutputPath>\n    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>\n    <TreatWarningsAsErrors>False</TreatWarningsAsErrors>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <DefineDebug>false</DefineDebug>\n    <DefineTrace>true</DefineTrace>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <BuildScriptName>$(MSBuildProjectName).sql</BuildScriptName>\n    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <DefineDebug>true</DefineDebug>\n    <DefineTrace>true</DefineTrace>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <!-- VS10 without SP1 will not have VisualStudioVersion set, so do that here -->\n  <PropertyGroup>\n    <VisualStudioVersion Condition=\"'$(VisualStudioVersion)' == ''\">10.0</VisualStudioVersion>\n    <!-- Default to the v10.0 targets path if the targets file for the current VS version is not found -->\n    <SSDTExists Condition=\"Exists('$(MSBuildExtensionsPath)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\SSDT\\Microsoft.Data.Tools.Schema.SqlTasks.targets')\">True</SSDTExists>\n    <VisualStudioVersion Condition=\"'$(SSDTExists)' == ''\">10.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\SSDT\\Microsoft.Data.Tools.Schema.SqlTasks.targets\" />\n  <ItemGroup>\n    <Folder Include=\"Properties\" />\n    <Folder Include=\"Tables\" />\n    <Folder Include=\"StoredProcedures\" />\n    <Folder Include=\"TableType\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Build Include=\"Tables\\AlertsData.sql\" />\n    <Build Include=\"StoredProcedures\\InsertAlertsData.sql\" />\n    <Build Include=\"TableType\\AlertsDataTableType.sql\" />\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "Azure/MachineLearning/SQL/StoredProcedures/InsertAlertsData.sql",
    "content": "﻿CREATE PROCEDURE [dbo].[InsertAlertsData]\n\t@dataList [dbo].[AlertsDataTableType] READONLY\nAS\n\tinsert into [dbo].[AlertsData] ([value], [guid], [displayname], [organization], [unitofmeasure], [measurename], [location], [timecreated])\n\t\tselect [value], [guid], [displayname], [organization], [unitofmeasure], [measurename], [location], [timecreated] from @dataList\nRETURN 0\n"
  },
  {
    "path": "Azure/MachineLearning/SQL/TableType/AlertsDataTableType.sql",
    "content": "﻿CREATE TYPE [dbo].[AlertsDataTableType] AS TABLE( \n\t[value] FLOAT NULL, \n\t[guid] VARCHAR(40) NULL, \n\t[organization] VARCHAR(20) NULL, \n\t[displayname] VARCHAR(50) NULL, \n\t[unitofmeasure] VARCHAR(10) NULL, \n\t[measurename] VARCHAR(20) NULL, \n\t[location] VARCHAR(120) NULL, \n\t[timecreated] DATETIME NULL\n)"
  },
  {
    "path": "Azure/MachineLearning/SQL/Tables/AlertsData.sql",
    "content": "﻿CREATE TABLE [dbo].[AlertsData]\n(\n\t[Id] INT NOT NULL PRIMARY KEY IDENTITY,\n\t[value] FLOAT NULL, \n\t[guid] VARCHAR(40) NULL, \n\t[organization] VARCHAR(20) NULL, \n\t[displayname] VARCHAR(50) NULL, \n\t[unitofmeasure] VARCHAR(10) NULL, \n\t[measurename] VARCHAR(20) NULL, \n\t[location] VARCHAR(120) NULL, \n\t[timecreated] DATETIME NULL\n)"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/Analyzer.cs",
    "content": "//#define DEBUG_LOG\n\nusing System;\nusing System.Collections.Generic;\nusing System.Data.Services.Client;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Net;\nusing System.Runtime.Serialization;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Web.Script.Serialization;\nusing Microsoft.WindowsAzure.Diagnostics;\n\nnamespace WorkerHost\n{\n    class ADResult\n    {\n        [DataMember]\n        public string table { get; set; }\n\n        public List<AnomalyRecord> GetADResults()\n        {\n            var rowDelim = \";\";\n            var colDelim = \",\";\n            var rows = table.Split(new string[] { rowDelim }, StringSplitOptions.RemoveEmptyEntries);\n\n            List<AnomalyRecord> series = new List<AnomalyRecord>();\n            for (int i = 0; i < rows.Length; i++)\n            {\n                var row = rows[i].Replace(\"\\\"\", \"\").Trim();\n                if (i == 0 || row.Length == 0)\n                {\n                    continue; // ignore headers and empty rows\n                }\n\n                var cols = row.Split(new string[] { colDelim }, StringSplitOptions.RemoveEmptyEntries);\n                series.Add(AnomalyRecord.Parse(cols));\n            }\n            return series;\n        }\n    }\n\n    class Analyzer\n    {\n        private static string _detectorUrl;\n        private static string _detectorAuthKey;\n        private static string _liveId;\n        private static string _spikeDetectorParams;\n        private static bool _useMarketApi;\n\n        public Analyzer(string anomalyDetectionApiUrl, string anomalyDetectionAuthKey, string liveId, bool useMarketApi, string tukeyThresh, string zscoreThresh)\n        {\n            _detectorUrl = anomalyDetectionApiUrl;\n            _detectorAuthKey = anomalyDetectionAuthKey;\n            _liveId = liveId;\n            _useMarketApi = useMarketApi;\n\n            _spikeDetectorParams = string.Format(\"SpikeDetector.TukeyThresh={0}; SpikeDetector.ZscoreThresh={1}\", tukeyThresh, zscoreThresh);\n        }\n\n\n        public Task<AnomalyRecord[]> Analyze(SensorDataContract[] data)\n        {\n            var timeSeriesData = GetTimeseriesData(data);\n#if DEBUG_LOG\n            Trace.TraceInformation(\"AzureML request: {0}\", timeSeriesData);\n#endif\n\n            if (_useMarketApi)\n            {\n                return Task.Run(() => GetAlertsFromAnomalyDetectionAPI(timeSeriesData));  \n            }\n            return GetAlertsFromRRS(timeSeriesData);\n        }\n\n        private static string GetTimeseriesData(SensorDataContract[] data)\n        {\n            var step = 1;\n            var prevTime = DateTime.MinValue;\n            var prevVal = 0d;\n            List<SensorDataContract> newData = new List<SensorDataContract>();\n            foreach (var d in data.OrderBy(dd => dd.TimeCreated))\n            {\n                d.TimeCreated = d.TimeCreated.AddTicks(-(d.TimeCreated.Ticks % TimeSpan.TicksPerSecond)); // round off the millisecs\n                if (prevTime != DateTime.MinValue)\n                {\n                    for (; prevTime.AddSeconds(step) < d.TimeCreated; )\n                    {\n                        prevTime = prevTime.AddSeconds(step);\n                        newData.Add(new SensorDataContract { TimeCreated = prevTime, Value = prevVal });\n                    }\n                }\n                newData.Add(d);\n\n                prevTime = d.TimeCreated;\n                prevVal = d.Value;\n            }\n\n\n            var sb = new StringBuilder();\n            foreach (var d in newData)\n            {\n                sb.Append(string.Format(\"{0}={1};\", d.TimeCreated.ToString(\"O\"), d.Value));\n            }\n            return sb.ToString();\n        }\n\n        public static double FindMaxValue(IEnumerable<double> values)\n        {\n            var avg = values.Average();\n            var sd = Math.Sqrt(values.Average(v => Math.Pow(v - avg, 2)));\n            return avg + 5 * sd;\n        }\n\n        private AnomalyRecord[] filterAnomaly(IEnumerable<AnomalyRecord> analyzedRecords)\n        {\n            return analyzedRecords.Where(ar => ar.Spike1 == 1 || ar.Spike2 == 1 || ar.LevelScore > 3).ToArray();\n        }\n\n\n        public AnomalyRecord[] GetAlertsFromAnomalyDetectionAPI(string timeSeriesData)\n        {\n            var acitionUri = new Uri(_detectorUrl);\n\n            var cred = new NetworkCredential(_liveId, _detectorAuthKey); // your Microsoft live Id here \n            var cache = new CredentialCache();\n            cache.Add(acitionUri, \"Basic\", cred);\n\n            DataServiceContext ctx = new DataServiceContext(acitionUri);\n            ctx.Credentials = cache;\n\n            var query = ctx.Execute<ADResult>(acitionUri, \"POST\", true,\n                            new BodyOperationParameter(\"data\", timeSeriesData),\n                            new BodyOperationParameter(\"params\", _spikeDetectorParams));\n\n            var resultTable = query.FirstOrDefault();\n            var results = resultTable.GetADResults();\n\n            var presults = results;\n            return filterAnomaly(presults);\n        }\n\n        private Task<AnomalyRecord[]> GetAlertsFromRRS(string timeSeriesData)\n        {\n            var rrs = _detectorUrl;\n            var apikey = _detectorAuthKey;\n\n            using (var wb = new WebClient())\n            {\n                wb.Headers[HttpRequestHeader.ContentType] = \"application/json\";\n                wb.Headers.Add(HttpRequestHeader.Authorization, \"Bearer \" + apikey);\n\n                var featureVector =\n                    string.Format(\"\\\"data\\\": \\\"{0}\\\",\\\"params\\\": \\\"{1}\\\"\", timeSeriesData, _spikeDetectorParams);\n                string jsonData = \"{\\\"Id\\\":\\\"scoring0001\\\", \\\"Instance\\\": {\\\"FeatureVector\\\": {\" + featureVector + \"}, \\\"GlobalParameters\\\":{\\\"level_mhist\\\": 300, \\\"level_shist\\\": 100, \\\"trend_mhist\\\": 300, \\\"trend_shist\\\": 100 }}}\";\n                var jsonBytes = Encoding.Default.GetBytes(jsonData);\n\n                return wb.UploadDataTaskAsync(rrs, \"POST\", jsonBytes)\n                    \n                    .ContinueWith(\n                    resp =>\n                    {\n                        var response = Encoding.Default.GetString(resp.Result);\n#if DEBUG_LOG\n                        Trace.TraceInformation(\"AzureML response: {0}...\", response.Substring(0, Math.Min(100, response.Length)));\n#endif\n\n                        JavaScriptSerializer ser = new JavaScriptSerializer { MaxJsonLength = int.MaxValue };\n                        var results = ser.Deserialize<List<string[]>>(response);\n\n                        var presults = results.Select(AnomalyRecord.Parse);\n                        return filterAnomaly(presults);\n                    }\n                    );\n            }\n        }\n    }\n}"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/AnomalyRecord.cs",
    "content": "﻿using System;\n\nnamespace WorkerHost\n{\n    public class AnomalyRecord\n    {\n        public DateTime Time { get; set; }\n        public double Data { get; set; }\n        public int Spike1 { get; set; }\n        public int Spike2 { get; set; }\n        public double LevelScore { get; set; }\n        public int LevelAlert { get; set; }\n        public double TrendScore { get; set; }\n        public int TrendAlert { get; set; }\n\n        public static AnomalyRecord Parse(string[] values)\n        {\n            if (values.Length < 8)\n                throw new ArgumentException(\"Anomaly Record expects 8 values.\");\n            return new AnomalyRecord()\n            {\n\n                Time = DateTime.Parse(values[0]),\n                Data = double.Parse(values[1]),\n                Spike1 = int.Parse(values[2]),\n                Spike2 = int.Parse(values[3]),\n                LevelScore = double.Parse(values[4]),\n                LevelAlert = int.Parse(values[5]),\n                TrendScore = double.Parse(values[6]),\n                TrendAlert = int.Parse(values[7]),\n            };\n        }\n\n        public override string ToString()\n        {\n            return Time.ToLocalTime() + \", \" + Data + \", \" + Spike1 + \", \" + Spike2 + \", \" +\n                LevelScore + \", \" + LevelAlert + \", \" + TrendScore + \", \" + TrendAlert;\n        }\n    }\n}\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/App.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5\"/>\n    </startup>\n\n\n    <system.diagnostics>\n      <trace autoflush=\"true\">\n        <listeners>\n          <add name=\"consoleListener\" type=\"System.Diagnostics.ConsoleTraceListener\"/>\n        </listeners>\n      </trace>\n    </system.diagnostics>\n    <system.serviceModel>\n        <extensions>\n            <!-- In this extension section we are introducing all known service bus extensions. User can remove the ones they don't need. -->\n            <behaviorExtensions>\n                <add name=\"connectionStatusBehavior\"\n                    type=\"Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"transportClientEndpointBehavior\"\n                    type=\"Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"serviceRegistrySettings\"\n                    type=\"Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n            </behaviorExtensions>\n            <bindingElementExtensions>\n                <add name=\"netMessagingTransport\"\n                    type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus,  Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"tcpRelayTransport\"\n                    type=\"Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"httpRelayTransport\"\n                    type=\"Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"httpsRelayTransport\"\n                    type=\"Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"onewayRelayTransport\"\n                    type=\"Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n            </bindingElementExtensions>\n            <bindingExtensions>\n                <add name=\"basicHttpRelayBinding\"\n                    type=\"Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"webHttpRelayBinding\"\n                    type=\"Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"ws2007HttpRelayBinding\"\n                    type=\"Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"netTcpRelayBinding\"\n                    type=\"Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"netOnewayRelayBinding\"\n                    type=\"Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"netEventRelayBinding\"\n                    type=\"Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n                <add name=\"netMessagingBinding\"\n                    type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\"/>\n            </bindingExtensions>\n        </extensions>\n    </system.serviceModel>\n    <appSettings>\n      <add key=\"sendToBlob\" value=\"true\" />\n      <add key=\"sendToSQL\" value=\"true\" />\n      \n       <!--Service Bus specific app settings for messaging connections--> \n      <add key=\"Microsoft.ServiceBus.EventHubDevices\" value=\"ehdevices\" />\n      <add key=\"Microsoft.ServiceBus.EventHubAlerts\" value=\"ehalerts\" />\n      <add key=\"Microsoft.ServiceBus.ConnectionString\" value=\"[ServiceBus connection string]\" />\n      <add key=\"Microsoft.ServiceBus.ConnectionStringDevices\" value=\"[EH Devices connection string]\" />\n      <add key=\"Microsoft.ServiceBus.ConnectionStringAlerts\" value=\"[EH Alerts connection string]\" />\n\n      <add key=\"Microsoft.Storage.ConnectionString\" value=\"[Storage connection string]\" />\n      \n      <!--Blob output settings-->\n      <add key=\"blobContainerName\" value=\"MLOutputs\" />\n      <add key=\"blobNamePrefix\" value=\"alerts\" />\n\n      <!--SQL connection string for output to SQL table-->\n      <add key=\"sqlDatabaseConnectionString\" value=\"[Your SQL connection string here]\" />\n\n       <!--Machine Learning API settings for messaging connections--> \n      <add key=\"AnomalyDetectionApiUrl\" value=\"https://api.datamarket.azure.com/data.ashx/aml_labs/anomalydetection/v1/Score\" />\n      <add key=\"AnomalyDetectionAuthKey\" value=\"Your Auth Key\" />\n      <add key=\"LiveId\" value=\"your@live.id\" />\n      <add key=\"UseMarketApi\" value=\"true\" />\n      <add key=\"MessagesBufferSize\" value=\"200\" />\n      <add key=\"TukeyThresh\" value=\"7\" /><!--Higher values will catch higher spikes-->\n      <add key=\"ZscoreThresh\" value=\"7\" /><!--Higher values will catch higher spikes-->\n      <add key=\"AlertsIntervalSec\" value=\"5\" />\n\n       <!--You can filter the type of data we want to send to the anomaly detection job \n       Just put the Measure Name you want separated by spaces. Leave empty (\"\") if you want to send all data types--> \n      <add key=\"MeasureNameFilter\" value=\"Sound\" />\n    </appSettings>\n  <runtime>\n\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n\n      <dependentAssembly>\n\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n\n        <bindingRedirect oldVersion=\"0.0.0.0-7.0.0.0\" newVersion=\"7.0.0.0\" />\n\n      </dependentAssembly>\n\n    </assemblyBinding>\n\n  </runtime>\n</configuration>"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/CircularBuffer.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace WorkerHost\n{\n    public class CircularBuffer<T>\n    {\n        private readonly Queue<T> _queue;\n        private readonly int _size;\n\n        public CircularBuffer(int size)\n        {\n            _queue = new Queue<T>(size);\n            _size = size;\n        }\n\n        public int Count\n        {\n            get { return _queue.Count; }\n        }\n\n        public void Add(T obj)\n        {\n            if (_queue.Count == _size)\n            {\n                _queue.Dequeue();\n            }\n\n            _queue.Enqueue(obj);\n        }\n\n        public T[] GetAll()\n        {\n            return _queue.ToArray();\n        }\n    }\n}\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/Data.Outputs/BlobWriter.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Text;\nusing Microsoft.WindowsAzure.Storage;\nusing Microsoft.WindowsAzure.Storage.Blob;\n\nnamespace WorkerHost.Data.Outputs\n{\n    public class BlobWriter\n    {\n        private CloudBlobContainer _ContainerReference;\n        private CloudBlockBlob _Blob;\n        private Stream _StreamWriter;\n\n        public bool Connect(string blobNamePrefix, string containerName, string storageConnectionString)\n        {\n            try\n            {\n                _ContainerReference = SetUpContainer(storageConnectionString, containerName);\n                _ContainerReference.CreateIfNotExists();\n                \n                _Blob = _ContainerReference.GetBlockBlobReference(blobNamePrefix + DateTime.UtcNow.Ticks);\n                _StreamWriter = _Blob.OpenWrite();\n            }\n            catch (Exception)\n            {\n                return false;\n            }\n            return true;\n        }\n\n        public void WriteLine(string line)\n        {\n            if (_StreamWriter == null)\n            {\n                return;\n            }\n            try\n            {\n                var jsonBytes = Encoding.UTF8.GetBytes(line);\n                _StreamWriter.Write(jsonBytes, 0, jsonBytes.Length);\n            }\n            catch (Exception)\n            {\n            }\n        }\n\n        public void Flush()\n        {\n            try\n            {\n                _StreamWriter.Flush();\n            }\n            catch (Exception)\n            {\n            }\n        }\n\n        private CloudBlobContainer SetUpContainer(string storageConnectionString,\n            string containerName)\n        {\n            CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(storageConnectionString);\n            CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();\n            CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference(containerName);\n            return cloudBlobContainer;\n        }\n    }\n}\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/Data.Outputs/SQLOutputRepository.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Data;\nusing System.Data.SqlClient;\n\nnamespace WorkerHost.Data.Outputs\n{\n    public class SQLOutputRepository\n    {\n        private const string ValueTableField = \"value\";\n        private const string GuidTableField = \"guid\";\n        private const string OrganizationTableField = \"organization\";\n        private const string DisplayNameTableField = \"displayname\";\n        private const string UnitOfMeasureTableField = \"unitofmeasure\";\n        private const string MeasureNameTableField = \"measurename\";\n        private const string LocationTableField = \"location\";\n        private const string TimeCreatedTableField = \"timecreated\";\n\n        private const string InsertStoreProcedure = \"InsertAlertsData\";\n        private const string InsertParameter = \"@dataList\";\n\n        private const string TableType = \"AlertsDataTableType\";\n\n        private readonly string _sqlDatabaseConnectionString;\n\n        public SQLOutputRepository(string sqlDatabaseConnectionString)\n        {\n            _sqlDatabaseConnectionString = sqlDatabaseConnectionString;\n        }\n\n        public void ProcessEvents(IList<SensorDataContract> eventDataList)\n        {\n            if (eventDataList == null)\n            {\n                return;\n            }\n\n            try\n            {\n                using (var sqlConnection = new SqlConnection(_sqlDatabaseConnectionString))\n                {\n                    sqlConnection.Open();\n\n                    var table = new DataTable();\n\n                    // Add columns to the table\n                    table.Columns.Add(ValueTableField, typeof(double));\n                    table.Columns.Add(GuidTableField, typeof(string));\n                    table.Columns.Add(OrganizationTableField, typeof(string));\n                    table.Columns.Add(DisplayNameTableField, typeof(string));\n                    table.Columns.Add(UnitOfMeasureTableField, typeof(string));\n                    table.Columns.Add(MeasureNameTableField, typeof(string));\n                    table.Columns.Add(LocationTableField, typeof(string));\n                    table.Columns.Add(TimeCreatedTableField, typeof(DateTime));\n\n                    // Add rows to the table\n                    foreach (var eventData in eventDataList)\n                    {\n                        table.Rows.Add(eventData.Value,\n                            eventData.Guid,\n                            eventData.Organization,\n                            eventData.DisplayName,\n                            eventData.UnitOfMeasure,\n                            eventData.MeasureName,\n                            eventData.Location,\n                            eventData.TimeCreated);\n                    }\n\n                    // Create command\n                    var sqlCommand = new SqlCommand(InsertStoreProcedure, sqlConnection)\n                    {\n                        CommandType = CommandType.StoredProcedure\n                    };\n\n                    // Add table-valued parameter\n                    sqlCommand.Parameters.Add(new SqlParameter\n                        {\n                            ParameterName = InsertParameter,\n                            SqlDbType = SqlDbType.Structured,\n                            TypeName = TableType,\n                            Value = table,\n                        });\n\n                    // Execute the query\n                    sqlCommand.ExecuteNonQuery();\n                }\n            }\n            catch (Exception ex)\n            {\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/Data.Outputs/Utils/SqlDBReaderSafeParser.cs",
    "content": "﻿using System;\nusing System.Data.SqlClient;\nusing System.Reflection;\n\nnamespace WorkerHost.Data.Outputs.Utils\n{\n    public static class SqlDBReaderSafeParser\n    {\n        public static T SafeParse<T>(this SqlDataReader reader, string columnName, T defaultValue = default(T))\n        {\n            object dataValue = reader[columnName];\n            T convertedValue = dataValue.SafeParse(defaultValue);\n\n            return convertedValue;\n        }\n\n        public static T SafeParse<T>(this object dataValue, T defaultValue)\n        {\n            if (null == dataValue || DBNull.Value == dataValue)\n                return defaultValue;\n\n            Type t = typeof(T);\n\n            if (t.IsInstanceOfType(dataValue))\n            {\n                T convertedValue = (T)dataValue;\n                return convertedValue;\n            }\n\n            MethodInfo method = t.GetMethod(\"op_Implicit\", new[] { dataValue.GetType() });\n\n            T result;\n\n            if (method != null)\n            {\n                result = (T)method.Invoke(null, new[] { dataValue });\n            }\n            else\n            {\n                result = defaultValue;\n            }\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/EventHubReader.cs",
    "content": "﻿//#define DEBUG_LOG\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.ServiceBus;\nusing Microsoft.ServiceBus.Messaging;\nusing Newtonsoft.Json;\nusing Microsoft.WindowsAzure.Diagnostics;\n\nnamespace WorkerHost\n{\n    class EventHubReader\n    {\n        private const int DEFAULT_BUFFER_SIZE = 200;\n        private const int MIN_COUNT_FOR_ANALYSIS = 10;\n\n        private static int _bufferSize;\n\n        private EventHubReceiver[] _receivers = null;\n        private string _consumerGroupPrefix;\n        //DateTime[] _receiversLastUpdate = null;\n        private Task[] _tasks = null;\n        private Dictionary<string, CircularBuffer<SensorDataContract>> _buffers;\n        private object _lock = new object();\n        //object _lockNoData = new object();\n        private string _measureNameFilter;\n\n        internal ManualResetEvent FailureEvent = new ManualResetEvent(false);\n\n        public EventHubReader(int messagesBufferSize, string consumerGroupPrefix = \"Local\")\n        {\n            if (messagesBufferSize == 0)\n            {\n                _bufferSize = DEFAULT_BUFFER_SIZE;\n            }\n            else\n            {\n                _bufferSize = messagesBufferSize;\n            }\n\n            _consumerGroupPrefix = consumerGroupPrefix;\n        }\n\n        public void Close()\n        {\n            if (_receivers != null)\n            {\n                foreach (var r in _receivers)\n                {\n                    r.CloseAsync();\n                }\n            }\n        }\n\n        public void Run(string connectionString, string hubName, string measureNameFilter)\n        {\n            NamespaceManager nsmgr = NamespaceManager.CreateFromConnectionString(connectionString);\n            EventHubDescription desc = nsmgr.GetEventHub(hubName);\n\n            string consumerGroupName = _consumerGroupPrefix + DateTime.UtcNow.Ticks.ToString();\n            ConsumerGroupDescription consumerGroupDesc = nsmgr.CreateConsumerGroupIfNotExists(new ConsumerGroupDescription(hubName, consumerGroupName));\n\n            EventHubClient client = EventHubClient.CreateFromConnectionString(connectionString, hubName);\n\n            int numPartitions = desc.PartitionCount;\n            _receivers = new EventHubReceiver[numPartitions];\n            //_receiversLastUpdate = new DateTime[numPartitions];\n            //for (int i = 0; i < numPartitions; i++)\n            //{\n            //    _receiversLastUpdate[i] = DateTime.UtcNow;\n            //}\n\n            _tasks = new Task[numPartitions];\n            _buffers = new Dictionary<string, CircularBuffer<SensorDataContract>>();\n            _measureNameFilter = measureNameFilter;\n\n            for (int iPart = 0; iPart < desc.PartitionCount; iPart++)\n            {\n                EventHubReceiver receiver = client.GetConsumerGroup(consumerGroupName).CreateReceiver(\n                    desc.PartitionIds[iPart], DateTime.UtcNow - TimeSpan.FromMinutes(2));\n                _receivers[iPart] = receiver;\n\n                Task<IEnumerable<EventData>> task = receiver.ReceiveAsync(1000, TimeSpan.FromSeconds(1));\n\n                int thisPart = iPart;\n                task.ContinueWith(new Action<Task<IEnumerable<EventData>>>((t) => OnTaskComplete(t, thisPart)));\n                _tasks[iPart] = task;\n            }\n        }\n\n        //void ProcessNoData()\n        //{\n        //    lock (_lockNoData)\n        //    {\n        //        DateTime now = DateTime.UtcNow;\n        //        if (_receiversLastUpdate.All(d => now - d > TimeSpan.FromMinutes(3)))\n        //        {\n        //            Trace.TraceError(\"No data for the last 3 minutes. Reinitializing\");\n        //            FailureEvent.Set();\n        //        }\n        //    }\n        //}\n\n        void Process(int iPart, bool firstReport, IEnumerable<EventData> batch)\n        {\n            UTF8Encoding enc = new UTF8Encoding();\n            foreach (EventData e in batch)\n            {\n                string body = enc.GetString(e.GetBytes());\n                string[] lines = body.Split(new char[] { '\\r', '\\n' }, StringSplitOptions.RemoveEmptyEntries);\n\n                foreach (var line in lines)\n                {\n                    try\n                    {\n                        var payload = JsonConvert.DeserializeObject<IDictionary<string, object>>(line);\n\n                        var sensorData = new SensorDataContract\n                        {\n                            DisplayName      = (string)  payload[\"displayname\"],\n                            Guid             = (string)  payload[\"guid\"],\n                            Location         = (string)  payload[\"location\"],\n                            MeasureName      = (string)  payload[\"measurename\"],\n                            Organization     = (string)  payload[\"organization\"],\n                            TimeCreated      = (DateTime)payload[\"timecreated\"],\n                            UnitOfMeasure    = (string)  payload[\"unitofmeasure\"],\n                            Value            = (double)  payload[\"value\"]\n                        };\n\n                        var from = sensorData.UniqueId();\n\n                        // Filter on MeasureName\n                        if ((_measureNameFilter.Length == 0) ||\n                             (_measureNameFilter.IndexOf(sensorData.MeasureName) >= 0))\n                        {\n                            lock (_lock)\n                            {\n                                CircularBuffer<SensorDataContract> buffer;\n                                if (!_buffers.TryGetValue(from, out buffer))\n                                {\n                                    buffer = new CircularBuffer<SensorDataContract>(_bufferSize);\n                                    _buffers.Add(from, buffer);\n                                }\n\n                                buffer.Add(sensorData);\n#if DEBUG_LOG\n                                Console.WriteLine(\"Data from device {0}, Total count: {1}\", from, buffer.Count);\n#endif\n                            }\n                        }\n                    }\n                    catch (Exception)\n                    {\n#if DEBUG_LOG\n                        Trace.TraceError(\"Ignored invalid event data: {0}\", line);\n#endif\n                    }\n                }\n            }\n\n            //lock (_lockNoData)\n            //{\n            //    _receiversLastUpdate[iPart] = DateTime.UtcNow;\n            //}\n        }\n\n        public Dictionary<string, SensorDataContract[]> GetHistoricData()\n        {\n            lock (_lock)\n            {\n                return _buffers.Where(kvp => kvp.Value.Count > MIN_COUNT_FOR_ANALYSIS)\n                    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value.GetAll());\n            }\n        }\n\n        void OnTaskComplete(Task<IEnumerable<EventData>> task, int iPart)\n        {\n            try\n            {\n                if (task.IsCompleted)\n                {\n                    IEnumerable<EventData> batch = task.Result;\n\n                    if (batch != null && batch.Count() != 0)\n                    {\n#if DEBUG_LOG\n                        Debug.WriteLine(\"Partition {0}, {1} events\", iPart, batch.Count());\n#endif\n                        Process(iPart, false, batch);\n                    }\n                    else\n                    {\n                        //ProcessNoData();\n                    }\n                }\n                else\n                {\n#if DEBUG_LOG\n                    Trace.TraceError(\"Event hub reader {0} did not complete successfully : {1}\", iPart,\n                        task.Exception == null ? \"\" : task.Exception.ToString());\n#endif\n                    FailureEvent.Set();\n                }\n\n                Task<IEnumerable<EventData>> newTask = _receivers[iPart].ReceiveAsync(1000, TimeSpan.FromSeconds(1));\n                int thisPart = iPart;\n                newTask.ContinueWith(new Action<Task<IEnumerable<EventData>>>((t) => OnTaskComplete(t, thisPart)));\n                this._tasks[iPart] = newTask;\n            }\n            catch (Exception e)\n            {\n#if DEBUG_LOG\n                Trace.TraceError(e.ToString());\n#endif\n                FailureEvent.Set();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/Program.cs",
    "content": "﻿//#define DEBUG_LOG\nusing System;\nusing System.Collections.Generic;\nusing System.Configuration;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Microsoft.Azure;\nusing Microsoft.ServiceBus.Messaging;\nusing Microsoft.WindowsAzure.Diagnostics;\nusing Microsoft.WindowsAzure.ServiceRuntime;\nusing Newtonsoft.Json;\nusing WorkerHost.Data.Outputs;\n\nnamespace WorkerHost\n{\n    public class WorkerHost : RoleEntryPoint\n    {\n        public class Configuration\n        {\n            public string AlertEHConnectionString;\n            public string AlertEHName;\n            public string DeviceEHConnectionString;\n            public string DeviceEHName;\n            public string AnomalyDetectionApiUrl;\n            public string AnomalyDetectionAuthKey;\n            public string LiveId;\n            public string MeasureNameFilter;\n\n            public string TukeyThresh;\n            public string ZscoreThresh;\n\n            public bool UseMarketApi;\n            public int MessagesBufferSize;\n            public int AlertsIntervalSec;\n\n            public string StorageConnectionString;\n            public string BlobContainerName;\n            public string BlobNamePrefix;\n            public string SqlDatabaseConnectionString;\n        }\n\n        private static Analyzer        _analyzer;\n        private static EventHubReader  _eventHubReader;\n        private static Timer           _timer;\n\n        private static BlobWriter _blobWriter;\n        private static SQLOutputRepository _sqlOutputRepository;\n\n        static void Main()\n        {\n            StartHost(\"LocalWorker\");\n        }\n\n        public override void Run()\n        {\n            StartHost(\"WorkerRole\");\n        }\n\n        private static void StartHost(string consumerGroupPrefix)\n        {\n            Trace.WriteLine(\"Starting Worker...\");\n#if DEBUG_LOG\n            RoleEnvironment.TraceSource.TraceInformation(\"Starting Worker...\");\n#endif\n            var config = new Configuration();\n\n            config.AlertEHConnectionString = ConfigurationManager.AppSettings.Get(\"Microsoft.ServiceBus.ConnectionStringAlerts\");\n            config.AlertEHName = ConfigurationManager.AppSettings.Get(\"Microsoft.ServiceBus.EventHubAlerts\");\n\n            config.DeviceEHConnectionString = ConfigurationManager.AppSettings.Get(\"Microsoft.ServiceBus.ConnectionStringDevices\");\n            config.DeviceEHName = ConfigurationManager.AppSettings.Get(\"Microsoft.ServiceBus.EventHubDevices\"); ;\n\n            config.AnomalyDetectionApiUrl = ConfigurationManager.AppSettings.Get(\"AnomalyDetectionApiUrl\");\n            config.AnomalyDetectionAuthKey = ConfigurationManager.AppSettings.Get(\"AnomalyDetectionAuthKey\");\n            config.LiveId = ConfigurationManager.AppSettings.Get(\"LiveId\");\n\n            config.MeasureNameFilter = ConfigurationManager.AppSettings.Get(\"MeasureNameFilter\");\n\n            config.TukeyThresh = ConfigurationManager.AppSettings.Get(\"TukeyThresh\");\n            config.ZscoreThresh = ConfigurationManager.AppSettings.Get(\"ZscoreThresh\");\n\n            bool.TryParse(ConfigurationManager.AppSettings.Get(\"UseMarketApi\"), out config.UseMarketApi);\n\n            int.TryParse(ConfigurationManager.AppSettings.Get(\"MessagesBufferSize\"), out config.MessagesBufferSize);\n            int.TryParse(ConfigurationManager.AppSettings.Get(\"AlertsIntervalSec\"), out config.AlertsIntervalSec);\n\n            config.StorageConnectionString = ConfigurationManager.AppSettings.Get(\"Microsoft.Storage.ConnectionString\");\n            config.BlobContainerName = ConfigurationManager.AppSettings.Get(\"blobContainerName\");\n            config.BlobNamePrefix = ConfigurationManager.AppSettings.Get(\"blobNamePrefix\");\n            config.SqlDatabaseConnectionString = ConfigurationManager.AppSettings.Get(\"sqlDatabaseConnectionString\");\n\n            _analyzer = new Analyzer(config.AnomalyDetectionApiUrl, config.AnomalyDetectionAuthKey,\n                config.LiveId, config.UseMarketApi, config.TukeyThresh, config.ZscoreThresh);\n\n            _eventHubReader = new EventHubReader(config.MessagesBufferSize, consumerGroupPrefix);\n\n            if (ConfigurationManager.AppSettings.Get(\"sendToBlob\") == \"true\")\n            {\n                _blobWriter = new BlobWriter();\n                if (_blobWriter.Connect(config.BlobNamePrefix, config.BlobContainerName, config.StorageConnectionString))\n                {\n                    _blobWriter = null;\n                }\n            }\n            if (ConfigurationManager.AppSettings.Get(\"sendToSQL\") == \"true\")\n            {\n                _sqlOutputRepository = new SQLOutputRepository(config.SqlDatabaseConnectionString);\n            }\n            Process(config);\n        }\n\n        public static void Process(Configuration config)\n        {\n            var alertEventHub = EventHubClient.CreateFromConnectionString(config.AlertEHConnectionString, config.AlertEHName);\n\n            Trace.TraceInformation(\"Starting to receive messages...\");\n            _eventHubReader.Run(config.DeviceEHConnectionString, config.DeviceEHName, config.MeasureNameFilter);\n\n            var timerInterval = TimeSpan.FromSeconds(1);\n            var alertLastTimes = new Dictionary<string, DateTime>();\n\n            TimerCallback timerCallback = state =>\n            {\n\n                var historicData = _eventHubReader.GetHistoricData();\n\n                try\n                {\n                    var tasks = historicData.ToDictionary(kvp => kvp.Key, kvp => _analyzer.Analyze(kvp.Value));\n\n                    Task.WaitAll(tasks.Values.ToArray());\n\n                    List<SensorDataContract> alertsToSQl = new List<SensorDataContract>();\n\n                    foreach (var kvp in tasks)\n                    {\n                        var key = kvp.Key;\n                        var alerts = kvp.Value.Result;\n\n                        DateTime alertLastTime;\n                        if (!alertLastTimes.TryGetValue(@key, out alertLastTime))\n                        {\n                            alertLastTime = DateTime.MinValue;\n                        }\n\n                        \n                        foreach (var alert in alerts)\n                        {\n                            if ((alert.Time - alertLastTime).TotalSeconds >= config.AlertsIntervalSec)\n                            {\n                                Trace.TraceInformation(\"Alert - {0}\", alert.ToString());\n\n                                string eventJSON = OutputResults(key, historicData[key].LastOrDefault(), alert);\n                                alertEventHub.Send(\n                                    new EventData(Encoding.UTF8.GetBytes(eventJSON)));\n\n                                alertLastTime = alert.Time;\n                                alertLastTimes[@key] = alertLastTime;\n\n                                if (historicData[key].Length > 0)\n                                {\n                                    alertsToSQl.Add(historicData[key].Last());\n                                    if (_blobWriter != null)\n                                    {\n                                        _blobWriter.WriteLine(eventJSON);\n                                    }    \n                                }\n                            }\n                        }\n                    }\n\n                    if (_sqlOutputRepository != null)\n                    {\n                        _sqlOutputRepository.ProcessEvents(alertsToSQl);\n                    }\n                    if (_blobWriter != null)\n                    {\n                        _blobWriter.Flush();\n                    }\n                }\n                catch (Exception e)\n                {\n#if DEBUG_LOG\n                    Trace.TraceError(e.Message);\n                    Trace.TraceError(e.ToString());\n#endif\n                    //throw;\n                }\n\n                _timer.Change((int)timerInterval.TotalMilliseconds, Timeout.Infinite);\n            };\n\n            _timer = new Timer(timerCallback, null, Timeout.Infinite, Timeout.Infinite);\n            _timer.Change(0, Timeout.Infinite);\n\n            Trace.TraceInformation(\"Reading events from Event Hub (press ctrl+c to abort)\");\n\n            var exitEvent = new ManualResetEvent(false);\n            Console.CancelKeyPress += (sender, eventArgs) =>\n            {\n                eventArgs.Cancel = true;\n                exitEvent.Set();\n            };\n\n            int index = WaitHandle.WaitAny(new[] {exitEvent, _eventHubReader.FailureEvent});\n\n            Trace.TraceInformation(\"Exiting...\");\n            _timer.Change(Timeout.Infinite, Timeout.Infinite);\n            Thread.Sleep(timerInterval);\n            _timer.Dispose();\n            _eventHubReader.Close();\n        }\n\n        public static IEnumerable<IEnumerable<T>> Batch<T>(IEnumerable<T> collection, int batchSize)\n        {\n            List<T> nextbatch = new List<T>(batchSize);\n            foreach (T item in collection)\n            {\n                nextbatch.Add(item);\n                if (nextbatch.Count == batchSize)\n                {\n                    yield return nextbatch;\n                    nextbatch = new List<T>();\n                }\n            }\n            if (nextbatch.Count > 0)\n                yield return nextbatch;\n        }\n\n        private static string OutputResults(string from, SensorDataContract sensorMeta, AnomalyRecord alert)\n        {\n            return JsonConvert.SerializeObject(\n                new\n                {\n                    guid = sensorMeta.Guid,\n                    displayname = sensorMeta.DisplayName,\n                    measurename = sensorMeta.MeasureName,\n                    unitofmeasure = sensorMeta.UnitOfMeasure,\n                    location = sensorMeta.Location,\n                    organization = sensorMeta.Organization,\n\n                    timecreated = alert.Time.ToLocalTime(),\n                    value = alert.Data,\n                    alerttype = \"MLModelAlert\",\n                    message = \"Anomaly detected by Machine Learning model.\"\n                });\n        }\n\n    }\n}\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"WorkerHost\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"WorkerHost\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"76fab21f-d875-451d-abf7-e8c352fc7a9f\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/SensorDataContract.cs",
    "content": "﻿using System;\nusing System.Runtime.Serialization;\n\nnamespace WorkerHost\n{\n    public class SensorDataContract\n    {\n        [DataMember(Name = \"value\")]\n        public double Value { get; set; }\n\n        [DataMember(Name = \"guid\")]\n        public string Guid { get; set; }\n\n        [DataMember(Name = \"organization\")]\n        public string Organization { get; set; }\n\n        [DataMember(Name = \"displayname\")]\n        public string DisplayName { get; set; }\n\n        [DataMember(Name = \"unitofmeasure\")]\n        public string UnitOfMeasure { get; set; }\n\n        [DataMember(Name = \"measurename\")]\n        public string MeasureName { get; set; }\n\n        [DataMember(Name = \"location\")]\n        public string Location { get; set; }\n\n        [DataMember(Name = \"timecreated\")]\n        public DateTime TimeCreated { get; set; }\n\n        public string UniqueId()\n        {\n            //we could have devices with same DisplayName but different MeasureName etc..\n            return DisplayName + Guid + MeasureName;\n        }\n    }\n}\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/WorkerHost.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{25079398-1602-45EE-837C-D4195A1FBC27}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>WorkerHost</RootNamespace>\n    <AssemblyName>WorkerHost</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <IsWebBootstrapper>false</IsWebBootstrapper>\n    <PublishUrl>publish\\</PublishUrl>\n    <Install>true</Install>\n    <InstallFrom>Disk</InstallFrom>\n    <UpdateEnabled>false</UpdateEnabled>\n    <UpdateMode>Foreground</UpdateMode>\n    <UpdateInterval>7</UpdateInterval>\n    <UpdateIntervalUnits>Days</UpdateIntervalUnits>\n    <UpdatePeriodically>false</UpdatePeriodically>\n    <UpdateRequired>false</UpdateRequired>\n    <MapFileExtensions>true</MapFileExtensions>\n    <ApplicationRevision>1</ApplicationRevision>\n    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>\n    <UseApplicationTrust>false</UseApplicationTrust>\n    <PublishWizardCompleted>true</PublishWizardCompleted>\n    <BootstrapperEnabled>true</BootstrapperEnabled>\n    <RoleType>Worker</RoleType>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ManifestCertificateThumbprint>95CCA3EE94BEF7B07D71337320FD2BBC359DC7C6</ManifestCertificateThumbprint>\n  </PropertyGroup>\n  <PropertyGroup>\n    <ManifestKeyFile>WorkerHost_TemporaryKey.pfx</ManifestKeyFile>\n  </PropertyGroup>\n  <PropertyGroup>\n    <GenerateManifests>true</GenerateManifests>\n  </PropertyGroup>\n  <PropertyGroup>\n    <SignManifests>false</SignManifests>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Hyak.Common\">\n      <HintPath>..\\packages\\Hyak.Common.1.0.2\\lib\\net45\\Hyak.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Common\">\n      <HintPath>..\\packages\\Microsoft.Azure.Common.2.0.4\\lib\\net45\\Microsoft.Azure.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Common.NetFramework\">\n      <HintPath>..\\packages\\Microsoft.Azure.Common.2.0.4\\lib\\net45\\Microsoft.Azure.Common.NetFramework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.KeyVault.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.KeyVault.Core.1.0.0\\lib\\net40\\Microsoft.Azure.KeyVault.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.Edm, Version=5.6.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.Edm.5.6.4\\lib\\net40\\Microsoft.Data.Edm.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.OData, Version=5.6.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.OData.5.6.4\\lib\\net40\\Microsoft.Data.OData.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.Services.Client, Version=5.6.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.Services.Client.5.6.4\\lib\\net40\\Microsoft.Data.Services.Client.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.IdentityModel.Clients.ActiveDirectory\">\n      <HintPath>..\\packages\\Microsoft.IdentityModel.Clients.ActiveDirectory.3.1.203031538-alpha\\lib\\net45\\Microsoft.IdentityModel.Clients.ActiveDirectory.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.IdentityModel.Clients.ActiveDirectory.Platform\">\n      <HintPath>..\\packages\\Microsoft.IdentityModel.Clients.ActiveDirectory.3.1.203031538-alpha\\lib\\net45\\Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.ServiceBus, Version=2.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\packages\\WindowsAzure.ServiceBus.2.6.4\\lib\\net40-full\\Microsoft.ServiceBus.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Threading.Tasks\">\n      <HintPath>..\\packages\\Microsoft.Bcl.Async.1.0.168\\lib\\net40\\Microsoft.Threading.Tasks.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Threading.Tasks.Extensions\">\n      <HintPath>..\\packages\\Microsoft.Bcl.Async.1.0.168\\lib\\net40\\Microsoft.Threading.Tasks.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.Threading.Tasks.Extensions.Desktop\">\n      <HintPath>..\\packages\\Microsoft.Bcl.Async.1.0.168\\lib\\net40\\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Common\">\n      <HintPath>..\\packages\\Microsoft.WindowsAzure.Common.1.4.1\\lib\\net45\\Microsoft.WindowsAzure.Common.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Common.NetFramework\">\n      <HintPath>..\\packages\\Microsoft.WindowsAzure.Common.1.4.1\\lib\\net45\\Microsoft.WindowsAzure.Common.NetFramework.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Configuration, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\packages\\Microsoft.WindowsAzure.ConfigurationManager.3.1.0\\lib\\net40\\Microsoft.WindowsAzure.Configuration.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Diagnostics, Version=2.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\">\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Management.ServiceBus\">\n      <HintPath>..\\packages\\Microsoft.WindowsAzure.Management.ServiceBus.0.17.1-preview\\lib\\net40\\Microsoft.WindowsAzure.Management.ServiceBus.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.ServiceRuntime, Version=2.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\">\n      <Private>False</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Storage, Version=5.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\WindowsAzure.Storage.5.0.2\\lib\\net40\\Microsoft.WindowsAzure.Storage.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\packages\\Newtonsoft.Json.7.0.1-beta1\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"System.Management\" />\n    <Reference Include=\"System.Management.Instrumentation\" />\n    <Reference Include=\"System.Net\" />\n    <Reference Include=\"System.Net.Http\" />\n    <Reference Include=\"System.Net.Http.Extensions\">\n      <HintPath>..\\packages\\Microsoft.Net.Http.2.2.29\\lib\\net45\\System.Net.Http.Extensions.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.Primitives\">\n      <HintPath>..\\packages\\Microsoft.Net.Http.2.2.29\\lib\\net45\\System.Net.Http.Primitives.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System.Net.Http.WebRequest\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.Spatial, Version=5.6.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Spatial.5.6.4\\lib\\net40\\System.Spatial.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Web.Extensions\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Analyzer.cs\" />\n    <Compile Include=\"AnomalyRecord.cs\" />\n    <Compile Include=\"CircularBuffer.cs\" />\n    <Compile Include=\"Data.Outputs\\BlobWriter.cs\" />\n    <Compile Include=\"Data.Outputs\\SQLOutputRepository.cs\" />\n    <Compile Include=\"Data.Outputs\\Utils\\SqlDBReaderSafeParser.cs\" />\n    <Compile Include=\"SensorDataContract.cs\" />\n    <Compile Include=\"EventHubReader.cs\" />\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <BootstrapperPackage Include=\".NETFramework,Version=v4.5\">\n      <Visible>False</Visible>\n      <ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>\n      <Install>true</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Client.3.5\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n    <BootstrapperPackage Include=\"Microsoft.Net.Framework.3.5.SP1\">\n      <Visible>False</Visible>\n      <ProductName>.NET Framework 3.5 SP1</ProductName>\n      <Install>false</Install>\n    </BootstrapperPackage>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Hyak.Common\" version=\"1.0.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.Common\" version=\"2.0.4\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.Common.Dependencies\" version=\"1.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.KeyVault.Core\" version=\"1.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Bcl\" version=\"1.1.10\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Bcl.Async\" version=\"1.0.168\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Bcl.Build\" version=\"1.0.21\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Data.Edm\" version=\"5.6.4\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Data.OData\" version=\"5.6.4\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Data.Services.Client\" version=\"5.6.4\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.IdentityModel.Clients.ActiveDirectory\" version=\"3.1.203031538-alpha\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Net.Http\" version=\"2.2.29\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Common\" version=\"1.4.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Common.Dependencies\" version=\"1.1.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.ConfigurationManager\" version=\"3.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management\" version=\"4.1.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Compute\" version=\"9.2.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Libraries\" version=\"2.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.MediaServices\" version=\"4.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Monitoring\" version=\"4.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Network\" version=\"6.1.2\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Scheduler\" version=\"6.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.ServiceBus\" version=\"0.17.1-preview\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Sql\" version=\"5.1.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.Storage\" version=\"5.1.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.Management.WebSites\" version=\"4.4.2-prerelease\" targetFramework=\"net45\" />\n  <package id=\"Newtonsoft.Json\" version=\"7.0.1-beta1\" targetFramework=\"net45\" />\n  <package id=\"System.Spatial\" version=\"5.6.4\" targetFramework=\"net45\" />\n  <package id=\"WindowsAzure.ServiceBus\" version=\"2.6.4\" targetFramework=\"net45\" />\n  <package id=\"WindowsAzure.Storage\" version=\"5.0.2\" targetFramework=\"net45\" />\n</packages>"
  },
  {
    "path": "Azure/MachineLearning/WorkerHost.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.23107.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"WorkerHost\", \"WorkerHost\\WorkerHost.csproj\", \"{25079398-1602-45EE-837C-D4195A1FBC27}\"\nEndProject\nProject(\"{CC5FD16D-436D-48AD-A40C-5A424C6E3E79}\") = \"WorkerRole\", \"WorkerRole\\WorkerRole.ccproj\", \"{73173D11-AA67-4089-91D5-BBE0BD4C5444}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"SQL\", \"SQL\", \"{09DB6871-3FA4-4C09-B41C-CE017586DC5D}\"\nEndProject\nProject(\"{00D1A9C2-B5F0-4AF3-8072-F6C62B433612}\") = \"SQL\", \"SQL\\SQL.sqlproj\", \"{37FA4922-AC28-474C-9EB9-1544437997F8}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{25079398-1602-45EE-837C-D4195A1FBC27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{25079398-1602-45EE-837C-D4195A1FBC27}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{25079398-1602-45EE-837C-D4195A1FBC27}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{25079398-1602-45EE-837C-D4195A1FBC27}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{73173D11-AA67-4089-91D5-BBE0BD4C5444}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{73173D11-AA67-4089-91D5-BBE0BD4C5444}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{73173D11-AA67-4089-91D5-BBE0BD4C5444}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{73173D11-AA67-4089-91D5-BBE0BD4C5444}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{37FA4922-AC28-474C-9EB9-1544437997F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{37FA4922-AC28-474C-9EB9-1544437997F8}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{37FA4922-AC28-474C-9EB9-1544437997F8}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{37FA4922-AC28-474C-9EB9-1544437997F8}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{37FA4922-AC28-474C-9EB9-1544437997F8}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{37FA4922-AC28-474C-9EB9-1544437997F8}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(NestedProjects) = preSolution\n\t\t{37FA4922-AC28-474C-9EB9-1544437997F8} = {09DB6871-3FA4-4C09-B41C-CE017586DC5D}\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Azure/MachineLearning/WorkerRole/ServiceConfiguration.Cloud.cscfg",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ServiceConfiguration serviceName=\"WorkerRole\" xmlns=\"http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration\" osFamily=\"4\" osVersion=\"*\" schemaVersion=\"2015-04.2.6\">\n  <Role name=\"WorkerHost\">\n    <Instances count=\"1\" />\n    <ConfigurationSettings>\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled\" value=\"true\" />\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername\" value=\"dinarisio\" />\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword\" value=\"MIIBnQYJKoZIhvcNAQcDoIIBjjCCAYoCAQAxggFOMIIBSgIBADAyMB4xHDAaBgNVBAMME1dpbmRvd3MgQXp1cmUgVG9vbHMCEGnaXUXyxHu5TBpc4wgA+w8wDQYJKoZIhvcNAQEBBQAEggEAbiptdq42Rva6CvHhZSdiE3QJ69cY2S75tWG7YyE/7J+u9j/isNMAKvXV7sU4cp4GUsqXKIRhbhM1ZOn66xjFLb9MD4eZKJxQM35lgo0jpLxxDBAG6sBJsIsgZ3N+Y6xhuTVYaPXacPol/z1deoF8MqDqUjDR8LUrRqZn3I84ZDi5Yy2tq647/dRKiPwCNgtqenVrKjdvKHXEivOhaiWMk67YdkuyvY95amE9L8fpBE8EJnzoA1TgMzPpc9LOh3A1n5tymXv0F3FRlZnH8YXfeuIEWTUFKlIYx6GvAsfxp/+32FYjGrz2nPerjOO0esALEhtvSfrMRJJ+V9HRjukJRzAzBgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECO84qgpx32t7gBDFPmdYlNcm3vvXutm0jn3z\" />\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration\" value=\"2016-04-23T23:59:59.0000000+03:00\" />\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled\" value=\"true\" />\n    </ConfigurationSettings>\n    <Certificates>\n      <Certificate name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption\" thumbprint=\"DF071A214916A8A039A12B4F4B9F93A9C2B49374\" thumbprintAlgorithm=\"sha1\" />\n    </Certificates>\n  </Role>\n</ServiceConfiguration>"
  },
  {
    "path": "Azure/MachineLearning/WorkerRole/ServiceConfiguration.Local.cscfg",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ServiceConfiguration serviceName=\"WorkerRole\" xmlns=\"http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration\" osFamily=\"4\" osVersion=\"*\" schemaVersion=\"2015-04.2.6\">\n  <Role name=\"WorkerHost\">\n    <Instances count=\"1\" />\n    <ConfigurationSettings>\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.Enabled\" value=\"true\" />\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountUsername\" value=\"dinarisio\" />\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountEncryptedPassword\" value=\"MIIBnQYJKoZIhvcNAQcDoIIBjjCCAYoCAQAxggFOMIIBSgIBADAyMB4xHDAaBgNVBAMME1dpbmRvd3MgQXp1cmUgVG9vbHMCEGnaXUXyxHu5TBpc4wgA+w8wDQYJKoZIhvcNAQEBBQAEggEAbiptdq42Rva6CvHhZSdiE3QJ69cY2S75tWG7YyE/7J+u9j/isNMAKvXV7sU4cp4GUsqXKIRhbhM1ZOn66xjFLb9MD4eZKJxQM35lgo0jpLxxDBAG6sBJsIsgZ3N+Y6xhuTVYaPXacPol/z1deoF8MqDqUjDR8LUrRqZn3I84ZDi5Yy2tq647/dRKiPwCNgtqenVrKjdvKHXEivOhaiWMk67YdkuyvY95amE9L8fpBE8EJnzoA1TgMzPpc9LOh3A1n5tymXv0F3FRlZnH8YXfeuIEWTUFKlIYx6GvAsfxp/+32FYjGrz2nPerjOO0esALEhtvSfrMRJJ+V9HRjukJRzAzBgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECO84qgpx32t7gBDFPmdYlNcm3vvXutm0jn3z\" />\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.AccountExpiration\" value=\"2016-04-23T23:59:59.0000000+03:00\" />\n      <Setting name=\"Microsoft.WindowsAzure.Plugins.RemoteForwarder.Enabled\" value=\"true\" />\n    </ConfigurationSettings>\n    <Certificates>\n      <Certificate name=\"Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption\" thumbprint=\"DF071A214916A8A039A12B4F4B9F93A9C2B49374\" thumbprintAlgorithm=\"sha1\" />\n    </Certificates>\n  </Role>\n</ServiceConfiguration>"
  },
  {
    "path": "Azure/MachineLearning/WorkerRole/ServiceDefinition.csdef",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ServiceDefinition name=\"WorkerRole\" xmlns=\"http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition\" schemaVersion=\"2015-04.2.6\">\n  <WorkerRole name=\"WorkerHost\" vmsize=\"Small\">\n    <Imports>\n      <Import moduleName=\"RemoteAccess\" />\n      <Import moduleName=\"RemoteForwarder\" />\n    </Imports>\n\n  </WorkerRole>\n</ServiceDefinition>"
  },
  {
    "path": "Azure/MachineLearning/WorkerRole/WorkerHostContent/diagnostics.wadcfgx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<DiagnosticsConfiguration xmlns=\"http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration\">\n  <PublicConfig>\n    <WadCfg>\n      <DiagnosticMonitorConfiguration overallQuotaInMB=\"4096\">\n        <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter=\"Error\" />\n        <Logs scheduledTransferPeriod=\"PT1M\" scheduledTransferLogLevelFilter=\"Error\" />\n        <Directories scheduledTransferPeriod=\"PT1M\">\n          <IISLogs containerName=\"wad-iis-logfiles\" />\n          <FailedRequestLogs containerName=\"wad-failedrequestlogs\" />\n        </Directories>\n        <WindowsEventLog scheduledTransferPeriod=\"PT1M\">\n          <DataSource name=\"Application!*\" />\n        </WindowsEventLog>\n        <CrashDumps containerName=\"wad-crashdumps\" dumpType=\"Mini\">\n          <CrashDumpConfiguration processName=\"WaIISHost.exe\" />\n          <CrashDumpConfiguration processName=\"WaWorkerHost.exe\" />\n          <CrashDumpConfiguration processName=\"w3wp.exe\" />\n        </CrashDumps>\n        <PerformanceCounters scheduledTransferPeriod=\"PT1M\">\n          <PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Available MBytes\" sampleRate=\"PT3M\" />\n          <PerformanceCounterConfiguration counterSpecifier=\"\\Web Service(_Total)\\ISAPI Extension Requests/sec\" sampleRate=\"PT3M\" />\n          <PerformanceCounterConfiguration counterSpecifier=\"\\Web Service(_Total)\\Bytes Total/Sec\" sampleRate=\"PT3M\" />\n          <PerformanceCounterConfiguration counterSpecifier=\"\\ASP.NET Applications(__Total__)\\Requests/Sec\" sampleRate=\"PT3M\" />\n          <PerformanceCounterConfiguration counterSpecifier=\"\\ASP.NET Applications(__Total__)\\Errors Total/Sec\" sampleRate=\"PT3M\" />\n          <PerformanceCounterConfiguration counterSpecifier=\"\\ASP.NET\\Requests Queued\" sampleRate=\"PT3M\" />\n          <PerformanceCounterConfiguration counterSpecifier=\"\\ASP.NET\\Requests Rejected\" sampleRate=\"PT3M\" />\n          <PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% Processor Time\" sampleRate=\"PT3M\" />\n        </PerformanceCounters>\n      </DiagnosticMonitorConfiguration>\n    </WadCfg>\n    <StorageAccount>\n    </StorageAccount>\n  </PublicConfig>\n  <PrivateConfig>\n    <StorageAccount name=\"\" key=\"\" endpoint=\"\" />\n  </PrivateConfig>\n  <IsEnabled>false</IsEnabled>\n</DiagnosticsConfiguration>"
  },
  {
    "path": "Azure/MachineLearning/WorkerRole/WorkerRole.ccproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>2.7</ProductVersion>\n    <ProjectGuid>73173d11-aa67-4089-91d5-bbe0bd4c5444</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>WorkerRole</RootNamespace>\n    <AssemblyName>WorkerRole</AssemblyName>\n    <StartDevelopmentStorage>True</StartDevelopmentStorage>\n    <Name>WorkerRole</Name>\n    <PackageEnableRemoteDebugger>False</PackageEnableRemoteDebugger>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <!-- Items for the project -->\n  <ItemGroup>\n    <ServiceDefinition Include=\"ServiceDefinition.csdef\" />\n    <ServiceConfiguration Include=\"ServiceConfiguration.Local.cscfg\" />\n    <ServiceConfiguration Include=\"ServiceConfiguration.Cloud.cscfg\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\WorkerHost\\WorkerHost.csproj\">\n      <Name>WorkerHost</Name>\n      <Project>{25079398-1602-45ee-837c-d4195a1fbc27}</Project>\n      <Private>True</Private>\n      <RoleType>Worker</RoleType>\n      <RoleName>WorkerHost</RoleName>\n      <UpdateDiagnosticsConnectionStringOnPublish>True</UpdateDiagnosticsConnectionStringOnPublish>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Folder Include=\"Profiles\" />\n    <Folder Include=\"WorkerHostContent\\\" />\n  </ItemGroup>\n  <ItemGroup>\n    <DiagnosticsConfiguration Include=\"WorkerHostContent\\diagnostics.wadcfgx\" />\n  </ItemGroup>\n  <!-- Import the target files for this project template -->\n  <PropertyGroup>\n    <VisualStudioVersion Condition=\" '$(VisualStudioVersion)' == '' \">10.0</VisualStudioVersion>\n    <CloudExtensionsDir Condition=\" '$(CloudExtensionsDir)' == '' \">$(MSBuildExtensionsPath)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\Windows Azure Tools\\2.7\\</CloudExtensionsDir>\n  </PropertyGroup>\n  <Import Project=\"$(CloudExtensionsDir)Microsoft.WindowsAzure.targets\" />\n</Project>"
  },
  {
    "path": "Azure/PowerBI/PBI_setup.md",
    "content": "The instructions below will help you setup a Power BI dashboard in the Connect The Dots starter solution, but they can be adapted as necessary for other scenarios. This document assumes you have already deployed the starter solution with at least one device set up pushing data to an Azure IoT Hub. The documentation below uses the names and fields you would have if you had set up the starter solution with simple device connected and sending Temperature and Humidity data, but can be modified as needed if you have a different sensor or named your fields and hubs differently.\n\n## Prerequisites ##\n\nMake sure you have a working starter solution, with data showing in your Azure website. In addition, you will need a Power BI account, for which you can sign up for at [PowerBI.com](http://www.PowerBI.com).\n\n## Create a new Consumer Group in your IoT Hub ##\n\nTo make sure you do not exceed the maximum number of readers on your Connect The Dots Event Hub, create a Consumer Group first.\n\n* Open the [Azure Management Portal](https://portal.azure.com), and select the resource group of your Connect The Dots solution.\n* Find and select the IoT Hub instance\n* In the IoT Hub settings blade, click on Endpoints in the MESSAGING section\n* Select the \"Events\" built-in endpoint\n* In the properties blade of this endpoint, add a new Consumer Group called \"cg4pbi\" (remember to click on \"Save\" at the top to save the change)\n\n\n## Create an Azure Stream Analytics (ASA) job ##\n\n* In the [Azure Management Portal](https://portal.azure.com), go back to the resource group for your Connect The Dots solution deployment.\n* Click on the \"+Add\" button on top of the Resource Group view\n* Click on \"Stream Analytics Job\"\n* Click on \"Create\" at the bottom\n* Type in the name for the job (we'll assume you used \"CTD2PBI\" as a name). Ensure you are creating the job in the same resource group (which should be the default and will make it easier to find it in the portal)\n* Go back to the resource group view and select the CTD2PBI Stream Analytics job.\n* Add IoT Hub as the Input\n\t* Click on the \"Inputs\" box\n\t* Click on \"+Add\"\n\t\t* Input Alias: “DevicesInput”\n\t\t* Source type: \"Data Stream\"\n\t\t* Source: \"Iot Huyb\"\n\t\t* Import Option: \"Use IoT Hub form current subscription\"\n\t\t* IoT hub: _The name of the IoT hub of your Connect The Dots solution_\n\t\t* Enpoint: \"Messaging\"\n\t\t* Shared access policy name: \"iothubowner\"\n\t\t* Consumer Group: \"cg4pbi\"\n\t\t* Event Serialization format: JSON\n\t\t* Encoding: \"UTF-8\"\n* Create a query \n    * Click on the \"Query\" box in the Stream Analytics blade\n    * Copy/paste contents “cg4pbi.sql” found in the ConnectTheDots\\Azure\\StreamAnalyticsQueries folder of the repository\n    * Save\n* Create an output to send data to PowerBI\n\t* Click on the \"Outputs\" box\n\t* Click on \"+Add\"\n\t\t* Output Alias: \"CTDPBI\"\n\t\t* Sink:  \"Power BI\"\n\t\t* Click on \"Authorize\" if asked to and enter your Power BI account credentials\n\t\t* Group Workspace: \"My Workspace\"\n\t\t* Dataset Name: \"CTDPBIDataSet\"\n\t\t* Table Name: \"CTDPBITable\"\n* Start the Stream Analytics Job\n    * Go back to the Stream Analytics CTD2PBI job blade\n\t* Click on \"Start\" (top menu)\n\t* Select \"Now\" and click on \"Start\" (bottom button)\n\n## Create a Power BI dashboard ##\n###Create a dashboard###\nWe are going to create a Power BI dashboard for a the data coming from the Connect The Dots starter solution, of a single Arduino UNO + Weather Shield sending data to an Azure Event Hub.\n\nTo create this, first create a dashboard:\n\n* Log in to [http://App.PowerBI.com](http://app.powerbi.com)\n* Create a Dashboard for your Connect The Dots data\n\t* Click \"+\" in the left menu under Dashboards\n\t* Enter a name: \"ConnectTheDots\"\n\n###Create a simple line chart###\nThe first chart on your dashboard will be a real-time timeline showing the temperature from your sensor. To create this, follow the steps below in order.\nNote that you need data flowing from at least one device for the Power BI dataset to be created. Start a device and wait a couple minutes before moving on to make sure you will see the dataset created and fed by the Stream Analytics job.\n\n* In the upper menu of the ConnectTheDots dashboard, click on \"+ Add Tile\"\n* Select \"Custom Streaming Data\" and click \"Next\"\n* Select CTDPBIDataSet data set and click \"Next\"\n* Select Following settings:\n\t* Visualization Type = \"Line Chart\"\n\t* Axis : \"timecreated\"\n\t* Legend : \"measurename\"\n\t* Values : \"value\"\n\t* Time window to display : 1 minute\n\nYou now have a simple dashboard showing real time data coming from devices in PowerBI.\nYou can now consider customizing the query in stream analytics and the dashboard to show things like average, alerts,...\nEnjoy!\n\n\n\n\n"
  },
  {
    "path": "Azure/StreamAnalyticsQueries/Aggregates.sql",
    "content": "/*  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------*/\n\nSelect\n    measurename,\n    unitofmeasure,\n    'All Sensors' AS location,\n    'All Sensors' AS organization,\n    'ace60e7c-a6aa-4694-ba86-c3b66952558e' AS guid,\n    'Average' as displayname,\n    Max(timecreated) as timecreated,\n    Avg(value) AS value\nFrom\n    DevicesInput TIMESTAMP BY timecreated\nwhere\n    measurename = 'temperature' OR measurename='Temperature'  OR measurename = 'Humidity' OR measurename='humidity'\nGroup by\n    measurename, unitofmeasure,\n    TumblingWindow(Second, 15)\n"
  },
  {
    "path": "Azure/StreamAnalyticsQueries/Alert.sql",
    "content": "﻿/*  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------*/\nSELECT \n    'TempSpike' AS alerttype, \n    'Temperature over 80F' AS message, \n    displayname,\n    guid,\n    measurename,\n    unitofmeasure, \n    location,\n    organization,\n    MIN(timecreated) AS timecreated,\n    MAX(value) AS tempMax,\n    MAX(value) AS value\nFROM \n    DevicesInput TIMESTAMP BY timecreated\nWHERE\n    measurename = 'temperature' OR measurename = 'Temperature'\nGROUP BY \n    displayname, guid, measurename, unitofmeasure, location, organization,\n    TumblingWindow(Second, 5)\n HAVING \n    tempMax > 80"
  },
  {
    "path": "Azure/StreamAnalyticsQueries/HumidityAlert.sql",
    "content": "﻿/*  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------*/\nWITH LongAverage AS\n(\n\tSELECT \n\t\tdisplayname as dspl,\n\t\tAVG(value) AS hmdt,\n\t\tMAX(timecreated) AS time\n\tFROM\n\t\tStreamInput TIMESTAMP BY timecreated\n    WHERE\n        measurename='Humidity'\n\tGROUP BY\n\t\tHoppingWindow(DURATION(ss, 5), HOP(ss, 2)),\n                displayname\n), ShortAverage AS\n(\n\tSELECT\n\t\tdisplayname AS dspl,\n\t\tAVG(value) AS hmdt,\n\t\tMAX(timecreated) AS time,\n\t\tguid,\n\t\tmeasurename,\n\t\tunitofmeasure, \n    \tlocation,\n    \torganization\n\tFROM\n\t\tStreamInput TIMESTAMP BY timecreated\n    WHERE\n        measurename='Humidity'\n\tGROUP BY\n\t\tTumblingWindow(ss, 2),\n                displayname,\n\t\t\t\tguid,\n\t\t\t\tmeasurename,\n\t\t\t\tunitofmeasure, \n    \t\t\tlocation,\n    \t\t\torganization\n), Compare AS\n(\n\tSELECT \n\t\tShortAverage.dspl AS dspl,\n\t\tShortAverage.hmdt AS NewHumidity,\n\t\tLongAverage.hmdt AS OldHumidity,\n\t\t((ShortAverage.hmdt - LongAverage.hmdt)/ ShortAverage.hmdt) * 100 AS delta,\n\t\tShortAverage.time AS time,\n\t\tShortAverage.guid,\n\t\tShortAverage.measurename,\n\t\tShortAverage.unitofmeasure, \n    \tShortAverage.location,\n    \tShortAverage.organization\n\tFROM\n\t\tLongAverage\n\t\tINNER JOIN ShortAverage\n\t\tOn LongAverage.dspl = ShortAverage.dspl\n\t\tAND DATEDIFF(ss, LongAverage, ShortAverage) > 1\n        AND DATEDIFF(ss, LongAverage, ShortAverage) < 5\n)\n\nSELECT\n\t'HumSpike' AS alerttype,\n\t'Sudden increase in Humidity' AS message,\n\tdspl as displayname,\n\tguid,\n\tmeasurename,\n\tunitofmeasure, \n    location,\n    organization,\n    NewHumidity as value,\n\tOldHumidity,\n\tdelta,\n\ttime AS timecreated\nFROM\n\tCompare\nWHERE\n\tdelta >= 20"
  },
  {
    "path": "Azure/StreamAnalyticsQueries/LightSensor.sql",
    "content": "/*  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------*/\n\nSELECT \n\t'LightSensor' as alerttype, \n    'The Light is turned OFF' as message,\n    displayname,\n    guid,\n    measurename,\n    unitofmeasure, \n    location,\n    organization,\n    MIN(timecreated) AS timecreated,\n    max(value) as value\nFROM \n    DevicesInput TIMESTAMP BY timecreated\nWHERE\n    measurename = 'light' OR measurename = 'Light'\nGROUP BY \n    displayname, guid, measurename, unitofmeasure, location, organization,\n    TumblingWindow(Second, 5)\nhaving avg(value) < 0.02 \n    and count(*) > 3\n"
  },
  {
    "path": "Azure/StreamAnalyticsQueries/SA_setup.md",
    "content": "# Stream Analytics Setup #\nThe instructions below will help you setup the Stream Analytics queries in the Connect The Dots getting started project, but they can be adapted as necessary for other scenarios. This document assumes you have all the necessary software and subscriptions and that you cloned or downloaded the ConnectTheDots.io project on your machine.\n\n## Prerequisites ##\n\nMake sure you have all software installed and necessary subscriptions as indicated in the ReadMe.md file for the project. To repeat them here, you need\n\n1. Microsoft Azure subscription ([free trial subscription](http://azure.microsoft.com/en-us/pricing/free-trial/) is sufficient)\n1. Visual Studio – [Community Edition](http://www.visualstudio.com/downloads/download-visual-studio-vs)\n\nNote also that these queries are hard-coded to the data streams defined in the getting started walkthrough in this project, meaning the same JSON string contents, etc. Also note that the SQL queries ARE CASE SENSITIVE, so that \"temperature\" <> \"TEMPERATURE\". You should make sure that the spelling and case of the incoming measure names are the same as in the SQL queries.\n\n## Create three Azure Stream Analytics (ASA) jobs ##\n\n* If you have used the ARM template to deploy the ConnectTheDots solution, then you can edit the Stream Analytics job directly in the portal, looking for it in the Resource Group created during the deployment of the solution.\n* If you are creating a new job, read this:\n    * Open the [Azure Management Portal](http://portal.azure.com), and create a new job “Aggregates”:\n        * \"+” in top left corner > Internet Of Things > Stream Analytics >\n            * Job name: “Aggregates”.\n            * Subscription: same as the one used for the other parts of the solution.\n            * Resource Group: same as the one used for the other parts of the solution.\n            * Location: your choice, considering it is always better to have the various services of a solution in the same region.\n            * Click on Create\n    * Create an input\n        * In the Resource Groups list, select your solution's resource group.\n        * Select the stream analytics job \"Aggregates\"\n        * Click on the Inputs tile in the Aggregates job.\n        * *Inputs blade > Add >*\n            * Input Alias: “DevicesInput”\n            * Source Type: \"Data Stream\"\n            * Source: \"IoT Hub\"\n            * Subscription: pick the current subscription\n            * IoTHub: pick the IoT Hub named out of your solution name (captured during the deployment of the ARM template)\n            * Shared access policy name: \"iothubowner\"\n            * Event serialization format: \"JSON\"\n            * Encoding: \"UTF-8\"\n    * Create a query \n        * Select the Query tile in the Aggregates job blade\n        * Copy/paste contents `Aggregates.sql` found in the `ConnectTheDots\\Azure\\StreamAnalyticsQueries` folder in Windows Explorer\n        * Save\n    * Create an output\n        * Select the Output tile in the Aggregates job blade\n        * *Output tile > Add >*\n            * Output Alias: your choice\n            * Sink: \"Event Hub\"\n            * Subscription: pick the current subscription\n            * Service bus namespace: Pick the one named after the solution name you entered during the deployment of the ARM template\n            * Event Hub Name: \"ehalerts\"\n            * Event Hub policy name: \"RootManageSharedAccessKey\"\n            * Event Serialization format: \"JSON\"\n            * Encoding: \"UTF-8\"\n            * Click on Create\n        * **Note** You will likely get an error just about the same container being used as input and output. This is OK, the job will still work.\n\n    * Start the Job\n        * *Dashboard > Start* on the bottom bar.\n* Create a second job “Alerts”: as above, but use `alert.sql` contents for the query, and use *ehalerts* for the Output Event Hub, not *ehdevices*.\n* Create a third job “LightSensor”: as above, but use `lightsensor.sql` contents for the query, and use *ehalerts* for the Output Event Hub.\n\nOnce all three are running, go check out your site at http://`<yourURL>`.azurewebsites.net/.\n\n### What these streams do ###\nNow that you have them set up, a quick explanation of what each one does would be helpful.\n\n**Aggregates** job gets the data from the temperature sensor, and creates the average within a given window. This allows us to chart the rolling average on top of the temperature chart.\n\n**Alerts** keeps tabs on the temperature max, and creates an alert if the temperature rises above 80, on both the raw data and the average coming from the Aggregates stream.\n\n**Light Sensor** issues an alert when the lights are turned off, which in the query we have provided, is when the lumen value is under 0.02.\n\nFor more details on the website and what it shows, check out the [Website Details](../WebSite/WebsiteDetails.md).\n\n"
  },
  {
    "path": "Azure/StreamAnalyticsQueries/cg4pbi.sql",
    "content": "﻿/*  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------*/\n\nSelect \nmeasurename,\ndisplayname,\ntimecreated,\nvalue\nfrom DevicesInput TIMESTAMP by timecreated\n\n"
  },
  {
    "path": "Azure/WebSite/WebsiteDetails.md",
    "content": "# Website details #\n\nOnce you have your website running, you'll notice more is being displayed on the charts than just the raw data.  Here you'll learn about the features of the website that weren't discussed during setup.\n\n![](ASAAlertsChart.jpg)\n\n#### Dots on the graph ####\nYou'll see dots showing up on the graph if you've set up alerts for that data stream.  In the getting started project, this was done with the light sensor data to register an alert whenever the light is off, as well as when the temperature rises above 80 degrees.  Hovering over that dot shows you the value during the alert, and what that alert is.\n\n#### Secondary line on chart ####\nIf you have Stream Analytics set up, such as for temperature in our getting started project, you'll see a second line on your chart, along with an added entry in the legend of that chart.  If you click on that data stream name on the left, it will toggle the display of that data on the chart.\n\n#### Hover over data streams ####\nIf you hover over the data stream on the left, you'll be presented with the location of the device.  In the case of the getting started project, you'll see both the public and local IP address of your gateway.\n\n#### Alert table ####\nBelow the charts, you'll see a table listing all the real time alerts, including the message, time, which device, and what alert was fired.\n\n![](AlertsTable.jpg)"
  },
  {
    "path": "Azure/WebSite/WebsitePublish.md",
    "content": "# Website parameters and re-publish #\nThis document explains how to build and deploy a sample website that is used to show data and alerts in the Connect The Dots project. It assumes you have all necessary software and subscriptions and that you have cloned or download the ConnectTheDots.io project on your machine.\n\nSince the version 2 of ConnectTheDots, the deployment of the site is primarily done using an ARM template (see [here](../ARMTemplate/Readme.md) for details) and there is no need for manually deploying if you are just using the default dashboard site and solution architecture.\nIf you want to make changes to the site though or have changed the Azure services architecture (changed Event Hub or IoT Hub) you will need to redeploy the site. \n\n## Web app parameters\nIn order for the website to connect with the various Azure resources (IoT Hub, Event Hub), it needs to have information about these services such as connection strings and credentials.\nThe ARM Template used to deploy the Azure services populates these parameters so you don't have to do it manually.\nIf you are willing to change these parameters (for example if you have decided to use a different IoT Hub), you can find them in the Azure portal:\n\n- Go to [portal.azure.com](http://portal;.azure.com)\n- Login using your Azure account credentials\n- Find the resource group that was deployed for your ConnectTheDots solution when following the [instructions](../ARMTemplate/Readme.md).\n- Once you have selected the resource group:\n   1. Identify and select the Web App\n   1. Click on the **settings** button in the Web App blade\n   1. Select **Application settings**\n   1. Scroll down to **App settings**\n\n![](portalsettings.png) \n\nOnce you have made your edits in the settings, you can just restart the site, clicking on the **Restart** in the Web App blade\n\n## Modifying the dashboard Website ##\n### Prerequisites ###\nMake sure you have all software installed and necessary subscriptions as indicated in the ReadMe.md file for the project. To repeat them here, you need\n\n1. Microsoft Azure subscription ([free trial subscription](http://azure.microsoft.com/en-us/pricing/free-trial/) is sufficient)\n1. Visual Studio – [Community Edition](http://www.visualstudio.com/downloads/download-visual-studio-vs)\n1. Deploy the default dashboard Website a first time using the [ARM Template](../ARMTemplate/readme.md).\n\n## Publish the Azure Website ##\n\n* Open the `ConnectTheDots\\Azure\\WebSite\\source\\ConnectTheDotsWebSite.sln` solution in Visual Studio\n* In VS, Right-click on the project name and select *Publish*.\n* In the Profile tab, select the publish target **Microsoft Azure Web Apps**\n* Select your subscription\n* Select the resource group for your ConnectTheDots deployment\n* Select the Web App below then click **OK**\n* Click on **Publish**\n\t\n##Running the site\n* Open the site in a browser to verify it has deployed correctly. \n    * At the bottom of the page you should see “Connected.”. If you see “ERROR undefined” you likely didn’t enable WebSockets for the Azure Web Site (see above section).\n\n**Note** There is a chance you won't see any data coming into your site when you first stand it up.  If that is the case, try rebooting your gateway.\n\n![](WebsiteRunning.jpg)\n"
  },
  {
    "path": "Azure/WebSite/site/Default.aspx",
    "content": "﻿<!--\n//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n-->\n\n<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"Default.aspx.cs\" Inherits=\"ConnectTheDotsWebSite.Default\" %>\n\n<!DOCTYPE html>\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head runat=\"server\">\n    <title>Connect The Dots</title>\n\n    <!-- general styles -->\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.datatables.net/1.10.9/css/jquery.dataTables.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/connectthedots.css\" />\n</head>\n<body>\n    <div class=\"globalSettings\" style=\"display:none\">\n        <div class=\"ForceSocketCloseOnUserActionsTimeout\"><%= ForceSocketCloseOnUserActionsTimeout %></div>\n    </div>\n    \n    <div id=\"loading\" style=\"display: none;\">\n        <div id=\"loading-inner\">\n            <p id=\"loading-text\">Loading last 10 minutes of data...</p>\n            <p id=\"loading-sensor\"></p>\n            <img id=\"loading-image\" src=\"img/ajax-loader.gif\" />\n        </div>\n    </div>\n\n    <ul id=\"deviceMenu\" style=\"display:none;\">\n        <li><div>Add a new device</div></li>\n        <li><div>Remove device</div></li>\n        <li><div>Get QRCode</div></li>\n    </ul>\n\n    <div id=\"qrcode\">\n    </div>\n\n    <div id=\"add-device-dialog-form\" title=\"Add new device\" style=\"display: none;\">\n      <p>Type in a unique name for the new device (only characters and numbers).</p>\n \n      <form>\n        <fieldset style=\"padding:0; border:0; margin-top:25px; \">\n          <label style=\"display:block;\" for=\"newdeviceid\">Device ID</label>\n          <input type=\"text\" name=\"newdeviceid\" id=\"newdeviceid\" value=\"mynewdevice\" class=\"text ui-widget-content ui-corner-all\" style=\"display:block;\"/>\n           <!-- Allow form submission with keyboard without duplicating the dialog button -->\n          <input class=\"popup-input\" type=\"submit\" tabindex=\"-1\" style=\"position:absolute; top:-1000px\"/>\n        </fieldset>\n      </form>\n    </div>\n\n    <div id=\"delete-device-dialog-confirm\" title=\"Delete device?\" style=\"display: none;\">\n        <p><span class=\"ui-icon ui-icon-alert\" style=\"float:left; margin:12px 12px 20px 0;\"></span>This will permanently remove the device from the IoT Hub device registry. Are you sure?</p>\n        <div id=\"devicetodelete\"></div>\n    </div>\n\n    <div id=\"header\">\n        <div>\n            <img src=\"img/ConnectTheDotsLogo.png\" />\n        </div>\n    </div>\n\n\n    <form id=\"form2\" runat=\"server\">\n        <div id=\"user\" runat=\"server\">\n        </div>\n\n        <asp:ScriptManager ID='ScriptManager1' runat='server' EnablePageMethods='true' />\n        <a target=\"_blank\" href=\"http://connectthedots.io\"><img style=\"position: absolute; top: 0; right: 0; border: 0;\" src=\"img/forkme_CTD.png\" alt=\"Fork me on GitHub\" /></a>\n\n        <div class=\"big-block\">\n            <h3>Live Sensor Data</h3>\n\n            <div style=\"float: left; width: 200px\">\n\n                <p><strong>Select Sensor/R-PI:</strong></p>\n\n            <div id=\"controllersContainer\">\n            </div>\n\n            </div>\n            <div id=\"chartsContainer\">\n            </div>\n        </div>\n\n        <div class=\"big-block\">\n            <h3>Real Time Events</h3>\n            <div id=\"alerts\">\n                <table id=\"alertTable\">\n                    <thead>\n                        <tr>\n                            <th class=\"timeFromDate\">Time</th>\n                            <th>Device</th>\n                            <th>Alert</th>\n                            <th>Message</th>\n                        </tr>\n                    </thead>\n                    <tbody>\n                    </tbody>\n                </table>\n\n            </div>\n        </div>\n\n        <div class=\"big-block\">\n            <h3>Devices List</h3>\n            <div id=\"devices\">\n                <table id=\"devicesTable\">\n                    <thead>\n                        <tr>\n                            <th>Display Name</th>\n                            <th>Location</th>\n                            <th>IP Address</th>\n                            <th>IoTHub Device ID</th>\n                            <th id=\"cscolumn\" runat=\"server\">Connection String</th>\n                        </tr>\n                    </thead>\n                    <tbody>\n                    </tbody>\n                </table>\n            </div>\n        </div>\n\n        <div class=\"big-block\">\n            <h3>Messages</h3>\n            <div id=\"messages\"></div>\n        </div>\n    </form>\n\n    <script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-1.12.4.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://d3js.org/d3.v3.min.js\" charset=\"utf-8\"></script>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.7.1/d3-tip.js\"></script>\n\n    <script type=\"text/javascript\" src=\"js/d3utils.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3DataFlow.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3Chart.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3ChartControl.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3DataSourceSocket.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3CTDDataSourceSocket.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3CTDDataSourceFilter.js\"></script>\n    <script type=\"text/javascript\" src=\"js/jquery.ui-contextmenu.js\"></script>\n    <script type=\"text/javascript\" src=\"js/devicesList.js\"></script>\n    <script type=\"text/javascript\" src=\"js/qrcode.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3CTD.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "Azure/WebSite/site/Docs/license.txt",
    "content": "Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n \nThe MIT License (MIT)\n \nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n \nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "Azure/WebSite/site/Global.asax",
    "content": "﻿<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"ConnectTheDotsWebSite.Global\" Language=\"C#\" %>\n"
  },
  {
    "path": "Azure/WebSite/site/Web.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\nWeb.config file for WebClient based upon Web.config\n\nThe settings that can be used in this file are documented at \nhttp://www.mono-project.com/Config_system.web and \nhttp://msdn2.microsoft.com/en-us/library/b5ysx397.aspx\n-->\n<configuration>\n  <!--\n    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.\n\n    The following attributes can be set on the <httpRuntime> tag.\n      <system.Web>\n        <httpRuntime targetFramework=\"4.6.1\" />\n      </system.Web>\n  -->\n  <system.web>\n    <compilation defaultLanguage=\"C#\" targetFramework=\"4.6.1\">\n      <assemblies>\n        <add assembly=\"System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n      </assemblies>\n    </compilation>\n    <customErrors mode=\"Off\" />\n    <authentication mode=\"None\" />\n    <authorization>\n      <allow users=\"*\" />\n    </authorization>\n    <httpHandlers />\n    <trace enabled=\"false\" localOnly=\"true\" pageOutput=\"false\" requestLimit=\"10\" traceMode=\"SortByTime\" />\n    <sessionState mode=\"InProc\" cookieless=\"false\" timeout=\"20\" />\n    <globalization requestEncoding=\"utf-8\" responseEncoding=\"utf-8\" />\n    <pages />\n  </system.web>\n  <appSettings>\n    <!-- The below app settings are set by the ARM template and are here just for reference\n    <add key=\"azure.IoT.IoTHub.ConnectionString\" value=\"<IoTHubOwnerConnectionString>\"/>\n    <add key=\"azure.IoT.IoTHub.EventHub.Name\" value=\"<IoTHubName>\"/>\n    <add key=\"azure.IoT.IoTHub.EventHub.ConnectionString\" value=\"<IotHubConnectionString>\"/>\n    <add key=\"azure.IoT.IoTHub.EventHub.ConsumerGroup\" value=\"websitecg\"/>\n    <add key=\"azure.ServiceBus.EventHub.Name\" value=\"ehalerts\"/>\n    <add key=\"azure.ServiceBus.EventHub.ConnectionString\" value=\"<EventHubConnectionString>\"/>\n    <add key=\"azure.ServiceBus.EventHub.ConsumerGroup\" value=\"$Default\"/>\n    <add key=\"azure.Storage.ConnectionString\" value=\"<StorageAccountConnectionString>\"/>\n    <add key=\"AdminName\" value=\"<admin@admin.com>\" />-->\n    <add key=\"aspnet:UseTaskFriendlySynchronizationContext\" value=\"true\" />\n  </appSettings>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-9.0.0.0\" newVersion=\"9.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.WindowsAzure.Storage\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-7.2.1.0\" newVersion=\"7.2.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http.Formatting\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.2.3.0\" newVersion=\"5.2.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Web.Http\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.2.3.0\" newVersion=\"5.2.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Edm\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Services.Client\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.OData\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Validation\" publicKeyToken=\"2fc06f0d701809a7\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.3.0.0\" newVersion=\"2.3.0.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n  <system.webServer>\n    <handlers>\n      <remove name=\"ExtensionlessUrlHandler-Integrated-4.0\" />\n      <remove name=\"OPTIONSVerbHandler\" />\n      <remove name=\"TRACEVerbHandler\" />\n      <add name=\"ExtensionlessUrlHandler-Integrated-4.0\" path=\"*.\" verb=\"*\" type=\"System.Web.Handlers.TransferRequestHandler\" preCondition=\"integratedMode,runtimeVersionv4.0\" />\n    </handlers>\n  </system.webServer>\n  <system.serviceModel>\n    <extensions>\n      <!-- In this extension section we are introducing all known service bus extensions. User can remove the ones they don't need. -->\n      <behaviorExtensions>\n        <add name=\"connectionStatusBehavior\" type=\"Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"transportClientEndpointBehavior\" type=\"Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"serviceRegistrySettings\" type=\"Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </behaviorExtensions>\n      <bindingElementExtensions>\n        <add name=\"netMessagingTransport\" type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus,  Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"tcpRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"httpRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"httpsRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"onewayRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </bindingElementExtensions>\n      <bindingExtensions>\n        <add name=\"basicHttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"webHttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"ws2007HttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netTcpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netOnewayRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netEventRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netMessagingBinding\" type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </bindingExtensions>\n    </extensions>\n  </system.serviceModel>\n</configuration>\n<!--ProjectGuid: 2E3E7496-59D5-48BC-909E-207120886E3E-->"
  },
  {
    "path": "Azure/WebSite/site/css/connectthedots.css",
    "content": "body {\n    font: 16px sans-serif;\n    color: #333;\n    width: 95%;\n}\n\n#header {\n    width: 100%;\n    border-bottom: 1px #cdcdcd solid;\n}\n\nh3 {\n    width: 100%;\n    background-color: #f7f7f7;\n    border-bottom: 1px #ddd solid;\n    padding: 10px;\n}\n\nh4 {\n    width: 100%;\n    background-color: #f7f7f7;\n    border-bottom: 1px #ddd solid;\n    margin-top: 0;\n}\n\n.big-block {\n    margin-left: 10px;\n}\n\nul {\n    list-style-type: none;\n    padding-left: 0;\n    font: 12px sans-serif;\n    color: #666;\n    left: 0\n}\n\nli {\n    cursor: pointer;\n    font-weight: normal;\n}\n\n.selected {\n    font-weight: bold;\n}\n\n\nli.selected:before {\n    content: \"\\25BA \\0020\";\n}\n\n/*styles for D3 charts*/\n.axis {\n    shape-rendering: crispEdges;\n}\n\n    .axis text {\n        font: 10px sans-serif;\n        font-weight: normal;\n        fill: #787878;\n    }\n\n    .axis path,\n    .axis line {\n        fill: none;\n        stroke: #787878;\n        shape-rendering: crispEdges;\n    }\n\n.y.axis {\n}\n\n.x.axis {\n}\n\npath.line {\n    fill: none;\n    stroke: steelblue;\n    stroke-width: 1.5px;\n}\n\n.legend {\n    font: 10px sans-serif;\n}\n\n/*for \"loading\" gif */\n#loading {\n    width: 100%;\n    height: 100%;\n    top: 0px;\n    left: 0px;\n    position: fixed;\n    display: block;\n    background-color: #777;\n    background-color: rgba(155, 155, 155, 0.4);\n    z-index: 99;\n    text-align: center;\n}\n\n#loading-inner {\n    background-color: #fff;\n    border-style: solid;\n    border-width: 1px;\n    width: 400px;\n    height: 200px;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    margin-left: -200px;\n    margin-top: -100px;\n}\n\n#loading-image {\n    position: relative;\n    top: 10px;\n    left: 10px;\n    z-index: 100;\n}\n\n#loading-text {\n    position: relative;\n    top: 10px;\n    left: 10px;\n    z-index: 100;\n}\n\n#alerts {\n    height: 15%;\n    width: 100%;\n}\n\n#devices {\n    height: 15%;\n    width: 100%;\n}\n\n#Charts {\n    height: 100%;\n    position: relative;\n}\n\n#Graphics {\n    height: 80%;\n    width: 100%;\n    position: absolute;\n}\n\n#controllersContainer {\n    position: relative;\n    text-align: center;\n}\n\n.controller {\n    height: 300px;\n    right : 10px;\n    position: absolute;\n    text-align: left;\n}\n\n#chartsContainer {\n    margin-left: 200px;\n    position: relative;\n}\n\n.chart {\n    height: 300px;\n    width: 100%;\n    position: absolute;\n}\n\n#chartTwo {\n    top: 40%;\n}\n\n#chartOne {\n    top: 0;\n}\n\n#alertTable td {\n    font-size: 12px;\n    text-align: center;\n}\n\n#devicesTable td {\n    font-size: 12px;\n    text-align: center;\n}\n\n.d3-tip {\n    line-height: 1;\n    padding: 12px;\n    background: rgba(255, 255, 255, 0.9);\n    color: #000;\n    border-radius: 2px;\n}\n\n    .d3-tip .time_header {\n        color: grey;\n        font-size: 8px;\n        display: block;\n    }\n\n    .d3-tip .value_circle {\n        color: #006fc7;\n        font-size: 20px;\n    }\n\n    .d3-tip .value {\n        color: black;\n        font-size: 14px;\n        margin-left: 5px;\n    }\n\n    .d3-tip .message {\n        color: black;\n        font-size: 10px;\n        display: block;\n    }\n\n    /* Creates a small triangle extender for the tooltip */\n    .d3-tip:after {\n        box-sizing: border-box;\n        display: inline;\n        font-size: 8px;\n        width: 100%;\n        line-height: 1;\n        color: rgba(255, 255, 255, 0.9);\n        content: \"\\25BC\";\n        position: absolute;\n        text-align: center;\n    }\n\n    /* Style northward tooltips differently */\n    .d3-tip.n:after {\n        margin: -1px 0 0 0;\n        top: 100%;\n        left: 0;\n    }\n\n.sensorTip {\n    z-index: 10000;\n    position: absolute;\n    white-space: pre;\n    overflow: hidden;\n    margin-top: -22px;\n    float: right;\n    margin-left: 200px;\n    /*background: #eee;*/\n    color: #000;\n    padding: 5px;\n    padding-right: 10px;\n    padding-left: 10px;\n    pointer-events:none;\n    border: solid;\n    border-width: thin;\n    border-color: #000;\n    background: rgba(243, 233, 6, 0.9);\n}\n"
  },
  {
    "path": "Azure/WebSite/site/js/d3CTD.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nvar dataFlows = {};\nvar bulkMode = false;\n\nString.prototype.hashCode = function () {\n    var hash = 0;\n    if (this.length == 0) return hash;\n    for (var i = 0, len = this.length; i < len; i++) {\n        var chr = this.charCodeAt(i);\n        hash = ((hash << 5) - hash) + chr;\n        hash |= 0;\n    }\n    return hash;\n};\n\nfunction clearData() {\n    for (var id in dataFlows) {\n        if (id == 'dataSource') continue;\n        if (dataFlows[id].hasOwnProperty('flows')) {\n            for (var id2 in dataFlows[id].flows) {\n                dataFlows[id].flows[id2].destroy();\n                dataFlows[id].flows[id2] = null;\n            }\n        }\n        if (dataFlows[id].hasOwnProperty('chart')) {\n            dataFlows[id].chart.destroy();\n            dataFlows[id].chart = null;\n        }\n    }\n    dataFlows = { dataSource: dataFlows.dataSource };\n\n    $('#chartsContainer').empty();\n    $('#chartsContainer').height(0);\n}\n\nfunction onChangeSensors(isAll) {\n    var newGUIDs = [];\n\n    dataFlows.dataSource.onUpdating(true);\n\n    $('#sensorList li').each(function () {\n        if ($(this).hasClass('selected') && this.id) {\n            if (!isAll) newGUIDs.push(this.id.slice(4));\n        } else\n            if (isAll) {\n                $(this).addClass('selected');\n            }\n    });\n    dataFlows.dataSource.changeDeviceGUIDs(isAll ? ['All'] : newGUIDs);\n\n    clearData();\n\n    dataFlows.dataSource.onUpdating(false);\n}\n\nfunction onLoading(evt) {\n    $('#loading').show();\n    if (evt.owner) {\n        $('#loading-sensor').text(evt.owner);\n    }\n}\n\nfunction onLoaded(evt) {\n    $('#loading').hide();\n}\n\nfunction onError(evt) {\n    addOutputToConsole('ERROR ' + evt.owner);\n}\n\nfunction onOpen(evt) {\n    addOutputToConsole('Connected.');\n}\n\nfunction addNewDataFlow(eventObject) {\n    var measurenameOriginal = eventObject['measurename'] + '';\n    var measurenameHash = measurenameOriginal.hashCode();\n\n    // create chart if necessary\n    if (!dataFlows.hasOwnProperty(measurenameHash)) {\n        dataFlows[measurenameHash] = {\n            containerId: 'chart_' + measurenameHash,\n            controllerId: 'controller_' + measurenameHash,\n            dataSourceFilter: new d3CTDDataSourceFilter(dataFlows.dataSource, { measurename: measurenameOriginal }),\n            flows: {}\n        };\n        // create flows controller\n        $('#controllersContainer').append('<ul id=\"' + dataFlows[measurenameHash].controllerId + '\" style=\"top: ' + (Object.keys(dataFlows).length - 2) * 300 + 'px;\" class=\"controller\"></ul>');\n        dataFlows[measurenameHash].controller = new d3ChartControl(dataFlows[measurenameHash].controllerId)\n                    .attachToDataSource(dataFlows[measurenameHash].dataSourceFilter);\n\n        // add new div object\n        $('#chartsContainer').height((Object.keys(dataFlows).length - 1) * 300 + 'px');\n        $('#chartsContainer').append('<div id=\"' + dataFlows[measurenameHash].containerId + '\" style=\"top: ' + (Object.keys(dataFlows).length - 2) * 300 + 'px;\" class=\"chart\"></div>');\n        // create chart\n        dataFlows[measurenameHash].chart = (new d3Chart(dataFlows[measurenameHash].containerId))\n                    .addEventListeners({ 'loading': onLoading, 'loaded': onLoaded })\n                    .attachToDataSource(dataFlows[measurenameHash].dataSourceFilter)\n                    .setFilter(dataFlows[measurenameHash].controller)\n                    .setBulkMode(bulkMode);\n\n    };\n\n    // add new flow\n    var newFlow = new d3DataFlow(eventObject.guid);\n\n    //addNewSensorOption(newFlow, eventObject);\n\n    dataFlows[measurenameHash].flows[eventObject.guid] = newFlow;\n\n    dataFlows[measurenameHash].chart.addFlow(newFlow, 0);\n\n    $(window).resize();\n}\n\nfunction addNewSensorOption(newFlow, eventObject) {\n    var found = false;\n\n    for (var id in dataFlows) {\n        if (dataFlows[id].hasOwnProperty('flows')) {\n            for (var id2 in dataFlows[id].flows) {\n                if (id2 == eventObject.guid)\n                    found = true;\n            }\n        }\n    }\n    if (!found) {\n        // check old\n        var oldOpt = document.getElementById('flow' + eventObject.guid);\n        if (!oldOpt) {\n            // add new\n            $('#sensorList').append(\"<li id='flow\" + eventObject.guid + \"' class='selected'>loading...</li>\");\n        }\n\n        document.getElementById('flow' + eventObject.guid)\n            .onclick = function () {\n                if ($(this).hasClass('selected')) {\n                    $(this).removeClass('selected');\n                } else {\n                    $(this).addClass('selected');\n                }\n\n                onChangeSensors();\n            };\n\n        newFlow.addEventListener('change', function (evt) {\n            document.getElementById('flow' + eventObject.guid).innerHTML = evt.owner.displayName();\n        });\n    }\n}\n\nfunction checkBulkMode(evt) {\n    if (evt.bulkData != undefined) {\n        bulkMode = evt.bulkData;\n\n        // alert all charts\n        for (var id in dataFlows) {\n            if (dataFlows[id].chart)\n                dataFlows[id].chart.setBulkMode(bulkMode);\n        }\n    }\n}\nfunction onNewEvent(evt) {\n    var eventObject = evt.owner;\n    var flowCnt = dataFlows.length;\n\n    // check bulk mode\n    checkBulkMode(eventObject);\n\n    // check object necessary properties\n    if (!eventObject.hasOwnProperty('guid') || !eventObject.hasOwnProperty('measurename')) return;\n    var measurenameHash = eventObject['measurename'].hashCode();\n    // auto add flows\n    if (!dataFlows.hasOwnProperty(measurenameHash) || !dataFlows[measurenameHash].flows.hasOwnProperty(eventObject['guid']))\n        addNewDataFlow(eventObject);\n\n    if (eventObject.alerttype != null) {\n        var table = $('#alertTable').DataTable();\n        var time = new Date(eventObject.timecreated);\n\n        // Check if we already have this one in the table already to prevent duplicates\n        var indexes = table.rows().eq(0).filter(function (rowIdx) {\n            if (\n                table.cell(rowIdx, 0).data().getTime() == time.getTime() && table.cell(rowIdx, 1).data() == eventObject.displayname && table.cell(rowIdx, 2).data() == eventObject.alerttype) {\n                return true;\n            }\n            return false;\n        });\n\n        // The alert is a new one, lets display it\n        if (indexes.length == 0) {\n            // For performance reasons, we want to limit the number of items in the table to a max of 20. \n            // We will remove the oldest from the list\n            if (table.data().length > 19) {\n                // Search for the oldest time in the list of alerts\n                var minTime = table.data().sort(\n\n                    function (a, b) {\n                        return (a[0] > b[0]) - (a[0] < b[0])\n                    })[0][0];\n                // Delete the oldest row\n                table.rows(\n\n                    function (idx, data, node) {\n                        return data[0].getTime() == minTime.getTime();\n                    }).remove();\n            }\n\n            // Add the new alert to the table\n            var message = 'message';\n            if (eventObject.message != null) message = eventObject.message;\n            table.row.add([\n                time,\n                eventObject.displayname,\n                eventObject.alerttype,\n                message\n            ]).draw();\n\n        }\n    }\n}\n\nfunction addOutputToConsole(text) {\n    $('#messages').prepend('<div>' + text + '</div>');\n}\n\nvar idleTime = 0;\n\nfunction onUserAction(e) {\n    idleTime = 0;\n}\n\nfunction timerIncrement() {\n    idleTime += 1;\n    if (idleTime > 120) // 2 minutes\n    {\n        dataFlows.dataSource.closeSocket();\n        alert('Connection was closed due to user inactivity.');\n        location.reload();\n    }\n}\n\nvar qrcode;\nfunction displayQRCode(title, URI) {\n    // First time called, create the qrcode object\n    if (qrcode == undefined) {\n        qrcode = new QRCode(document.getElementById(\"qrcode\"), URI);\n    } else {\n        // Clean previous code and update title\n        qrcode.clear();\n\n        // Create new code\n        qrcode.makeCode(URI);\n    }\n    // Display QRCode\n    $(\"#qrcode\").dialog({title: title});\n}\n\n$(document).ready(function () {\n    var globalSettings = $('.globalSettings');\n    var forceSocketCloseOnUserActionsTimeout = globalSettings.find('.ForceSocketCloseOnUserActionsTimeout').text().toLowerCase() == 'true';\n\n    if (forceSocketCloseOnUserActionsTimeout) {\n        var idleInterval = setInterval(timerIncrement, 1000); // 1 second\n        $(this).mousemove(onUserAction);\n        $(this).keypress(onUserAction);\n    }\n    \n    // create datasource\n    var sss = (window.location.protocol.indexOf('s') > 0 ? \"s\" : \"\");\n    var uri = 'ws' + sss + '://' + window.location.host + '/api/websocketconnect?clientId=none';\n\n    addOutputToConsole('Connecting to ' + uri);\n\n    dataFlows.dataSource = new d3CTDDataSourceSocket(uri).addEventListeners({ 'eventObject': onNewEvent, 'error': onError, 'open': onOpen });\n\n    $('#selectAllOpt').on('click', function () {\n        onChangeSensors(true);\n    });\n\n    // create alerts table\n    var table = $('#alertTable').DataTable({\n        \"bAutoWidth\": false,\n        \"bFilter\": true,\n        \"bInfo\": true,\n        \"paging\": true,\n        \"order\": [\n            [0, \"desc\"]\n        ],\n        \"columnDefs\": [{\n            \"targets\": \"timeFromDate\",\n            \"data\": function (row, type, val, meta) {\n                if (type === 'set') {\n                    row[meta.col] = val;\n                    return;\n                } else if (type === 'display') {\n                    return row[meta.col].toLocaleTimeString();\n                }\n                return row[meta.col];\n            }\n        }, {\n            \"targets\": \"numberFixed\",\n            \"data\": function (row, type, val, meta) {\n                if (type === 'set') {\n                    row[meta.col] = val;\n                    return;\n                } else if (type === 'display') {\n                    return row[meta.col].toFixed(1);\n                }\n                return row[meta.col];\n            }\n        }, ]\n    });\n\n    // create devices table\n    var table = $('#devicesTable').DataTable({\n        \"bAutoWidth\": false,\n        \"bFilter\": true,\n        \"bInfo\": true,\n        \"paging\": true,\n        \"order\": [\n            [0, \"desc\"]\n        ],\n        \"columnDefs\": [{\n            \"targets\": \"numberFixed\",\n            \"data\": function (row, type, val, meta) {\n                if (type === 'set') {\n                    row[meta.col] = val;\n                    return;\n                } else if (type === 'display') {\n                    return row[meta.col].toFixed(1);\n                }\n                return row[meta.col];\n            }\n        }, ]\n    });\n\n    $('#devicesTable tbody').on('dblclick', 'tr', function () {\n        if ($('#cscolumn').is(':visible')) {\n            displayQRCode(table.row(this).data()[3], table.row(this).data()[4]);\n        }\n    });\n\n    if ($('#cscolumn').is(':visible')) {\n        $('#devicesTable tbody').contextmenu({\n        menu: [\n            { title: \"Add new device\", cmd: \"add\" },\n            { title: \"Delete device\", cmd: \"delete\" },\n            { title: \"Get QRCode\", cmd:\"qrcode\" }\n        ],\n        select: function (event, ui) {\n            switch (ui.cmd) {\n                case \"add\":\n                    addDeviceDialog.dialog('open');\n                    break;\n                case \"delete\":\n                    var deviceID = table.row(ui.target.parent()).data()[3];\n                    var question = \"Delete device \" + deviceID + \"?\";\n                    confirmDeleteDeviceDialog.data('deviceID', deviceID);\n                    confirmDeleteDeviceDialog.dialog({ title: question });\n                    confirmDeleteDeviceDialog.dialog('open');\n                    break;\n                case \"qrcode\":\n                    displayQRCode(table.row(ui.target.parent()).data()[3], table.row(ui.target.parent()).data()[4]);\n                    break;\n                }\n            }\n        });\n    }\n});\n\n$(window).load(function () {\n\n    // Update the devices list when page is loaded\n    updateDevicesList();\n});"
  },
  {
    "path": "Azure/WebSite/site/js/d3CTDDataSourceFilter.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// events: onEventObject\nfunction d3CTDDataSourceFilter(dataSource, filter) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n\n    self._filter = filter;\n\n    // register handler\n    dataSource.addEventListener('eventObject', function (evt) {\n        var eventObject = evt.owner;\n        // check filter\n        if (self._filter) {\n            for (var id in self._filter) {\n                if (!eventObject.hasOwnProperty(id) || eventObject[id] != self._filter[id])\n                    return;\n            }\n        }\n\n        // forward message\n        self.raiseEvent('eventObject', eventObject);\n\n    });\n\n    return self;\n}\n\nd3CTDDataSourceFilter.prototype = {\n    constructor: d3CTDDataSourceFilter,\n};\n\nextendClass(d3CTDDataSourceFilter, baseClass);\n"
  },
  {
    "path": "Azure/WebSite/site/js/d3CTDDataSourceSocket.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// events: onEventObject\nfunction d3CTDDataSourceSocket(uri, handlers) {\n    var self = this;\n    // call base class contructor\n    d3DataSourceSocket.call(self, uri, {\n        message: function (event) {\n            self._onMessage.call(self, event);\n        }\n    });\n\n    // register handlers\n    if (handlers) {\n        for (id in handlers) {\n            self.addEventListener(id, handlers[id]);\n        }\n    }\n    self._firstMessage = true;\n    self._updatingState = false;\n    self._deviceGUIDs = 'All';\n\n    return self;\n}\n\nd3CTDDataSourceSocket.prototype = {\n    constructor: d3CTDDataSourceSocket,\n    onUpdating: function (state) {\n        var self = this;\n        self._updatingState = state;\n    },\n    changeDeviceGUIDs: function (newDeviceGUIDs) {\n        var self = this;\n\n        if (newDeviceGUIDs != undefined) {\n            self._deviceGUIDs = newDeviceGUIDs;\n        }\n\n        var reqClear = {\n            MessageType: \"LiveDataSelection\",\n            DeviceGUIDs: 'clear'\n        };\n\n        var req = {\n            MessageType: \"LiveDataSelection\",\n            DeviceGUIDs: self._deviceGUIDs.toString()\n        };\n\n        // send request\n        self.sendMessage(reqClear);\n        self.sendMessage(req);\n\n        return self;\n    },\n    _onMessage: function (event) {\n        var self = this;\n        if (self._updatingState) return;\n        if (self._firstMessage) {\n            self._firstMessage = false;\n\n            self.changeDeviceGUIDs();\n\n            // prevent next call\n            event.handled = true;\n        } else {\n            // Parse the JSON package\n            try {\n                var eventObject = JSON.parse(event.owner.data);\n            } catch (e) {\n                self.raiseEvent('error', '<div>Malformed message: ' + event.data + '</div>');\n                return;\n            }\n            // forward message\n            self.raiseEvent('eventObject', eventObject);\n        }\n    }\n};\n\nextendClass(d3CTDDataSourceSocket, d3DataSourceSocket);\n"
  },
  {
    "path": "Azure/WebSite/site/js/d3Chart.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n// create dataFlow with\n/*\ncontainerId : string,\n]*/\nfunction d3Chart(containerId) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n    // initialize object\n    self._flows = {};\n    self._flowsVisuals = {};\n    self._containerId = containerId;\n    self._CONSTANTS = {\n        MS_PER_MINUTE: 60000,\n        WINDOW_MINUTES: 10,\n    }\n    self._isBulking = false;\n    self._colors = d3.scale.category10();\n\n    self._onEventObjectHandler = function (event) {\n        self._onMessageHandler.call(self, event);\n    }\n\n    self._onEventRemoveGuid = function (event) {\n        self._onMessageRemoveGuid.call(self, event);\n    }\n\n    self._onEventAddGuid = function (event) {\n        self._onMessageAddGuid.call(self, event);\n    }\n\n    // register update handler\n    self.addEventListener('update', function (evt) {\n        self.pruneOldData();\n        self.updateChart();\n    });\n\n    self._wasResizeHandled = true;\n\n    return self;\n}\n\nd3Chart.prototype = {\n    constructor: d3Chart,\n    destroy: function () {\n        var self = this;\n\n        self.clearDataFlows();\n        self.removeChartVisual();\n\n        if (self._dataSource) {\n            self._dataSource.removeEventListener('eventObject', this._onEventObjectHandler);\n        }\n\n        if (self._filter) {\n            self._filter.removeEventListener('removeGuid', this._onEventRemoveGuid);\n            self._filter.removeEventListener('addGuid', this._onEventAddGuid);\n        }\n\n        window['resizeCallback@' + self._containerId] = false;\n    },\n    setBulkMode: function (newVal) {\n        var self = this;\n        self._isBulking = newVal;\n\n        if (!newVal) {\n            self.raiseEvent('update');\n            self.raiseEvent('loaded');\n        }\n        return self;\n    },\n    addFlow: function (newFlow, yAxis) {\n        var self = this;\n        self._flows[newFlow.getGUID()] = newFlow;\n        self._flowsVisuals[newFlow.getGUID()] = {\n            alerts: {}\n        };\n\n        newFlow.yAxis(yAxis);\n        newFlow.attachToChart(self);\n        self._colors.domain(newFlow.getGUID());\n\n        return self;\n    },\n    attachToDataSource: function (dataSource) {\n        var self = this;\n        // remebmer data source\n        self._dataSource = dataSource;\n\n        // register events handler\n        dataSource.addEventListener('eventObject', self._onEventObjectHandler);\n\n        return self;\n    },\n    setFilter: function (filter) {\n        var self = this;\n        // remebmer data source\n        self._filter = filter;\n\n        // register guid handlers\n        filter.addEventListener('removeGuid', self._onEventRemoveGuid);\n        filter.addEventListener('addGuid', self._onEventAddGuid);\n\n        return self;\n    },\n\n    recalcFontSize: function () {\n        //Standard height, for which the body font size is correct\n        var preferredHeight = 768;\n        //Base font size for the page\n        var fontsize = 12;\n        var displayHeight = $(window).height();\n        var percentage = displayHeight / preferredHeight;\n\n        // remember font size\n        this._fontSize = Math.floor(fontsize * percentage) - 1;\n\n        return self;\n    },\n    clearDataFlows: function () {\n        var self = this;\n        // remove visual elements\n        for (var id in this._flowsVisuals) {\n            self.removeFlowVisual(id);\n        }\n        // clear data\n        for (var id in self._flows) {\n            // clear data set\n            self._flows[id].clearData();\n        }\n\n        return self;\n    },\n    removeChartVisual: function () {\n        var self = this;\n        if (self._x != null) {\n            self._x = null;\n        }\n        if (self._y0 != null) {\n            self._y0 = null;\n        }\n        if (self._y1 != null) {\n            self._y1 = null;\n        }\n        if (self._y0Label != null) {\n            self._y0Label = null;\n        }\n        if (self._svg != null) {\n            self._svg.remove();\n            self._svg = null;\n        }\n\n        return self;\n    },\n    removeFlowVisual: function (id) {\n        if (!this._flowsVisuals.hasOwnProperty(id)) return;\n\n        var dataFlowVisuals = this._flowsVisuals[id];\n\n        for (var idAl in dataFlowVisuals.alerts) {\n            var alert = dataFlowVisuals.alerts[idAl];\n            if (alert.alertShowed) {\n                alert.alertShowed.remove();\n                alert.alertShowed = null;\n            }\n            if (alert.alertBarShowed) {\n                alert.alertBarShowed.remove();\n                alert.alertBarShowed = null;\n            }\n        }\n\n        dataFlowVisuals.alerts = {};\n\n        if (dataFlowVisuals.path) {\n            dataFlowVisuals.path.remove();\n            dataFlowVisuals.path = null;\n        }\n        if (dataFlowVisuals.legend) {\n            dataFlowVisuals.legend.remove();\n            dataFlowVisuals.legend = null;\n        }\n        if (dataFlowVisuals.legend_r) {\n            dataFlowVisuals.legend_r.remove();\n            dataFlowVisuals.legend_r = null;\n        }\n\n        return self;\n    },\n    registerResizeHandler: function (containerId) {\n        var self = this;\n        if (!window['resizeCallback@' + containerId]) {\n            window['resizeCallback@' + containerId] = true;\n            $(window).bind('resize', function () {\n                console.log('rezise chart: ' + containerId);\n                self._wasResizeHandled = false;\n\n                // remove visual elements\n                for (var id in self._flowsVisuals) {\n                    self.removeFlowVisual(id);\n                }\n                // remove original one\n                self.removeChartVisual();\n                d3.select(\"#\" + containerId).select('svg').remove();\n                // create a new one w/ correct size\n                self.updateChart();\n            });\n        }\n\n        return self;\n    },\n    setY0Label: function () {\n        var self = this;\n        if (self._y0Label) return;\n        for (var id in self._flows)\n            if (self._flows[id].label()) {\n                self._y0Label = self._svg.append(\"text\")\n                    .attr(\"transform\", \"rotate(-90)\")\n                    .attr(\"class\", \"y0 label\")\n                    .attr(\"text-anchor\", \"middle\")\n                    .attr(\"y\", -50)\n                    .attr(\"x\", -self._height / 2)\n                    .attr(\"dy\", \"1em\")\n                    .attr(\"font-size\", self._fontSize + \"px\")\n                    .text(self._flows[id].label());\n                break;\n            }\n    },\n    createChart: function () {\n        var self = this;\n\n        var margin = {\n            top: 5,\n            right: 250,\n            bottom: 20,\n            left: 50\n        };\n\n        // remember container\n        self._container = $('#' + self._containerId);\n\n        // recalc font size\n        self.recalcFontSize();\n\n        var dataFlowsArray = [];\n\n        self._width = self._container.width() - margin.right;\n        self._height = self._container.height() - margin.top - margin.bottom;\n\n        // create dataFlows array\n        for (var id in self._flows) {\n            dataFlowsArray.push({\n                id: id,\n                yMin: self._flows[id].yMin(),\n                yMax: self._flows[id].yMax()\n            });\n        }\n        // seed the axes with some dummy values\n        self._x = d3.time.scale()\n\t\t\t.domain([0, 1])\n\t\t\t.range([0, self._width]);\n\n        self._y0 = d3.scale.linear()\n\t\t\t.range([self._height, 0]);\n\n        if (dataFlowsArray.length > 0 && dataFlowsArray[0].yMax != null && dataFlowsArray[0].yMin != null)\n            self._y0.domain([dataFlowsArray[0].yMin, dataFlowsArray[0].yMax]);\n\n        self._svg = d3.select(\"#\" + self._containerId)\n\t\t\t.append(\"p\")\n\t\t\t.append(\"svg\")\n\t\t\t.attr(\"width\", self._width + margin.left + margin.right)\n\t\t\t.attr(\"height\", self._height + margin.top + margin.bottom)\n\t\t\t.style(\"margin-bottom\", margin.bottom + \"px\")\n\t\t\t.append(\"g\")\n\t\t\t.attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n        self._svg.append(\"g\")\n\t\t\t.attr(\"class\", \"y0 axis\")\n\t\t\t.call(d3.svg.axis().scale(self._y0).ticks(7).orient(\"left\"));\n\n        // check y0 label\n        self.setY0Label();\n\n        self._svg.append(\"g\")\n\t\t\t.attr(\"class\", \"x axis\")\n\t\t\t.attr(\"transform\", \"translate(0,\" + (self._height) + \")\")\n\t\t\t.call(d3.svg.axis().scale(self._x).orient(\"bottom\").tickFormat(d3.time.format(\"%X\")));\n\n        // create tip\n        self._tip = d3.tip()\n\t\t\t.attr('class', 'd3-tip')\n\t\t\t.offset([-10, 0])\n\t\t\t.html(function (d) {\n\t\t\t    return \"<label class='time_header'>\" + d.time + \"</label><label class='value_circle'>&#x25cf;</label><label class='value'>\" + d.data.toFixed(2) + \"</label><label class='message'>\" + d.alertData.message + \"</label>\";\n\t\t\t});\n        self._svg.call(self._tip);\n\n        // register resize handler\n        self.registerResizeHandler(self._containerId);\n    },\n    pruneAlerts: function (flowId, cutoff) {\n        var self = this;\n        var alertsToRemove = [];\n        // cut alerts\n        for (var t in self._flowsVisuals[flowId].alerts) {\n            if (new Date(t) < cutoff) alertsToRemove.push(t);\n        }\n\n        for (var t in alertsToRemove) {\n            var alert = self._flowsVisuals[flowId].alerts[alertsToRemove[t]];\n\n            if (alert.alertShowed) {\n                alert.alertShowed.remove();\n                alert.alertShowed = null;\n            }\n            if (alert.alertBarShowed) {\n                alert.alertBarShowed.remove();\n                alert.alertBarShowed = null;\n            }\n\n            delete alert;\n        }\n    },\n    pruneOldData: function () {\n        var self = this;\n        var now = new Date();\n        var cutoff = new Date(now - self._CONSTANTS.WINDOW_MINUTES * self._CONSTANTS.MS_PER_MINUTE)\n\n        // cut data\n        for (var id in self._flows) {\n            if (self._flows[id].cutData(cutoff)) {\n                self.pruneAlerts(id, cutoff);\n                //self.removeFlowVisual(id);\n            }\n        }\n    },\n\n    updateChart: function () {\n\n        var self = this;\n\n        var minDate = new Date(3015, 1, 1);\n        var maxDate = new Date(1915, 1, 1);\n\n        var minVal = [Number.MAX_VALUE, Number.MAX_VALUE];\n        var maxVal = [0, 0];\n\n        var displayHeight = $(window).height();\n\n        for (var id in self._flows) {\n            var dataFlow = self._flows[id];\n            if (dataFlow.visible == false) continue;\n            var data = dataFlow.getData();\n            if (data.length == 0 || !dataFlow.displayName()) continue;\n\n            // sort data\n            data.sort(function (a, b) {\n                if (a.time < b.time) return -1;\n                if (a.time > b.time) return 1;\n                return 0;\n            });\n\n            var y = dataFlow.yAxis();\n\n            for (var j = 0; j < data.length; j++) {\n\n                var c = data[j].data;\n                var t = data[j].time;\n\n                if (c < minVal[y]) {\n                    minVal[y] = c;\n                }\n\n                if (c > maxVal[y]) {\n                    maxVal[y] = c;\n                }\n\n                if (t > maxDate) {\n                    maxDate = t;\n                }\n\n                if (t < minDate) {\n                    minDate = t;\n                }\n            }\n        }\n\n        // create chart on demand\n        if (self._svg == null) {\n            self.createChart();\n        }\n\n        // check y0 label\n        self.setY0Label();\n\n        var wasBoundsChanged = !self._previousBounds || self._previousBounds.maxVal0 !== maxVal[0] || self._previousBounds.minVal0 !== minVal[0];\n\n        if (!self._wasResizeHandled || wasBoundsChanged && minVal[0] < Number.MAX_VALUE) {\n            var diff = maxVal[0] - minVal[0];\n            var scaleMargin =  diff * 10 / 100;\n            \n            if (!isFinite(scaleMargin)) {\n                scaleMargin = 0;\n            }\n            \n            var v1 = Math.abs(minVal[0] - scaleMargin);\n            var v2 = Math.abs(maxVal[0] + scaleMargin);\n            if (!isFinite(v1)) {\n                v1 = minVal[0];\n            }\n            if (!isFinite(v2)) {\n                v2 = maxVal[0];\n            }\n            if (v2 < v1) {\n                v2 = v1;\n            }\n            \n            self._y0 = self._y0\n             \t\t.domain([v1, v2]);\n             \t\t\n            var yAxisLeft = d3.svg.axis()\n\t\t\t\t.scale(self._y0)\n\t\t\t\t.orient(\"left\")\n            self._svg.selectAll(\"g.y0.axis\")\n\t\t\t\t.call(yAxisLeft);\n\n            self._wasResizeHandled = true;\n        }\n\n        wasBoundsChanged = !self._previousBounds || self._previousBounds.maxVal1 !== maxVal[1] || self._previousBounds.minVal1 !== minVal[1];\n\n        if (!self._wasResizeHandled || wasBoundsChanged && minVal[1] < Number.MAX_VALUE) {\n            var diff = maxVal[1] - minVal[1];\n            var scaleMargin = (diff) * 10 / 100;\n            \n\t    if (!isFinite(scaleMargin)) {\n                scaleMargin = 0;\n            }\n            \n            var v1 = Math.abs(minVal[1] - scaleMargin);\n            var v2 = Math.abs(maxVal[1] + scaleMargin);\n            \n            if (!isFinite(v1)) {\n                v1 = minVal[1];\n            }\n            if (!isFinite(v2)) {\n                v2 = maxVal[1];\n            }\n            if (v2 < v1) {\n                v2 = v1;\n            }\n            \n            self._y1 = self._y1\n\t\t\t\t.domain([v1,v2]);\n            \n            var yAxisRight = d3.svg.axis()\n\t\t\t\t.scale(self._y1)\n\t\t\t\t.orient(\"right\")\n            self._svg.selectAll(\"g.y1.axis\")\n\t\t\t\t.call(yAxisRight);\n\n            self._wasResizeHandled = true;\n        }\n\n        self._x = self._x\n\t\t\t.domain([minDate, maxDate]);\n\n        var xAxis = d3.svg.axis()\n\t\t\t.scale(self._x)\n\t\t\t.tickFormat(d3.time.format(\"%X\"))\n\t\t\t.orient(\"bottom\");\n\n        self._svg.selectAll(\"g.x.axis\")\n\t\t\t.call(xAxis);\n\n        self._previousBounds = {\n            maxVal0: maxVal[0],\n            maxVal1: maxVal[1],\n            minVal0: minVal[0],\n            minVal1: minVal[1],\n        };\n\n        if (!self._line) {\n            self._line = [\n                d3.svg.line()\n                .interpolate(\"monotone\")\n                .x(function (d) {\n                    return self._x(d.time);\n                })\n                .y(function (d) {\n                    return self._y0(d.data);\n                }),\n\n                d3.svg.line()\n                .interpolate(\"monotone\")\n                .x(function (d) {\n                    return self._x(d.time);\n                })\n                .y(function (d) {\n                    return self._y1(d.data);\n                })\n            ];\n        }\n\n        try {\n            var pos = 0;\n            for (var id in self._flows) {\n                var dataGUID = id;\n                var dataFlow = self._flows[id];\n                if (dataFlow.visible == false) continue;\n                var dataFlowVisuals = self._flowsVisuals[id];\n                var data = dataFlow.getData();\n                var yAxis = dataFlow.yAxis();\n\n                if (dataFlowVisuals.path == null) {\n                    dataFlowVisuals.path = self._svg.append(\"g\")\n\t\t\t\t\t\t.append(\"path\")\n\t\t\t\t\t\t.datum(data)\n\t\t\t\t\t\t.attr(\"class\", \"line\")\n\t\t\t\t\t\t.attr(\"d\", self._line[yAxis])\n\t\t\t\t\t\t.style(\"stroke\", function (d) {\n\t\t\t\t\t\t    return self._colors(dataGUID);\n\t\t\t\t\t\t});\n                }\n\n                dataFlowVisuals.path.datum(data)\n\t\t\t\t\t.attr(\"d\", self._line[yAxis]);\n\n                // draw alert points\n                for (var pnt in data) {\n                    if (typeof data[pnt].alertData == 'object') {\n                        if (!dataFlowVisuals.alerts.hasOwnProperty(data[pnt].time)) {\n                            var transferData = JSON.stringify({\n                                alertData: data[pnt].alertData,\n                                time: data[pnt].time,\n                                data: data[pnt].data\n                            });\n                            var alertVisual = dataFlowVisuals.alerts[data[pnt].time] = {};\n                            alertVisual.alertBarShowed = self._svg.append(\"g\").append(\"rect\")\n\t\t\t\t\t\t\t\t.attr(\"class\", \"bar\")\n\t\t\t\t\t\t\t\t.attr(\"x\", self._x(data[pnt].time))\n\t\t\t\t\t\t\t\t.attr(\"y\", 0)\n\t\t\t\t\t\t\t\t.attr(\"height\", self._height)\n\t\t\t\t\t\t\t\t.attr(\"width\", \"2px\")\n\t\t\t\t\t\t\t\t.style(\"fill\", \"#e6c9cd\")\n\n                            alertVisual.alertShowed = self._svg.append(\"g\").append(\"circle\")\n\t\t\t\t\t\t\t\t.attr(\"class\", \"d3-dot\")\n\t\t\t\t\t\t\t\t.attr(\"cx\", self._x(data[pnt].time))\n\t\t\t\t\t\t\t\t.attr(\"cy\", yAxis == 0 ? self._y0(data[pnt].data) : self._y1(data[pnt].data))\n\t\t\t\t\t\t\t\t.style(\"fill\", \"#e93541\")\n\t\t\t\t\t\t\t\t.attr(\"r\", displayHeight / 200)\n\t\t\t\t\t\t\t\t.on('mouseover', function () {\n\t\t\t\t\t\t\t\t    d3.select(this).transition().attr(\"r\", displayHeight / 130);\n\t\t\t\t\t\t\t\t    eval(\"self._tip.show(\" + transferData + \");\")\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.on('mouseout', function () {\n\t\t\t\t\t\t\t\t    d3.select(this).transition().attr(\"r\", displayHeight / 200);\n\t\t\t\t\t\t\t\t    self._tip.hide();\n\t\t\t\t\t\t\t\t});\n                        } else {\n                            var alertVisual = dataFlowVisuals.alerts[data[pnt].time];\n                            alertVisual.alertShowed.attr(\"cx\", self._x(data[pnt].time))\n\t\t\t\t\t\t\t\t.attr(\"cy\", yAxis == 0 ? self._y0(data[pnt].data) : self._y1(data[pnt].data));\n\n                            alertVisual.alertBarShowed\n\t\t\t\t\t\t\t\t.attr(\"x\", self._x(data[pnt].time))\n                        }\n                    }\n                }\n                if (dataFlowVisuals.legend == null) {\n                    dataFlowVisuals.legend_r = self._svg.append(\"rect\")\n\t\t\t\t\t\t.attr(\"class\", \"legend\")\n\t\t\t\t\t\t.attr(\"width\", 10)\n\t\t\t\t\t\t.attr(\"height\", 10)\n\t\t\t\t\t\t.attr(\"x\", self._width + 50)\n\t\t\t\t\t\t.attr(\"y\", 20 + (20 * pos))\n\t\t\t\t\t\t.style(\"fill\", self._colors(dataGUID))\n\t\t\t\t\t\t.style(\"stroke\", self._colors(dataGUID));\n\n                    dataFlowVisuals.legend = self._svg.append(\"text\")\n\t\t\t\t\t\t.attr(\"x\", self._width + 65)\n\t\t\t\t\t\t.attr(\"y\", 20 + (20 * pos) + 5)\n\t\t\t\t\t\t.attr(\"class\", \"legend\")\n\t\t\t\t\t\t.style(\"fill\", self._colors(dataGUID))\n\t\t\t\t\t\t.text(dataFlow.displayName());\n                } else {\n                    dataFlowVisuals.legend.text(dataFlow.displayName());\n                }\n                pos++;\n            }\n        } catch (e) {\n            console.log(e);\n        }\n    },\n\n    _onMessageAddGuid: function (evt) {\n        var self = this;\n\n        if (self._flows.hasOwnProperty(evt.owner)) {\n            self._flows[evt.owner].visible = true;\n        }\n    },\n    _onMessageRemoveGuid: function (evt) {\n        var self = this;\n\n        self.removeFlowVisual(evt.owner);\n        if (self._flows.hasOwnProperty(evt.owner)) {\n            self._flows[evt.owner].visible = false;\n        }\n    },\n    // private members\n    _onMessageHandler: function (eventObject) {\n        var self = this;\n        var evt = eventObject.owner;\n        // the message is data for the charts. find chart for message\n        if (evt.hasOwnProperty('guid') && self._flows.hasOwnProperty(evt.guid)) {\n            // check filter\n            //if (self._filter && !self._filter.checkGUID(evt.guid)) return;\n            // check event time\n            var now = new Date();\n            var cutoff = new Date(now - self._CONSTANTS.WINDOW_MINUTES * self._CONSTANTS.MS_PER_MINUTE)\n\n            if (evt.time < cutoff) {\n                return;\n            }\n\n            // add event\n            self.raiseEvent('newData', evt);\n\n            // check if nessasary to update\n            if (!self._isBulking) {\n                self.raiseEvent('update');\n            } else {\n                self.raiseEvent('loading', evt.displayname);\n            }\n        }\n    }\n};\n\nextendClass(d3Chart, baseClass);\n"
  },
  {
    "path": "Azure/WebSite/site/js/d3ChartControl.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nfunction d3ChartControl(containerId) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n    // create ul\n    self._containerId = containerId;\n    self._ulOptions = {};\n\n    this._onEventObjectHandler = function (event) {\n        self._onNewDataHandler.call(self, event);\n    };\n\n    return self;\n}\n\nd3ChartControl.prototype = {\n    constructor: d3ChartControl,\n    destroy: function () {\n        var self = this;\n        if (self._dataSource) {\n            self._dataSource.removeEventListener('eventObject', this._onEventObjectHandler);\n        }\n    },\n    /*\n        params = \n        {\n            guid: 'someGUID',\n            title: 'someTitle',\n            selected: false,        // default true\n            allOption: true         // if true, guid = 0 and it's main switcher for all\n        }\n    */\n    setOption: function (params) {\n        var self = this;\n\n        var guid = params.guid;\n        if (guid == undefined) return;\n\n        // check if exists or create new\n        if (!self._ulOptions.hasOwnProperty(params.guid)) {\n            self._ulOptions[guid] = {};\n            self._ulOptions[guid].li = $('<li><div style=\"display:inline-block\">' + params.title + \"</div></li>\").appendTo(\"#\" + self._containerId);\n            // set selected class\n            if (!params.hasOwnProperty('selected') || params.selected == true) {\n                self._ulOptions[guid].li.addClass('selected');\n            }\n            self._ulOptions[guid].state = self._ulOptions[guid].li.hasClass('selected');\n            // add click handler\n            self._ulOptions[guid].li.on('click', function (evt) {\n                if ($(this).hasClass('selected')) {\n                    $(this).removeClass('selected');\n                    self.raiseEvent('removeGuid', guid);\n                } else {\n                    $(this).addClass('selected');\n                    self.raiseEvent('addGuid', guid);\n                }\n                self._ulOptions[guid].state = self._ulOptions[guid].li.hasClass('selected');\n            });\n            \n            self._ulOptions[guid].li\n                .append('<div class=\"sensorTip\">' + 'Location: ' + params.location + '</div>');\n\n            self._ulOptions[guid].li.each(function () {\n                $(this).data('sensorTip', $(this).find('.sensorTip'));\n                $(this).data('sensorTip').hide();\n            });\n            self._ulOptions[guid].li.each(function() {\n                $(this).on('mouseover', function () {\n                    $(this).data('sensorTip').show();\n                });\n            });\n            self._ulOptions[guid].li.each(function () {\n                $(this).on('mouseout', function () {\n                    $(this).data('sensorTip').hide();\n                });\n            });\n        }\n\n        return self;\n    },\n    attachToDataSource: function (dataSource) {\n        var self = this;\n        // remebmer data source\n        self._dataSource = dataSource;\n\n        // register events handler\n        dataSource.addEventListener('eventObject', this._onEventObjectHandler);\n\n        return self;\n    },\n    // private members\n    _onNewDataHandler: function (eventObject) {\n        var self = this;\n        var evt = eventObject.owner;\n\n        // check GUID\n        if (!evt.guid || self._ulOptions.hasOwnProperty(evt.guid)) return;\n\n        // add new option\n        self.setOption({\n            guid: evt.guid,\n            title: evt.displayname,\n            location: evt.location ? evt.location : \"Unknown\"\n        });\n    },\n    checkGUID : function(guid) {\n        var self = this;\n        return (self._ulOptions.hasOwnProperty(guid) && self._ulOptions[guid].state);\n    }\n};\n\nextendClass(d3ChartControl, baseClass);"
  },
  {
    "path": "Azure/WebSite/site/js/d3DataFlow.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// create dataFlow with\n/*\nflowGUID : string,\nparams = {\n\tyMin : number,\n\tyMax : number,\n\tdisplayName : string,\n\tlabel : string,\n    filter : {}\n};*/\n\nfunction d3DataFlow(flowGUID, params) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n    // initialize object\n    self._guid = flowGUID;\n    self._yMin = params ? params.yMin : undefined;\n    self._yMax = params ? params.yMax : undefined;\n    self._displayName = params ? params.displayName : undefined;\n    self._label = params ? params.label : undefined;\n    self._filter = params ? params.filter : undefined;\n    self._CONSTANTS = {\n        MAX_ARRAY_SIZE: 1000\n    };\n\n    this._onEventObjectHandler = function (event) {\n        self._onNewDataHandler.call(self, event);\n    };\n\n    self.clearData();\n    return self;\n}\n\nd3DataFlow.prototype = {\n    constructor: d3DataFlow,\n    destroy: function () {\n        var self = this;\n        if (self._chart) {\n            self._chart.removeEventListener('newData', this._onEventObjectHandler);\n        }\n    },\n    attachToChart: function (chart) {\n        var self = this;\n        // remebmer data source\n        self._chart = chart;\n\n        // register events handler\n        chart.addEventListener('newData', this._onEventObjectHandler);\n\n        return self;\n    },\n    getGUID: function () {\n        return this._guid;\n    },\n    yMin: function (yMinNew) {\n        if (yMinNew != undefined) {\n            this._yMin = yMinNew;\n        }\n        return this._yMin;\n    },\n    yMax: function (yMaxNew) {\n        if (yMaxNew != undefined) {\n            this._yMax = yMaxNew;\n        }\n        return this._yMax;\n    },\n    displayName: function (displayNameNew) {\n        if (displayNameNew != undefined) {\n            this._displayName = displayNameNew;\n        }\n        return this._displayName;\n    },\n    label: function (labelNew) {\n        if (labelNew != undefined) {\n            this._label = labelNew;\n        }\n        return this._label;\n    },\n    yAxis: function (yAxisNew) {\n        if (yAxisNew != undefined) {\n            this._yAxis = yAxisNew;\n        }\n        return this._yAxis;\n    },\n    clearData: function () {\n        this._data = [];\n    },\n    cutData: function (cutoff) {\n        var len = this._data.length;\n        while (this._data.length >= 1 && this._data[0].time < cutoff) {\n            this._data.shift();\n        }\n        return len != this._data.length;\n    },\n    getData: function () {\n        return this._data;\n    },\n    addNewPoint: function (obj) {\n        var self = this;\n        var t = new Date(obj.time);\n        if (isNaN(t.getTime())) {\n            return;\n        }\n\n        var pushObj = {\n            data: obj.value,\n            time: new Date(obj.time)\n        };\n\n        if (obj.alerttype)\n            pushObj.alertData = { message: obj.message };\n\n\n        self._data.push(pushObj);\n\n        if (self._data.length >= self._CONSTANTS.MAX_ARRAY_SIZE) {\n            self._data.shift();\n            return;\n        }\n    },\n    // private members\n    _onNewDataHandler: function (evt) {\n        var self = this;\n        var object = evt.owner;\n        // check filter\n        if (self._filter) {\n            for (var id in self._filter) {\n                if (!object.hasOwnProperty(id) || object[id] != self._filter[id])\n                    return;\n            }\n        }\n        // check GUID\n        if (object.guid != self._guid) return;\n\n        // add to array\n        self.addNewPoint(object);\n\n        // update properties\n        self._updateProperties(object);\n    },\n    _updateProperties: function (eventObject) {\n        var self = this;\n\n        if (eventObject.hasOwnProperty(\"displayname\")) {\n            self.displayName(eventObject.displayname);\n        }\n\n        if (eventObject.hasOwnProperty(\"measurename\") && eventObject.hasOwnProperty(\"unitofmeasure\")) {\n            self.label(eventObject.measurename + \" (\" + eventObject.unitofmeasure + \")\");\n        }\n\n        self.raiseEvent('change', self);\n    }\n};\n\nextendClass(d3DataFlow, baseClass);"
  },
  {
    "path": "Azure/WebSite/site/js/d3DataSourceSocket.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// create new source\nfunction d3DataSourceSocket(uri, handlers) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n\n    // initialize object\n    self._websocket = new WebSocket(uri);\n    self._eventHandlers = {};\n\n    if (handlers) {\n        for (id in handlers) {\n            self.addEventListener(id, handlers[id]);\n        }\n    }\n\n    // register handlers\n    self._websocket.onopen = function () {\n        self.raiseEvent.call(self, 'open');\n    }\n\n    self._websocket.onerror = function (event) {\n        self.raiseEvent.call(self, 'error', event);\n    }\n\n    self._websocket.onmessage = function (event) {\n        self.raiseEvent.call(self, 'message', event);\n    }\n\n    return self;\n}\n\nd3DataSourceSocket.prototype = {\n    constructor: d3DataSourceSocket,\n    sendMessage: function (message) {\n        this._websocket.send(JSON.stringify(message));\n    },\n    closeSocket: function () {\n        this._websocket.close();\n    }\n};\n\nextendClass(d3DataSourceSocket, baseClass);"
  },
  {
    "path": "Azure/WebSite/site/js/d3utils.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\nfunction extendClass(Child, Parent) {\n    var F = function () {\n    };\n    F.prototype = Parent.prototype;\n    var f = new F();\n\n    for (var prop in Child.prototype)\n        f[prop] = Child.prototype[prop];\n    Child.prototype = f;\n    Child.prototype.superclass = Parent.prototype;\n}\n\nfunction deepCopy(obj) {\n    if (typeof obj != 'object') {\n        return obj;\n    }\n    var copy = obj.constructor();\n    for (var key in obj) {\n        if (typeof obj[key] == 'object' && obj[key] != null) {\n            copy[key] = this.deepCopy(obj[key]);\n        } else {\n            copy[key] = obj[key];\n        }\n    }\n    return copy;\n};\n\n/**\n * Base class initialization\n */\nfunction baseClass() {\n    // set protected properties\n    this._eventsListeners = {};\n}\n\nbaseClass.prototype = {\n    constructor: baseClass,\n    addEventListeners: function (callbacks) {\n        var self = this;\n        for (var id in callbacks) {\n            self.addEventListener(id, callbacks[id]);\n        }\n        return self;\n    },\n    addEventListener: function (eventName, callback) {\n        var self = this;\n\n        if (!self._eventsListeners.hasOwnProperty(eventName)) {\n            self._eventsListeners[eventName] = [];\n        }\n        self._eventsListeners[eventName].push(callback);\n\n        return self;\n    },\n\n    removeEventListener: function (eventName, callback) {\n        var self = this;\n\n        if (!self._eventsListeners.hasOwnProperty(eventName) || !self._eventsListeners[eventName].length)\n            return;\n        for (var i = this._eventsListeners[eventName].length; i > 0; --i)\n            if (self._eventsListeners[eventName][i - 1] === callback) {\n                self._eventsListeners[eventName].splice(i - 1, 1);\n                break;\n            }\n\n        return self;\n    },\n\n    raiseEvent: function (eventName, owner) {\n        if (!this._eventsListeners.hasOwnProperty(eventName) || !this._eventsListeners[eventName].length)\n            return;\n        var context = {\n            name: eventName,\n            source: this,\n            owner: owner,\n            handled: false\n        };\n        var evFuncs = this._eventsListeners[eventName];\n        for (var i = evFuncs.length; i > 0; --i) {\n            evFuncs[i - 1].call(this, context);\n            // if handled - stop event handling\n            if (context.handled)\n                break;\n        }\n    },\n};\n"
  },
  {
    "path": "Azure/WebSite/site/js/devicesList.js",
    "content": "﻿function updateDevicesList() {\n    // Get the devices list from the server\n    PageMethods.GetDevicesList(ListSuccess, Failure);\n}\n\nvar addDeviceDialog, addDeviceForm, confirmDeleteDeviceDialog;\n\nfunction addNewDevice()\n{\n    var newDeviceID = $(\"#newdeviceid\").val();\n    addDeviceDialog.dialog(\"close\");\n    PageMethods.AddDevice(newDeviceID, AddSuccess, Failure);\n}\n\nfunction deleteDevice(deviceID)\n{\n    var id = deviceID;\n    confirmDeleteDeviceDialog.dialog(\"close\");\n    PageMethods.DeleteDevice(id, DeleteSuccess, Failure);\n}\n\naddDeviceDialog = $(\"#add-device-dialog-form\").dialog({\n    autoOpen: false,\n    height: \"auto\",\n    width: 400,\n    modal: true,\n    buttons: {\n        \"Ok\": addNewDevice,\n        Cancel: function () {\n            addDeviceDialog.dialog(\"close\");\n        }\n    },\n    close: function () {\n        addDeviceForm[0].reset();\n    }\n});\n\nconfirmDeleteDeviceDialog = $(\"#delete-device-dialog-confirm\").dialog({\n    autoOpen: false,\n    resizable: false,\n    height: \"auto\",\n    width: 400,\n    modal: true,\n    buttons: {\n        \"Delete device\": function () {\n            deleteDevice(confirmDeleteDeviceDialog.data('deviceID'));\n        },\n        Cancel: function () {\n            confirmDeleteDeviceDialog.dialog(\"close\");\n        }\n    }\n});\n\n\naddDeviceForm = addDeviceDialog.find(\"form\").on(\"submit\", function (event) {\n    event.preventDefault();\n    addNewDevice();\n});\n\n//function addDevice()\n//{\n//    var deviceName = prompt(\"Enter a unique Device Id\");\n//    if (deviceName)\n//        PageMethods.AddDevice(deviceName, AddSuccess, Failure);\n//}\n\n//function deleteDevice() {\n//    var deviceName = prompt(\"Enter the IoT Hub ID of the device you want to remove\");\n//    if (deviceName)\n//        PageMethods.DeleteDevice(deviceName, DeleteSuccess, Failure);\n//}\n\nfunction ListSuccess(result) {\n    if (result) {\n        var devicesList = JSON.parse(result);\n        var table = $('#devicesTable').DataTable();\n\n        // Check if we need to remove a row from the table\n        var rowsToRemove=[];\n        for (var rowIndex = 0; rowIndex < table.rows().eq(0).length; rowIndex++) {\n            for (var deviceIdx = 0 ; deviceIdx < devicesList.length ; deviceIdx++)\n            {\n                if (devicesList[deviceIdx]['guid'] == table.cell(rowIndex, 3).data()) {\n                    rowsToRemove[rowsToRemove.length] = rowIndex;\n                    break;\n                }\n            }\n        }\n        for (var idx = rowsToRemove.length; idx > 0 ; idx--)\n        {\n            table.rows(idx).remove().draw();\n        }\n\n        // Check if we need to update or add a row in the table\n        for (var deviceIndex = 0 ; deviceIndex < devicesList.length; deviceIndex++) {\n            var device = devicesList[deviceIndex];\n            var location = 'unknown';\n            if (device['location'] != null) location = device['location'];\n            var ipaddress = 'unknown';\n            if (device['ipaddress'] != null) ipaddress = device['ipaddress'];\n            var displayname = 'unknown';\n            if (device['displayname'] != null) displayname = device['displayname'];\n            var connectionstring = 'unknown';\n            if (device['connectionstring'] != null) connectionstring = device['connectionstring'];\n\n            var addRow = true;\n\n            if (table.rows().length > 0) {\n                // Check if we already have this one in the table already to prevent duplicates\n                var indexes = table.rows().eq(0).filter(function (rowIdx) {\n                    if (\n                        table.cell(rowIdx, 3).data() == device['guid']) {\n                        // Update the row\n                        table.cell(rowIdx, 0).innerHTML = displayname;\n                        table.cell(rowIdx, 1).innerHTML = location;\n                        table.cell(rowIdx, 2).innerHTML = ipaddress;\n                        if ($('#cscolumn').is(':visible')) {\n                            table.cell(rowIdx, 4).innerHTML = connectionstring;\n                        }\n                        return true;\n                    }\n                    return false;\n                });\n                // if the device is already in the list, return.\n                if (indexes.length != 0) addRow = false;\n            }\n\n            // The device is a new one, lets add it to the table\n            if (addRow == true) {\n                if ($('#cscolumn').is(':visible')) {\n                    table.row.add([\n                        displayname,\n                        location,\n                        ipaddress,\n                        device['guid'],\n                        connectionstring\n                    ]).draw();\n                } else {\n                    table.row.add([\n                        displayname,\n                        location,\n                        ipaddress,\n                        device['guid']\n                    ]).draw();\n                }\n            }\n        }\n    }\n}\n\nfunction AddSuccess(result) {\n    if (result) {\n        var resultObject = JSON.parse(result);\n        if (resultObject.Error) \n        {\n            addOutputToConsole('ERROR ' + resultObject.Error);\n            alert(resultObject.Error);\n        } else {\n            addOutputToConsole('Device ' + resultObject.Device + ' added to IoT Hub');\n            updateDevicesList();\n        }\n    } else {\n        addOutputToConsole('An error happened while trying to add a new device');\n        alert(\"An error happened while trying to add a new device\");\n    }\n}\n\nfunction DeleteSuccess(result) {\n    if (result) {\n        var resultObject = JSON.parse(result);\n        if (resultObject.Error) {\n            addOutputToConsole('ERROR ' + resultObject.Error);\n            alert(resultObject.Error);\n        } else {\n            addOutputToConsole('Device ' + resultObject.Device + ' deleted from IoT Hub');\n            updateDevicesList();\n        }\n    } else {\n        addOutputToConsole('An error happened while trying to delete the device');\n        alert('An error happened while trying to delete the device');\n    }\n}\n\nfunction Failure(error) {\n    addOutputToConsole(error);\n    alert(error);\n}\n\n"
  },
  {
    "path": "Azure/WebSite/site/js/jquery.ui-contextmenu.js",
    "content": "/*******************************************************************************\n * jquery.ui-contextmenu.js plugin.\n *\n * jQuery plugin that provides a context menu (based on the jQueryUI menu widget).\n *\n * @see https://github.com/mar10/jquery-ui-contextmenu\n *\n * Copyright (c) 2013-2016, Martin Wendt (http://wwWendt.de). Licensed MIT.\n */\n\n(function( factory ) {\n\t\"use strict\";\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([ \"jquery\", \"jquery-ui/menu\" ], factory );\n\t} else {\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n\"use strict\";\n\nvar supportSelectstart = \"onselectstart\" in document.createElement(\"div\"),\n\tmatch = $.ui.menu.version.match(/^(\\d)\\.(\\d+)/),\n\tuiVersion = {\n\t\tmajor: parseInt(match[1], 10),\n\t\tminor: parseInt(match[2], 10)\n\t},\n\tisLTE110 = ( uiVersion.major < 2 && uiVersion.minor <= 10 ),\n\tisLTE111 = ( uiVersion.major < 2 && uiVersion.minor <= 11 );\n\n$.widget(\"moogle.contextmenu\", {\n\tversion: \"@VERSION\",\n\toptions: {\n\t\taddClass: \"ui-contextmenu\",  // Add this class to the outer <ul>\n\t\tautoFocus: false,      // Set keyboard focus to first entry on open\n\t\tautoTrigger: true,    // open menu on browser's `contextmenu` event\n\t\tdelegate: null,       // selector\n\t\thide: { effect: \"fadeOut\", duration: \"fast\" },\n\t\tignoreParentSelect: true, // Don't trigger 'select' for sub-menu parents\n\t\tmenu: null,           // selector or jQuery pointing to <UL>, or a definition hash\n\t\tposition: null,       // popup positon\n\t\tpreventContextMenuForPopup: false, // prevent opening the browser's system\n\t\t\t\t\t\t\t\t\t\t   // context menu on menu entries\n\t\tpreventSelect: false, // disable text selection of target\n\t\tshow: { effect: \"slideDown\", duration: \"fast\" },\n\t\ttaphold: false,       // open menu on taphold events (requires external plugins)\n\t\tuiMenuOptions: {},\t  // Additional options, used when UI Menu is created\n\t\t// Events:\n\t\tbeforeOpen: $.noop,   // menu about to open; return `false` to prevent opening\n\t\tblur: $.noop,         // menu option lost focus\n\t\tclose: $.noop,        // menu was closed\n\t\tcreate: $.noop,       // menu was initialized\n\t\tcreateMenu: $.noop,   // menu was initialized (original UI Menu)\n\t\tfocus: $.noop,        // menu option got focus\n\t\topen: $.noop,         // menu was opened\n\t\tselect: $.noop        // menu option was selected; return `false` to prevent closing\n\t},\n\t/** Constructor */\n\t_create: function() {\n\t\tvar cssText, eventNames, targetId,\n\t\t\topts = this.options;\n\n\t\tthis.$headStyle = null;\n\t\tthis.$menu = null;\n\t\tthis.menuIsTemp = false;\n\t\tthis.currentTarget = null;\n\t\tthis.previousFocus = null;\n\n\t\tif (opts.preventSelect) {\n\t\t\t// Create a global style for all potential menu targets\n\t\t\t// If the contextmenu was bound to `document`, we apply the\n\t\t\t// selector relative to the <body> tag instead\n\t\t\ttargetId = ($(this.element).is(document) ? $(\"body\")\n\t\t\t\t: this.element).uniqueId().attr(\"id\");\n\t\t\tcssText = \"#\" + targetId + \" \" + opts.delegate + \" { \" +\n\t\t\t\t\t\"-webkit-user-select: none; \" +\n\t\t\t\t\t\"-khtml-user-select: none; \" +\n\t\t\t\t\t\"-moz-user-select: none; \" +\n\t\t\t\t\t\"-ms-user-select: none; \" +\n\t\t\t\t\t\"user-select: none; \" +\n\t\t\t\t\t\"}\";\n\t\t\tthis.$headStyle = $(\"<style class='moogle-contextmenu-style' />\")\n\t\t\t\t.prop(\"type\", \"text/css\")\n\t\t\t\t.appendTo(\"head\");\n\n\t\t\ttry {\n\t\t\t\tthis.$headStyle.html(cssText);\n\t\t\t} catch ( e ) {\n\t\t\t\t// issue #47: fix for IE 6-8\n\t\t\t\tthis.$headStyle[0].styleSheet.cssText = cssText;\n\t\t\t}\n\t\t\t// TODO: the selectstart is not supported by FF?\n\t\t\tif (supportSelectstart) {\n\t\t\t\tthis.element.delegate(opts.delegate, \"selectstart\" + this.eventNamespace,\n\t\t\t\t\t\t\t\t\t  function(event) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._createUiMenu(opts.menu);\n\n\t\teventNames = \"contextmenu\" + this.eventNamespace;\n\t\tif (opts.taphold) {\n\t\t\teventNames += \" taphold\" + this.eventNamespace;\n\t\t}\n\t\tthis.element.delegate(opts.delegate, eventNames, $.proxy(this._openMenu, this));\n\t},\n\t/** Destructor, called on $().contextmenu(\"destroy\"). */\n\t_destroy: function() {\n\t\tthis.element.undelegate(this.eventNamespace);\n\n\t\tthis._createUiMenu(null);\n\n\t\tif (this.$headStyle) {\n\t\t\tthis.$headStyle.remove();\n\t\t\tthis.$headStyle = null;\n\t\t}\n\t},\n\t/** (Re)Create jQuery UI Menu. */\n\t_createUiMenu: function(menuDef) {\n\t\tvar ct,\n\t\t\topts = this.options;\n\n\t\t// Remove temporary <ul> if any\n\t\tif (this.isOpen()) {\n\t\t\t// #58: 'replaceMenu' in beforeOpen causing select: to lose ui.target\n\t\t\tct = this.currentTarget;\n\t\t\t// close without animation, to force async mode\n\t\t\tthis._closeMenu(true);\n\t\t\tthis.currentTarget = ct;\n\t\t}\n\t\tif (this.menuIsTemp) {\n\t\t\tthis.$menu.remove(); // this will also destroy ui.menu\n\t\t} else if (this.$menu) {\n\t\t\tthis.$menu\n\t\t\t\t.menu(\"destroy\")\n\t\t\t\t.removeClass(this.options.addClass)\n\t\t\t\t.hide();\n\t\t}\n\t\tthis.$menu = null;\n\t\tthis.menuIsTemp = false;\n\t\t// If a menu definition array was passed, create a hidden <ul>\n\t\t// and generate the structure now\n\t\tif ( !menuDef ) {\n\t\t\treturn;\n\t\t} else if ($.isArray(menuDef)) {\n\t\t\tthis.$menu = $.moogle.contextmenu.createMenuMarkup(menuDef);\n\t\t\tthis.menuIsTemp = true;\n\t\t}else if ( typeof menuDef === \"string\" ) {\n\t\t\tthis.$menu = $(menuDef);\n\t\t} else {\n\t\t\tthis.$menu = menuDef;\n\t\t}\n\t\t// Create - but hide - the jQuery UI Menu widget\n\t\tthis.$menu\n\t\t\t.hide()\n\t\t\t.addClass(opts.addClass)\n\t\t\t// Create a menu instance that delegates events to our widget\n\t\t\t.menu($.extend(true, {}, opts.uiMenuOptions, {\n\t\t\t\titems: \"> :not(.ui-widget-header)\",\n\t\t\t\tblur: $.proxy(opts.blur, this),\n\t\t\t\tcreate: $.proxy(opts.createMenu, this),\n\t\t\t\tfocus: $.proxy(opts.focus, this),\n\t\t\t\tselect: $.proxy(function(event, ui) {\n\t\t\t\t\t// User selected a menu entry\n\t\t\t\t\tvar retval,\n\t\t\t\t\t\tisParent = $.moogle.contextmenu.isMenu(ui.item),\n\t\t\t\t\t\tactionHandler = ui.item.data(\"actionHandler\");\n\n\t\t\t\t\tui.cmd = ui.item.attr(\"data-command\");\n\t\t\t\t\tui.target = $(this.currentTarget);\n\t\t\t\t\t// ignore clicks, if they only open a sub-menu\n\t\t\t\t\tif ( !isParent || !opts.ignoreParentSelect) {\n\t\t\t\t\t\tretval = this._trigger.call(this, \"select\", event, ui);\n\t\t\t\t\t\tif ( actionHandler ) {\n\t\t\t\t\t\t\tretval = actionHandler.call(this, event, ui);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( retval !== false ) {\n\t\t\t\t\t\t\tthis._closeMenu.call(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t}));\n\t},\n\t/** Open popup (called on 'contextmenu' event). */\n\t_openMenu: function(event, recursive) {\n\t\tvar res, promise,\n\t\t\topts = this.options,\n\t\t\tposOption = opts.position,\n\t\t\tself = this,\n\t\t\tmanualTrigger = !!event.isTrigger,\n\t\t\tui = { menu: this.$menu, target: $(event.target),\n\t\t\t\t   extraData: event._extraData, originalEvent: event,\n\t\t\t\t   result: null };\n\n\t\tif ( !opts.autoTrigger && !manualTrigger ) {\n\t\t\t// ignore browser's `contextmenu` events\n\t\t\treturn;\n\t\t}\n\n\t\t// Prevent browser from opening the system context menu\n\t\tevent.preventDefault();\n\n\t\tthis.currentTarget = event.target;\n\n\t\tif ( !recursive ) {\n\t\t\tres = this._trigger(\"beforeOpen\", event, ui);\n\t\t\tpromise = (ui.result && $.isFunction(ui.result.promise)) ? ui.result : null;\n\t\t\tui.result = null;\n\t\t\tif ( res === false ) {\n\t\t\t\tthis.currentTarget = null;\n\t\t\t\treturn false;\n\t\t\t} else if ( promise ) {\n\t\t\t\t// Handler returned a Deferred or Promise. Delay menu open until\n\t\t\t\t// the promise is resolved\n\t\t\t\tpromise.done(function() {\n\t\t\t\t\tself._openMenu(event, true);\n\t\t\t\t});\n\t\t\t\tthis.currentTarget = null;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tui.menu = this.$menu; // Might have changed in beforeOpen\n\t\t}\n\n\t\t// Register global event handlers that close the dropdown-menu\n\t\t$(document).bind(\"keydown\" + this.eventNamespace, function(event) {\n\t\t\tif ( event.which === $.ui.keyCode.ESCAPE ) {\n\t\t\t\tself._closeMenu();\n\t\t\t}\n\t\t}).bind(\"mousedown\" + this.eventNamespace + \" touchstart\" + this.eventNamespace,\n\t\t\t\tfunction(event) {\n\t\t\t// Close menu when clicked outside menu\n\t\t\tif ( !$(event.target).closest(\".ui-menu-item\").length ) {\n\t\t\t\tself._closeMenu();\n\t\t\t}\n\t\t});\n\n\t\t// required for custom positioning (issue #18 and #13).\n\t\tif ($.isFunction(posOption)) {\n\t\t\tposOption = posOption(event, ui);\n\t\t}\n\t\tposOption = $.extend({\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\t// if called by 'open' method, event does not have pageX/Y\n\t\t\tof: (event.pageX === undefined) ? event.target : event,\n\t\t\tcollision: \"fit\"\n\t\t}, posOption);\n\n\t\t// Finally display the popup\n\t\tthis.$menu\n\t\t\t.show() // required to fix positioning error\n\t\t\t.css({\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t}).position(posOption)\n\t\t\t.hide(); // hide again, so we can apply nice effects\n\n\t\tif ( opts.preventContextMenuForPopup ) {\n\t\t\tthis.$menu.bind(\"contextmenu\" + this.eventNamespace, function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t\t}\n\t\tthis._show(this.$menu, opts.show, function() {\n\t\t\t// Set focus to first active menu entry\n\t\t\tif ( opts.autoFocus ) {\n\t\t\t\t// var $first = self.$menu.children(\".ui-menu-item:enabled:first\");\n\t\t\t\t// self.$menu.menu(\"focus\", event, $first).focus();\n\t\t\t\tself.$menu.focus();\n\t\t\t\tself.previousFocus = $(event.target);\n\t\t\t}\n\t\t\tself._trigger.call(self, \"open\", event, ui);\n\t\t});\n\t},\n\t/** Close popup. */\n\t_closeMenu: function(immediately) {\n\t\tvar self = this,\n\t\t\thideOpts = immediately ? false : this.options.hide;\n\n\t\t// Note: we don't want to unbind the 'contextmenu' event\n\t\t$(document)\n\t\t\t.unbind(\"mousedown\" + this.eventNamespace)\n\t\t\t.unbind(\"touchstart\" + this.eventNamespace)\n\t\t\t.unbind(\"keydown\" + this.eventNamespace);\n\n\t\tself.currentTarget = null; // issue #44 after hide animation is too late\n\t\tif ( this.$menu ) { // #88: widget might have been destroyed already\n\t\t\tthis.$menu\n\t\t\t\t.unbind(\"contextmenu\" + this.eventNamespace);\n\t\t\tthis._hide(this.$menu, hideOpts, function() {\n\t\t\t\tif ( self.previousFocus ) {\n\t\t\t\t\tself.previousFocus.focus();\n\t\t\t\t\tself.previousFocus = null;\n\t\t\t\t}\n\t\t\t\tself._trigger(\"close\");\n\t\t\t});\n\t\t} else {\n\t\t\tself._trigger(\"close\");\n\t\t}\n\t},\n\t/** Handle $().contextmenu(\"option\", key, value) calls. */\n\t_setOption: function(key, value) {\n\t\tswitch (key) {\n\t\tcase \"menu\":\n\t\t\tthis.replaceMenu(value);\n\t\t\tbreak;\n\t\t}\n\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t},\n\t/** Return ui-menu entry (<LI> tag). */\n\t_getMenuEntry: function(cmd) {\n\t\treturn this.$menu.find(\"li[data-command=\" + cmd + \"]\");\n\t},\n\t/** Close context menu. */\n\tclose: function() {\n\t\tif (this.isOpen()) {\n\t\t\tthis._closeMenu();\n\t\t}\n\t},\n\t/** Enable or disable the menu command. */\n\tenableEntry: function(cmd, flag) {\n\t\tthis._getMenuEntry(cmd).toggleClass(\"ui-state-disabled\", (flag === false));\n\t},\n\t/** Return Menu element (UL). */\n\tgetMenu: function() {\n\t\treturn this.$menu;\n\t},\n\t/** Return true if menu is open. */\n\tisOpen: function() {\n//            return this.$menu && this.$menu.is(\":visible\");\n\t\treturn !!this.$menu && !!this.currentTarget;\n\t},\n\t/** Open context menu on a specific target (must match options.delegate)\n\t *  Optional `extraData` is passed to event handlers as `ui.extraData`.\n\t */\n\topen: function(targetOrEvent, extraData) {\n\t\t// Fake a 'contextmenu' event\n\t\textraData = extraData || {};\n\n\t\tvar isEvent = (targetOrEvent && targetOrEvent.type && targetOrEvent.target),\n\t\t\tevent =  isEvent ? targetOrEvent : {},\n\t\t\ttarget = isEvent ? targetOrEvent.target : targetOrEvent,\n\t\t\te = jQuery.Event(\"contextmenu\", {\n\t\t\t\ttarget: $(target).get(0),\n\t\t\t\tpageX: event.pageX,\n\t\t\t\tpageY: event.pageY,\n\t\t\t\toriginalEvent: isEvent ? targetOrEvent : undefined,\n\t\t\t\t_extraData: extraData\n\t\t\t});\n\t\treturn this.element.trigger(e);\n\t},\n\t/** Replace the menu altogether. */\n\treplaceMenu: function(data) {\n\t\tthis._createUiMenu(data);\n\t},\n\t/** Redefine menu entry (title or all of it). */\n\tsetEntry: function(cmd, entry) {\n\t\tvar $ul,\n\t\t\t$entryLi = this._getMenuEntry(cmd);\n\n\t\tif (typeof entry === \"string\") {\n\t\t\t$.moogle.contextmenu.updateTitle($entryLi, entry);\n\t\t} else {\n\t\t\t$entryLi.empty();\n\t\t\tentry.cmd = entry.cmd || cmd;\n\t\t\t$.moogle.contextmenu.createEntryMarkup(entry, $entryLi);\n\t\t\tif ($.isArray(entry.children)) {\n\t\t\t\t$ul = $(\"<ul/>\").appendTo($entryLi);\n\t\t\t\t$.moogle.contextmenu.createMenuMarkup(entry.children, $ul);\n\t\t\t}\n\t\t\tthis.getMenu().menu(\"refresh\");\n\t\t}\n\t},\n\t/** Show or hide the menu command. */\n\tshowEntry: function(cmd, flag) {\n\t\tthis._getMenuEntry(cmd).toggle(flag !== false);\n\t}\n});\n\n/*\n * Global functions\n */\n$.extend($.moogle.contextmenu, {\n\t/** Convert a menu description into a into a <li> content. */\n\tcreateEntryMarkup: function(entry, $parentLi) {\n\t\tvar $wrapper = null;\n\n\t\t$parentLi.attr(\"data-command\", entry.cmd);\n\n\t\tif ( !/[^\\-\\u2014\\u2013\\s]/.test( entry.title ) ) {\n\t\t\t// hyphen, em dash, en dash: separator as defined by UI Menu 1.10\n\t\t\t$parentLi.text(entry.title);\n\t\t} else {\n\t\t\tif ( isLTE110 ) {\n\t\t\t\t// jQuery UI Menu 1.10 or before required an `<a>` tag\n\t\t\t\t$wrapper = $(\"<a/>\", {\n\t\t\t\t\t\thtml: \"\" + entry.title,\n\t\t\t\t\t\thref: \"#\"\n\t\t\t\t\t}).appendTo($parentLi);\n\n\t\t\t\tif ( entry.uiIcon ) {\n\t\t\t\t\t$wrapper.append($(\"<span class='ui-icon' />\").addClass(entry.uiIcon));\n\t\t\t\t}\n\n\t\t\t} else if ( isLTE111 ) {\n\t\t\t\t// jQuery UI Menu 1.11 preferes to avoid `<a>` tags\n\t\t\t\t$parentLi.html(\"\" + entry.title);\n\t\t\t\tif ( $.isFunction(entry.action) ) {\n\t\t\t\t\t$parentLi.data(\"actionHandler\", entry.action);\n\t\t\t\t}\n\t\t\t\tif ( entry.uiIcon ) {\n\t\t\t\t\t$parentLi\n\t\t\t\t\t\t.append($(\"<span class='ui-icon' />\")\n\t\t\t\t\t\t.addClass(entry.uiIcon));\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// jQuery UI Menu 1.12 introduced `<div>` wrappers\n\t\t\t\t$wrapper = $(\"<div/>\", {\n\t\t\t\t\t\thtml: \"\" + entry.title\n\t\t\t\t\t}).appendTo($parentLi);\n\t\t\t\tif ( entry.uiIcon ) {\n\t\t\t\t\t$wrapper.append($(\"<span class='ui-icon' />\").addClass(entry.uiIcon));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( $.isFunction(entry.action) ) {\n\t\t\t\t$parentLi.data(\"actionHandler\", entry.action);\n\t\t\t}\n\t\t\tif ( entry.disabled ) {\n\t\t\t\t$parentLi.addClass(\"ui-state-disabled\");\n\t\t\t}\n\t\t\tif ( entry.isHeader ) {\n\t\t\t\t$parentLi.addClass(\"ui-widget-header\");\n\t\t\t}\n\t\t\tif ( entry.addClass ) {\n\t\t\t\t$parentLi.addClass(entry.addClass);\n\t\t\t}\n\t\t\tif ( $.isPlainObject(entry.data) ) {\n\t\t\t\t$parentLi.data(entry.data);\n\t\t\t}\n\t\t\tif ( entry.tooltip != null ) {\n\t\t\t\t$parentLi.attr(\"title\", entry.tooltip);\n\t\t\t}\n\t\t}\n\t},\n\t/** Convert a nested array of command objects into a <ul> structure. */\n\tcreateMenuMarkup: function(options, $parentUl) {\n\t\tvar i, menu, $ul, $li;\n\t\tif ( $parentUl == null ) {\n\t\t\t$parentUl = $(\"<ul class='ui-helper-hidden' />\").appendTo(\"body\");\n\t\t}\n\t\tfor (i = 0; i < options.length; i++) {\n\t\t\tmenu = options[i];\n\t\t\t$li = $(\"<li/>\").appendTo($parentUl);\n\n\t\t\t$.moogle.contextmenu.createEntryMarkup(menu, $li);\n\n\t\t\tif ( $.isArray(menu.children) ) {\n\t\t\t\t$ul = $(\"<ul/>\").appendTo($li);\n\t\t\t\t$.moogle.contextmenu.createMenuMarkup(menu.children, $ul);\n\t\t\t}\n\t\t}\n\t\treturn $parentUl;\n\t},\n\t/** Returns true if the menu item has child menu items */\n\tisMenu: function(item) {\n\t\tif ( isLTE110 ) {\n\t\t\treturn item.has(\">a[aria-haspopup='true']\").length > 0;\n\t\t} else if ( isLTE111 ) {  // jQuery UI 1.11 used no tag wrappers\n\t\t\treturn item.is(\"[aria-haspopup='true']\");\n\t\t} else {\n\t\t\treturn item.has(\">div[aria-haspopup='true']\").length > 0;\n\t\t}\n\t},\n\t/** Replaces the value of elem's first text node child */\n\treplaceFirstTextNodeChild: function(elem, text) {\n\t\telem\n\t\t\t.contents()\n\t\t\t.filter(function() { return this.nodeType === 3; })\n\t\t\t.first()\n\t\t\t.replaceWith(text);\n\t},\n\t/** Updates the menu item's title */\n\tupdateTitle: function(item, title) {\n\t\tif ( isLTE110 ) {  // jQuery UI 1.10 and before used <a> tags\n\t\t\t$.moogle.contextmenu.replaceFirstTextNodeChild($(\"a\", item), title);\n\t\t} else if ( isLTE111 ) {  // jQuery UI 1.11 used no tag wrappers\n\t\t\t$.moogle.contextmenu.replaceFirstTextNodeChild(item, title);\n\t\t} else {  // jQuery UI 1.12+ introduced <div> tag wrappers\n\t\t\t$.moogle.contextmenu.replaceFirstTextNodeChild($(\"div\", item), title);\n\t\t}\n\t}\n});\n\n}));\n"
  },
  {
    "path": "Azure/WebSite/site/js/qrcode.js",
    "content": "/**\n * @fileoverview\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\n * - this library has no dependencies.\n * \n * @author davidshimjs\n * @see <a href=\"http://www.d-project.com/\" target=\"_blank\">http://www.d-project.com/</a>\n * @see <a href=\"http://jeromeetienne.github.com/jquery-qrcode/\" target=\"_blank\">http://jeromeetienne.github.com/jquery-qrcode/</a>\n */\nvar QRCode;\n\n(function () {\n\t//---------------------------------------------------------------------\n\t// QRCode for JavaScript\n\t//\n\t// Copyright (c) 2009 Kazuhiko Arase\n\t//\n\t// URL: http://www.d-project.com/\n\t//\n\t// Licensed under the MIT license:\n\t//   http://www.opensource.org/licenses/mit-license.php\n\t//\n\t// The word \"QR Code\" is registered trademark of \n\t// DENSO WAVE INCORPORATED\n\t//   http://www.denso-wave.com/qrcode/faqpatent-e.html\n\t//\n\t//---------------------------------------------------------------------\n\tfunction QR8bitByte(data) {\n\t\tthis.mode = QRMode.MODE_8BIT_BYTE;\n\t\tthis.data = data;\n\t\tthis.parsedData = [];\n\n\t\t// Added to support UTF-8 Characters\n\t\tfor (var i = 0, l = this.data.length; i < l; i++) {\n\t\t\tvar byteArray = [];\n\t\t\tvar code = this.data.charCodeAt(i);\n\n\t\t\tif (code > 0x10000) {\n\t\t\t\tbyteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n\t\t\t\tbyteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[3] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x800) {\n\t\t\t\tbyteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[2] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x80) {\n\t\t\t\tbyteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n\t\t\t\tbyteArray[1] = 0x80 | (code & 0x3F);\n\t\t\t} else {\n\t\t\t\tbyteArray[0] = code;\n\t\t\t}\n\n\t\t\tthis.parsedData.push(byteArray);\n\t\t}\n\n\t\tthis.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n\t\tif (this.parsedData.length != this.data.length) {\n\t\t\tthis.parsedData.unshift(191);\n\t\t\tthis.parsedData.unshift(187);\n\t\t\tthis.parsedData.unshift(239);\n\t\t}\n\t}\n\n\tQR8bitByte.prototype = {\n\t\tgetLength: function (buffer) {\n\t\t\treturn this.parsedData.length;\n\t\t},\n\t\twrite: function (buffer) {\n\t\t\tfor (var i = 0, l = this.parsedData.length; i < l; i++) {\n\t\t\t\tbuffer.put(this.parsedData[i], 8);\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n\t\tthis.typeNumber = typeNumber;\n\t\tthis.errorCorrectLevel = errorCorrectLevel;\n\t\tthis.modules = null;\n\t\tthis.moduleCount = 0;\n\t\tthis.dataCache = null;\n\t\tthis.dataList = [];\n\t}\n\n\tQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\n\treturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}\n\tthis.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}\n\tif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\n\tthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\n\treturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}\n\treturn qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}\n\tthis.modules[r][6]=(r%2==0);}\n\tfor(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}\n\tthis.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}\n\tfor(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\n\tfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\n\tfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\n\tthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}\n\tvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\n\tthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\n\trow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}\n\tvar totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}\n\tif(buffer.getLengthInBits()>totalDataCount*8){throw new Error(\"code length overflow. (\"\n\t+buffer.getLengthInBits()\n\t+\">\"\n\t+totalDataCount*8\n\t+\")\");}\n\tif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\n\twhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\n\twhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\n\tbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\n\tbuffer.put(QRCodeModel.PAD1,8);}\n\treturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}\n\toffset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}\n\tvar totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}\n\tvar data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}\n\tfor(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}\n\treturn data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\n\treturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\n\treturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\n\treturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error(\"bad maskPattern:\"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}\n\treturn a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error(\"mode:\"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error(\"mode:\"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error(\"mode:\"+mode);}}else{throw new Error(\"type:\"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}\n\tfor(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}\n\tif(r==0&&c==0){continue;}\n\tif(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}\n\tif(sameCount>5){lostPoint+=(3+sameCount-5);}}}\n\tfor(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}\n\tfor(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}\n\tfor(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}\n\tvar darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}\n\tvar ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error(\"glog(\"+n+\")\");}\n\treturn QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}\n\twhile(n>=256){n-=255;}\n\treturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}\n\tfor(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}\n\tfor(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}\n\tfunction QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+\"/\"+shift);}\n\tvar offset=0;while(offset<num.length&&num[offset]==0){offset++;}\n\tthis.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}\n\tQRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}\n\treturn new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}\n\tvar ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}\n\tfor(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}\n\treturn new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}\n\tQRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error(\"bad rs block @ typeNumber:\"+typeNumber+\"/errorCorrectLevel:\"+errorCorrectLevel);}\n\tvar length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}\n\treturn list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}\n\tQRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\n\tif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\n\tthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\n\t\n\tfunction _isSupportCanvas() {\n\t\treturn typeof CanvasRenderingContext2D != \"undefined\";\n\t}\n\t\n\t// android 2.x doesn't support Data-URI spec\n\tfunction _getAndroid() {\n\t\tvar android = false;\n\t\tvar sAgent = navigator.userAgent;\n\t\t\n\t\tif (/android/i.test(sAgent)) { // android\n\t\t\tandroid = true;\n\t\t\tvar aMat = sAgent.toString().match(/android ([0-9]\\.[0-9])/i);\n\t\t\t\n\t\t\tif (aMat && aMat[1]) {\n\t\t\t\tandroid = parseFloat(aMat[1]);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn android;\n\t}\n\t\n\tvar svgDrawer = (function() {\n\n\t\tvar Drawing = function (el, htOption) {\n\t\t\tthis._el = el;\n\t\t\tthis._htOption = htOption;\n\t\t};\n\n\t\tDrawing.prototype.draw = function (oQRCode) {\n\t\t\tvar _htOption = this._htOption;\n\t\t\tvar _el = this._el;\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\n\n\t\t\tthis.clear();\n\n\t\t\tfunction makeSVG(tag, attrs) {\n\t\t\t\tvar el = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\t\t\t\tfor (var k in attrs)\n\t\t\t\t\tif (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);\n\t\t\t\treturn el;\n\t\t\t}\n\n\t\t\tvar svg = makeSVG(\"svg\" , {'viewBox': '0 0 ' + String(nCount) + \" \" + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});\n\t\t\tsvg.setAttributeNS(\"http://www.w3.org/2000/xmlns/\", \"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n\t\t\t_el.appendChild(svg);\n\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorLight, \"width\": \"100%\", \"height\": \"100%\"}));\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorDark, \"width\": \"1\", \"height\": \"1\", \"id\": \"template\"}));\n\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tif (oQRCode.isDark(row, col)) {\n\t\t\t\t\t\tvar child = makeSVG(\"use\", {\"x\": String(col), \"y\": String(row)});\n\t\t\t\t\t\tchild.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", \"#template\")\n\t\t\t\t\t\tsvg.appendChild(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tDrawing.prototype.clear = function () {\n\t\t\twhile (this._el.hasChildNodes())\n\t\t\t\tthis._el.removeChild(this._el.lastChild);\n\t\t};\n\t\treturn Drawing;\n\t})();\n\n\tvar useSVG = document.documentElement.tagName.toLowerCase() === \"svg\";\n\n\t// Drawing in DOM by using Table tag\n\tvar Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {\n\t\tvar Drawing = function (el, htOption) {\n\t\t\tthis._el = el;\n\t\t\tthis._htOption = htOption;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Draw the QRCode\n\t\t * \n\t\t * @param {QRCode} oQRCode\n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n            var _htOption = this._htOption;\n            var _el = this._el;\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\n\t\t\tvar aHTML = ['<table style=\"border:0;border-collapse:collapse;\">'];\n\t\t\t\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\taHTML.push('<tr>');\n\t\t\t\t\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\taHTML.push('<td style=\"border:0;border-collapse:collapse;padding:0;margin:0;width:' + nWidth + 'px;height:' + nHeight + 'px;background-color:' + (oQRCode.isDark(row, col) ? _htOption.colorDark : _htOption.colorLight) + ';\"></td>');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\taHTML.push('</tr>');\n\t\t\t}\n\t\t\t\n\t\t\taHTML.push('</table>');\n\t\t\t_el.innerHTML = aHTML.join('');\n\t\t\t\n\t\t\t// Fix the margin values as real size.\n\t\t\tvar elTable = _el.childNodes[0];\n\t\t\tvar nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;\n\t\t\tvar nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;\n\t\t\t\n\t\t\tif (nLeftMarginTable > 0 && nTopMarginTable > 0) {\n\t\t\t\telTable.style.margin = nTopMarginTable + \"px \" + nLeftMarginTable + \"px\";\t\n\t\t\t}\n\t\t};\n\t\t\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._el.innerHTML = '';\n\t\t};\n\t\t\n\t\treturn Drawing;\n\t})() : (function () { // Drawing in Canvas\n\t\tfunction _onMakeImage() {\n\t\t\tthis._elImage.src = this._elCanvas.toDataURL(\"image/png\");\n\t\t\tthis._elImage.style.display = \"block\";\n\t\t\tthis._elCanvas.style.display = \"none\";\t\t\t\n\t\t}\n\t\t\n\t\t// Android 2.1 bug workaround\n\t\t// http://code.google.com/p/android/issues/detail?id=5141\n\t\tif (this._android && this._android <= 2.1) {\n\t    \tvar factor = 1 / window.devicePixelRatio;\n\t        var drawImage = CanvasRenderingContext2D.prototype.drawImage; \n\t    \tCanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {\n\t    \t\tif ((\"nodeName\" in image) && /img/i.test(image.nodeName)) {\n\t\t        \tfor (var i = arguments.length - 1; i >= 1; i--) {\n\t\t            \targuments[i] = arguments[i] * factor;\n\t\t        \t}\n\t    \t\t} else if (typeof dw == \"undefined\") {\n\t    \t\t\targuments[1] *= factor;\n\t    \t\t\targuments[2] *= factor;\n\t    \t\t\targuments[3] *= factor;\n\t    \t\t\targuments[4] *= factor;\n\t    \t\t}\n\t    \t\t\n\t        \tdrawImage.apply(this, arguments); \n\t    \t};\n\t\t}\n\t\t\n\t\t/**\n\t\t * Check whether the user's browser supports Data URI or not\n\t\t * \n\t\t * @private\n\t\t * @param {Function} fSuccess Occurs if it supports Data URI\n\t\t * @param {Function} fFail Occurs if it doesn't support Data URI\n\t\t */\n\t\tfunction _safeSetDataURI(fSuccess, fFail) {\n            var self = this;\n            self._fFail = fFail;\n            self._fSuccess = fSuccess;\n\n            // Check it just once\n            if (self._bSupportDataURI === null) {\n                var el = document.createElement(\"img\");\n                var fOnError = function() {\n                    self._bSupportDataURI = false;\n\n                    if (self._fFail) {\n                        self._fFail.call(self);\n                    }\n                };\n                var fOnSuccess = function() {\n                    self._bSupportDataURI = true;\n\n                    if (self._fSuccess) {\n                        self._fSuccess.call(self);\n                    }\n                };\n\n                el.onabort = fOnError;\n                el.onerror = fOnError;\n                el.onload = fOnSuccess;\n                el.src = \"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\"; // the Image contains 1px data.\n                return;\n            } else if (self._bSupportDataURI === true && self._fSuccess) {\n                self._fSuccess.call(self);\n            } else if (self._bSupportDataURI === false && self._fFail) {\n                self._fFail.call(self);\n            }\n\t\t};\n\t\t\n\t\t/**\n\t\t * Drawing QRCode by using canvas\n\t\t * \n\t\t * @constructor\n\t\t * @param {HTMLElement} el\n\t\t * @param {Object} htOption QRCode Options \n\t\t */\n\t\tvar Drawing = function (el, htOption) {\n    \t\tthis._bIsPainted = false;\n    \t\tthis._android = _getAndroid();\n\t\t\n\t\t\tthis._htOption = htOption;\n\t\t\tthis._elCanvas = document.createElement(\"canvas\");\n\t\t\tthis._elCanvas.width = htOption.width;\n\t\t\tthis._elCanvas.height = htOption.height;\n\t\t\tel.appendChild(this._elCanvas);\n\t\t\tthis._el = el;\n\t\t\tthis._oContext = this._elCanvas.getContext(\"2d\");\n\t\t\tthis._bIsPainted = false;\n\t\t\tthis._elImage = document.createElement(\"img\");\n\t\t\tthis._elImage.alt = \"Scan me!\";\n\t\t\tthis._elImage.style.display = \"none\";\n\t\t\tthis._el.appendChild(this._elImage);\n\t\t\tthis._bSupportDataURI = null;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Draw the QRCode\n\t\t * \n\t\t * @param {QRCode} oQRCode \n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n            var _elImage = this._elImage;\n            var _oContext = this._oContext;\n            var _htOption = this._htOption;\n            \n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = _htOption.width / nCount;\n\t\t\tvar nHeight = _htOption.height / nCount;\n\t\t\tvar nRoundedWidth = Math.round(nWidth);\n\t\t\tvar nRoundedHeight = Math.round(nHeight);\n\n\t\t\t_elImage.style.display = \"none\";\n\t\t\tthis.clear();\n\t\t\t\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tvar bIsDark = oQRCode.isDark(row, col);\n\t\t\t\t\tvar nLeft = col * nWidth;\n\t\t\t\t\tvar nTop = row * nHeight;\n\t\t\t\t\t_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\n\t\t\t\t\t_oContext.lineWidth = 1;\n\t\t\t\t\t_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\t\t\t\t\t\n\t\t\t\t\t_oContext.fillRect(nLeft, nTop, nWidth, nHeight);\n\t\t\t\t\t\n\t\t\t\t\t// 안티 앨리어싱 방지 처리\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.floor(nLeft) + 0.5,\n\t\t\t\t\t\tMath.floor(nTop) + 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.ceil(nLeft) - 0.5,\n\t\t\t\t\t\tMath.ceil(nTop) - 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._bIsPainted = true;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Make the image from Canvas if the browser supports Data URI.\n\t\t */\n\t\tDrawing.prototype.makeImage = function () {\n\t\t\tif (this._bIsPainted) {\n\t\t\t\t_safeSetDataURI.call(this, _onMakeImage);\n\t\t\t}\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Return whether the QRCode is painted or not\n\t\t * \n\t\t * @return {Boolean}\n\t\t */\n\t\tDrawing.prototype.isPainted = function () {\n\t\t\treturn this._bIsPainted;\n\t\t};\n\t\t\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);\n\t\t\tthis._bIsPainted = false;\n\t\t};\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param {Number} nNumber\n\t\t */\n\t\tDrawing.prototype.round = function (nNumber) {\n\t\t\tif (!nNumber) {\n\t\t\t\treturn nNumber;\n\t\t\t}\n\t\t\t\n\t\t\treturn Math.floor(nNumber * 1000) / 1000;\n\t\t};\n\t\t\n\t\treturn Drawing;\n\t})();\n\t\n\t/**\n\t * Get the type by string length\n\t * \n\t * @private\n\t * @param {String} sText\n\t * @param {Number} nCorrectLevel\n\t * @return {Number} type\n\t */\n\tfunction _getTypeNumber(sText, nCorrectLevel) {\t\t\t\n\t\tvar nType = 1;\n\t\tvar length = _getUTF8Length(sText);\n\t\t\n\t\tfor (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n\t\t\tvar nLimit = 0;\n\t\t\t\n\t\t\tswitch (nCorrectLevel) {\n\t\t\t\tcase QRErrorCorrectLevel.L :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.M :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.Q :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][2];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.H :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][3];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tif (length <= nLimit) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tnType++;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (nType > QRCodeLimitLength.length) {\n\t\t\tthrow new Error(\"Too long data\");\n\t\t}\n\t\t\n\t\treturn nType;\n\t}\n\n\tfunction _getUTF8Length(sText) {\n\t\tvar replacedText = encodeURI(sText).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n\t\treturn replacedText.length + (replacedText.length != sText ? 3 : 0);\n\t}\n\t\n\t/**\n\t * @class QRCode\n\t * @constructor\n\t * @example \n\t * new QRCode(document.getElementById(\"test\"), \"http://jindo.dev.naver.com/collie\");\n\t *\n\t * @example\n\t * var oQRCode = new QRCode(\"test\", {\n\t *    text : \"http://naver.com\",\n\t *    width : 128,\n\t *    height : 128\n\t * });\n\t * \n\t * oQRCode.clear(); // Clear the QRCode.\n\t * oQRCode.makeCode(\"http://map.naver.com\"); // Re-create the QRCode.\n\t *\n\t * @param {HTMLElement|String} el target element or 'id' attribute of element.\n\t * @param {Object|String} vOption\n\t * @param {String} vOption.text QRCode link data\n\t * @param {Number} [vOption.width=256]\n\t * @param {Number} [vOption.height=256]\n\t * @param {String} [vOption.colorDark=\"#000000\"]\n\t * @param {String} [vOption.colorLight=\"#ffffff\"]\n\t * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H] \n\t */\n\tQRCode = function (el, vOption) {\n\t\tthis._htOption = {\n\t\t\twidth : 256, \n\t\t\theight : 256,\n\t\t\ttypeNumber : 4,\n\t\t\tcolorDark : \"#000000\",\n\t\t\tcolorLight : \"#ffffff\",\n\t\t\tcorrectLevel : QRErrorCorrectLevel.H\n\t\t};\n\t\t\n\t\tif (typeof vOption === 'string') {\n\t\t\tvOption\t= {\n\t\t\t\ttext : vOption\n\t\t\t};\n\t\t}\n\t\t\n\t\t// Overwrites options\n\t\tif (vOption) {\n\t\t\tfor (var i in vOption) {\n\t\t\t\tthis._htOption[i] = vOption[i];\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (typeof el == \"string\") {\n\t\t\tel = document.getElementById(el);\n\t\t}\n\n\t\tif (this._htOption.useSVG) {\n\t\t\tDrawing = svgDrawer;\n\t\t}\n\t\t\n\t\tthis._android = _getAndroid();\n\t\tthis._el = el;\n\t\tthis._oQRCode = null;\n\t\tthis._oDrawing = new Drawing(this._el, this._htOption);\n\t\t\n\t\tif (this._htOption.text) {\n\t\t\tthis.makeCode(this._htOption.text);\t\n\t\t}\n\t};\n\t\n\t/**\n\t * Make the QRCode\n\t * \n\t * @param {String} sText link data\n\t */\n\tQRCode.prototype.makeCode = function (sText) {\n\t\tthis._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);\n\t\tthis._oQRCode.addData(sText);\n\t\tthis._oQRCode.make();\n\t\tthis._el.title = sText;\n\t\tthis._oDrawing.draw(this._oQRCode);\t\t\t\n\t\tthis.makeImage();\n\t};\n\t\n\t/**\n\t * Make the Image from Canvas element\n\t * - It occurs automatically\n\t * - Android below 3 doesn't support Data-URI spec.\n\t * \n\t * @private\n\t */\n\tQRCode.prototype.makeImage = function () {\n\t\tif (typeof this._oDrawing.makeImage == \"function\" && (!this._android || this._android >= 3)) {\n\t\t\tthis._oDrawing.makeImage();\n\t\t}\n\t};\n\t\n\t/**\n\t * Clear the QRCode\n\t */\n\tQRCode.prototype.clear = function () {\n\t\tthis._oDrawing.clear();\n\t};\n\t\n\t/**\n\t * @name QRCode.CorrectLevel\n\t */\n\tQRCode.CorrectLevel = QRErrorCorrectLevel;\n})();\n"
  },
  {
    "path": "Azure/WebSite/site/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.AspNet.WebApi.Client\" version=\"5.2.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.Core\" version=\"5.2.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.WebHost\" version=\"5.2.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.ActiveDirectory.GraphClient\" version=\"2.1.1\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Azure.Amqp\" version=\"1.1.5\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Azure.Devices\" version=\"1.0.16\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Azure.KeyVault.Core\" version=\"1.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.ServiceBus.EventProcessorHost\" version=\"2.2.7\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Data.Edm\" version=\"5.8.1\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Data.OData\" version=\"5.8.1\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Data.Services.Client\" version=\"5.8.1\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.WebSockets\" version=\"0.2.3.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.ConfigurationManager\" version=\"3.2.3\" targetFramework=\"net461\" />\n  <package id=\"Mono.Security\" version=\"3.2.3.0\" targetFramework=\"net461\" />\n  <package id=\"Newtonsoft.Json\" version=\"9.0.1\" targetFramework=\"net45\" />\n  <package id=\"PCLCrypto\" version=\"2.0.147\" targetFramework=\"net461\" />\n  <package id=\"PInvoke.BCrypt\" version=\"0.3.152\" targetFramework=\"net461\" />\n  <package id=\"PInvoke.Kernel32\" version=\"0.3.152\" targetFramework=\"net461\" />\n  <package id=\"PInvoke.NCrypt\" version=\"0.3.152\" targetFramework=\"net461\" />\n  <package id=\"PInvoke.Windows.Core\" version=\"0.3.152\" targetFramework=\"net461\" />\n  <package id=\"System.Spatial\" version=\"5.8.1\" targetFramework=\"net461\" />\n  <package id=\"Validation\" version=\"2.3.7\" targetFramework=\"net461\" />\n  <package id=\"WindowsAzure.ServiceBus\" version=\"3.4.2\" targetFramework=\"net461\" />\n  <package id=\"WindowsAzure.Storage\" version=\"7.2.1\" targetFramework=\"net461\" />\n</packages>"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/ConnectTheDotsWebSite.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProductVersion>\n    </ProductVersion>\n    <SchemaVersion>2.0</SchemaVersion>\n    <ProjectGuid>{2E3E7496-59D5-48BC-909E-207120886E3E}</ProjectGuid>\n    <ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ConnectTheDotsWebSite</RootNamespace>\n    <AssemblyName>ConnectTheDotsWebSite</AssemblyName>\n    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>\n    <UseIISExpress>true</UseIISExpress>\n    <IISExpressSSLPort />\n    <IISExpressAnonymousAuthentication />\n    <IISExpressWindowsAuthentication />\n    <IISExpressUseClassicPipelineMode />\n    <UseGlobalApplicationHostFile />\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Amqp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.Amqp.1.1.5\\lib\\net451\\Microsoft.Azure.Amqp.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Devices, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.Devices.1.0.16\\lib\\net451\\Microsoft.Azure.Devices.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.KeyVault.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.KeyVault.Core.1.0.0\\lib\\net40\\Microsoft.Azure.KeyVault.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"Microsoft.Data.Edm, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.Edm.5.8.1\\lib\\net40\\Microsoft.Data.Edm.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.OData, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.OData.5.8.1\\lib\\net40\\Microsoft.Data.OData.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.Services.Client, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Data.Services.Client.5.8.1\\lib\\net40\\Microsoft.Data.Services.Client.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ServiceBus, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\WindowsAzure.ServiceBus.3.4.2\\lib\\net45-full\\Microsoft.ServiceBus.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.ServiceBus.Messaging.EventProcessorHost, Version=0.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.ServiceBus.EventProcessorHost.2.2.7\\lib\\net45-full\\Microsoft.ServiceBus.Messaging.EventProcessorHost.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.WebSockets, Version=0.2.3.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.WebSockets.0.2.3.1\\lib\\net45\\Microsoft.WebSockets.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Configuration, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.WindowsAzure.ConfigurationManager.3.2.3\\lib\\net40\\Microsoft.WindowsAzure.Configuration.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Storage, Version=7.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\WindowsAzure.Storage.7.2.1\\lib\\net40\\Microsoft.WindowsAzure.Storage.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Mono.Security.3.2.3.0\\lib\\net45\\Mono.Security.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.9.0.1\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PCLCrypto.2.0.147\\lib\\net45\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.BCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PInvoke.BCrypt.0.3.152\\lib\\net40\\PInvoke.BCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Kernel32, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PInvoke.Kernel32.0.3.152\\lib\\net40\\PInvoke.Kernel32.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.NCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PInvoke.NCrypt.0.3.152\\lib\\net40\\PInvoke.NCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Windows.Core, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PInvoke.Windows.Core.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.Windows.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"System.Net.Http\" />\n    <Reference Include=\"System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.Client.5.2.3\\lib\\net45\\System.Net.Http.Formatting.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.Spatial, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\System.Spatial.5.8.1\\lib\\net40\\System.Spatial.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Web.DynamicData\" />\n    <Reference Include=\"System.Web.Entity\" />\n    <Reference Include=\"System.Web.ApplicationServices\" />\n    <Reference Include=\"System.ComponentModel.DataAnnotations\" />\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Web.Extensions\" />\n    <Reference Include=\"System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.Core.5.2.3\\lib\\net45\\System.Web.Http.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Web.Http.WebHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.AspNet.WebApi.WebHost.5.2.3\\lib\\net45\\System.Web.Http.WebHost.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Drawing\" />\n    <Reference Include=\"System.Web\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Web.Services\" />\n    <Reference Include=\"System.EnterpriseServices\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"Validation, Version=2.3.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Validation.2.3.7\\lib\\dotnet\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"css\\connectthedots.css\" />\n    <Content Include=\"..\\..\\..\\..\\license.txt\">\n      <Link>Docs\\license.txt</Link>\n    </Content>\n    <Content Include=\"img\\ajax-loader.gif\" />\n    <Content Include=\"img\\forkme_CTD.png\" />\n    <Content Include=\"js\\d3Chart.js\" />\n    <Content Include=\"js\\d3ChartControl.js\" />\n    <Content Include=\"js\\d3CTD.js\" />\n    <Content Include=\"js\\d3CTDDataSourceSocket.js\" />\n    <Content Include=\"js\\d3DataFlow.js\" />\n    <Content Include=\"js\\d3CTDDataSourceFilter.js\" />\n    <Content Include=\"js\\d3DataSourceSocket.js\" />\n    <Content Include=\"js\\d3utils.js\" />\n    <Content Include=\"js\\devicesList.js\" />\n    <Content Include=\"js\\jquery.ui-contextmenu.js\" />\n    <Content Include=\"js\\qrcode.js\" />\n    <Content Include=\"packages.config\">\n      <SubType>Designer</SubType>\n    </Content>\n    <None Include=\"Properties\\PublishProfiles\\ctdolivier4 - Web Deploy.pubxml\" />\n    <None Include=\"Properties\\PublishProfiles\\LocalDeploy.pubxml\" />\n    <None Include=\"Properties\\PublishProfiles\\sensenetconnect.pubxml\" />\n    <None Include=\"Properties\\PublishProfiles\\WebDeploy.pubxml\" />\n    <None Include=\"Web.Debug.config\">\n      <DependentUpon>Web.config</DependentUpon>\n    </None>\n    <None Include=\"Web.Release.config\">\n      <DependentUpon>Web.config</DependentUpon>\n    </None>\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Default.aspx\" />\n    <Content Include=\"Global.asax\" />\n    <Content Include=\"img\\ConnectTheDotsLogo.png\" />\n    <Content Include=\"Web.config\">\n      <SubType>Designer</SubType>\n    </Content>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Default.aspx.cs\">\n      <DependentUpon>Default.aspx</DependentUpon>\n      <SubType>ASPXCodeBehind</SubType>\n    </Compile>\n    <Compile Include=\"Default.aspx.designer.cs\">\n      <DependentUpon>Default.aspx</DependentUpon>\n    </Compile>\n    <Compile Include=\"Global.asax.cs\">\n      <DependentUpon>Global.asax</DependentUpon>\n    </Compile>\n    <Compile Include=\"Helpers\\BlobHelper.cs\" />\n    <Compile Include=\"Helpers\\IoTHubHelper.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"SensorInventory.cs\" />\n    <Compile Include=\"WebSocketEventProcessor.cs\" />\n    <Compile Include=\"WebSocketHandler.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <WCFMetadata Include=\"Service References\\\" />\n  </ItemGroup>\n  <PropertyGroup>\n    <VisualStudioVersion Condition=\"'$(VisualStudioVersion)' == ''\">10.0</VisualStudioVersion>\n    <VSToolsPath Condition=\"'$(VSToolsPath)' == ''\">$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)</VSToolsPath>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildBinPath)\\Microsoft.CSharp.targets\" />\n  <Import Project=\"$(VSToolsPath)\\WebApplications\\Microsoft.WebApplication.targets\" Condition=\"'$(VSToolsPath)' != ''\" />\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\VisualStudio\\v10.0\\WebApplications\\Microsoft.WebApplication.targets\" Condition=\"false\" />\n  <ProjectExtensions>\n    <VisualStudio>\n      <FlavorProperties GUID=\"{349c5851-65df-11da-9384-00065b846f21}\">\n        <WebProjectProperties>\n          <UseIIS>False</UseIIS>\n          <AutoAssignPort>True</AutoAssignPort>\n          <DevelopmentServerPort>51716</DevelopmentServerPort>\n          <DevelopmentServerVPath>/</DevelopmentServerVPath>\n          <IISUrl>http://localhost:52115/</IISUrl>\n          <NTLMAuthentication>False</NTLMAuthentication>\n          <UseCustomServer>False</UseCustomServer>\n          <CustomServerUrl>\n          </CustomServerUrl>\n          <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>\n        </WebProjectProperties>\n      </FlavorProperties>\n    </VisualStudio>\n  </ProjectExtensions>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Default.aspx",
    "content": "﻿<!--\n//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n-->\n\n<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"Default.aspx.cs\" Inherits=\"ConnectTheDotsWebSite.Default\" %>\n\n<!DOCTYPE html>\n\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head runat=\"server\">\n    <title>Connect The Dots</title>\n\n    <!-- general styles -->\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.datatables.net/1.10.9/css/jquery.dataTables.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/connectthedots.css\" />\n</head>\n<body>\n    <div class=\"globalSettings\" style=\"display:none\">\n        <div class=\"ForceSocketCloseOnUserActionsTimeout\"><%= ForceSocketCloseOnUserActionsTimeout %></div>\n    </div>\n    \n    <div id=\"loading\" style=\"display: none;\">\n        <div id=\"loading-inner\">\n            <p id=\"loading-text\">Loading last 10 minutes of data...</p>\n            <p id=\"loading-sensor\"></p>\n            <img id=\"loading-image\" src=\"img/ajax-loader.gif\" />\n        </div>\n    </div>\n\n    <ul id=\"deviceMenu\" style=\"display:none;\">\n        <li><div>Add a new device</div></li>\n        <li><div>Remove device</div></li>\n        <li><div>Get QRCode</div></li>\n    </ul>\n\n    <div id=\"qrcode\">\n    </div>\n\n    <div id=\"add-device-dialog-form\" title=\"Add new device\" style=\"display: none;\">\n      <p>Type in a unique name for the new device (only characters and numbers).</p>\n \n      <form>\n        <fieldset style=\"padding:0; border:0; margin-top:25px; \">\n          <label style=\"display:block;\" for=\"newdeviceid\">Device ID</label>\n          <input type=\"text\" name=\"newdeviceid\" id=\"newdeviceid\" value=\"mynewdevice\" class=\"text ui-widget-content ui-corner-all\" style=\"display:block;\"/>\n           <!-- Allow form submission with keyboard without duplicating the dialog button -->\n          <input class=\"popup-input\" type=\"submit\" tabindex=\"-1\" style=\"position:absolute; top:-1000px\"/>\n        </fieldset>\n      </form>\n    </div>\n\n    <div id=\"delete-device-dialog-confirm\" title=\"Delete device?\" style=\"display: none;\">\n        <p><span class=\"ui-icon ui-icon-alert\" style=\"float:left; margin:12px 12px 20px 0;\"></span>This will permanently remove the device from the IoT Hub device registry. Are you sure?</p>\n        <div id=\"devicetodelete\"></div>\n    </div>\n\n    <div id=\"header\">\n        <div>\n            <img src=\"img/ConnectTheDotsLogo.png\" />\n        </div>\n    </div>\n\n\n    <form id=\"form2\" runat=\"server\">\n        <div id=\"user\" runat=\"server\">\n        </div>\n\n        <asp:ScriptManager ID='ScriptManager1' runat='server' EnablePageMethods='true' />\n        <a target=\"_blank\" href=\"http://connectthedots.io\"><img style=\"position: absolute; top: 0; right: 0; border: 0;\" src=\"img/forkme_CTD.png\" alt=\"Fork me on GitHub\" /></a>\n\n        <div class=\"big-block\">\n            <h3>Live Sensor Data</h3>\n\n            <div style=\"float: left; width: 200px\">\n\n                <p><strong>Select Sensor/R-PI:</strong></p>\n\n            <div id=\"controllersContainer\">\n            </div>\n\n            </div>\n            <div id=\"chartsContainer\">\n            </div>\n        </div>\n\n        <div class=\"big-block\">\n            <h3>Real Time Events</h3>\n            <div id=\"alerts\">\n                <table id=\"alertTable\">\n                    <thead>\n                        <tr>\n                            <th class=\"timeFromDate\">Time</th>\n                            <th>Device</th>\n                            <th>Alert</th>\n                            <th>Message</th>\n                        </tr>\n                    </thead>\n                    <tbody>\n                    </tbody>\n                </table>\n\n            </div>\n        </div>\n\n        <div class=\"big-block\">\n            <h3>Devices List</h3>\n            <div id=\"devices\">\n                <table id=\"devicesTable\">\n                    <thead>\n                        <tr>\n                            <th>Display Name</th>\n                            <th>Location</th>\n                            <th>IP Address</th>\n                            <th>IoTHub Device ID</th>\n                            <th id=\"cscolumn\" runat=\"server\">Connection String</th>\n                        </tr>\n                    </thead>\n                    <tbody>\n                    </tbody>\n                </table>\n            </div>\n        </div>\n\n        <div class=\"big-block\">\n            <h3>Messages</h3>\n            <div id=\"messages\"></div>\n        </div>\n    </form>\n\n    <script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-1.12.4.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://code.jquery.com/ui/1.12.1/jquery-ui.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://cdn.datatables.net/1.10.9/js/jquery.dataTables.min.js\"></script>\n    <script type=\"text/javascript\" src=\"https://d3js.org/d3.v3.min.js\" charset=\"utf-8\"></script>\n    <script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.7.1/d3-tip.js\"></script>\n\n    <script type=\"text/javascript\" src=\"js/d3utils.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3DataFlow.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3Chart.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3ChartControl.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3DataSourceSocket.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3CTDDataSourceSocket.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3CTDDataSourceFilter.js\"></script>\n    <script type=\"text/javascript\" src=\"js/jquery.ui-contextmenu.js\"></script>\n    <script type=\"text/javascript\" src=\"js/devicesList.js\"></script>\n    <script type=\"text/javascript\" src=\"js/qrcode.js\"></script>\n    <script type=\"text/javascript\" src=\"js/d3CTD.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Default.aspx.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System;\nusing System.Threading;\nusing System.Web.Services;\nusing Newtonsoft.Json;\nusing System.Security.Claims;\nusing System.Collections.Generic;\n\nnamespace ConnectTheDotsWebSite\n{\n    public partial class Default : System.Web.UI.Page\n    {\n        protected string ForceSocketCloseOnUserActionsTimeout = \"false\";\n\n        protected static bool IsUserAuthenticated()\n        {\n            //            return true;\n            var claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;\n            return (claimsPrincipal != null && claimsPrincipal.Identity.IsAuthenticated);\n        }\n\n        protected static bool IsUserAdmin()\n        {\n            //            return true;\n\n            var claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;\n            if (claimsPrincipal != null && claimsPrincipal.Identity.IsAuthenticated)\n            {\n                return (Global.globalSettings.AdminName == claimsPrincipal.Identity.Name);\n            }\n            else\n                return false;\n\n        }\n\n\n        protected void Page_Load(object sender, EventArgs e)\n        {\n            ForceSocketCloseOnUserActionsTimeout =\n                Global.globalSettings.ForceSocketCloseOnUserActionsTimeout.ToString();\n\n            // Manage what's displayed depending on the user's permissions\n            if (IsUserAuthenticated())\n            {\n                var claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;\n                if (IsUserAdmin())\n                {\n                    user.InnerHtml = claimsPrincipal.Identity.Name + \" (ADMIN)\";\n                    cscolumn.Visible = true;\n                }\n                else\n                {\n                    user.InnerHtml = claimsPrincipal.Identity.Name + \" (USER)\";\n                    cscolumn.Visible = false;\n                }\n            }\n            else\n            {\n                user.InnerHtml = \"User Not Authenticated\";\n                cscolumn.Visible = false;\n            }\n        }\n\n        [WebMethod]\n        public static string GetDevicesList()\n        {\n            // Set the flag for the server to refresh the devices list from IoTHub and wait till its done\n            if (Global.TriggerAndWaitDeviceListRefresh(10))\n            {\n                // We need to Filter the devices secret information in case the user is not an admin\n                List<DeviceDetails> devicesList = Global.devicesList;\n                if (!IsUserAdmin())\n                {\n                    foreach (DeviceDetails device in devicesList)\n                    {\n                        device.connectionstring = \"\";\n                    }\n                }\n\n                return JsonConvert.SerializeObject(devicesList);\n            }\n            return null;\n        }\n\n        [WebMethod]\n        public static string AddDevice(string deviceName)\n        {\n            // Check if user is authorized, then create a new device\n            if (!IsUserAdmin())\n                return \"{\\\"Error\\\": \\\"User not authorized to add device.\\\"}\";\n\n            string returnMessage;\n\n            // Add device\n            switch (Global.TriggerAndWaitAddDevice(10, deviceName))\n            {\n                case Helpers.IoTHubHelper.AddDeviceResult.Success:\n                    returnMessage  = \"{\\\"Device\\\": \\\"\" + deviceName + \"\\\"}\";\n                    break;\n\n                case Helpers.IoTHubHelper.AddDeviceResult.DeviceAlreadyExists:\n                    returnMessage = \"{\\\"Error\\\": \\\"Device already exists.\\\"}\";\n                    break;\n\n                default:\n                    returnMessage = \"{\\\"Error\\\": \\\"An error occured when trying to add new device.\\\"}\";\n                    break;\n            }\n            return returnMessage;\n        }\n\n        [WebMethod]\n        public static string DeleteDevice(string deviceName)\n        {\n            // Check if user is authorized, then create a new device\n            if (!IsUserAdmin())\n                return \"{\\\"Error\\\": \\\"User not authorized to remove device.\\\"}\";\n\n            string returnMessage;\n\n            // Delete device\n            switch (Global.TriggerAndWaitDeleteDevice(10, deviceName))\n            {\n                case Helpers.IoTHubHelper.DeleteDeviceResult.Success:\n                    returnMessage = \"{\\\"Device\\\": \\\"\" + deviceName + \"\\\"}\";\n                    break;\n\n                case Helpers.IoTHubHelper.DeleteDeviceResult.DeviceNotRegistered:\n                    returnMessage = \"{\\\"Error\\\": \\\"Device not registered.\\\"}\";\n                    break;\n\n                default:\n                    returnMessage = \"{\\\"Error\\\": \\\"An error occured when trying to delete device.\\\"}\";\n                    break;\n            }\n            return returnMessage;\n        }\n\n\n    }\n}"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Default.aspx.designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated. \n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace ConnectTheDotsWebSite {\n    \n    \n    public partial class Default {\n        \n        /// <summary>\n        /// form2 control.\n        /// </summary>\n        /// <remarks>\n        /// Auto-generated field.\n        /// To modify move field declaration from designer file to code-behind file.\n        /// </remarks>\n        protected global::System.Web.UI.HtmlControls.HtmlForm form2;\n        \n        /// <summary>\n        /// user control.\n        /// </summary>\n        /// <remarks>\n        /// Auto-generated field.\n        /// To modify move field declaration from designer file to code-behind file.\n        /// </remarks>\n        protected global::System.Web.UI.HtmlControls.HtmlGenericControl user;\n        \n        /// <summary>\n        /// ScriptManager1 control.\n        /// </summary>\n        /// <remarks>\n        /// Auto-generated field.\n        /// To modify move field declaration from designer file to code-behind file.\n        /// </remarks>\n        protected global::System.Web.UI.ScriptManager ScriptManager1;\n        \n        /// <summary>\n        /// cscolumn control.\n        /// </summary>\n        /// <remarks>\n        /// Auto-generated field.\n        /// To modify move field declaration from designer file to code-behind file.\n        /// </remarks>\n        protected global::System.Web.UI.HtmlControls.HtmlTableCell cscolumn;\n    }\n}\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Docs/license.txt",
    "content": "Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n \nThe MIT License (MIT)\n \nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n \nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Global.asax",
    "content": "﻿<%@ Application Codebehind=\"Global.asax.cs\" Inherits=\"ConnectTheDotsWebSite.Global\" Language=\"C#\" %>\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Global.asax.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Web.Http;\nusing System.Web.Routing;\nusing Microsoft.ServiceBus.Messaging;\nusing Microsoft.Azure;\n\nusing ConnectTheDotsWebSite.Helpers;\nusing System.Threading;\n\nnamespace ConnectTheDotsWebSite\n{\n    public struct EventHubSettings\n    {\n        public string name { get; set; }\n        public string connectionString { get; set; }\n        public string consumerGroup { get; set; }\n        public EventProcessorHost processorHost { get; set; }\n        public EventProcessorOptions processorHostOptions { get; set; }\n        public EventHubClient client { get; set; }\n        //public NamespaceManager namespaceManager { get; set; }\n        public string storageConnectionString { get; set; }\n    }\n\n    public struct GlobalSettings\n    {\n        public bool ForceSocketCloseOnUserActionsTimeout { get; set; }\n        public bool RefreshDevicesList { get; set; }\n        public bool DevicesListRefreshed { get; set; }\n        public string AdminName { get; set; }\n        public bool AddDevice { get; set; }\n        public bool DeviceAdded { get; set; }\n        public IoTHubHelper.AddDeviceResult DeviceAddedResult { get; set; }\n        public string NewDeviceName { get; set; }\n        public bool DeleteDevice { get; set; }\n        public bool DeviceDeleted { get; set; }\n        public IoTHubHelper.DeleteDeviceResult DeviceDeletedResult { get; set; }\n        public string DeviceToDeleteName { get; set; }\n\n    }\n\n    public class DeviceDetails\n    {\n        public string guid { get; set; }\n        public string displayname { get; set; }\n        public string location { get; set; }\n        public string ipaddress { get; set; }\n        public string connectionstring { get; set; }\n\n        public DeviceDetails(IDictionary<string, object> deviceInfo)\n        {\n            if (deviceInfo.ContainsKey(\"guid\")) guid = deviceInfo[\"guid\"].ToString();\n            if (deviceInfo.ContainsKey(\"displayname\")) displayname = deviceInfo[\"displayname\"].ToString();\n            if (deviceInfo.ContainsKey(\"location\")) location = deviceInfo[\"location\"].ToString();\n            if (deviceInfo.ContainsKey(\"ipaddress\")) ipaddress = deviceInfo[\"ipaddress\"].ToString();\n            if (deviceInfo.ContainsKey(\"connectionstring\")) connectionstring = deviceInfo[\"connectionstring\"].ToString();\n        }\n\n    }\n\n    public class Global : System.Web.HttpApplication\n    {\n        EventHubSettings eventHubDevicesSettings;\n        EventHubSettings eventHubAlertsSettings;\n\n        public static GlobalSettings globalSettings = new GlobalSettings() { ForceSocketCloseOnUserActionsTimeout = true, DevicesListRefreshed = false, RefreshDevicesList = true, AddDevice = false, DeviceAdded=false  };\n\n        public static List<DeviceDetails> devicesList = new List<DeviceDetails>();\n        private static System.Timers.Timer pingIoTHubTimer;\n\n        public static void AddToDeviceList(IDictionary<string, object> deviceInfo)\n        {\n            // if the passed Dictionnary doesn't contain a guid key, there is nothing for us to do here...\n            if (!deviceInfo.ContainsKey(\"guid\")) return;\n\n            var device = devicesList.Find(item => item.guid == deviceInfo[\"guid\"].ToString());\n            if (device != null)\n            {\n                // Device exists, update its fields\n                if (deviceInfo.ContainsKey(\"connectionstring\"))\n                {\n                    // If the updateConnectionString is set we only need/want to update the connection string...\n                    device.connectionstring = deviceInfo[\"connectionstring\"].ToString();\n                }\n                else {\n                    // otherwise we will update the data for the device\n                    if (deviceInfo.ContainsKey(\"displayname\"))\n                    {\n                        device.displayname = deviceInfo[\"displayname\"].ToString();\n                    }\n                    if (deviceInfo.ContainsKey(\"location\"))\n                    {\n                        device.location = deviceInfo[\"location\"].ToString();\n                    }\n                    if (deviceInfo.ContainsKey(\"ipaddress\"))\n                    {\n                        device.ipaddress = deviceInfo[\"ipaddress\"].ToString();\n                    }\n                }\n            }\n            else\n            {\n                devicesList.Add(new DeviceDetails(deviceInfo));\n            }\n        }\n\n        private static void UpdateDeviceListFromIoTHub()\n        {\n            List<IDictionary<string, object>> devices = IoTHubHelper.ListDevices(100);\n            if (devices != null)\n            {\n                foreach (IDictionary<string, object> device in devices)\n                {\n                    AddToDeviceList(device);\n                }\n\n                // Clean up the list of devices removing devices that are no longer provisionned in IoT Hub\n                devicesList.RemoveAll(device => devices.Find(item => item[\"guid\"].ToString() == device.guid) == null);\n\n                Global.globalSettings.DevicesListRefreshed = true;\n            }\n        }\n\n        public static bool TriggerAndWaitDeviceListRefresh(int timeout)\n        {\n            // Set the flag for the server to refresh the devices list from IoTHub and wait till its done\n            Global.globalSettings.DevicesListRefreshed = false;\n            Global.globalSettings.RefreshDevicesList = true;\n\n            // Init counter (timeout is expressed in seconds)\n            int tick = 0;\n\n            // Wait till list is refreshed or till timeout is hit\n            while ((!Global.globalSettings.DevicesListRefreshed) && (tick++<timeout)) Thread.Sleep(1000);\n\n            return Global.globalSettings.DevicesListRefreshed;\n        }\n\n        public static IoTHubHelper.AddDeviceResult TriggerAndWaitAddDevice(int timeout, string deviceName)\n        {\n            // Set the flag for the server to refresh the devices list from IoTHub and wait till its done\n            Global.globalSettings.DeviceAdded = false;\n            Global.globalSettings.NewDeviceName = deviceName; \n            Global.globalSettings.AddDevice = true;\n\n            // Init counter (timeout is expressed in seconds)\n            int tick = 0;\n\n            // Wait till list is refreshed or till timeout is hit\n            while ((!Global.globalSettings.DeviceAdded) && (tick++ < timeout)) Thread.Sleep(1000);\n\n            return Global.globalSettings.DeviceAddedResult;\n        }\n        public static IoTHubHelper.DeleteDeviceResult TriggerAndWaitDeleteDevice(int timeout, string deviceName)\n        {\n            // Set the flag for the server to refresh the devices list from IoTHub and wait till its done\n            Global.globalSettings.DeviceDeleted = false;\n            Global.globalSettings.DeviceToDeleteName = deviceName;\n            Global.globalSettings.DeleteDevice = true;\n\n            // Init counter (timeout is expressed in seconds)\n            int tick = 0;\n\n            // Wait till list is refreshed or till timeout is hit\n            while ((!Global.globalSettings.DeviceDeleted) && (tick++ < timeout)) Thread.Sleep(1000);\n\n            return Global.globalSettings.DeviceDeletedResult;\n        }\n\n        protected void Application_Start(Object sender, EventArgs e)\n        {\n\n            // Set up a route for WebSocket requests\n            RouteTable.Routes.MapHttpRoute(\n                name: \"DefaultApi\",\n                routeTemplate: \"api/{controller}/{id}\",\n                defaults: new { id = RouteParameter.Optional }\n                \n            );\n\n            // Read connection strings and Event Hubs names from app.config file\n            GetAppSettings();\n\n            // Create EventProcessorHost clients\n            CreateEventProcessorHostClient(ref eventHubAlertsSettings);\n            CreateEventProcessorHostClient(ref eventHubDevicesSettings);\n\n            // Setup a timer to ping IoTHub for list of devices every second (will effectively ping IoTHub if flag refreshDevicesList is true)\n            pingIoTHubTimer = new System.Timers.Timer(1000);\n            pingIoTHubTimer.Elapsed += PingIoTHubTimer_Elapsed;\n            pingIoTHubTimer.Elapsed += (Object source, System.Timers.ElapsedEventArgs args) => { if (Global.globalSettings.RefreshDevicesList) { Global.globalSettings.RefreshDevicesList = false; Global.UpdateDeviceListFromIoTHub(); }  };\n            pingIoTHubTimer.Enabled = true;\n        }\n\n        private void PingIoTHubTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)\n        {\n            if (Global.globalSettings.RefreshDevicesList)\n            {\n                Global.globalSettings.RefreshDevicesList = false;\n                Global.UpdateDeviceListFromIoTHub();\n            }\n\n            if (Global.globalSettings.AddDevice)\n            {\n                Global.globalSettings.AddDevice = false;\n\n                Global.globalSettings.DeviceAddedResult = IoTHubHelper.AddDevice(Global.globalSettings.NewDeviceName);\n                Global.globalSettings.DeviceAdded = true;\n            }\n\n            if (Global.globalSettings.DeleteDevice)\n            {\n                Global.globalSettings.DeleteDevice = false;\n\n                Global.globalSettings.DeviceDeletedResult = IoTHubHelper.DeleteDevice(Global.globalSettings.DeviceToDeleteName);\n                Global.globalSettings.DeviceDeleted = true;\n            }\n\n\n        }\n\n        protected void Application_End(Object sender, EventArgs e)\n        {\n            Trace.TraceInformation(\"Unregistering EventProcessorHosts\");\n            if (eventHubDevicesSettings.processorHost!=null)\n                eventHubDevicesSettings.processorHost.UnregisterEventProcessorAsync().Wait();\n            if (eventHubAlertsSettings.processorHost != null)\n                eventHubAlertsSettings.processorHost.UnregisterEventProcessorAsync().Wait();\n        }\n        \n        private void CreateEventProcessorHostClient(ref EventHubSettings eventHubSettings)\n        {\n            Trace.TraceInformation(\"Creating EventProcessorHost: {0}, {1}, {2}\", this.Server.MachineName, eventHubSettings.name, eventHubSettings.consumerGroup);\n            try\n            {\n                eventHubSettings.client = EventHubClient.CreateFromConnectionString(eventHubSettings.connectionString,\n                                                                                eventHubSettings.name);\n            }\n            catch (Exception ex)\n            {\n                // Error happened while trying to delete old ConsumerGroups.\n                Debug.Print(\"Error happened while creating the eventhub client: \" + ex.Message);\n            }\n\n            try\n            {\n                //eventHubSettings.processorHost = new EventProcessorHost(this.Server.MachineName,\n                //    eventHubSettings.client.Path,\n                //    eventHubSettings.consumerGroup.ToLowerInvariant(),\n                //    eventHubSettings.connectionString,\n                //    eventHubSettings.storageConnectionString);\n                eventHubSettings.processorHost = new EventProcessorHost(this.Server.MachineName,\n                    eventHubSettings.name,\n                    eventHubSettings.consumerGroup,\n                    eventHubSettings.connectionString,\n                    eventHubSettings.storageConnectionString\n                    );\n\n                //eventHubSettings.processorHostOptions = new EventProcessorOptions();\n                //eventHubSettings.processorHostOptions.InitialOffsetProvider = (partitionId) => DateTime.UtcNow;\n                //eventHubSettings.processorHostOptions.ExceptionReceived += WebSocketEventProcessor.ExceptionReceived;\n\n                Trace.TraceInformation(\"Registering EventProcessor for \" + eventHubSettings.name);\n                //eventHubSettings.processorHost.RegisterEventProcessorAsync<WebSocketEventProcessor>(eventHubSettings.processorHostOptions).Wait();\n                eventHubSettings.processorHost.RegisterEventProcessorAsync<WebSocketEventProcessor>().Wait();\n            }\n            catch (Exception e)\n            {\n                Debug.Print(\"Error happened while trying to connect Event Hub: \" + e.ToString());\n            }\n\n        }\n\n        private void GetAppSettings()\n        {\n            try\n            {\n                globalSettings.ForceSocketCloseOnUserActionsTimeout =\n                    CloudConfigurationManager.GetSetting(\"ForceSocketCloseOnUserActionsTimeout\") == \"true\";\n\n                // Read settings for Devices Event Hub (IoTHub event hub compatible endpoint)\n                eventHubDevicesSettings.name = CloudConfigurationManager.GetSetting(\"Azure.IoT.IoTHub.EventHub.Name\");\n                eventHubDevicesSettings.connectionString = CloudConfigurationManager.GetSetting(\"Azure.IoT.IoTHub.EventHub.ConnectionString\");\n                eventHubDevicesSettings.consumerGroup = CloudConfigurationManager.GetSetting(\"Azure.IoT.IoTHub.EventHub.ConsumerGroup\");\n                eventHubDevicesSettings.storageConnectionString = CloudConfigurationManager.GetSetting(\"Azure.Storage.ConnectionString\");\n                // eventHubDevicesSettings.namespaceManager = NamespaceManager.CreateFromConnectionString(CloudConfigurationManager.GetSetting(\"Microsoft.ServiceBus.ConnectionString\"));\n\n                // Read settings for Alerts Event Hub\n                eventHubAlertsSettings.name = CloudConfigurationManager.GetSetting(\"Azure.ServiceBus.EventHub.Name\");\n                eventHubAlertsSettings.connectionString = CloudConfigurationManager.GetSetting(\"Azure.ServiceBus.EventHub.ConnectionString\");\n                eventHubAlertsSettings.consumerGroup = CloudConfigurationManager.GetSetting(\"Azure.ServiceBus.EventHub.ConsumerGroup\");\n                eventHubAlertsSettings.storageConnectionString = CloudConfigurationManager.GetSetting(\"Azure.Storage.ConnectionString\");\n                //eventHubAlertsSettings.namespaceManager = NamespaceManager.CreateFromConnectionString(CloudConfigurationManager.GetSetting(\"Microsoft.ServiceBus.ConnectionString\"));\n\n                // Read other settings\n                globalSettings.AdminName = CloudConfigurationManager.GetSetting(\"AdminName\");\n            }\n            catch (Exception)\n            {\n                // TODO : display error on site\n            }\n\n        }\n\n    }\n}"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Helpers/BlobHelper.cs",
    "content": "﻿using Microsoft.WindowsAzure.Storage;\nusing Microsoft.WindowsAzure.Storage.Blob;\n\nnamespace ConnectTheDotsWebSite.Helpers\n{\n    public static class BlobHelper\n    {\n        public static CloudBlobContainer SetUpContainer(string storageConnectionString,\n            string containerName)\n        {\n            CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(storageConnectionString);\n            CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();\n            CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference(containerName);\n            return cloudBlobContainer;\n        }\n    }\n}"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Helpers/IoTHubHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\nusing Microsoft.Azure.Devices;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace ConnectTheDotsWebSite.Helpers\n{\n    public static class IoTHubHelper\n    {\n        public static void SendMessage(string deviceId, string messageText)\n        {\n            var message = new Message(Encoding.ASCII.GetBytes(messageText));\n            var serviceClient = ServiceClient.CreateFromConnectionString(Microsoft.Azure.CloudConfigurationManager.GetSetting(\"Azure.IoT.IoTHub.ConnectionString\"), TransportType.Amqp);\n            if (serviceClient!=null) serviceClient.SendAsync(deviceId, message).Wait();\n        }\n\n        public enum DeleteDeviceResult\n        {\n            Success,\n            DeviceNotRegistered,\n            Error\n        }\n\n        public static DeleteDeviceResult DeleteDevice(string deviceId)\n        {\n            var manager = RegistryManager.CreateFromConnectionString(Microsoft.Azure.CloudConfigurationManager.GetSetting(\"Azure.IoT.IoTHub.ConnectionString\"));\n            if (manager != null)\n            {\n                // Check if device exists\n                Device device = manager.GetDeviceAsync(deviceId).Result;\n                if (device == null)\n                    return DeleteDeviceResult.DeviceNotRegistered;\n                else\n                {\n                    manager.RemoveDeviceAsync(deviceId);\n                    return DeleteDeviceResult.Success;\n                }\n            }\n            return DeleteDeviceResult.Error;\n        }\n\n        public enum AddDeviceResult\n        {\n            Success,\n            DeviceAlreadyExists,\n            Error\n        }\n\n        public static AddDeviceResult AddDevice(string deviceId)\n        {\n            var manager = RegistryManager.CreateFromConnectionString(Microsoft.Azure.CloudConfigurationManager.GetSetting(\"Azure.IoT.IoTHub.ConnectionString\"));\n            if (manager != null)\n            {\n                // Check if device already exists\n                Device device = manager.GetDeviceAsync(deviceId).Result;\n                if (device != null)\n                    return AddDeviceResult.DeviceAlreadyExists;\n                else\n                {\n                    device = manager.AddDeviceAsync(new Device(deviceId)).Result;\n                    return (device == null) ? AddDeviceResult.Error : AddDeviceResult.Success;\n                }\n            }\n            return AddDeviceResult.Error;\n        }\n\n\n        public static List<IDictionary<string, object>> ListDevices(int count)\n        {\n            IEnumerable<Device> devices;\n            List<IDictionary<string, object>> result = null;\n\n            var iotHubConnectionString = Microsoft.Azure.CloudConfigurationManager.GetSetting(\"Azure.IoT.IoTHub.ConnectionString\");\n\n            var manager = RegistryManager.CreateFromConnectionString(iotHubConnectionString);\n\n            if (manager != null)\n            {\n                try\n                {\n                    devices = manager.GetDevicesAsync(count).Result;\n                    if (devices.Count<Device>() > 0)\n                    {\n                        result = new List<IDictionary<string, object>>();\n                        foreach (Device device in devices)\n                        {\n                            result.Add(new Dictionary<String, object>() { { \"guid\", device.Id }, { \"connectionstring\", CreateDeviceConnectionString(device, iotHubConnectionString) } });\n                        }\n                    }\n                }\n                catch (Exception e)\n                {\n                    Console.WriteLine(\"Error: \" + e.Message);\n                }\n            }\n            return result;\n        }\n\n        private static String CreateDeviceConnectionString(Device device, string iotHubConnectionString)\n        {\n            StringBuilder deviceConnectionString = new StringBuilder();\n\n            var hostName = String.Empty;\n            var tokenArray = iotHubConnectionString.Split(';');\n            for (int i = 0; i < tokenArray.Length; i++)\n            {\n                var keyValueArray = tokenArray[i].Split('=');\n                if (keyValueArray[0] == \"HostName\")\n                {\n                    hostName = tokenArray[i] + ';';\n                    break;\n                }\n            }\n\n            if (!String.IsNullOrWhiteSpace(hostName))\n            {\n                deviceConnectionString.Append(hostName);\n                deviceConnectionString.AppendFormat(\"DeviceId={0}\", device.Id);\n\n                if (device.Authentication != null)\n                {\n                    if ((device.Authentication.SymmetricKey != null) && (device.Authentication.SymmetricKey.PrimaryKey != null))\n                    {\n                        deviceConnectionString.AppendFormat(\";SharedAccessKey={0}\", device.Authentication.SymmetricKey.PrimaryKey);\n                    }\n                    else\n                    {\n                        deviceConnectionString.AppendFormat(\";x509=true\");\n                    }\n                }\n            }\n            return deviceConnectionString.ToString();\n        }\n    }\n}"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ConnectTheDotsWebSite\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ConnectTheDotsWebSite\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"3eb89f82-5fa6-4126-b0d9-f36d3389d9fb\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Revision and Build Numbers \n// by using the '*' as shown below:\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Properties/PublishProfiles/LocalDeploy.pubxml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\nThis file is used by the publish/package process of your Web project. You can customize the behavior of this process\nby editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. \n-->\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <WebPublishMethod>FileSystem</WebPublishMethod>\n    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>\n    <LastUsedPlatform>Any CPU</LastUsedPlatform>\n    <SiteUrlToLaunchAfterPublish />\n    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>\n    <ExcludeApp_Data>False</ExcludeApp_Data>\n    <publishUrl>C:\\IoT\\connectthedots\\Azure\\WebSite\\site</publishUrl>\n    <DeleteExistingFiles>True</DeleteExistingFiles>\n  </PropertyGroup>\n</Project>"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/SensorInventory.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Web;\n\nnamespace ConnectTheDotsWebSite\n{\n    public class SensorInventory\n    {\n        public static ICollection<string> GetSensorList()\n        {\n            var sensors = new List<string>(WebSocketEventProcessor.g_devices.Keys);\n            sensors.Insert(0, \"All\");\n            sensors.Insert(0, \"None\");\n            return sensors;\n        }\n    }\n}\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Web.Debug.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->\n\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\n  <!--\n    In the example below, the \"SetAttributes\" transform will change the value of \n    \"connectionString\" to use \"ReleaseSQLServer\" only when the \"Match\" locator \n    finds an attribute \"name\" that has a value of \"MyDB\".\n    \n    <connectionStrings>\n      <add name=\"MyDB\" \n        connectionString=\"Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True\" \n        xdt:Transform=\"SetAttributes\" xdt:Locator=\"Match(name)\"/>\n    </connectionStrings>\n  -->\n  <system.web>\n    <!--\n      In the example below, the \"Replace\" transform will replace the entire \n      <customErrors> section of your web.config file.\n      Note that because there is only one customErrors section under the \n      <system.web> node, there is no need to use the \"xdt:Locator\" attribute.\n      \n      <customErrors defaultRedirect=\"GenericError.htm\"\n        mode=\"RemoteOnly\" xdt:Transform=\"Replace\">\n        <error statusCode=\"500\" redirect=\"InternalError.htm\"/>\n      </customErrors>\n    -->\n  </system.web>\n</configuration>"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Web.PublishTemplate.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\nWeb.config file for WebClient based upon Web.PublishTemplate.config\n\nThe settings that can be used in this file are documented at \nhttp://www.mono-project.com/Config_system.web and \nhttp://msdn2.microsoft.com/en-us/library/b5ysx397.aspx\n-->\n<configuration>\n  <system.web>\n    <compilation defaultLanguage=\"C#\" debug=\"true\">\n      <assemblies>\n        <add assembly=\"System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n      </assemblies>\n    </compilation>\n    <customErrors mode=\"Off\"></customErrors>\n    <authentication mode=\"None\">\n    </authentication>\n    <authorization>\n      <allow users=\"*\" />\n    </authorization>\n    <httpHandlers>\n    </httpHandlers>\n    <trace enabled=\"false\" localOnly=\"true\" pageOutput=\"false\" requestLimit=\"10\" traceMode=\"SortByTime\" />\n    <sessionState mode=\"InProc\" cookieless=\"false\" timeout=\"20\" />\n    <globalization requestEncoding=\"utf-8\" responseEncoding=\"utf-8\" />\n    <pages>\n    </pages>\n  </system.web>\n  <appSettings>\n\n    <add key=\"Microsoft.ServiceBus.EventHubDevices\" value=\"ehdevices\" />\n    <add key=\"Microsoft.ServiceBus.EventHubAlerts\" value=\"ehalerts\" />\n    <add key=\"Microsoft.ServiceBus.ConnectionString\" value=\"Endpoint=sb://ctd0319-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=0y/eLYYisIRebqiVQGhjVv7CtHAo9lzeEKekAA+8lD4=\" />\n    <add key=\"Microsoft.ServiceBus.ConnectionStringDevices\" value=\"Endpoint=sb://ctd0319-ns.servicebus.windows.net/;SharedAccessKeyName=WebSite;SharedAccessKey=HeztnbgJrc6ttRf3F54WoukH8+NQRIsAasWDLCrYb1k=\" />\n    <add key=\"Microsoft.ServiceBus.ConnectionStringAlerts\" value=\"Endpoint=sb://ctd0319-ns.servicebus.windows.net/;SharedAccessKeyName=WebSite;SharedAccessKey=k5qSI4lURDfjfNDD8GRasq3M4bvYR+IjFRgsqPXR9Ug=\" />\n    <add key=\"Microsoft.Storage.ConnectionString\" value=\"DefaultEndpointsProtocol=https;AccountName=ctd0319storage;AccountKey=iGH+dNqgQ5eBC2sfVTp7ONYFAHMFeKcAWasBE5bdzSs0epi4a9e03ZQaXjoXgrtzMXBiwAj+Nz4xYhQODDkUuA==\" />\n\n    <add key=\"aspnet:UseTaskFriendlySynchronizationContext\" value=\"true\" />\n\n  </appSettings>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-6.0.0.0\" newVersion=\"6.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.WindowsAzure.Storage\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-4.3.0.0\" newVersion=\"4.3.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http.Formatting\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.2.2.0\" newVersion=\"5.2.2.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Web.Http\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.2.2.0\" newVersion=\"5.2.2.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Edm\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.6.3.0\" newVersion=\"5.6.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Services.Client\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.6.3.0\" newVersion=\"5.6.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.OData\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.6.3.0\" newVersion=\"5.6.3.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n  <system.webServer>\n    <handlers>\n      <remove name=\"ExtensionlessUrlHandler-Integrated-4.0\" />\n      <remove name=\"OPTIONSVerbHandler\" />\n      <remove name=\"TRACEVerbHandler\" />\n      <add name=\"ExtensionlessUrlHandler-Integrated-4.0\" path=\"*.\" verb=\"*\" type=\"System.Web.Handlers.TransferRequestHandler\" preCondition=\"integratedMode,runtimeVersionv4.0\" />\n    </handlers>\n  </system.webServer>\n  <system.serviceModel>\n    <extensions>\n      <!-- In this extension section we are introducing all known service bus extensions. User can remove the ones they don't need. -->\n      <behaviorExtensions>\n        <add name=\"connectionStatusBehavior\" type=\"Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"transportClientEndpointBehavior\" type=\"Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"serviceRegistrySettings\" type=\"Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </behaviorExtensions>\n      <bindingElementExtensions>\n        <add name=\"netMessagingTransport\" type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus,  Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"tcpRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"httpRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"httpsRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"onewayRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </bindingElementExtensions>\n      <bindingExtensions>\n        <add name=\"basicHttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"webHttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"ws2007HttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netTcpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netOnewayRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netEventRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netMessagingBinding\" type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </bindingExtensions>\n    </extensions>\n  </system.serviceModel>\n</configuration>\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Web.Release.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->\n\n<configuration xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\n  <!--\n    In the example below, the \"SetAttributes\" transform will change the value of \n    \"connectionString\" to use \"ReleaseSQLServer\" only when the \"Match\" locator \n    finds an attribute \"name\" that has a value of \"MyDB\".\n    \n    <connectionStrings>\n      <add name=\"MyDB\" \n        connectionString=\"Data Source=ReleaseSQLServer;Initial Catalog=MyReleaseDB;Integrated Security=True\" \n        xdt:Transform=\"SetAttributes\" xdt:Locator=\"Match(name)\"/>\n    </connectionStrings>\n  -->\n  <system.web>\n    <compilation xdt:Transform=\"RemoveAttributes(debug)\" />\n    <!--\n      In the example below, the \"Replace\" transform will replace the entire \n      <customErrors> section of your web.config file.\n      Note that because there is only one customErrors section under the \n      <system.web> node, there is no need to use the \"xdt:Locator\" attribute.\n      \n      <customErrors defaultRedirect=\"GenericError.htm\"\n        mode=\"RemoteOnly\" xdt:Transform=\"Replace\">\n        <error statusCode=\"500\" redirect=\"InternalError.htm\"/>\n      </customErrors>\n    -->\n  </system.web>\n</configuration>"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/Web.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\nWeb.config file for WebClient based upon Web.config\n\nThe settings that can be used in this file are documented at \nhttp://www.mono-project.com/Config_system.web and \nhttp://msdn2.microsoft.com/en-us/library/b5ysx397.aspx\n-->\n<configuration>\n  <!--\n    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.\n\n    The following attributes can be set on the <httpRuntime> tag.\n      <system.Web>\n        <httpRuntime targetFramework=\"4.6.1\" />\n      </system.Web>\n  -->\n  <system.web>\n    <compilation defaultLanguage=\"C#\" debug=\"true\" targetFramework=\"4.6.1\">\n      <assemblies>\n        <add assembly=\"System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n        <add assembly=\"System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n      </assemblies>\n    </compilation>\n    <customErrors mode=\"Off\" />\n    <authentication mode=\"None\" />\n    <authorization>\n      <allow users=\"*\" />\n    </authorization>\n    <httpHandlers />\n    <trace enabled=\"false\" localOnly=\"true\" pageOutput=\"false\" requestLimit=\"10\" traceMode=\"SortByTime\" />\n    <sessionState mode=\"InProc\" cookieless=\"false\" timeout=\"20\" />\n    <globalization requestEncoding=\"utf-8\" responseEncoding=\"utf-8\" />\n    <pages />\n  </system.web>\n  <appSettings>\n    <!-- The below app settings are set by the ARM template and are here just for reference\n    <add key=\"azure.IoT.IoTHub.ConnectionString\" value=\"<IoTHubOwnerConnectionString>\"/>\n    <add key=\"azure.IoT.IoTHub.EventHub.Name\" value=\"<IoTHubName>\"/>\n    <add key=\"azure.IoT.IoTHub.EventHub.ConnectionString\" value=\"<IotHubConnectionString>\"/>\n    <add key=\"azure.IoT.IoTHub.EventHub.ConsumerGroup\" value=\"websitecg\"/>\n    <add key=\"azure.ServiceBus.EventHub.Name\" value=\"ehalerts\"/>\n    <add key=\"azure.ServiceBus.EventHub.ConnectionString\" value=\"<EventHubConnectionString>\"/>\n    <add key=\"azure.ServiceBus.EventHub.ConsumerGroup\" value=\"$Default\"/>\n    <add key=\"azure.Storage.ConnectionString\" value=\"<StorageAccountConnectionString>\"/>\n    <add key=\"AdminName\" value=\"<admin@admin.com>\" />-->\n\n  <add key=\"aspnet:UseTaskFriendlySynchronizationContext\" value=\"true\" />\n  </appSettings>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-9.0.0.0\" newVersion=\"9.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.WindowsAzure.Storage\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-7.2.1.0\" newVersion=\"7.2.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Net.Http.Formatting\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.2.3.0\" newVersion=\"5.2.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"System.Web.Http\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.2.3.0\" newVersion=\"5.2.3.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Edm\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Services.Client\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.OData\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Validation\" publicKeyToken=\"2fc06f0d701809a7\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.3.0.0\" newVersion=\"2.3.0.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n  <system.webServer>\n    <handlers>\n      <remove name=\"ExtensionlessUrlHandler-Integrated-4.0\" />\n      <remove name=\"OPTIONSVerbHandler\" />\n      <remove name=\"TRACEVerbHandler\" />\n      <add name=\"ExtensionlessUrlHandler-Integrated-4.0\" path=\"*.\" verb=\"*\" type=\"System.Web.Handlers.TransferRequestHandler\" preCondition=\"integratedMode,runtimeVersionv4.0\" />\n    </handlers>\n  </system.webServer>\n  <system.serviceModel>\n    <extensions>\n      <!-- In this extension section we are introducing all known service bus extensions. User can remove the ones they don't need. -->\n      <behaviorExtensions>\n        <add name=\"connectionStatusBehavior\" type=\"Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"transportClientEndpointBehavior\" type=\"Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"serviceRegistrySettings\" type=\"Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </behaviorExtensions>\n      <bindingElementExtensions>\n        <add name=\"netMessagingTransport\" type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus,  Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"tcpRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"httpRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"httpsRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"onewayRelayTransport\" type=\"Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </bindingElementExtensions>\n      <bindingExtensions>\n        <add name=\"basicHttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"webHttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"ws2007HttpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netTcpRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netOnewayRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netEventRelayBinding\" type=\"Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n        <add name=\"netMessagingBinding\" type=\"Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" />\n      </bindingExtensions>\n    </extensions>\n  </system.serviceModel>\n</configuration>"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/WebSocketEventProcessor.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.Collections.Concurrent;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Web;\n\nusing Microsoft.ServiceBus.Messaging;\n\nusing Newtonsoft.Json;\nusing ConnectTheDotsWebSite.Helpers;\n\nnamespace ConnectTheDotsWebSite\n{\n\tclass WebSocketEventProcessor : IEventProcessor\n\t{\n\t\t// Keep track of devices seen, and the last message received for each device\n\t\tpublic static ConcurrentDictionary<string, IDictionary<string, object>> g_devices =\n\t\t\t new ConcurrentDictionary<string, IDictionary<string, object>>();\n\n\t\t// Keep a buffer of all messages for as long as the client UX needs them\n\t\tstatic TimeSpan bufferTimeInterval = new TimeSpan(0, 1, 0);\n\n\t\t// Message buffer (one per processor instance)\n\t\tstatic SortedList<DateTime, List<IDictionary<string, object>>> sortedDataBuffer = new SortedList<DateTime, List<IDictionary<string, object>>>();\n\t\tStopwatch checkpointStopWatch;\n\t\tPartitionContext partitionContext;\n\n//\t\tpublic static bool GenerateAnomalies = false;\n\n\t\tstruct MinMax { public double min; public double max;};\n\t\tprivate static Dictionary<string, MinMax> MinMaxValue = new Dictionary<string, MinMax>();\n\n        public async Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> events)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tvar now = DateTime.UtcNow;\n\n\t\t\t\tforeach (var eventData in events)\n\t\t\t\t{\n\t\t\t\t\t// We don't care about messages that are older than bufferTimeInterval\n\t\t\t\t\tif ((eventData.EnqueuedTimeUtc + bufferTimeInterval) >= now)\n\t\t\t\t\t{\n\t\t\t\t\t\t// Get message from the eventData body and convert JSON string into message object\n\t\t\t\t\t\tstring eventBodyAsString = Encoding.UTF8.GetString(eventData.GetBytes());\n\n\t\t\t\t\t\t// There can be several messages in one\n\t\t\t\t\t\tIList<IDictionary<string, object>> messagePayloads;\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Attempt to deserialze event body as single JSON message\n\t\t\t\t\t\t\tmessagePayloads = new List<IDictionary<string, object>> \n                            { \n                                JsonConvert.DeserializeObject<IDictionary<string, object>>(eventBodyAsString)\n                            };\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Not a single JSON message: attempt to deserialize as array of messages\n\n\t\t\t\t\t\t\t// Azure Stream Analytics Preview generates invalid JSON for some multi-values queries\n\t\t\t\t\t\t\t// Workaround: turn concatenated json objects (ivalid JSON) into array of json objects (valid JSON)\n\t\t\t\t\t\t\tif (eventBodyAsString.IndexOf(\"}{\") >= 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\teventBodyAsString = eventBodyAsString.Replace(\"}{\", \"},{\");\n\t\t\t\t\t\t\t}\n                            if (eventBodyAsString.IndexOf(\"}\\r\\n{\") >= 0)\n                            {\n                                eventBodyAsString = eventBodyAsString.Replace(\"}\\r\\n{\", \"},{\");\n                            }\n\t\t\t\t\t\t\tif (!eventBodyAsString.EndsWith(\"]\"))\n\t\t\t\t\t\t\t\teventBodyAsString = eventBodyAsString + \"]\";\n\t\t\t\t\t\t\tif (!eventBodyAsString.StartsWith(\"[\"))\n\t\t\t\t\t\t\t\teventBodyAsString = \"[\" + eventBodyAsString.Substring(eventBodyAsString.IndexOf(\"{\"));\n\n\t\t\t\t\t\t\tmessagePayloads = JsonConvert.DeserializeObject<IList<IDictionary<string, object>>>(eventBodyAsString);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar rnd = new Random();\n\t\t\t\t\t\tforeach (var messagePayload in messagePayloads)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Read time value\n\t\t\t\t\t\t\tif (messagePayload.ContainsKey(\"timecreated\"))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessagePayload[\"time\"] = messagePayload[\"timecreated\"];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (messagePayload.ContainsKey(\"timearrived\"))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessagePayload[\"time\"] = messagePayload[\"timearrived\"];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// process an alert\n                            if (messagePayload.ContainsKey(\"alerttype\") && messagePayload.ContainsKey(\"timecreated\"))\n\t\t\t\t\t\t\t{\n                                Debug.Print(\"Alert message received!\");\n\n                                // Send alert to device\n                                var alertMessage = JsonConvert.SerializeObject(messagePayload).ToString();\n\n                                try\n                                {\n                                    IoTHubHelper.SendMessage(messagePayload[\"guid\"].ToString(), alertMessage);\n                                }\n                                catch (Exception e)\n                                {\n                                    Trace.TraceError(\"Error notifying device {0}, check that message receiving is implemented on the device\", messagePayload[\"guid\"].ToString());\n                                }\n\n                                DateTime time = DateTime.Parse(messagePayload[\"timecreated\"].ToString());\n\t\t\t\t\t\t\t\t// find the nearest point\n\t\t\t\t\t\t\t\tlock (sortedDataBuffer)\n\t\t\t\t\t\t\t\t{\n                                    int idx = SearchHelper.FindFirstIndexGreaterThanOrEqualTo(sortedDataBuffer, time);\n\t\t\t\t\t\t\t\t\tbool found = false;\n\t\t\t\t\t\t\t\t\tstring alertType = messagePayload[\"alerttype\"] as string;\n\n\t\t\t\t\t\t\t\t\tif (idx >= sortedDataBuffer.Values.Count)\n\t\t\t\t\t\t\t\t\t\tidx = sortedDataBuffer.Values.Count - 1;\n\n\t\t\t\t\t\t\t\t\twhile (idx >= 0)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tList<IDictionary<string, object>> dictList = sortedDataBuffer.Values[idx];\n\t\t\t\t\t\t\t\t\t\tforeach (IDictionary<string, object> dict in dictList)\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tif (\n                                                (dict.ContainsKey(\"guid\") && messagePayload.ContainsKey(\"guid\") && messagePayload[\"guid\"].ToString() == dict[\"guid\"].ToString())\n                                                &&\n                                                (dict.ContainsKey(\"measurename\") && messagePayload.ContainsKey(\"measurename\") && messagePayload[\"measurename\"].ToString() == dict[\"measurename\"].ToString())\n                                                &&\n                                                (!messagePayload.ContainsKey(\"displayname\") || dict.ContainsKey(\"displayname\") && messagePayload[\"measurename\"].ToString() == dict[\"measurename\"].ToString())\n                                                )\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t// fill anomaly message\n\t\t\t\t\t\t\t\t\t\t\t    if (!messagePayload.ContainsKey(\"value\"))\n\t\t\t\t\t\t\t\t\t\t\t    {\n                                                    messagePayload[\"value\"] = dict[\"value\"];\n\t\t\t\t\t\t\t\t\t\t\t    }\n                                                if (!messagePayload.ContainsKey(\"displayname\") && dict.ContainsKey(\"displayname\"))\n\t\t\t\t\t\t\t\t\t\t\t    {\n                                                    messagePayload[\"displayname\"] = dict[\"displayname\"];\n\t\t\t\t\t\t\t\t\t\t\t    }   \n\t\t\t\t\t\t\t\t\t\t\t\tif (!messagePayload.ContainsKey(\"time\"))\n\t\t\t\t\t\t\t\t\t\t\t\t{\n                                                    messagePayload[\"time\"] = messagePayload[\"timecreated\"];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (found) break;\n\t\t\t\t\t\t\t\t\t\tidx--;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (messagePayload.ContainsKey(\"guid\"))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tvar guid = messagePayload[\"guid\"].ToString();\n\t\t\t\t\t\t\t\tdouble val = Convert.ToDouble(messagePayload[\"value\"]);\n\n\t\t\t\t\t\t\t\tif (!MinMaxValue.ContainsKey(guid))\n\t\t\t\t\t\t\t\t\tMinMaxValue.Add(guid, new MinMax { min = val, max = val });\n\n\t\t\t\t\t\t\t\tMinMax tmp = MinMaxValue[messagePayload[\"guid\"].ToString()];\n\t\t\t\t\t\t\t\tif (tmp.min > val)\n\t\t\t\t\t\t\t\t\ttmp.min = val;\n\t\t\t\t\t\t\t\tif (tmp.max < val)\n\t\t\t\t\t\t\t\t\ttmp.max = val;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// We want to read the time value from the message itself.\n\t\t\t\t\t\t\t// If none is found we will use the enqueued time\n\t\t\t\t\t\t\tDateTime messageTimeStamp = new DateTime();\n\t\t\t\t\t\t\tif (messagePayload.ContainsKey(\"time\"))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageTimeStamp = DateTime.Parse(messagePayload[\"time\"].ToString());\n\n                                //if (GenerateAnomalies && rnd.Next(100) >= 95)\n                                //{\n                                //    messagePayload.Add(\"alerttype\", \"testType\");\n                                //    messagePayload.Add(\"dsplalert\", \"testAlert\");\n                                //    messagePayload.Add(\"message\", \"Anomaly detected by Azure ML model.\");\n                                //    messagePayload.Add(\"timestart\", messagePayload[\"time\"]);\n\n                                //    // correct value\n                                //    if (rnd.Next(2) == 1)\n                                //        messagePayload[\"value\"] = MinMaxValue[messagePayload[\"guid\"].ToString()].max * (1.01 + 0.05 * rnd.Next(100) / 100);\n                                //    else\n                                //        messagePayload[\"value\"] = MinMaxValue[messagePayload[\"guid\"].ToString()].min * (0.99 - 0.05 * rnd.Next(100) / 100);\n                                //}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (messagePayload.ContainsKey(\"timestart\"))\n\t\t\t\t\t\t\t\tmessageTimeStamp = DateTime.Parse(messagePayload[\"timestart\"].ToString());\n\t\t\t\t\t\t\telse messageTimeStamp = eventData.EnqueuedTimeUtc;\n\n\t\t\t\t\t\t\t// Build up the list of devices seen so far (in lieu of a formal device repository)\n\t\t\t\t\t\t\t// Also keep the last message received per device (not currently used in the sample)\n\t\t\t\t\t\t\tif (messagePayload.ContainsKey(\"guid\") && !messagePayload.ContainsKey(\"valueAvg\"))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstring guid = messagePayload[\"guid\"].ToString();\n\t\t\t\t\t\t\t\tif (guid != null)\n\t\t\t\t\t\t\t\t{\n                                    // Add device to event processor list of devices if not already in there\n                                    if (WebSocketEventProcessor.g_devices.TryAdd(guid, messagePayload))\n                                    {\n                                        // New device guid received. Update the Global devices list\n                                        Global.AddToDeviceList(messagePayload);\n                                    }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Notify clients\n\t\t\t\t\t\t\tMyWebSocketHandler.SendToClients(messagePayload);\n\n\t\t\t\t\t\t\t// Buffer messages so we can resend them to clients that connect later\n\t\t\t\t\t\t\t// or when a client requests data for a different device\n\n\t\t\t\t\t\t\t// Lock to guard against concurrent reads from client resend\n\t\t\t\t\t\t\tlock (sortedDataBuffer)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif (!sortedDataBuffer.ContainsKey(messageTimeStamp))\n\t\t\t\t\t\t\t\t\tsortedDataBuffer.Add(messageTimeStamp, new List<IDictionary<string, object>>());\n\n\t\t\t\t\t\t\t\tsortedDataBuffer[messageTimeStamp].Add(messagePayload);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tDebug.Print(\"Received old message timestamped:\" + eventData.EnqueuedTimeUtc.ToString());\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//Call checkpoint every minute\n\t\t\t\tif (this.checkpointStopWatch.Elapsed > TimeSpan.FromMinutes(1))\n\t\t\t\t{\n\t\t\t\t\tawait context.CheckpointAsync();\n\t\t\t\t\tlock (this)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.checkpointStopWatch.Restart();\n\t\t\t\t\t}\n\n\t\t\t\t\t// trim data buffer to keep only last 10 minutes of data\n\t\t\t\t\tlock (sortedDataBuffer)\n\t\t\t\t\t{\n\t\t\t\t\t\tDateTime oldDataPoint = now - bufferTimeInterval;\n\t\t\t\t\t\t// find the closest point\n\t\t\t\t\t\tint idx = SearchHelper.FindFirstIndexGreaterThanOrEqualTo(sortedDataBuffer, oldDataPoint);\n\t\t\t\t\t\t// trim\n\t\t\t\t\t\twhile (idx > 0 && sortedDataBuffer.Count > 0 && sortedDataBuffer.Keys[0] <= oldDataPoint)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsortedDataBuffer.RemoveAt(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tTrace.TraceError(\"Error processing events in EH {0}, partition {1}: {0}\",\n\t\t\t\t\t context.EventHubPath, context.Lease.PartitionId, e.Message);\n\t\t\t}\n\t\t}\n\n\t\tpublic Task OpenAsync(PartitionContext context)\n\t\t{\n\t\t\tTrace.TraceInformation(\n\t\t\t\t String.Format(\"Opening processor for EH {0}, partition {1}.\",\n\t\t\t\t\t  context.EventHubPath, context.Lease.PartitionId));\n\t\t\tlock (g_processors)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tg_processors.Add(this);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tTrace.TraceError(\"Exception while adding processor for EH {0}, partition {1}: {2}\",\n\t\t\t\t\t\t context.EventHubPath, context.Lease.PartitionId, e.Message);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.partitionContext = context;\n\t\t\tthis.checkpointStopWatch = new Stopwatch();\n\t\t\tthis.checkpointStopWatch.Start();\n\n\t\t\treturn Task.FromResult<object>(null);\n\t\t}\n\n\t\tpublic async Task CloseAsync(PartitionContext context, CloseReason reason)\n\t\t{\n\t\t\tTrace.TraceInformation(\n\t\t\t\t String.Format(\"Closing processor for EH {0}, partition {1}. Reason: {2}\",\n\t\t\t\t\t  context.EventHubPath, context.Lease.PartitionId, reason));\n\n\t\t\tlock (g_processors)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\tg_processors.Remove(this);\n\t\t\t\t}\n\t\t\t\tcatch (Exception e)\n\t\t\t\t{\n\t\t\t\t\tTrace.TraceError(\n\t\t\t\t\t\t String.Format(\"Exception while removing processor for EH {0}, partition {1}: {2}\",\n\t\t\t\t\t\t\t  context.EventHubPath, context.Lease.PartitionId, e.Message));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (reason == CloseReason.Shutdown)\n\t\t\t{\n\t\t\t\tawait context.CheckpointAsync();\n\t\t\t}\n\t\t}\n\n\t\tpublic static void ExceptionReceived(object sender, ExceptionReceivedEventArgs e)\n\t\t{\n\t\t\tTrace.TraceError(\"Exception received from EventHostProcessor: {0} - {1}, {2}\", e.Exception, e.Action, sender);\n\t\t}\n\n\t\tstatic List<WebSocketEventProcessor> g_processors = new List<WebSocketEventProcessor>();\n\n\t\t// Retrieve buffered messages from all EH partitions (= processor instances)\n\t\t// Note: This needs to be partitioned and/or turned into a distributed call/cache \n\t\t//  to support effective scale-out to multiple web client machines/VMs for large number of devices\n\t\tpublic static SortedList<DateTime, List<IDictionary<string, object>>> GetAllBufferedMessages()\n\t\t{\n\t\t\t//SortedList<DateTime, IDictionary<string, object>> allMessages = new SortedList<DateTime, IDictionary<string, object>>();\n\t\t\t//DateTime now = DateTime.UtcNow;\n\n\t\t\t//lock (g_processors)\n\t\t\t//{\n\t\t\t//    foreach (var processor in g_processors)\n\t\t\t//    {\n\t\t\t//        foreach(var item in processor.sortedDataBuffer)\n\t\t\t//        {\n\t\t\t//            if ((item.Key + bufferTimeInterval) >= now)\n\t\t\t//            {\n\t\t\t//                if (!allMessages.ContainsKey(item.Key))\n\t\t\t//                    allMessages.Add(item.Key, item.Value);\n\t\t\t//            }\n\t\t\t//        }\n\t\t\t//    }\n\n\t\t\t//}\n\t\t\t//return allMessages;\n\t\t\treturn sortedDataBuffer;\n\t\t}\n\t}\n\tpublic static class SearchHelper\n\t{\n\t\tprivate static int BinarySearch<T>(IList<T> list, T value)\n\t\t{\n\t\t\tif (list == null)\n\t\t\t\tthrow new ArgumentNullException(\"list\");\n\t\t\tvar comp = Comparer<T>.Default;\n\t\t\tint lo = 0, hi = list.Count - 1;\n\t\t\twhile (lo < hi)\n\t\t\t{\n\t\t\t\tint m = (hi + lo) / 2;  // this might overflow; be careful.\n\t\t\t\tif (comp.Compare(list[m], value) < 0) lo = m + 1;\n\t\t\t\telse hi = m - 1;\n\t\t\t}\n\t\t\tif (lo < list.Count && comp.Compare(list[lo], value) < 0) lo++;\n\t\t\treturn lo;\n\t\t}\n\n\t\tpublic static int FindFirstIndexGreaterThanOrEqualTo<T, U>\n\t\t\t\t\t\t\t\t\t\t  (this SortedList<T, U> sortedList, T key)\n\t\t{\n\t\t\treturn BinarySearch(sortedList.Keys, key);\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/WebSocketHandler.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Net;\nusing System.Net.Http;\nusing System.Web.Http;\nusing System.Web;\n\nusing Microsoft.Web.WebSockets;\n\nusing Newtonsoft.Json;\n\nnamespace ConnectTheDotsWebSite\n{\n\tpublic class WebSocketConnectController : ApiController\n\t{\n\t\t// GET api/<controller>\n\t\tpublic HttpResponseMessage Get(string clientId)\n\t\t{\n\t\t\tHttpContext.Current.AcceptWebSocketRequest(new MyWebSocketHandler());\n\t\t\treturn Request.CreateResponse(HttpStatusCode.SwitchingProtocols);\n\t\t}\n\t}\n\n\tsealed class MyWebSocketHandler : WebSocketHandler\n\t{\n\t\tprivate static readonly WebSocketCollection _clients = new WebSocketCollection();\n\n\t\tpublic List<string> DeviceFilterList = new List<string>();\n\n\t\tpublic MyWebSocketHandler()\n\t\t{\n\t\t}\n\n\t\tpublic override void OnOpen()\n\t\t{\n\t\t\tlock (_clients)\n\t\t\t{\n\t\t\t\t_clients.Add(this);\n\t\t\t}\n\t\t\tResendDataToClient();\n\t\t}\n\n\t\tpublic override void OnClose()\n\t\t{\n\t\t\tlock (_clients)\n\t\t\t{\n\t\t\t\t_clients.Remove(this);\n\t\t\t}\n\t\t\tbase.OnClose();\n\t\t}\n\n\t\tpublic override void OnMessage(string message)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tvar messageDictionary = (IDictionary<string, object>)\n\t\t\t\t\t JsonConvert.DeserializeObject(message, typeof(IDictionary<string, object>));\n\n\t\t\t\tif (messageDictionary.ContainsKey(\"MessageType\"))\n\t\t\t\t{\n\t\t\t\t\tswitch (messageDictionary[\"MessageType\"] as string)\n\t\t\t\t\t{\n\t\t\t\t\t\tcase \"LiveDataSelection\":\n\t\t\t\t\t\t\tstring deviceFilter = messageDictionary[\"DeviceGUIDs\"] as string;\n\n\t\t\t\t\t\t\tif (deviceFilter == \"clear\")\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tDeviceFilterList.Clear();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstring[] guids = deviceFilter != null ? deviceFilter.Split(',') : null;\n\t\t\t\t\t\t\t\tif (guids == null) { DeviceFilterList.Add(\"All\"); }\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tforeach (var guid in guids)\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tDeviceFilterList.Add(guid.ToLower());\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tbreak;\n\n                        //case \"AnomaliesControl\":\n                        //    string newState = messageDictionary[\"State\"] as string;\n\n                        //    if (newState == \"generate\")\n                        //    {\n                        //        WebSocketEventProcessor.GenerateAnomalies = true;\n                        //    }\n                        //    else\n                        //    {\n                        //        WebSocketEventProcessor.GenerateAnomalies = false;\n                        //    }\n\n                        //    return;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tTrace.TraceError(\"Client message with unknown message type: {0} - {1}\", messageDictionary[\"MessageType\"], message);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tTrace.TraceError(\"Client message without message type: {0}\", message);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (Exception e)\n\t\t\t{\n\t\t\t\tTrace.TraceError(\"Error processing client message: {0} - {1}\", e.Message, message);\n\t\t\t}\n\t\t\tResendDataToClient();\n\t\t}\n\n\t\tprivate void ResendDataToClient()\n\t\t{\n\t\t\t// exit bulk mode\n\t\t\tthis.Send(JsonConvert.SerializeObject(new Dictionary<string, object> \n                    { \n                        { \"bulkData\", false }\n                    }\n\t\t\t));\n\n\t\t\treturn;\n\n\t\t\tvar bufferedMessages = WebSocketEventProcessor.GetAllBufferedMessages();\n\n\t\t\t// collect all guids for bulk data\n\n\t\t\tthis.Send(JsonConvert.SerializeObject(new Dictionary<string, object> \n                { \n                    { \"bulkData\", true }\n                }\n\t\t\t));\n\n\t\t\tlock (bufferedMessages)\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t\t//                IList<string> filteredMessages = new List<string>();\n\t\t\t\t\tforeach (var messageList in bufferedMessages.Values)\n\t\t\t\t\t{\n\t\t\t\t\t\tforeach (var message in messageList)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (Filter(message))\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t//                       filteredMessages.Add(JsonConvert.SerializeObject(message));\n\t\t\t\t\t\t\t\tthis.Send(JsonConvert.SerializeObject(message));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t//foreach (var payload in filteredMessages)\n\t\t\t\t\t//{\n\t\t\t\t\t//    this.Send(payload);\n\t\t\t\t\t//}\n\t\t\t\t}\n\t\t\t\tfinally\n\t\t\t\t{\n\t\t\t\t\tthis.Send(JsonConvert.SerializeObject(new Dictionary<string, object> \n                    { \n                        { \"bulkData\", false }\n                    }\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate bool Filter(IDictionary<string, object> message)\n\t\t{\n\t\t\tDateTime messageTime = new DateTime();\n\t\t\tTimeSpan bufferTime = new TimeSpan(0, 10, 0);\n\t\t\tDateTime now = DateTime.UtcNow;\n\n            if (message.ContainsKey(\"unitofmeasure\") && message.ContainsKey(\"value\"))\n                message[\"value\"] = float.Parse(message[\"value\"].ToString());\n            if (message.ContainsKey(\"time\"))\n\t\t\t\tmessageTime = DateTime.Parse(message[\"time\"].ToString());\n\t\t\telse if (message.ContainsKey(\"timestart\"))\n\t\t\t\tmessageTime = DateTime.Parse(message[\"timestart\"].ToString());\n\n\t\t\tif (\n\t\t\t\t\t  !message.ContainsKey(\"guid\") ||\n\t\t\t\t\t  (\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t this.DeviceFilterList.Contains(\"all\") ||\n\t\t\t\t\t\t\t this.DeviceFilterList.Contains(message[\"guid\"].ToString().ToLower())\n\t\t\t\t\t\t\t)\n\t\t\t\t\t  )\n\t\t\t\t )\n\t\t\t{\n\t\t\t\tif (messageTime + bufferTime < now)\n\t\t\t\t\treturn false;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tpublic static void SendToClients(IDictionary<string, object> message)\n\t\t{\n\t\t\t// snapshot the current clients\n\t\t\tWebSocketHandler[] clients;\n\t\t\tlock (_clients)\n\t\t\t{\n\t\t\t\tclients = _clients.ToArray<WebSocketHandler>();\n\t\t\t}\n\n\t\t\t//send\n\t\t\tforeach (MyWebSocketHandler client in clients)\n\t\t\t{\n\t\t\t\tif (client.Filter(message))\n\t\t\t\t{\n\t\t\t\t\tclient.Send(JsonConvert.SerializeObject(message));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/css/connectthedots.css",
    "content": "body {\n    font: 16px sans-serif;\n    color: #333;\n    width: 95%;\n}\n\n#header {\n    width: 100%;\n    border-bottom: 1px #cdcdcd solid;\n}\n\nh3 {\n    width: 100%;\n    background-color: #f7f7f7;\n    border-bottom: 1px #ddd solid;\n    padding: 10px;\n}\n\nh4 {\n    width: 100%;\n    background-color: #f7f7f7;\n    border-bottom: 1px #ddd solid;\n    margin-top: 0;\n}\n\n.big-block {\n    margin-left: 10px;\n}\n\nul {\n    list-style-type: none;\n    padding-left: 0;\n    font: 12px sans-serif;\n    color: #666;\n    left: 0\n}\n\nli {\n    cursor: pointer;\n    font-weight: normal;\n}\n\n.selected {\n    font-weight: bold;\n}\n\n\nli.selected:before {\n    content: \"\\25BA \\0020\";\n}\n\n/*styles for D3 charts*/\n.axis {\n    shape-rendering: crispEdges;\n}\n\n    .axis text {\n        font: 10px sans-serif;\n        font-weight: normal;\n        fill: #787878;\n    }\n\n    .axis path,\n    .axis line {\n        fill: none;\n        stroke: #787878;\n        shape-rendering: crispEdges;\n    }\n\n.y.axis {\n}\n\n.x.axis {\n}\n\npath.line {\n    fill: none;\n    stroke: steelblue;\n    stroke-width: 1.5px;\n}\n\n.legend {\n    font: 10px sans-serif;\n}\n\n/*for \"loading\" gif */\n#loading {\n    width: 100%;\n    height: 100%;\n    top: 0px;\n    left: 0px;\n    position: fixed;\n    display: block;\n    background-color: #777;\n    background-color: rgba(155, 155, 155, 0.4);\n    z-index: 99;\n    text-align: center;\n}\n\n#loading-inner {\n    background-color: #fff;\n    border-style: solid;\n    border-width: 1px;\n    width: 400px;\n    height: 200px;\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    margin-left: -200px;\n    margin-top: -100px;\n}\n\n#loading-image {\n    position: relative;\n    top: 10px;\n    left: 10px;\n    z-index: 100;\n}\n\n#loading-text {\n    position: relative;\n    top: 10px;\n    left: 10px;\n    z-index: 100;\n}\n\n#alerts {\n    height: 15%;\n    width: 100%;\n}\n\n#devices {\n    height: 15%;\n    width: 100%;\n}\n\n#Charts {\n    height: 100%;\n    position: relative;\n}\n\n#Graphics {\n    height: 80%;\n    width: 100%;\n    position: absolute;\n}\n\n#controllersContainer {\n    position: relative;\n    text-align: center;\n}\n\n.controller {\n    height: 300px;\n    right : 10px;\n    position: absolute;\n    text-align: left;\n}\n\n#chartsContainer {\n    margin-left: 200px;\n    position: relative;\n}\n\n.chart {\n    height: 300px;\n    width: 100%;\n    position: absolute;\n}\n\n#chartTwo {\n    top: 40%;\n}\n\n#chartOne {\n    top: 0;\n}\n\n#alertTable td {\n    font-size: 12px;\n    text-align: center;\n}\n\n#devicesTable td {\n    font-size: 12px;\n    text-align: center;\n}\n\n.d3-tip {\n    line-height: 1;\n    padding: 12px;\n    background: rgba(255, 255, 255, 0.9);\n    color: #000;\n    border-radius: 2px;\n}\n\n    .d3-tip .time_header {\n        color: grey;\n        font-size: 8px;\n        display: block;\n    }\n\n    .d3-tip .value_circle {\n        color: #006fc7;\n        font-size: 20px;\n    }\n\n    .d3-tip .value {\n        color: black;\n        font-size: 14px;\n        margin-left: 5px;\n    }\n\n    .d3-tip .message {\n        color: black;\n        font-size: 10px;\n        display: block;\n    }\n\n    /* Creates a small triangle extender for the tooltip */\n    .d3-tip:after {\n        box-sizing: border-box;\n        display: inline;\n        font-size: 8px;\n        width: 100%;\n        line-height: 1;\n        color: rgba(255, 255, 255, 0.9);\n        content: \"\\25BC\";\n        position: absolute;\n        text-align: center;\n    }\n\n    /* Style northward tooltips differently */\n    .d3-tip.n:after {\n        margin: -1px 0 0 0;\n        top: 100%;\n        left: 0;\n    }\n\n.sensorTip {\n    z-index: 10000;\n    position: absolute;\n    white-space: pre;\n    overflow: hidden;\n    margin-top: -22px;\n    float: right;\n    margin-left: 200px;\n    /*background: #eee;*/\n    color: #000;\n    padding: 5px;\n    padding-right: 10px;\n    padding-left: 10px;\n    pointer-events:none;\n    border: solid;\n    border-width: thin;\n    border-color: #000;\n    background: rgba(243, 233, 6, 0.9);\n}\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/d3CTD.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nvar dataFlows = {};\nvar bulkMode = false;\n\nString.prototype.hashCode = function () {\n    var hash = 0;\n    if (this.length == 0) return hash;\n    for (var i = 0, len = this.length; i < len; i++) {\n        var chr = this.charCodeAt(i);\n        hash = ((hash << 5) - hash) + chr;\n        hash |= 0;\n    }\n    return hash;\n};\n\nfunction clearData() {\n    for (var id in dataFlows) {\n        if (id == 'dataSource') continue;\n        if (dataFlows[id].hasOwnProperty('flows')) {\n            for (var id2 in dataFlows[id].flows) {\n                dataFlows[id].flows[id2].destroy();\n                dataFlows[id].flows[id2] = null;\n            }\n        }\n        if (dataFlows[id].hasOwnProperty('chart')) {\n            dataFlows[id].chart.destroy();\n            dataFlows[id].chart = null;\n        }\n    }\n    dataFlows = { dataSource: dataFlows.dataSource };\n\n    $('#chartsContainer').empty();\n    $('#chartsContainer').height(0);\n}\n\nfunction onChangeSensors(isAll) {\n    var newGUIDs = [];\n\n    dataFlows.dataSource.onUpdating(true);\n\n    $('#sensorList li').each(function () {\n        if ($(this).hasClass('selected') && this.id) {\n            if (!isAll) newGUIDs.push(this.id.slice(4));\n        } else\n            if (isAll) {\n                $(this).addClass('selected');\n            }\n    });\n    dataFlows.dataSource.changeDeviceGUIDs(isAll ? ['All'] : newGUIDs);\n\n    clearData();\n\n    dataFlows.dataSource.onUpdating(false);\n}\n\nfunction onLoading(evt) {\n    $('#loading').show();\n    if (evt.owner) {\n        $('#loading-sensor').text(evt.owner);\n    }\n}\n\nfunction onLoaded(evt) {\n    $('#loading').hide();\n}\n\nfunction onError(evt) {\n    addOutputToConsole('ERROR ' + evt.owner);\n}\n\nfunction onOpen(evt) {\n    addOutputToConsole('Connected.');\n}\n\nfunction addNewDataFlow(eventObject) {\n    var measurenameOriginal = eventObject['measurename'] + '';\n    var measurenameHash = measurenameOriginal.hashCode();\n\n    // create chart if necessary\n    if (!dataFlows.hasOwnProperty(measurenameHash)) {\n        dataFlows[measurenameHash] = {\n            containerId: 'chart_' + measurenameHash,\n            controllerId: 'controller_' + measurenameHash,\n            dataSourceFilter: new d3CTDDataSourceFilter(dataFlows.dataSource, { measurename: measurenameOriginal }),\n            flows: {}\n        };\n        // create flows controller\n        $('#controllersContainer').append('<ul id=\"' + dataFlows[measurenameHash].controllerId + '\" style=\"top: ' + (Object.keys(dataFlows).length - 2) * 300 + 'px;\" class=\"controller\"></ul>');\n        dataFlows[measurenameHash].controller = new d3ChartControl(dataFlows[measurenameHash].controllerId)\n                    .attachToDataSource(dataFlows[measurenameHash].dataSourceFilter);\n\n        // add new div object\n        $('#chartsContainer').height((Object.keys(dataFlows).length - 1) * 300 + 'px');\n        $('#chartsContainer').append('<div id=\"' + dataFlows[measurenameHash].containerId + '\" style=\"top: ' + (Object.keys(dataFlows).length - 2) * 300 + 'px;\" class=\"chart\"></div>');\n        // create chart\n        dataFlows[measurenameHash].chart = (new d3Chart(dataFlows[measurenameHash].containerId))\n                    .addEventListeners({ 'loading': onLoading, 'loaded': onLoaded })\n                    .attachToDataSource(dataFlows[measurenameHash].dataSourceFilter)\n                    .setFilter(dataFlows[measurenameHash].controller)\n                    .setBulkMode(bulkMode);\n\n    };\n\n    // add new flow\n    var newFlow = new d3DataFlow(eventObject.guid);\n\n    //addNewSensorOption(newFlow, eventObject);\n\n    dataFlows[measurenameHash].flows[eventObject.guid] = newFlow;\n\n    dataFlows[measurenameHash].chart.addFlow(newFlow, 0);\n\n    $(window).resize();\n}\n\nfunction addNewSensorOption(newFlow, eventObject) {\n    var found = false;\n\n    for (var id in dataFlows) {\n        if (dataFlows[id].hasOwnProperty('flows')) {\n            for (var id2 in dataFlows[id].flows) {\n                if (id2 == eventObject.guid)\n                    found = true;\n            }\n        }\n    }\n    if (!found) {\n        // check old\n        var oldOpt = document.getElementById('flow' + eventObject.guid);\n        if (!oldOpt) {\n            // add new\n            $('#sensorList').append(\"<li id='flow\" + eventObject.guid + \"' class='selected'>loading...</li>\");\n        }\n\n        document.getElementById('flow' + eventObject.guid)\n            .onclick = function () {\n                if ($(this).hasClass('selected')) {\n                    $(this).removeClass('selected');\n                } else {\n                    $(this).addClass('selected');\n                }\n\n                onChangeSensors();\n            };\n\n        newFlow.addEventListener('change', function (evt) {\n            document.getElementById('flow' + eventObject.guid).innerHTML = evt.owner.displayName();\n        });\n    }\n}\n\nfunction checkBulkMode(evt) {\n    if (evt.bulkData != undefined) {\n        bulkMode = evt.bulkData;\n\n        // alert all charts\n        for (var id in dataFlows) {\n            if (dataFlows[id].chart)\n                dataFlows[id].chart.setBulkMode(bulkMode);\n        }\n    }\n}\nfunction onNewEvent(evt) {\n    var eventObject = evt.owner;\n    var flowCnt = dataFlows.length;\n\n    // check bulk mode\n    checkBulkMode(eventObject);\n\n    // check object necessary properties\n    if (!eventObject.hasOwnProperty('guid') || !eventObject.hasOwnProperty('measurename')) return;\n    var measurenameHash = eventObject['measurename'].hashCode();\n    // auto add flows\n    if (!dataFlows.hasOwnProperty(measurenameHash) || !dataFlows[measurenameHash].flows.hasOwnProperty(eventObject['guid']))\n        addNewDataFlow(eventObject);\n\n    if (eventObject.alerttype != null) {\n        var table = $('#alertTable').DataTable();\n        var time = new Date(eventObject.timecreated);\n\n        // Check if we already have this one in the table already to prevent duplicates\n        var indexes = table.rows().eq(0).filter(function (rowIdx) {\n            if (\n                table.cell(rowIdx, 0).data().getTime() == time.getTime() && table.cell(rowIdx, 1).data() == eventObject.displayname && table.cell(rowIdx, 2).data() == eventObject.alerttype) {\n                return true;\n            }\n            return false;\n        });\n\n        // The alert is a new one, lets display it\n        if (indexes.length == 0) {\n            // For performance reasons, we want to limit the number of items in the table to a max of 20. \n            // We will remove the oldest from the list\n            if (table.data().length > 19) {\n                // Search for the oldest time in the list of alerts\n                var minTime = table.data().sort(\n\n                    function (a, b) {\n                        return (a[0] > b[0]) - (a[0] < b[0])\n                    })[0][0];\n                // Delete the oldest row\n                table.rows(\n\n                    function (idx, data, node) {\n                        return data[0].getTime() == minTime.getTime();\n                    }).remove();\n            }\n\n            // Add the new alert to the table\n            var message = 'message';\n            if (eventObject.message != null) message = eventObject.message;\n            table.row.add([\n                time,\n                eventObject.displayname,\n                eventObject.alerttype,\n                message\n            ]).draw();\n\n        }\n    }\n}\n\nfunction addOutputToConsole(text) {\n    $('#messages').prepend('<div>' + text + '</div>');\n}\n\nvar idleTime = 0;\n\nfunction onUserAction(e) {\n    idleTime = 0;\n}\n\nfunction timerIncrement() {\n    idleTime += 1;\n    if (idleTime > 120) // 2 minutes\n    {\n        dataFlows.dataSource.closeSocket();\n        alert('Connection was closed due to user inactivity.');\n        location.reload();\n    }\n}\n\nvar qrcode;\nfunction displayQRCode(title, URI) {\n    // First time called, create the qrcode object\n    if (qrcode == undefined) {\n        qrcode = new QRCode(document.getElementById(\"qrcode\"), URI);\n    } else {\n        // Clean previous code and update title\n        qrcode.clear();\n\n        // Create new code\n        qrcode.makeCode(URI);\n    }\n    // Display QRCode\n    $(\"#qrcode\").dialog({title: title});\n}\n\n$(document).ready(function () {\n    var globalSettings = $('.globalSettings');\n    var forceSocketCloseOnUserActionsTimeout = globalSettings.find('.ForceSocketCloseOnUserActionsTimeout').text().toLowerCase() == 'true';\n\n    if (forceSocketCloseOnUserActionsTimeout) {\n        var idleInterval = setInterval(timerIncrement, 1000); // 1 second\n        $(this).mousemove(onUserAction);\n        $(this).keypress(onUserAction);\n    }\n    \n    // create datasource\n    var sss = (window.location.protocol.indexOf('s') > 0 ? \"s\" : \"\");\n    var uri = 'ws' + sss + '://' + window.location.host + '/api/websocketconnect?clientId=none';\n\n    addOutputToConsole('Connecting to ' + uri);\n\n    dataFlows.dataSource = new d3CTDDataSourceSocket(uri).addEventListeners({ 'eventObject': onNewEvent, 'error': onError, 'open': onOpen });\n\n    $('#selectAllOpt').on('click', function () {\n        onChangeSensors(true);\n    });\n\n    // create alerts table\n    var table = $('#alertTable').DataTable({\n        \"bAutoWidth\": false,\n        \"bFilter\": true,\n        \"bInfo\": true,\n        \"paging\": true,\n        \"order\": [\n            [0, \"desc\"]\n        ],\n        \"columnDefs\": [{\n            \"targets\": \"timeFromDate\",\n            \"data\": function (row, type, val, meta) {\n                if (type === 'set') {\n                    row[meta.col] = val;\n                    return;\n                } else if (type === 'display') {\n                    return row[meta.col].toLocaleTimeString();\n                }\n                return row[meta.col];\n            }\n        }, {\n            \"targets\": \"numberFixed\",\n            \"data\": function (row, type, val, meta) {\n                if (type === 'set') {\n                    row[meta.col] = val;\n                    return;\n                } else if (type === 'display') {\n                    return row[meta.col].toFixed(1);\n                }\n                return row[meta.col];\n            }\n        }, ]\n    });\n\n    // create devices table\n    var table = $('#devicesTable').DataTable({\n        \"bAutoWidth\": false,\n        \"bFilter\": true,\n        \"bInfo\": true,\n        \"paging\": true,\n        \"order\": [\n            [0, \"desc\"]\n        ],\n        \"columnDefs\": [{\n            \"targets\": \"numberFixed\",\n            \"data\": function (row, type, val, meta) {\n                if (type === 'set') {\n                    row[meta.col] = val;\n                    return;\n                } else if (type === 'display') {\n                    return row[meta.col].toFixed(1);\n                }\n                return row[meta.col];\n            }\n        }, ]\n    });\n\n    $('#devicesTable tbody').on('dblclick', 'tr', function () {\n        if ($('#cscolumn').is(':visible')) {\n            displayQRCode(table.row(this).data()[3], table.row(this).data()[4]);\n        }\n    });\n\n    if ($('#cscolumn').is(':visible')) {\n        $('#devicesTable tbody').contextmenu({\n        menu: [\n            { title: \"Add new device\", cmd: \"add\" },\n            { title: \"Delete device\", cmd: \"delete\" },\n            { title: \"Get QRCode\", cmd:\"qrcode\" }\n        ],\n        select: function (event, ui) {\n            switch (ui.cmd) {\n                case \"add\":\n                    addDeviceDialog.dialog('open');\n                    break;\n                case \"delete\":\n                    var deviceID = table.row(ui.target.parent()).data()[3];\n                    var question = \"Delete device \" + deviceID + \"?\";\n                    confirmDeleteDeviceDialog.data('deviceID', deviceID);\n                    confirmDeleteDeviceDialog.dialog({ title: question });\n                    confirmDeleteDeviceDialog.dialog('open');\n                    break;\n                case \"qrcode\":\n                    displayQRCode(table.row(ui.target.parent()).data()[3], table.row(ui.target.parent()).data()[4]);\n                    break;\n                }\n            }\n        });\n    }\n});\n\n$(window).load(function () {\n\n    // Update the devices list when page is loaded\n    updateDevicesList();\n});"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/d3CTDDataSourceFilter.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// events: onEventObject\nfunction d3CTDDataSourceFilter(dataSource, filter) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n\n    self._filter = filter;\n\n    // register handler\n    dataSource.addEventListener('eventObject', function (evt) {\n        var eventObject = evt.owner;\n        // check filter\n        if (self._filter) {\n            for (var id in self._filter) {\n                if (!eventObject.hasOwnProperty(id) || eventObject[id] != self._filter[id])\n                    return;\n            }\n        }\n\n        // forward message\n        self.raiseEvent('eventObject', eventObject);\n\n    });\n\n    return self;\n}\n\nd3CTDDataSourceFilter.prototype = {\n    constructor: d3CTDDataSourceFilter,\n};\n\nextendClass(d3CTDDataSourceFilter, baseClass);\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/d3CTDDataSourceSocket.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// events: onEventObject\nfunction d3CTDDataSourceSocket(uri, handlers) {\n    var self = this;\n    // call base class contructor\n    d3DataSourceSocket.call(self, uri, {\n        message: function (event) {\n            self._onMessage.call(self, event);\n        }\n    });\n\n    // register handlers\n    if (handlers) {\n        for (id in handlers) {\n            self.addEventListener(id, handlers[id]);\n        }\n    }\n    self._firstMessage = true;\n    self._updatingState = false;\n    self._deviceGUIDs = 'All';\n\n    return self;\n}\n\nd3CTDDataSourceSocket.prototype = {\n    constructor: d3CTDDataSourceSocket,\n    onUpdating: function (state) {\n        var self = this;\n        self._updatingState = state;\n    },\n    changeDeviceGUIDs: function (newDeviceGUIDs) {\n        var self = this;\n\n        if (newDeviceGUIDs != undefined) {\n            self._deviceGUIDs = newDeviceGUIDs;\n        }\n\n        var reqClear = {\n            MessageType: \"LiveDataSelection\",\n            DeviceGUIDs: 'clear'\n        };\n\n        var req = {\n            MessageType: \"LiveDataSelection\",\n            DeviceGUIDs: self._deviceGUIDs.toString()\n        };\n\n        // send request\n        self.sendMessage(reqClear);\n        self.sendMessage(req);\n\n        return self;\n    },\n    _onMessage: function (event) {\n        var self = this;\n        if (self._updatingState) return;\n        if (self._firstMessage) {\n            self._firstMessage = false;\n\n            self.changeDeviceGUIDs();\n\n            // prevent next call\n            event.handled = true;\n        } else {\n            // Parse the JSON package\n            try {\n                var eventObject = JSON.parse(event.owner.data);\n            } catch (e) {\n                self.raiseEvent('error', '<div>Malformed message: ' + event.data + '</div>');\n                return;\n            }\n            // forward message\n            self.raiseEvent('eventObject', eventObject);\n        }\n    }\n};\n\nextendClass(d3CTDDataSourceSocket, d3DataSourceSocket);\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/d3Chart.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n// create dataFlow with\n/*\ncontainerId : string,\n]*/\nfunction d3Chart(containerId) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n    // initialize object\n    self._flows = {};\n    self._flowsVisuals = {};\n    self._containerId = containerId;\n    self._CONSTANTS = {\n        MS_PER_MINUTE: 60000,\n        WINDOW_MINUTES: 10,\n    }\n    self._isBulking = false;\n    self._colors = d3.scale.category10();\n\n    self._onEventObjectHandler = function (event) {\n        self._onMessageHandler.call(self, event);\n    }\n\n    self._onEventRemoveGuid = function (event) {\n        self._onMessageRemoveGuid.call(self, event);\n    }\n\n    self._onEventAddGuid = function (event) {\n        self._onMessageAddGuid.call(self, event);\n    }\n\n    // register update handler\n    self.addEventListener('update', function (evt) {\n        self.pruneOldData();\n        self.updateChart();\n    });\n\n    self._wasResizeHandled = true;\n\n    return self;\n}\n\nd3Chart.prototype = {\n    constructor: d3Chart,\n    destroy: function () {\n        var self = this;\n\n        self.clearDataFlows();\n        self.removeChartVisual();\n\n        if (self._dataSource) {\n            self._dataSource.removeEventListener('eventObject', this._onEventObjectHandler);\n        }\n\n        if (self._filter) {\n            self._filter.removeEventListener('removeGuid', this._onEventRemoveGuid);\n            self._filter.removeEventListener('addGuid', this._onEventAddGuid);\n        }\n\n        window['resizeCallback@' + self._containerId] = false;\n    },\n    setBulkMode: function (newVal) {\n        var self = this;\n        self._isBulking = newVal;\n\n        if (!newVal) {\n            self.raiseEvent('update');\n            self.raiseEvent('loaded');\n        }\n        return self;\n    },\n    addFlow: function (newFlow, yAxis) {\n        var self = this;\n        self._flows[newFlow.getGUID()] = newFlow;\n        self._flowsVisuals[newFlow.getGUID()] = {\n            alerts: {}\n        };\n\n        newFlow.yAxis(yAxis);\n        newFlow.attachToChart(self);\n        self._colors.domain(newFlow.getGUID());\n\n        return self;\n    },\n    attachToDataSource: function (dataSource) {\n        var self = this;\n        // remebmer data source\n        self._dataSource = dataSource;\n\n        // register events handler\n        dataSource.addEventListener('eventObject', self._onEventObjectHandler);\n\n        return self;\n    },\n    setFilter: function (filter) {\n        var self = this;\n        // remebmer data source\n        self._filter = filter;\n\n        // register guid handlers\n        filter.addEventListener('removeGuid', self._onEventRemoveGuid);\n        filter.addEventListener('addGuid', self._onEventAddGuid);\n\n        return self;\n    },\n\n    recalcFontSize: function () {\n        //Standard height, for which the body font size is correct\n        var preferredHeight = 768;\n        //Base font size for the page\n        var fontsize = 12;\n        var displayHeight = $(window).height();\n        var percentage = displayHeight / preferredHeight;\n\n        // remember font size\n        this._fontSize = Math.floor(fontsize * percentage) - 1;\n\n        return self;\n    },\n    clearDataFlows: function () {\n        var self = this;\n        // remove visual elements\n        for (var id in this._flowsVisuals) {\n            self.removeFlowVisual(id);\n        }\n        // clear data\n        for (var id in self._flows) {\n            // clear data set\n            self._flows[id].clearData();\n        }\n\n        return self;\n    },\n    removeChartVisual: function () {\n        var self = this;\n        if (self._x != null) {\n            self._x = null;\n        }\n        if (self._y0 != null) {\n            self._y0 = null;\n        }\n        if (self._y1 != null) {\n            self._y1 = null;\n        }\n        if (self._y0Label != null) {\n            self._y0Label = null;\n        }\n        if (self._svg != null) {\n            self._svg.remove();\n            self._svg = null;\n        }\n\n        return self;\n    },\n    removeFlowVisual: function (id) {\n        if (!this._flowsVisuals.hasOwnProperty(id)) return;\n\n        var dataFlowVisuals = this._flowsVisuals[id];\n\n        for (var idAl in dataFlowVisuals.alerts) {\n            var alert = dataFlowVisuals.alerts[idAl];\n            if (alert.alertShowed) {\n                alert.alertShowed.remove();\n                alert.alertShowed = null;\n            }\n            if (alert.alertBarShowed) {\n                alert.alertBarShowed.remove();\n                alert.alertBarShowed = null;\n            }\n        }\n\n        dataFlowVisuals.alerts = {};\n\n        if (dataFlowVisuals.path) {\n            dataFlowVisuals.path.remove();\n            dataFlowVisuals.path = null;\n        }\n        if (dataFlowVisuals.legend) {\n            dataFlowVisuals.legend.remove();\n            dataFlowVisuals.legend = null;\n        }\n        if (dataFlowVisuals.legend_r) {\n            dataFlowVisuals.legend_r.remove();\n            dataFlowVisuals.legend_r = null;\n        }\n\n        return self;\n    },\n    registerResizeHandler: function (containerId) {\n        var self = this;\n        if (!window['resizeCallback@' + containerId]) {\n            window['resizeCallback@' + containerId] = true;\n            $(window).bind('resize', function () {\n                console.log('rezise chart: ' + containerId);\n                self._wasResizeHandled = false;\n\n                // remove visual elements\n                for (var id in self._flowsVisuals) {\n                    self.removeFlowVisual(id);\n                }\n                // remove original one\n                self.removeChartVisual();\n                d3.select(\"#\" + containerId).select('svg').remove();\n                // create a new one w/ correct size\n                self.updateChart();\n            });\n        }\n\n        return self;\n    },\n    setY0Label: function () {\n        var self = this;\n        if (self._y0Label) return;\n        for (var id in self._flows)\n            if (self._flows[id].label()) {\n                self._y0Label = self._svg.append(\"text\")\n                    .attr(\"transform\", \"rotate(-90)\")\n                    .attr(\"class\", \"y0 label\")\n                    .attr(\"text-anchor\", \"middle\")\n                    .attr(\"y\", -50)\n                    .attr(\"x\", -self._height / 2)\n                    .attr(\"dy\", \"1em\")\n                    .attr(\"font-size\", self._fontSize + \"px\")\n                    .text(self._flows[id].label());\n                break;\n            }\n    },\n    createChart: function () {\n        var self = this;\n\n        var margin = {\n            top: 5,\n            right: 250,\n            bottom: 20,\n            left: 50\n        };\n\n        // remember container\n        self._container = $('#' + self._containerId);\n\n        // recalc font size\n        self.recalcFontSize();\n\n        var dataFlowsArray = [];\n\n        self._width = self._container.width() - margin.right;\n        self._height = self._container.height() - margin.top - margin.bottom;\n\n        // create dataFlows array\n        for (var id in self._flows) {\n            dataFlowsArray.push({\n                id: id,\n                yMin: self._flows[id].yMin(),\n                yMax: self._flows[id].yMax()\n            });\n        }\n        // seed the axes with some dummy values\n        self._x = d3.time.scale()\n\t\t\t.domain([0, 1])\n\t\t\t.range([0, self._width]);\n\n        self._y0 = d3.scale.linear()\n\t\t\t.range([self._height, 0]);\n\n        if (dataFlowsArray.length > 0 && dataFlowsArray[0].yMax != null && dataFlowsArray[0].yMin != null)\n            self._y0.domain([dataFlowsArray[0].yMin, dataFlowsArray[0].yMax]);\n\n        self._svg = d3.select(\"#\" + self._containerId)\n\t\t\t.append(\"p\")\n\t\t\t.append(\"svg\")\n\t\t\t.attr(\"width\", self._width + margin.left + margin.right)\n\t\t\t.attr(\"height\", self._height + margin.top + margin.bottom)\n\t\t\t.style(\"margin-bottom\", margin.bottom + \"px\")\n\t\t\t.append(\"g\")\n\t\t\t.attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\n\n        self._svg.append(\"g\")\n\t\t\t.attr(\"class\", \"y0 axis\")\n\t\t\t.call(d3.svg.axis().scale(self._y0).ticks(7).orient(\"left\"));\n\n        // check y0 label\n        self.setY0Label();\n\n        self._svg.append(\"g\")\n\t\t\t.attr(\"class\", \"x axis\")\n\t\t\t.attr(\"transform\", \"translate(0,\" + (self._height) + \")\")\n\t\t\t.call(d3.svg.axis().scale(self._x).orient(\"bottom\").tickFormat(d3.time.format(\"%X\")));\n\n        // create tip\n        self._tip = d3.tip()\n\t\t\t.attr('class', 'd3-tip')\n\t\t\t.offset([-10, 0])\n\t\t\t.html(function (d) {\n\t\t\t    return \"<label class='time_header'>\" + d.time + \"</label><label class='value_circle'>&#x25cf;</label><label class='value'>\" + d.data.toFixed(2) + \"</label><label class='message'>\" + d.alertData.message + \"</label>\";\n\t\t\t});\n        self._svg.call(self._tip);\n\n        // register resize handler\n        self.registerResizeHandler(self._containerId);\n    },\n    pruneAlerts: function (flowId, cutoff) {\n        var self = this;\n        var alertsToRemove = [];\n        // cut alerts\n        for (var t in self._flowsVisuals[flowId].alerts) {\n            if (new Date(t) < cutoff) alertsToRemove.push(t);\n        }\n\n        for (var t in alertsToRemove) {\n            var alert = self._flowsVisuals[flowId].alerts[alertsToRemove[t]];\n\n            if (alert.alertShowed) {\n                alert.alertShowed.remove();\n                alert.alertShowed = null;\n            }\n            if (alert.alertBarShowed) {\n                alert.alertBarShowed.remove();\n                alert.alertBarShowed = null;\n            }\n\n            delete alert;\n        }\n    },\n    pruneOldData: function () {\n        var self = this;\n        var now = new Date();\n        var cutoff = new Date(now - self._CONSTANTS.WINDOW_MINUTES * self._CONSTANTS.MS_PER_MINUTE)\n\n        // cut data\n        for (var id in self._flows) {\n            if (self._flows[id].cutData(cutoff)) {\n                self.pruneAlerts(id, cutoff);\n                //self.removeFlowVisual(id);\n            }\n        }\n    },\n\n    updateChart: function () {\n\n        var self = this;\n\n        var minDate = new Date(3015, 1, 1);\n        var maxDate = new Date(1915, 1, 1);\n\n        var minVal = [Number.MAX_VALUE, Number.MAX_VALUE];\n        var maxVal = [0, 0];\n\n        var displayHeight = $(window).height();\n\n        for (var id in self._flows) {\n            var dataFlow = self._flows[id];\n            if (dataFlow.visible == false) continue;\n            var data = dataFlow.getData();\n            if (data.length == 0 || !dataFlow.displayName()) continue;\n\n            // sort data\n            data.sort(function (a, b) {\n                if (a.time < b.time) return -1;\n                if (a.time > b.time) return 1;\n                return 0;\n            });\n\n            var y = dataFlow.yAxis();\n\n            for (var j = 0; j < data.length; j++) {\n\n                var c = data[j].data;\n                var t = data[j].time;\n\n                if (c < minVal[y]) {\n                    minVal[y] = c;\n                }\n\n                if (c > maxVal[y]) {\n                    maxVal[y] = c;\n                }\n\n                if (t > maxDate) {\n                    maxDate = t;\n                }\n\n                if (t < minDate) {\n                    minDate = t;\n                }\n            }\n        }\n\n        // create chart on demand\n        if (self._svg == null) {\n            self.createChart();\n        }\n\n        // check y0 label\n        self.setY0Label();\n\n        var wasBoundsChanged = !self._previousBounds || self._previousBounds.maxVal0 !== maxVal[0] || self._previousBounds.minVal0 !== minVal[0];\n\n        if (!self._wasResizeHandled || wasBoundsChanged && minVal[0] < Number.MAX_VALUE) {\n            var diff = maxVal[0] - minVal[0];\n            var scaleMargin =  diff * 10 / 100;\n            \n            if (!isFinite(scaleMargin)) {\n                scaleMargin = 0;\n            }\n            \n            var v1 = Math.abs(minVal[0] - scaleMargin);\n            var v2 = Math.abs(maxVal[0] + scaleMargin);\n            if (!isFinite(v1)) {\n                v1 = minVal[0];\n            }\n            if (!isFinite(v2)) {\n                v2 = maxVal[0];\n            }\n            if (v2 < v1) {\n                v2 = v1;\n            }\n            \n            self._y0 = self._y0\n             \t\t.domain([v1, v2]);\n             \t\t\n            var yAxisLeft = d3.svg.axis()\n\t\t\t\t.scale(self._y0)\n\t\t\t\t.orient(\"left\")\n            self._svg.selectAll(\"g.y0.axis\")\n\t\t\t\t.call(yAxisLeft);\n\n            self._wasResizeHandled = true;\n        }\n\n        wasBoundsChanged = !self._previousBounds || self._previousBounds.maxVal1 !== maxVal[1] || self._previousBounds.minVal1 !== minVal[1];\n\n        if (!self._wasResizeHandled || wasBoundsChanged && minVal[1] < Number.MAX_VALUE) {\n            var diff = maxVal[1] - minVal[1];\n            var scaleMargin = (diff) * 10 / 100;\n            \n\t    if (!isFinite(scaleMargin)) {\n                scaleMargin = 0;\n            }\n            \n            var v1 = Math.abs(minVal[1] - scaleMargin);\n            var v2 = Math.abs(maxVal[1] + scaleMargin);\n            \n            if (!isFinite(v1)) {\n                v1 = minVal[1];\n            }\n            if (!isFinite(v2)) {\n                v2 = maxVal[1];\n            }\n            if (v2 < v1) {\n                v2 = v1;\n            }\n            \n            self._y1 = self._y1\n\t\t\t\t.domain([v1,v2]);\n            \n            var yAxisRight = d3.svg.axis()\n\t\t\t\t.scale(self._y1)\n\t\t\t\t.orient(\"right\")\n            self._svg.selectAll(\"g.y1.axis\")\n\t\t\t\t.call(yAxisRight);\n\n            self._wasResizeHandled = true;\n        }\n\n        self._x = self._x\n\t\t\t.domain([minDate, maxDate]);\n\n        var xAxis = d3.svg.axis()\n\t\t\t.scale(self._x)\n\t\t\t.tickFormat(d3.time.format(\"%X\"))\n\t\t\t.orient(\"bottom\");\n\n        self._svg.selectAll(\"g.x.axis\")\n\t\t\t.call(xAxis);\n\n        self._previousBounds = {\n            maxVal0: maxVal[0],\n            maxVal1: maxVal[1],\n            minVal0: minVal[0],\n            minVal1: minVal[1],\n        };\n\n        if (!self._line) {\n            self._line = [\n                d3.svg.line()\n                .interpolate(\"monotone\")\n                .x(function (d) {\n                    return self._x(d.time);\n                })\n                .y(function (d) {\n                    return self._y0(d.data);\n                }),\n\n                d3.svg.line()\n                .interpolate(\"monotone\")\n                .x(function (d) {\n                    return self._x(d.time);\n                })\n                .y(function (d) {\n                    return self._y1(d.data);\n                })\n            ];\n        }\n\n        try {\n            var pos = 0;\n            for (var id in self._flows) {\n                var dataGUID = id;\n                var dataFlow = self._flows[id];\n                if (dataFlow.visible == false) continue;\n                var dataFlowVisuals = self._flowsVisuals[id];\n                var data = dataFlow.getData();\n                var yAxis = dataFlow.yAxis();\n\n                if (dataFlowVisuals.path == null) {\n                    dataFlowVisuals.path = self._svg.append(\"g\")\n\t\t\t\t\t\t.append(\"path\")\n\t\t\t\t\t\t.datum(data)\n\t\t\t\t\t\t.attr(\"class\", \"line\")\n\t\t\t\t\t\t.attr(\"d\", self._line[yAxis])\n\t\t\t\t\t\t.style(\"stroke\", function (d) {\n\t\t\t\t\t\t    return self._colors(dataGUID);\n\t\t\t\t\t\t});\n                }\n\n                dataFlowVisuals.path.datum(data)\n\t\t\t\t\t.attr(\"d\", self._line[yAxis]);\n\n                // draw alert points\n                for (var pnt in data) {\n                    if (typeof data[pnt].alertData == 'object') {\n                        if (!dataFlowVisuals.alerts.hasOwnProperty(data[pnt].time)) {\n                            var transferData = JSON.stringify({\n                                alertData: data[pnt].alertData,\n                                time: data[pnt].time,\n                                data: data[pnt].data\n                            });\n                            var alertVisual = dataFlowVisuals.alerts[data[pnt].time] = {};\n                            alertVisual.alertBarShowed = self._svg.append(\"g\").append(\"rect\")\n\t\t\t\t\t\t\t\t.attr(\"class\", \"bar\")\n\t\t\t\t\t\t\t\t.attr(\"x\", self._x(data[pnt].time))\n\t\t\t\t\t\t\t\t.attr(\"y\", 0)\n\t\t\t\t\t\t\t\t.attr(\"height\", self._height)\n\t\t\t\t\t\t\t\t.attr(\"width\", \"2px\")\n\t\t\t\t\t\t\t\t.style(\"fill\", \"#e6c9cd\")\n\n                            alertVisual.alertShowed = self._svg.append(\"g\").append(\"circle\")\n\t\t\t\t\t\t\t\t.attr(\"class\", \"d3-dot\")\n\t\t\t\t\t\t\t\t.attr(\"cx\", self._x(data[pnt].time))\n\t\t\t\t\t\t\t\t.attr(\"cy\", yAxis == 0 ? self._y0(data[pnt].data) : self._y1(data[pnt].data))\n\t\t\t\t\t\t\t\t.style(\"fill\", \"#e93541\")\n\t\t\t\t\t\t\t\t.attr(\"r\", displayHeight / 200)\n\t\t\t\t\t\t\t\t.on('mouseover', function () {\n\t\t\t\t\t\t\t\t    d3.select(this).transition().attr(\"r\", displayHeight / 130);\n\t\t\t\t\t\t\t\t    eval(\"self._tip.show(\" + transferData + \");\")\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.on('mouseout', function () {\n\t\t\t\t\t\t\t\t    d3.select(this).transition().attr(\"r\", displayHeight / 200);\n\t\t\t\t\t\t\t\t    self._tip.hide();\n\t\t\t\t\t\t\t\t});\n                        } else {\n                            var alertVisual = dataFlowVisuals.alerts[data[pnt].time];\n                            alertVisual.alertShowed.attr(\"cx\", self._x(data[pnt].time))\n\t\t\t\t\t\t\t\t.attr(\"cy\", yAxis == 0 ? self._y0(data[pnt].data) : self._y1(data[pnt].data));\n\n                            alertVisual.alertBarShowed\n\t\t\t\t\t\t\t\t.attr(\"x\", self._x(data[pnt].time))\n                        }\n                    }\n                }\n                if (dataFlowVisuals.legend == null) {\n                    dataFlowVisuals.legend_r = self._svg.append(\"rect\")\n\t\t\t\t\t\t.attr(\"class\", \"legend\")\n\t\t\t\t\t\t.attr(\"width\", 10)\n\t\t\t\t\t\t.attr(\"height\", 10)\n\t\t\t\t\t\t.attr(\"x\", self._width + 50)\n\t\t\t\t\t\t.attr(\"y\", 20 + (20 * pos))\n\t\t\t\t\t\t.style(\"fill\", self._colors(dataGUID))\n\t\t\t\t\t\t.style(\"stroke\", self._colors(dataGUID));\n\n                    dataFlowVisuals.legend = self._svg.append(\"text\")\n\t\t\t\t\t\t.attr(\"x\", self._width + 65)\n\t\t\t\t\t\t.attr(\"y\", 20 + (20 * pos) + 5)\n\t\t\t\t\t\t.attr(\"class\", \"legend\")\n\t\t\t\t\t\t.style(\"fill\", self._colors(dataGUID))\n\t\t\t\t\t\t.text(dataFlow.displayName());\n                } else {\n                    dataFlowVisuals.legend.text(dataFlow.displayName());\n                }\n                pos++;\n            }\n        } catch (e) {\n            console.log(e);\n        }\n    },\n\n    _onMessageAddGuid: function (evt) {\n        var self = this;\n\n        if (self._flows.hasOwnProperty(evt.owner)) {\n            self._flows[evt.owner].visible = true;\n        }\n    },\n    _onMessageRemoveGuid: function (evt) {\n        var self = this;\n\n        self.removeFlowVisual(evt.owner);\n        if (self._flows.hasOwnProperty(evt.owner)) {\n            self._flows[evt.owner].visible = false;\n        }\n    },\n    // private members\n    _onMessageHandler: function (eventObject) {\n        var self = this;\n        var evt = eventObject.owner;\n        // the message is data for the charts. find chart for message\n        if (evt.hasOwnProperty('guid') && self._flows.hasOwnProperty(evt.guid)) {\n            // check filter\n            //if (self._filter && !self._filter.checkGUID(evt.guid)) return;\n            // check event time\n            var now = new Date();\n            var cutoff = new Date(now - self._CONSTANTS.WINDOW_MINUTES * self._CONSTANTS.MS_PER_MINUTE)\n\n            if (evt.time < cutoff) {\n                return;\n            }\n\n            // add event\n            self.raiseEvent('newData', evt);\n\n            // check if nessasary to update\n            if (!self._isBulking) {\n                self.raiseEvent('update');\n            } else {\n                self.raiseEvent('loading', evt.displayname);\n            }\n        }\n    }\n};\n\nextendClass(d3Chart, baseClass);\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/d3ChartControl.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nfunction d3ChartControl(containerId) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n    // create ul\n    self._containerId = containerId;\n    self._ulOptions = {};\n\n    this._onEventObjectHandler = function (event) {\n        self._onNewDataHandler.call(self, event);\n    };\n\n    return self;\n}\n\nd3ChartControl.prototype = {\n    constructor: d3ChartControl,\n    destroy: function () {\n        var self = this;\n        if (self._dataSource) {\n            self._dataSource.removeEventListener('eventObject', this._onEventObjectHandler);\n        }\n    },\n    /*\n        params = \n        {\n            guid: 'someGUID',\n            title: 'someTitle',\n            selected: false,        // default true\n            allOption: true         // if true, guid = 0 and it's main switcher for all\n        }\n    */\n    setOption: function (params) {\n        var self = this;\n\n        var guid = params.guid;\n        if (guid == undefined) return;\n\n        // check if exists or create new\n        if (!self._ulOptions.hasOwnProperty(params.guid)) {\n            self._ulOptions[guid] = {};\n            self._ulOptions[guid].li = $('<li><div style=\"display:inline-block\">' + params.title + \"</div></li>\").appendTo(\"#\" + self._containerId);\n            // set selected class\n            if (!params.hasOwnProperty('selected') || params.selected == true) {\n                self._ulOptions[guid].li.addClass('selected');\n            }\n            self._ulOptions[guid].state = self._ulOptions[guid].li.hasClass('selected');\n            // add click handler\n            self._ulOptions[guid].li.on('click', function (evt) {\n                if ($(this).hasClass('selected')) {\n                    $(this).removeClass('selected');\n                    self.raiseEvent('removeGuid', guid);\n                } else {\n                    $(this).addClass('selected');\n                    self.raiseEvent('addGuid', guid);\n                }\n                self._ulOptions[guid].state = self._ulOptions[guid].li.hasClass('selected');\n            });\n            \n            self._ulOptions[guid].li\n                .append('<div class=\"sensorTip\">' + 'Location: ' + params.location + '</div>');\n\n            self._ulOptions[guid].li.each(function () {\n                $(this).data('sensorTip', $(this).find('.sensorTip'));\n                $(this).data('sensorTip').hide();\n            });\n            self._ulOptions[guid].li.each(function() {\n                $(this).on('mouseover', function () {\n                    $(this).data('sensorTip').show();\n                });\n            });\n            self._ulOptions[guid].li.each(function () {\n                $(this).on('mouseout', function () {\n                    $(this).data('sensorTip').hide();\n                });\n            });\n        }\n\n        return self;\n    },\n    attachToDataSource: function (dataSource) {\n        var self = this;\n        // remebmer data source\n        self._dataSource = dataSource;\n\n        // register events handler\n        dataSource.addEventListener('eventObject', this._onEventObjectHandler);\n\n        return self;\n    },\n    // private members\n    _onNewDataHandler: function (eventObject) {\n        var self = this;\n        var evt = eventObject.owner;\n\n        // check GUID\n        if (!evt.guid || self._ulOptions.hasOwnProperty(evt.guid)) return;\n\n        // add new option\n        self.setOption({\n            guid: evt.guid,\n            title: evt.displayname,\n            location: evt.location ? evt.location : \"Unknown\"\n        });\n    },\n    checkGUID : function(guid) {\n        var self = this;\n        return (self._ulOptions.hasOwnProperty(guid) && self._ulOptions[guid].state);\n    }\n};\n\nextendClass(d3ChartControl, baseClass);"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/d3DataFlow.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// create dataFlow with\n/*\nflowGUID : string,\nparams = {\n\tyMin : number,\n\tyMax : number,\n\tdisplayName : string,\n\tlabel : string,\n    filter : {}\n};*/\n\nfunction d3DataFlow(flowGUID, params) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n    // initialize object\n    self._guid = flowGUID;\n    self._yMin = params ? params.yMin : undefined;\n    self._yMax = params ? params.yMax : undefined;\n    self._displayName = params ? params.displayName : undefined;\n    self._label = params ? params.label : undefined;\n    self._filter = params ? params.filter : undefined;\n    self._CONSTANTS = {\n        MAX_ARRAY_SIZE: 1000\n    };\n\n    this._onEventObjectHandler = function (event) {\n        self._onNewDataHandler.call(self, event);\n    };\n\n    self.clearData();\n    return self;\n}\n\nd3DataFlow.prototype = {\n    constructor: d3DataFlow,\n    destroy: function () {\n        var self = this;\n        if (self._chart) {\n            self._chart.removeEventListener('newData', this._onEventObjectHandler);\n        }\n    },\n    attachToChart: function (chart) {\n        var self = this;\n        // remebmer data source\n        self._chart = chart;\n\n        // register events handler\n        chart.addEventListener('newData', this._onEventObjectHandler);\n\n        return self;\n    },\n    getGUID: function () {\n        return this._guid;\n    },\n    yMin: function (yMinNew) {\n        if (yMinNew != undefined) {\n            this._yMin = yMinNew;\n        }\n        return this._yMin;\n    },\n    yMax: function (yMaxNew) {\n        if (yMaxNew != undefined) {\n            this._yMax = yMaxNew;\n        }\n        return this._yMax;\n    },\n    displayName: function (displayNameNew) {\n        if (displayNameNew != undefined) {\n            this._displayName = displayNameNew;\n        }\n        return this._displayName;\n    },\n    label: function (labelNew) {\n        if (labelNew != undefined) {\n            this._label = labelNew;\n        }\n        return this._label;\n    },\n    yAxis: function (yAxisNew) {\n        if (yAxisNew != undefined) {\n            this._yAxis = yAxisNew;\n        }\n        return this._yAxis;\n    },\n    clearData: function () {\n        this._data = [];\n    },\n    cutData: function (cutoff) {\n        var len = this._data.length;\n        while (this._data.length >= 1 && this._data[0].time < cutoff) {\n            this._data.shift();\n        }\n        return len != this._data.length;\n    },\n    getData: function () {\n        return this._data;\n    },\n    addNewPoint: function (obj) {\n        var self = this;\n        var t = new Date(obj.time);\n        if (isNaN(t.getTime())) {\n            return;\n        }\n\n        var pushObj = {\n            data: obj.value,\n            time: new Date(obj.time)\n        };\n\n        if (obj.alerttype)\n            pushObj.alertData = { message: obj.message };\n\n\n        self._data.push(pushObj);\n\n        if (self._data.length >= self._CONSTANTS.MAX_ARRAY_SIZE) {\n            self._data.shift();\n            return;\n        }\n    },\n    // private members\n    _onNewDataHandler: function (evt) {\n        var self = this;\n        var object = evt.owner;\n        // check filter\n        if (self._filter) {\n            for (var id in self._filter) {\n                if (!object.hasOwnProperty(id) || object[id] != self._filter[id])\n                    return;\n            }\n        }\n        // check GUID\n        if (object.guid != self._guid) return;\n\n        // add to array\n        self.addNewPoint(object);\n\n        // update properties\n        self._updateProperties(object);\n    },\n    _updateProperties: function (eventObject) {\n        var self = this;\n\n        if (eventObject.hasOwnProperty(\"displayname\")) {\n            self.displayName(eventObject.displayname);\n        }\n\n        if (eventObject.hasOwnProperty(\"measurename\") && eventObject.hasOwnProperty(\"unitofmeasure\")) {\n            self.label(eventObject.measurename + \" (\" + eventObject.unitofmeasure + \")\");\n        }\n\n        self.raiseEvent('change', self);\n    }\n};\n\nextendClass(d3DataFlow, baseClass);"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/d3DataSourceSocket.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// create new source\nfunction d3DataSourceSocket(uri, handlers) {\n    var self = this;\n    // call base class contructor\n    baseClass.call(self);\n\n    // initialize object\n    self._websocket = new WebSocket(uri);\n    self._eventHandlers = {};\n\n    if (handlers) {\n        for (id in handlers) {\n            self.addEventListener(id, handlers[id]);\n        }\n    }\n\n    // register handlers\n    self._websocket.onopen = function () {\n        self.raiseEvent.call(self, 'open');\n    }\n\n    self._websocket.onerror = function (event) {\n        self.raiseEvent.call(self, 'error', event);\n    }\n\n    self._websocket.onmessage = function (event) {\n        self.raiseEvent.call(self, 'message', event);\n    }\n\n    return self;\n}\n\nd3DataSourceSocket.prototype = {\n    constructor: d3DataSourceSocket,\n    sendMessage: function (message) {\n        this._websocket.send(JSON.stringify(message));\n    },\n    closeSocket: function () {\n        this._websocket.close();\n    }\n};\n\nextendClass(d3DataSourceSocket, baseClass);"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/d3utils.js",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\nfunction extendClass(Child, Parent) {\n    var F = function () {\n    };\n    F.prototype = Parent.prototype;\n    var f = new F();\n\n    for (var prop in Child.prototype)\n        f[prop] = Child.prototype[prop];\n    Child.prototype = f;\n    Child.prototype.superclass = Parent.prototype;\n}\n\nfunction deepCopy(obj) {\n    if (typeof obj != 'object') {\n        return obj;\n    }\n    var copy = obj.constructor();\n    for (var key in obj) {\n        if (typeof obj[key] == 'object' && obj[key] != null) {\n            copy[key] = this.deepCopy(obj[key]);\n        } else {\n            copy[key] = obj[key];\n        }\n    }\n    return copy;\n};\n\n/**\n * Base class initialization\n */\nfunction baseClass() {\n    // set protected properties\n    this._eventsListeners = {};\n}\n\nbaseClass.prototype = {\n    constructor: baseClass,\n    addEventListeners: function (callbacks) {\n        var self = this;\n        for (var id in callbacks) {\n            self.addEventListener(id, callbacks[id]);\n        }\n        return self;\n    },\n    addEventListener: function (eventName, callback) {\n        var self = this;\n\n        if (!self._eventsListeners.hasOwnProperty(eventName)) {\n            self._eventsListeners[eventName] = [];\n        }\n        self._eventsListeners[eventName].push(callback);\n\n        return self;\n    },\n\n    removeEventListener: function (eventName, callback) {\n        var self = this;\n\n        if (!self._eventsListeners.hasOwnProperty(eventName) || !self._eventsListeners[eventName].length)\n            return;\n        for (var i = this._eventsListeners[eventName].length; i > 0; --i)\n            if (self._eventsListeners[eventName][i - 1] === callback) {\n                self._eventsListeners[eventName].splice(i - 1, 1);\n                break;\n            }\n\n        return self;\n    },\n\n    raiseEvent: function (eventName, owner) {\n        if (!this._eventsListeners.hasOwnProperty(eventName) || !this._eventsListeners[eventName].length)\n            return;\n        var context = {\n            name: eventName,\n            source: this,\n            owner: owner,\n            handled: false\n        };\n        var evFuncs = this._eventsListeners[eventName];\n        for (var i = evFuncs.length; i > 0; --i) {\n            evFuncs[i - 1].call(this, context);\n            // if handled - stop event handling\n            if (context.handled)\n                break;\n        }\n    },\n};\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/devicesList.js",
    "content": "﻿function updateDevicesList() {\n    // Get the devices list from the server\n    PageMethods.GetDevicesList(ListSuccess, Failure);\n}\n\nvar addDeviceDialog, addDeviceForm, confirmDeleteDeviceDialog;\n\nfunction addNewDevice()\n{\n    var newDeviceID = $(\"#newdeviceid\").val();\n    addDeviceDialog.dialog(\"close\");\n    PageMethods.AddDevice(newDeviceID, AddSuccess, Failure);\n}\n\nfunction deleteDevice(deviceID)\n{\n    var id = deviceID;\n    confirmDeleteDeviceDialog.dialog(\"close\");\n    PageMethods.DeleteDevice(id, DeleteSuccess, Failure);\n}\n\naddDeviceDialog = $(\"#add-device-dialog-form\").dialog({\n    autoOpen: false,\n    height: \"auto\",\n    width: 400,\n    modal: true,\n    buttons: {\n        \"Ok\": addNewDevice,\n        Cancel: function () {\n            addDeviceDialog.dialog(\"close\");\n        }\n    },\n    close: function () {\n        addDeviceForm[0].reset();\n    }\n});\n\nconfirmDeleteDeviceDialog = $(\"#delete-device-dialog-confirm\").dialog({\n    autoOpen: false,\n    resizable: false,\n    height: \"auto\",\n    width: 400,\n    modal: true,\n    buttons: {\n        \"Delete device\": function () {\n            deleteDevice(confirmDeleteDeviceDialog.data('deviceID'));\n        },\n        Cancel: function () {\n            confirmDeleteDeviceDialog.dialog(\"close\");\n        }\n    }\n});\n\n\naddDeviceForm = addDeviceDialog.find(\"form\").on(\"submit\", function (event) {\n    event.preventDefault();\n    addNewDevice();\n});\n\n//function addDevice()\n//{\n//    var deviceName = prompt(\"Enter a unique Device Id\");\n//    if (deviceName)\n//        PageMethods.AddDevice(deviceName, AddSuccess, Failure);\n//}\n\n//function deleteDevice() {\n//    var deviceName = prompt(\"Enter the IoT Hub ID of the device you want to remove\");\n//    if (deviceName)\n//        PageMethods.DeleteDevice(deviceName, DeleteSuccess, Failure);\n//}\n\nfunction ListSuccess(result) {\n    if (result) {\n        var devicesList = JSON.parse(result);\n        var table = $('#devicesTable').DataTable();\n\n        // Check if we need to remove a row from the table\n        var rowsToRemove=[];\n        for (var rowIndex = 0; rowIndex < table.rows().eq(0).length; rowIndex++) {\n            for (var deviceIdx = 0 ; deviceIdx < devicesList.length ; deviceIdx++)\n            {\n                if (devicesList[deviceIdx]['guid'] == table.cell(rowIndex, 3).data()) {\n                    rowsToRemove[rowsToRemove.length] = rowIndex;\n                    break;\n                }\n            }\n        }\n        for (var idx = rowsToRemove.length; idx > 0 ; idx--)\n        {\n            table.rows(idx).remove().draw();\n        }\n\n        // Check if we need to update or add a row in the table\n        for (var deviceIndex = 0 ; deviceIndex < devicesList.length; deviceIndex++) {\n            var device = devicesList[deviceIndex];\n            var location = 'unknown';\n            if (device['location'] != null) location = device['location'];\n            var ipaddress = 'unknown';\n            if (device['ipaddress'] != null) ipaddress = device['ipaddress'];\n            var displayname = 'unknown';\n            if (device['displayname'] != null) displayname = device['displayname'];\n            var connectionstring = 'unknown';\n            if (device['connectionstring'] != null) connectionstring = device['connectionstring'];\n\n            var addRow = true;\n\n            if (table.rows().length > 0) {\n                // Check if we already have this one in the table already to prevent duplicates\n                var indexes = table.rows().eq(0).filter(function (rowIdx) {\n                    if (\n                        table.cell(rowIdx, 3).data() == device['guid']) {\n                        // Update the row\n                        table.cell(rowIdx, 0).innerHTML = displayname;\n                        table.cell(rowIdx, 1).innerHTML = location;\n                        table.cell(rowIdx, 2).innerHTML = ipaddress;\n                        if ($('#cscolumn').is(':visible')) {\n                            table.cell(rowIdx, 4).innerHTML = connectionstring;\n                        }\n                        return true;\n                    }\n                    return false;\n                });\n                // if the device is already in the list, return.\n                if (indexes.length != 0) addRow = false;\n            }\n\n            // The device is a new one, lets add it to the table\n            if (addRow == true) {\n                if ($('#cscolumn').is(':visible')) {\n                    table.row.add([\n                        displayname,\n                        location,\n                        ipaddress,\n                        device['guid'],\n                        connectionstring\n                    ]).draw();\n                } else {\n                    table.row.add([\n                        displayname,\n                        location,\n                        ipaddress,\n                        device['guid']\n                    ]).draw();\n                }\n            }\n        }\n    }\n}\n\nfunction AddSuccess(result) {\n    if (result) {\n        var resultObject = JSON.parse(result);\n        if (resultObject.Error) \n        {\n            addOutputToConsole('ERROR ' + resultObject.Error);\n            alert(resultObject.Error);\n        } else {\n            addOutputToConsole('Device ' + resultObject.Device + ' added to IoT Hub');\n            updateDevicesList();\n        }\n    } else {\n        addOutputToConsole('An error happened while trying to add a new device');\n        alert(\"An error happened while trying to add a new device\");\n    }\n}\n\nfunction DeleteSuccess(result) {\n    if (result) {\n        var resultObject = JSON.parse(result);\n        if (resultObject.Error) {\n            addOutputToConsole('ERROR ' + resultObject.Error);\n            alert(resultObject.Error);\n        } else {\n            addOutputToConsole('Device ' + resultObject.Device + ' deleted from IoT Hub');\n            updateDevicesList();\n        }\n    } else {\n        addOutputToConsole('An error happened while trying to delete the device');\n        alert('An error happened while trying to delete the device');\n    }\n}\n\nfunction Failure(error) {\n    addOutputToConsole(error);\n    alert(error);\n}\n\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/jquery.ui-contextmenu.js",
    "content": "/*******************************************************************************\n * jquery.ui-contextmenu.js plugin.\n *\n * jQuery plugin that provides a context menu (based on the jQueryUI menu widget).\n *\n * @see https://github.com/mar10/jquery-ui-contextmenu\n *\n * Copyright (c) 2013-2016, Martin Wendt (http://wwWendt.de). Licensed MIT.\n */\n\n(function( factory ) {\n\t\"use strict\";\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([ \"jquery\", \"jquery-ui/menu\" ], factory );\n\t} else {\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n\"use strict\";\n\nvar supportSelectstart = \"onselectstart\" in document.createElement(\"div\"),\n\tmatch = $.ui.menu.version.match(/^(\\d)\\.(\\d+)/),\n\tuiVersion = {\n\t\tmajor: parseInt(match[1], 10),\n\t\tminor: parseInt(match[2], 10)\n\t},\n\tisLTE110 = ( uiVersion.major < 2 && uiVersion.minor <= 10 ),\n\tisLTE111 = ( uiVersion.major < 2 && uiVersion.minor <= 11 );\n\n$.widget(\"moogle.contextmenu\", {\n\tversion: \"@VERSION\",\n\toptions: {\n\t\taddClass: \"ui-contextmenu\",  // Add this class to the outer <ul>\n\t\tautoFocus: false,      // Set keyboard focus to first entry on open\n\t\tautoTrigger: true,    // open menu on browser's `contextmenu` event\n\t\tdelegate: null,       // selector\n\t\thide: { effect: \"fadeOut\", duration: \"fast\" },\n\t\tignoreParentSelect: true, // Don't trigger 'select' for sub-menu parents\n\t\tmenu: null,           // selector or jQuery pointing to <UL>, or a definition hash\n\t\tposition: null,       // popup positon\n\t\tpreventContextMenuForPopup: false, // prevent opening the browser's system\n\t\t\t\t\t\t\t\t\t\t   // context menu on menu entries\n\t\tpreventSelect: false, // disable text selection of target\n\t\tshow: { effect: \"slideDown\", duration: \"fast\" },\n\t\ttaphold: false,       // open menu on taphold events (requires external plugins)\n\t\tuiMenuOptions: {},\t  // Additional options, used when UI Menu is created\n\t\t// Events:\n\t\tbeforeOpen: $.noop,   // menu about to open; return `false` to prevent opening\n\t\tblur: $.noop,         // menu option lost focus\n\t\tclose: $.noop,        // menu was closed\n\t\tcreate: $.noop,       // menu was initialized\n\t\tcreateMenu: $.noop,   // menu was initialized (original UI Menu)\n\t\tfocus: $.noop,        // menu option got focus\n\t\topen: $.noop,         // menu was opened\n\t\tselect: $.noop        // menu option was selected; return `false` to prevent closing\n\t},\n\t/** Constructor */\n\t_create: function() {\n\t\tvar cssText, eventNames, targetId,\n\t\t\topts = this.options;\n\n\t\tthis.$headStyle = null;\n\t\tthis.$menu = null;\n\t\tthis.menuIsTemp = false;\n\t\tthis.currentTarget = null;\n\t\tthis.previousFocus = null;\n\n\t\tif (opts.preventSelect) {\n\t\t\t// Create a global style for all potential menu targets\n\t\t\t// If the contextmenu was bound to `document`, we apply the\n\t\t\t// selector relative to the <body> tag instead\n\t\t\ttargetId = ($(this.element).is(document) ? $(\"body\")\n\t\t\t\t: this.element).uniqueId().attr(\"id\");\n\t\t\tcssText = \"#\" + targetId + \" \" + opts.delegate + \" { \" +\n\t\t\t\t\t\"-webkit-user-select: none; \" +\n\t\t\t\t\t\"-khtml-user-select: none; \" +\n\t\t\t\t\t\"-moz-user-select: none; \" +\n\t\t\t\t\t\"-ms-user-select: none; \" +\n\t\t\t\t\t\"user-select: none; \" +\n\t\t\t\t\t\"}\";\n\t\t\tthis.$headStyle = $(\"<style class='moogle-contextmenu-style' />\")\n\t\t\t\t.prop(\"type\", \"text/css\")\n\t\t\t\t.appendTo(\"head\");\n\n\t\t\ttry {\n\t\t\t\tthis.$headStyle.html(cssText);\n\t\t\t} catch ( e ) {\n\t\t\t\t// issue #47: fix for IE 6-8\n\t\t\t\tthis.$headStyle[0].styleSheet.cssText = cssText;\n\t\t\t}\n\t\t\t// TODO: the selectstart is not supported by FF?\n\t\t\tif (supportSelectstart) {\n\t\t\t\tthis.element.delegate(opts.delegate, \"selectstart\" + this.eventNamespace,\n\t\t\t\t\t\t\t\t\t  function(event) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tthis._createUiMenu(opts.menu);\n\n\t\teventNames = \"contextmenu\" + this.eventNamespace;\n\t\tif (opts.taphold) {\n\t\t\teventNames += \" taphold\" + this.eventNamespace;\n\t\t}\n\t\tthis.element.delegate(opts.delegate, eventNames, $.proxy(this._openMenu, this));\n\t},\n\t/** Destructor, called on $().contextmenu(\"destroy\"). */\n\t_destroy: function() {\n\t\tthis.element.undelegate(this.eventNamespace);\n\n\t\tthis._createUiMenu(null);\n\n\t\tif (this.$headStyle) {\n\t\t\tthis.$headStyle.remove();\n\t\t\tthis.$headStyle = null;\n\t\t}\n\t},\n\t/** (Re)Create jQuery UI Menu. */\n\t_createUiMenu: function(menuDef) {\n\t\tvar ct,\n\t\t\topts = this.options;\n\n\t\t// Remove temporary <ul> if any\n\t\tif (this.isOpen()) {\n\t\t\t// #58: 'replaceMenu' in beforeOpen causing select: to lose ui.target\n\t\t\tct = this.currentTarget;\n\t\t\t// close without animation, to force async mode\n\t\t\tthis._closeMenu(true);\n\t\t\tthis.currentTarget = ct;\n\t\t}\n\t\tif (this.menuIsTemp) {\n\t\t\tthis.$menu.remove(); // this will also destroy ui.menu\n\t\t} else if (this.$menu) {\n\t\t\tthis.$menu\n\t\t\t\t.menu(\"destroy\")\n\t\t\t\t.removeClass(this.options.addClass)\n\t\t\t\t.hide();\n\t\t}\n\t\tthis.$menu = null;\n\t\tthis.menuIsTemp = false;\n\t\t// If a menu definition array was passed, create a hidden <ul>\n\t\t// and generate the structure now\n\t\tif ( !menuDef ) {\n\t\t\treturn;\n\t\t} else if ($.isArray(menuDef)) {\n\t\t\tthis.$menu = $.moogle.contextmenu.createMenuMarkup(menuDef);\n\t\t\tthis.menuIsTemp = true;\n\t\t}else if ( typeof menuDef === \"string\" ) {\n\t\t\tthis.$menu = $(menuDef);\n\t\t} else {\n\t\t\tthis.$menu = menuDef;\n\t\t}\n\t\t// Create - but hide - the jQuery UI Menu widget\n\t\tthis.$menu\n\t\t\t.hide()\n\t\t\t.addClass(opts.addClass)\n\t\t\t// Create a menu instance that delegates events to our widget\n\t\t\t.menu($.extend(true, {}, opts.uiMenuOptions, {\n\t\t\t\titems: \"> :not(.ui-widget-header)\",\n\t\t\t\tblur: $.proxy(opts.blur, this),\n\t\t\t\tcreate: $.proxy(opts.createMenu, this),\n\t\t\t\tfocus: $.proxy(opts.focus, this),\n\t\t\t\tselect: $.proxy(function(event, ui) {\n\t\t\t\t\t// User selected a menu entry\n\t\t\t\t\tvar retval,\n\t\t\t\t\t\tisParent = $.moogle.contextmenu.isMenu(ui.item),\n\t\t\t\t\t\tactionHandler = ui.item.data(\"actionHandler\");\n\n\t\t\t\t\tui.cmd = ui.item.attr(\"data-command\");\n\t\t\t\t\tui.target = $(this.currentTarget);\n\t\t\t\t\t// ignore clicks, if they only open a sub-menu\n\t\t\t\t\tif ( !isParent || !opts.ignoreParentSelect) {\n\t\t\t\t\t\tretval = this._trigger.call(this, \"select\", event, ui);\n\t\t\t\t\t\tif ( actionHandler ) {\n\t\t\t\t\t\t\tretval = actionHandler.call(this, event, ui);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( retval !== false ) {\n\t\t\t\t\t\t\tthis._closeMenu.call(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t}, this)\n\t\t\t}));\n\t},\n\t/** Open popup (called on 'contextmenu' event). */\n\t_openMenu: function(event, recursive) {\n\t\tvar res, promise,\n\t\t\topts = this.options,\n\t\t\tposOption = opts.position,\n\t\t\tself = this,\n\t\t\tmanualTrigger = !!event.isTrigger,\n\t\t\tui = { menu: this.$menu, target: $(event.target),\n\t\t\t\t   extraData: event._extraData, originalEvent: event,\n\t\t\t\t   result: null };\n\n\t\tif ( !opts.autoTrigger && !manualTrigger ) {\n\t\t\t// ignore browser's `contextmenu` events\n\t\t\treturn;\n\t\t}\n\n\t\t// Prevent browser from opening the system context menu\n\t\tevent.preventDefault();\n\n\t\tthis.currentTarget = event.target;\n\n\t\tif ( !recursive ) {\n\t\t\tres = this._trigger(\"beforeOpen\", event, ui);\n\t\t\tpromise = (ui.result && $.isFunction(ui.result.promise)) ? ui.result : null;\n\t\t\tui.result = null;\n\t\t\tif ( res === false ) {\n\t\t\t\tthis.currentTarget = null;\n\t\t\t\treturn false;\n\t\t\t} else if ( promise ) {\n\t\t\t\t// Handler returned a Deferred or Promise. Delay menu open until\n\t\t\t\t// the promise is resolved\n\t\t\t\tpromise.done(function() {\n\t\t\t\t\tself._openMenu(event, true);\n\t\t\t\t});\n\t\t\t\tthis.currentTarget = null;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tui.menu = this.$menu; // Might have changed in beforeOpen\n\t\t}\n\n\t\t// Register global event handlers that close the dropdown-menu\n\t\t$(document).bind(\"keydown\" + this.eventNamespace, function(event) {\n\t\t\tif ( event.which === $.ui.keyCode.ESCAPE ) {\n\t\t\t\tself._closeMenu();\n\t\t\t}\n\t\t}).bind(\"mousedown\" + this.eventNamespace + \" touchstart\" + this.eventNamespace,\n\t\t\t\tfunction(event) {\n\t\t\t// Close menu when clicked outside menu\n\t\t\tif ( !$(event.target).closest(\".ui-menu-item\").length ) {\n\t\t\t\tself._closeMenu();\n\t\t\t}\n\t\t});\n\n\t\t// required for custom positioning (issue #18 and #13).\n\t\tif ($.isFunction(posOption)) {\n\t\t\tposOption = posOption(event, ui);\n\t\t}\n\t\tposOption = $.extend({\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\t// if called by 'open' method, event does not have pageX/Y\n\t\t\tof: (event.pageX === undefined) ? event.target : event,\n\t\t\tcollision: \"fit\"\n\t\t}, posOption);\n\n\t\t// Finally display the popup\n\t\tthis.$menu\n\t\t\t.show() // required to fix positioning error\n\t\t\t.css({\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t}).position(posOption)\n\t\t\t.hide(); // hide again, so we can apply nice effects\n\n\t\tif ( opts.preventContextMenuForPopup ) {\n\t\t\tthis.$menu.bind(\"contextmenu\" + this.eventNamespace, function(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t});\n\t\t}\n\t\tthis._show(this.$menu, opts.show, function() {\n\t\t\t// Set focus to first active menu entry\n\t\t\tif ( opts.autoFocus ) {\n\t\t\t\t// var $first = self.$menu.children(\".ui-menu-item:enabled:first\");\n\t\t\t\t// self.$menu.menu(\"focus\", event, $first).focus();\n\t\t\t\tself.$menu.focus();\n\t\t\t\tself.previousFocus = $(event.target);\n\t\t\t}\n\t\t\tself._trigger.call(self, \"open\", event, ui);\n\t\t});\n\t},\n\t/** Close popup. */\n\t_closeMenu: function(immediately) {\n\t\tvar self = this,\n\t\t\thideOpts = immediately ? false : this.options.hide;\n\n\t\t// Note: we don't want to unbind the 'contextmenu' event\n\t\t$(document)\n\t\t\t.unbind(\"mousedown\" + this.eventNamespace)\n\t\t\t.unbind(\"touchstart\" + this.eventNamespace)\n\t\t\t.unbind(\"keydown\" + this.eventNamespace);\n\n\t\tself.currentTarget = null; // issue #44 after hide animation is too late\n\t\tif ( this.$menu ) { // #88: widget might have been destroyed already\n\t\t\tthis.$menu\n\t\t\t\t.unbind(\"contextmenu\" + this.eventNamespace);\n\t\t\tthis._hide(this.$menu, hideOpts, function() {\n\t\t\t\tif ( self.previousFocus ) {\n\t\t\t\t\tself.previousFocus.focus();\n\t\t\t\t\tself.previousFocus = null;\n\t\t\t\t}\n\t\t\t\tself._trigger(\"close\");\n\t\t\t});\n\t\t} else {\n\t\t\tself._trigger(\"close\");\n\t\t}\n\t},\n\t/** Handle $().contextmenu(\"option\", key, value) calls. */\n\t_setOption: function(key, value) {\n\t\tswitch (key) {\n\t\tcase \"menu\":\n\t\t\tthis.replaceMenu(value);\n\t\t\tbreak;\n\t\t}\n\t\t$.Widget.prototype._setOption.apply(this, arguments);\n\t},\n\t/** Return ui-menu entry (<LI> tag). */\n\t_getMenuEntry: function(cmd) {\n\t\treturn this.$menu.find(\"li[data-command=\" + cmd + \"]\");\n\t},\n\t/** Close context menu. */\n\tclose: function() {\n\t\tif (this.isOpen()) {\n\t\t\tthis._closeMenu();\n\t\t}\n\t},\n\t/** Enable or disable the menu command. */\n\tenableEntry: function(cmd, flag) {\n\t\tthis._getMenuEntry(cmd).toggleClass(\"ui-state-disabled\", (flag === false));\n\t},\n\t/** Return Menu element (UL). */\n\tgetMenu: function() {\n\t\treturn this.$menu;\n\t},\n\t/** Return true if menu is open. */\n\tisOpen: function() {\n//            return this.$menu && this.$menu.is(\":visible\");\n\t\treturn !!this.$menu && !!this.currentTarget;\n\t},\n\t/** Open context menu on a specific target (must match options.delegate)\n\t *  Optional `extraData` is passed to event handlers as `ui.extraData`.\n\t */\n\topen: function(targetOrEvent, extraData) {\n\t\t// Fake a 'contextmenu' event\n\t\textraData = extraData || {};\n\n\t\tvar isEvent = (targetOrEvent && targetOrEvent.type && targetOrEvent.target),\n\t\t\tevent =  isEvent ? targetOrEvent : {},\n\t\t\ttarget = isEvent ? targetOrEvent.target : targetOrEvent,\n\t\t\te = jQuery.Event(\"contextmenu\", {\n\t\t\t\ttarget: $(target).get(0),\n\t\t\t\tpageX: event.pageX,\n\t\t\t\tpageY: event.pageY,\n\t\t\t\toriginalEvent: isEvent ? targetOrEvent : undefined,\n\t\t\t\t_extraData: extraData\n\t\t\t});\n\t\treturn this.element.trigger(e);\n\t},\n\t/** Replace the menu altogether. */\n\treplaceMenu: function(data) {\n\t\tthis._createUiMenu(data);\n\t},\n\t/** Redefine menu entry (title or all of it). */\n\tsetEntry: function(cmd, entry) {\n\t\tvar $ul,\n\t\t\t$entryLi = this._getMenuEntry(cmd);\n\n\t\tif (typeof entry === \"string\") {\n\t\t\t$.moogle.contextmenu.updateTitle($entryLi, entry);\n\t\t} else {\n\t\t\t$entryLi.empty();\n\t\t\tentry.cmd = entry.cmd || cmd;\n\t\t\t$.moogle.contextmenu.createEntryMarkup(entry, $entryLi);\n\t\t\tif ($.isArray(entry.children)) {\n\t\t\t\t$ul = $(\"<ul/>\").appendTo($entryLi);\n\t\t\t\t$.moogle.contextmenu.createMenuMarkup(entry.children, $ul);\n\t\t\t}\n\t\t\tthis.getMenu().menu(\"refresh\");\n\t\t}\n\t},\n\t/** Show or hide the menu command. */\n\tshowEntry: function(cmd, flag) {\n\t\tthis._getMenuEntry(cmd).toggle(flag !== false);\n\t}\n});\n\n/*\n * Global functions\n */\n$.extend($.moogle.contextmenu, {\n\t/** Convert a menu description into a into a <li> content. */\n\tcreateEntryMarkup: function(entry, $parentLi) {\n\t\tvar $wrapper = null;\n\n\t\t$parentLi.attr(\"data-command\", entry.cmd);\n\n\t\tif ( !/[^\\-\\u2014\\u2013\\s]/.test( entry.title ) ) {\n\t\t\t// hyphen, em dash, en dash: separator as defined by UI Menu 1.10\n\t\t\t$parentLi.text(entry.title);\n\t\t} else {\n\t\t\tif ( isLTE110 ) {\n\t\t\t\t// jQuery UI Menu 1.10 or before required an `<a>` tag\n\t\t\t\t$wrapper = $(\"<a/>\", {\n\t\t\t\t\t\thtml: \"\" + entry.title,\n\t\t\t\t\t\thref: \"#\"\n\t\t\t\t\t}).appendTo($parentLi);\n\n\t\t\t\tif ( entry.uiIcon ) {\n\t\t\t\t\t$wrapper.append($(\"<span class='ui-icon' />\").addClass(entry.uiIcon));\n\t\t\t\t}\n\n\t\t\t} else if ( isLTE111 ) {\n\t\t\t\t// jQuery UI Menu 1.11 preferes to avoid `<a>` tags\n\t\t\t\t$parentLi.html(\"\" + entry.title);\n\t\t\t\tif ( $.isFunction(entry.action) ) {\n\t\t\t\t\t$parentLi.data(\"actionHandler\", entry.action);\n\t\t\t\t}\n\t\t\t\tif ( entry.uiIcon ) {\n\t\t\t\t\t$parentLi\n\t\t\t\t\t\t.append($(\"<span class='ui-icon' />\")\n\t\t\t\t\t\t.addClass(entry.uiIcon));\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\t// jQuery UI Menu 1.12 introduced `<div>` wrappers\n\t\t\t\t$wrapper = $(\"<div/>\", {\n\t\t\t\t\t\thtml: \"\" + entry.title\n\t\t\t\t\t}).appendTo($parentLi);\n\t\t\t\tif ( entry.uiIcon ) {\n\t\t\t\t\t$wrapper.append($(\"<span class='ui-icon' />\").addClass(entry.uiIcon));\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( $.isFunction(entry.action) ) {\n\t\t\t\t$parentLi.data(\"actionHandler\", entry.action);\n\t\t\t}\n\t\t\tif ( entry.disabled ) {\n\t\t\t\t$parentLi.addClass(\"ui-state-disabled\");\n\t\t\t}\n\t\t\tif ( entry.isHeader ) {\n\t\t\t\t$parentLi.addClass(\"ui-widget-header\");\n\t\t\t}\n\t\t\tif ( entry.addClass ) {\n\t\t\t\t$parentLi.addClass(entry.addClass);\n\t\t\t}\n\t\t\tif ( $.isPlainObject(entry.data) ) {\n\t\t\t\t$parentLi.data(entry.data);\n\t\t\t}\n\t\t\tif ( entry.tooltip != null ) {\n\t\t\t\t$parentLi.attr(\"title\", entry.tooltip);\n\t\t\t}\n\t\t}\n\t},\n\t/** Convert a nested array of command objects into a <ul> structure. */\n\tcreateMenuMarkup: function(options, $parentUl) {\n\t\tvar i, menu, $ul, $li;\n\t\tif ( $parentUl == null ) {\n\t\t\t$parentUl = $(\"<ul class='ui-helper-hidden' />\").appendTo(\"body\");\n\t\t}\n\t\tfor (i = 0; i < options.length; i++) {\n\t\t\tmenu = options[i];\n\t\t\t$li = $(\"<li/>\").appendTo($parentUl);\n\n\t\t\t$.moogle.contextmenu.createEntryMarkup(menu, $li);\n\n\t\t\tif ( $.isArray(menu.children) ) {\n\t\t\t\t$ul = $(\"<ul/>\").appendTo($li);\n\t\t\t\t$.moogle.contextmenu.createMenuMarkup(menu.children, $ul);\n\t\t\t}\n\t\t}\n\t\treturn $parentUl;\n\t},\n\t/** Returns true if the menu item has child menu items */\n\tisMenu: function(item) {\n\t\tif ( isLTE110 ) {\n\t\t\treturn item.has(\">a[aria-haspopup='true']\").length > 0;\n\t\t} else if ( isLTE111 ) {  // jQuery UI 1.11 used no tag wrappers\n\t\t\treturn item.is(\"[aria-haspopup='true']\");\n\t\t} else {\n\t\t\treturn item.has(\">div[aria-haspopup='true']\").length > 0;\n\t\t}\n\t},\n\t/** Replaces the value of elem's first text node child */\n\treplaceFirstTextNodeChild: function(elem, text) {\n\t\telem\n\t\t\t.contents()\n\t\t\t.filter(function() { return this.nodeType === 3; })\n\t\t\t.first()\n\t\t\t.replaceWith(text);\n\t},\n\t/** Updates the menu item's title */\n\tupdateTitle: function(item, title) {\n\t\tif ( isLTE110 ) {  // jQuery UI 1.10 and before used <a> tags\n\t\t\t$.moogle.contextmenu.replaceFirstTextNodeChild($(\"a\", item), title);\n\t\t} else if ( isLTE111 ) {  // jQuery UI 1.11 used no tag wrappers\n\t\t\t$.moogle.contextmenu.replaceFirstTextNodeChild(item, title);\n\t\t} else {  // jQuery UI 1.12+ introduced <div> tag wrappers\n\t\t\t$.moogle.contextmenu.replaceFirstTextNodeChild($(\"div\", item), title);\n\t\t}\n\t}\n});\n\n}));\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/js/qrcode.js",
    "content": "/**\n * @fileoverview\n * - Using the 'QRCode for Javascript library'\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\n * - this library has no dependencies.\n * \n * @author davidshimjs\n * @see <a href=\"http://www.d-project.com/\" target=\"_blank\">http://www.d-project.com/</a>\n * @see <a href=\"http://jeromeetienne.github.com/jquery-qrcode/\" target=\"_blank\">http://jeromeetienne.github.com/jquery-qrcode/</a>\n */\nvar QRCode;\n\n(function () {\n\t//---------------------------------------------------------------------\n\t// QRCode for JavaScript\n\t//\n\t// Copyright (c) 2009 Kazuhiko Arase\n\t//\n\t// URL: http://www.d-project.com/\n\t//\n\t// Licensed under the MIT license:\n\t//   http://www.opensource.org/licenses/mit-license.php\n\t//\n\t// The word \"QR Code\" is registered trademark of \n\t// DENSO WAVE INCORPORATED\n\t//   http://www.denso-wave.com/qrcode/faqpatent-e.html\n\t//\n\t//---------------------------------------------------------------------\n\tfunction QR8bitByte(data) {\n\t\tthis.mode = QRMode.MODE_8BIT_BYTE;\n\t\tthis.data = data;\n\t\tthis.parsedData = [];\n\n\t\t// Added to support UTF-8 Characters\n\t\tfor (var i = 0, l = this.data.length; i < l; i++) {\n\t\t\tvar byteArray = [];\n\t\t\tvar code = this.data.charCodeAt(i);\n\n\t\t\tif (code > 0x10000) {\n\t\t\t\tbyteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n\t\t\t\tbyteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[3] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x800) {\n\t\t\t\tbyteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n\t\t\t\tbyteArray[2] = 0x80 | (code & 0x3F);\n\t\t\t} else if (code > 0x80) {\n\t\t\t\tbyteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n\t\t\t\tbyteArray[1] = 0x80 | (code & 0x3F);\n\t\t\t} else {\n\t\t\t\tbyteArray[0] = code;\n\t\t\t}\n\n\t\t\tthis.parsedData.push(byteArray);\n\t\t}\n\n\t\tthis.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n\t\tif (this.parsedData.length != this.data.length) {\n\t\t\tthis.parsedData.unshift(191);\n\t\t\tthis.parsedData.unshift(187);\n\t\t\tthis.parsedData.unshift(239);\n\t\t}\n\t}\n\n\tQR8bitByte.prototype = {\n\t\tgetLength: function (buffer) {\n\t\t\treturn this.parsedData.length;\n\t\t},\n\t\twrite: function (buffer) {\n\t\t\tfor (var i = 0, l = this.parsedData.length; i < l; i++) {\n\t\t\t\tbuffer.put(this.parsedData[i], 8);\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n\t\tthis.typeNumber = typeNumber;\n\t\tthis.errorCorrectLevel = errorCorrectLevel;\n\t\tthis.modules = null;\n\t\tthis.moduleCount = 0;\n\t\tthis.dataCache = null;\n\t\tthis.dataList = [];\n\t}\n\n\tQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\n\treturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}\n\tthis.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}\n\tif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\n\tthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\n\treturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}\n\treturn qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}\n\tthis.modules[r][6]=(r%2==0);}\n\tfor(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}\n\tthis.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}\n\tfor(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\n\tfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\n\tfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\n\tthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}\n\tvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\n\tthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\n\trow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}\n\tvar totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}\n\tif(buffer.getLengthInBits()>totalDataCount*8){throw new Error(\"code length overflow. (\"\n\t+buffer.getLengthInBits()\n\t+\">\"\n\t+totalDataCount*8\n\t+\")\");}\n\tif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\n\twhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\n\twhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\n\tbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\n\tbuffer.put(QRCodeModel.PAD1,8);}\n\treturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}\n\toffset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}\n\tvar totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}\n\tvar data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}\n\tfor(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}\n\treturn data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\n\treturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\n\treturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\n\treturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error(\"bad maskPattern:\"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}\n\treturn a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error(\"mode:\"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error(\"mode:\"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error(\"mode:\"+mode);}}else{throw new Error(\"type:\"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}\n\tfor(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}\n\tif(r==0&&c==0){continue;}\n\tif(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}\n\tif(sameCount>5){lostPoint+=(3+sameCount-5);}}}\n\tfor(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}\n\tfor(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}\n\tfor(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}\n\tvar darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}\n\tvar ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error(\"glog(\"+n+\")\");}\n\treturn QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}\n\twhile(n>=256){n-=255;}\n\treturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}\n\tfor(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}\n\tfor(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}\n\tfunction QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+\"/\"+shift);}\n\tvar offset=0;while(offset<num.length&&num[offset]==0){offset++;}\n\tthis.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}\n\tQRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}\n\treturn new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}\n\tvar ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}\n\tfor(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}\n\treturn new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}\n\tQRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error(\"bad rs block @ typeNumber:\"+typeNumber+\"/errorCorrectLevel:\"+errorCorrectLevel);}\n\tvar length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}\n\treturn list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}\n\tQRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\n\tif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\n\tthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\n\t\n\tfunction _isSupportCanvas() {\n\t\treturn typeof CanvasRenderingContext2D != \"undefined\";\n\t}\n\t\n\t// android 2.x doesn't support Data-URI spec\n\tfunction _getAndroid() {\n\t\tvar android = false;\n\t\tvar sAgent = navigator.userAgent;\n\t\t\n\t\tif (/android/i.test(sAgent)) { // android\n\t\t\tandroid = true;\n\t\t\tvar aMat = sAgent.toString().match(/android ([0-9]\\.[0-9])/i);\n\t\t\t\n\t\t\tif (aMat && aMat[1]) {\n\t\t\t\tandroid = parseFloat(aMat[1]);\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn android;\n\t}\n\t\n\tvar svgDrawer = (function() {\n\n\t\tvar Drawing = function (el, htOption) {\n\t\t\tthis._el = el;\n\t\t\tthis._htOption = htOption;\n\t\t};\n\n\t\tDrawing.prototype.draw = function (oQRCode) {\n\t\t\tvar _htOption = this._htOption;\n\t\t\tvar _el = this._el;\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\n\n\t\t\tthis.clear();\n\n\t\t\tfunction makeSVG(tag, attrs) {\n\t\t\t\tvar el = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\t\t\t\tfor (var k in attrs)\n\t\t\t\t\tif (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);\n\t\t\t\treturn el;\n\t\t\t}\n\n\t\t\tvar svg = makeSVG(\"svg\" , {'viewBox': '0 0 ' + String(nCount) + \" \" + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});\n\t\t\tsvg.setAttributeNS(\"http://www.w3.org/2000/xmlns/\", \"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\n\t\t\t_el.appendChild(svg);\n\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorLight, \"width\": \"100%\", \"height\": \"100%\"}));\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorDark, \"width\": \"1\", \"height\": \"1\", \"id\": \"template\"}));\n\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tif (oQRCode.isDark(row, col)) {\n\t\t\t\t\t\tvar child = makeSVG(\"use\", {\"x\": String(col), \"y\": String(row)});\n\t\t\t\t\t\tchild.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", \"#template\")\n\t\t\t\t\t\tsvg.appendChild(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tDrawing.prototype.clear = function () {\n\t\t\twhile (this._el.hasChildNodes())\n\t\t\t\tthis._el.removeChild(this._el.lastChild);\n\t\t};\n\t\treturn Drawing;\n\t})();\n\n\tvar useSVG = document.documentElement.tagName.toLowerCase() === \"svg\";\n\n\t// Drawing in DOM by using Table tag\n\tvar Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {\n\t\tvar Drawing = function (el, htOption) {\n\t\t\tthis._el = el;\n\t\t\tthis._htOption = htOption;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Draw the QRCode\n\t\t * \n\t\t * @param {QRCode} oQRCode\n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n            var _htOption = this._htOption;\n            var _el = this._el;\n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\n\t\t\tvar aHTML = ['<table style=\"border:0;border-collapse:collapse;\">'];\n\t\t\t\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\taHTML.push('<tr>');\n\t\t\t\t\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\taHTML.push('<td style=\"border:0;border-collapse:collapse;padding:0;margin:0;width:' + nWidth + 'px;height:' + nHeight + 'px;background-color:' + (oQRCode.isDark(row, col) ? _htOption.colorDark : _htOption.colorLight) + ';\"></td>');\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\taHTML.push('</tr>');\n\t\t\t}\n\t\t\t\n\t\t\taHTML.push('</table>');\n\t\t\t_el.innerHTML = aHTML.join('');\n\t\t\t\n\t\t\t// Fix the margin values as real size.\n\t\t\tvar elTable = _el.childNodes[0];\n\t\t\tvar nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;\n\t\t\tvar nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;\n\t\t\t\n\t\t\tif (nLeftMarginTable > 0 && nTopMarginTable > 0) {\n\t\t\t\telTable.style.margin = nTopMarginTable + \"px \" + nLeftMarginTable + \"px\";\t\n\t\t\t}\n\t\t};\n\t\t\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._el.innerHTML = '';\n\t\t};\n\t\t\n\t\treturn Drawing;\n\t})() : (function () { // Drawing in Canvas\n\t\tfunction _onMakeImage() {\n\t\t\tthis._elImage.src = this._elCanvas.toDataURL(\"image/png\");\n\t\t\tthis._elImage.style.display = \"block\";\n\t\t\tthis._elCanvas.style.display = \"none\";\t\t\t\n\t\t}\n\t\t\n\t\t// Android 2.1 bug workaround\n\t\t// http://code.google.com/p/android/issues/detail?id=5141\n\t\tif (this._android && this._android <= 2.1) {\n\t    \tvar factor = 1 / window.devicePixelRatio;\n\t        var drawImage = CanvasRenderingContext2D.prototype.drawImage; \n\t    \tCanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {\n\t    \t\tif ((\"nodeName\" in image) && /img/i.test(image.nodeName)) {\n\t\t        \tfor (var i = arguments.length - 1; i >= 1; i--) {\n\t\t            \targuments[i] = arguments[i] * factor;\n\t\t        \t}\n\t    \t\t} else if (typeof dw == \"undefined\") {\n\t    \t\t\targuments[1] *= factor;\n\t    \t\t\targuments[2] *= factor;\n\t    \t\t\targuments[3] *= factor;\n\t    \t\t\targuments[4] *= factor;\n\t    \t\t}\n\t    \t\t\n\t        \tdrawImage.apply(this, arguments); \n\t    \t};\n\t\t}\n\t\t\n\t\t/**\n\t\t * Check whether the user's browser supports Data URI or not\n\t\t * \n\t\t * @private\n\t\t * @param {Function} fSuccess Occurs if it supports Data URI\n\t\t * @param {Function} fFail Occurs if it doesn't support Data URI\n\t\t */\n\t\tfunction _safeSetDataURI(fSuccess, fFail) {\n            var self = this;\n            self._fFail = fFail;\n            self._fSuccess = fSuccess;\n\n            // Check it just once\n            if (self._bSupportDataURI === null) {\n                var el = document.createElement(\"img\");\n                var fOnError = function() {\n                    self._bSupportDataURI = false;\n\n                    if (self._fFail) {\n                        self._fFail.call(self);\n                    }\n                };\n                var fOnSuccess = function() {\n                    self._bSupportDataURI = true;\n\n                    if (self._fSuccess) {\n                        self._fSuccess.call(self);\n                    }\n                };\n\n                el.onabort = fOnError;\n                el.onerror = fOnError;\n                el.onload = fOnSuccess;\n                el.src = \"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\"; // the Image contains 1px data.\n                return;\n            } else if (self._bSupportDataURI === true && self._fSuccess) {\n                self._fSuccess.call(self);\n            } else if (self._bSupportDataURI === false && self._fFail) {\n                self._fFail.call(self);\n            }\n\t\t};\n\t\t\n\t\t/**\n\t\t * Drawing QRCode by using canvas\n\t\t * \n\t\t * @constructor\n\t\t * @param {HTMLElement} el\n\t\t * @param {Object} htOption QRCode Options \n\t\t */\n\t\tvar Drawing = function (el, htOption) {\n    \t\tthis._bIsPainted = false;\n    \t\tthis._android = _getAndroid();\n\t\t\n\t\t\tthis._htOption = htOption;\n\t\t\tthis._elCanvas = document.createElement(\"canvas\");\n\t\t\tthis._elCanvas.width = htOption.width;\n\t\t\tthis._elCanvas.height = htOption.height;\n\t\t\tel.appendChild(this._elCanvas);\n\t\t\tthis._el = el;\n\t\t\tthis._oContext = this._elCanvas.getContext(\"2d\");\n\t\t\tthis._bIsPainted = false;\n\t\t\tthis._elImage = document.createElement(\"img\");\n\t\t\tthis._elImage.alt = \"Scan me!\";\n\t\t\tthis._elImage.style.display = \"none\";\n\t\t\tthis._el.appendChild(this._elImage);\n\t\t\tthis._bSupportDataURI = null;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Draw the QRCode\n\t\t * \n\t\t * @param {QRCode} oQRCode \n\t\t */\n\t\tDrawing.prototype.draw = function (oQRCode) {\n            var _elImage = this._elImage;\n            var _oContext = this._oContext;\n            var _htOption = this._htOption;\n            \n\t\t\tvar nCount = oQRCode.getModuleCount();\n\t\t\tvar nWidth = _htOption.width / nCount;\n\t\t\tvar nHeight = _htOption.height / nCount;\n\t\t\tvar nRoundedWidth = Math.round(nWidth);\n\t\t\tvar nRoundedHeight = Math.round(nHeight);\n\n\t\t\t_elImage.style.display = \"none\";\n\t\t\tthis.clear();\n\t\t\t\n\t\t\tfor (var row = 0; row < nCount; row++) {\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\n\t\t\t\t\tvar bIsDark = oQRCode.isDark(row, col);\n\t\t\t\t\tvar nLeft = col * nWidth;\n\t\t\t\t\tvar nTop = row * nHeight;\n\t\t\t\t\t_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\n\t\t\t\t\t_oContext.lineWidth = 1;\n\t\t\t\t\t_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\t\t\t\t\t\n\t\t\t\t\t_oContext.fillRect(nLeft, nTop, nWidth, nHeight);\n\t\t\t\t\t\n\t\t\t\t\t// 안티 앨리어싱 방지 처리\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.floor(nLeft) + 0.5,\n\t\t\t\t\t\tMath.floor(nTop) + 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t\t\n\t\t\t\t\t_oContext.strokeRect(\n\t\t\t\t\t\tMath.ceil(nLeft) - 0.5,\n\t\t\t\t\t\tMath.ceil(nTop) - 0.5,\n\t\t\t\t\t\tnRoundedWidth,\n\t\t\t\t\t\tnRoundedHeight\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tthis._bIsPainted = true;\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Make the image from Canvas if the browser supports Data URI.\n\t\t */\n\t\tDrawing.prototype.makeImage = function () {\n\t\t\tif (this._bIsPainted) {\n\t\t\t\t_safeSetDataURI.call(this, _onMakeImage);\n\t\t\t}\n\t\t};\n\t\t\t\n\t\t/**\n\t\t * Return whether the QRCode is painted or not\n\t\t * \n\t\t * @return {Boolean}\n\t\t */\n\t\tDrawing.prototype.isPainted = function () {\n\t\t\treturn this._bIsPainted;\n\t\t};\n\t\t\n\t\t/**\n\t\t * Clear the QRCode\n\t\t */\n\t\tDrawing.prototype.clear = function () {\n\t\t\tthis._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);\n\t\t\tthis._bIsPainted = false;\n\t\t};\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param {Number} nNumber\n\t\t */\n\t\tDrawing.prototype.round = function (nNumber) {\n\t\t\tif (!nNumber) {\n\t\t\t\treturn nNumber;\n\t\t\t}\n\t\t\t\n\t\t\treturn Math.floor(nNumber * 1000) / 1000;\n\t\t};\n\t\t\n\t\treturn Drawing;\n\t})();\n\t\n\t/**\n\t * Get the type by string length\n\t * \n\t * @private\n\t * @param {String} sText\n\t * @param {Number} nCorrectLevel\n\t * @return {Number} type\n\t */\n\tfunction _getTypeNumber(sText, nCorrectLevel) {\t\t\t\n\t\tvar nType = 1;\n\t\tvar length = _getUTF8Length(sText);\n\t\t\n\t\tfor (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n\t\t\tvar nLimit = 0;\n\t\t\t\n\t\t\tswitch (nCorrectLevel) {\n\t\t\t\tcase QRErrorCorrectLevel.L :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][0];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.M :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.Q :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][2];\n\t\t\t\t\tbreak;\n\t\t\t\tcase QRErrorCorrectLevel.H :\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][3];\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tif (length <= nLimit) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tnType++;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (nType > QRCodeLimitLength.length) {\n\t\t\tthrow new Error(\"Too long data\");\n\t\t}\n\t\t\n\t\treturn nType;\n\t}\n\n\tfunction _getUTF8Length(sText) {\n\t\tvar replacedText = encodeURI(sText).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\n\t\treturn replacedText.length + (replacedText.length != sText ? 3 : 0);\n\t}\n\t\n\t/**\n\t * @class QRCode\n\t * @constructor\n\t * @example \n\t * new QRCode(document.getElementById(\"test\"), \"http://jindo.dev.naver.com/collie\");\n\t *\n\t * @example\n\t * var oQRCode = new QRCode(\"test\", {\n\t *    text : \"http://naver.com\",\n\t *    width : 128,\n\t *    height : 128\n\t * });\n\t * \n\t * oQRCode.clear(); // Clear the QRCode.\n\t * oQRCode.makeCode(\"http://map.naver.com\"); // Re-create the QRCode.\n\t *\n\t * @param {HTMLElement|String} el target element or 'id' attribute of element.\n\t * @param {Object|String} vOption\n\t * @param {String} vOption.text QRCode link data\n\t * @param {Number} [vOption.width=256]\n\t * @param {Number} [vOption.height=256]\n\t * @param {String} [vOption.colorDark=\"#000000\"]\n\t * @param {String} [vOption.colorLight=\"#ffffff\"]\n\t * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H] \n\t */\n\tQRCode = function (el, vOption) {\n\t\tthis._htOption = {\n\t\t\twidth : 256, \n\t\t\theight : 256,\n\t\t\ttypeNumber : 4,\n\t\t\tcolorDark : \"#000000\",\n\t\t\tcolorLight : \"#ffffff\",\n\t\t\tcorrectLevel : QRErrorCorrectLevel.H\n\t\t};\n\t\t\n\t\tif (typeof vOption === 'string') {\n\t\t\tvOption\t= {\n\t\t\t\ttext : vOption\n\t\t\t};\n\t\t}\n\t\t\n\t\t// Overwrites options\n\t\tif (vOption) {\n\t\t\tfor (var i in vOption) {\n\t\t\t\tthis._htOption[i] = vOption[i];\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (typeof el == \"string\") {\n\t\t\tel = document.getElementById(el);\n\t\t}\n\n\t\tif (this._htOption.useSVG) {\n\t\t\tDrawing = svgDrawer;\n\t\t}\n\t\t\n\t\tthis._android = _getAndroid();\n\t\tthis._el = el;\n\t\tthis._oQRCode = null;\n\t\tthis._oDrawing = new Drawing(this._el, this._htOption);\n\t\t\n\t\tif (this._htOption.text) {\n\t\t\tthis.makeCode(this._htOption.text);\t\n\t\t}\n\t};\n\t\n\t/**\n\t * Make the QRCode\n\t * \n\t * @param {String} sText link data\n\t */\n\tQRCode.prototype.makeCode = function (sText) {\n\t\tthis._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);\n\t\tthis._oQRCode.addData(sText);\n\t\tthis._oQRCode.make();\n\t\tthis._el.title = sText;\n\t\tthis._oDrawing.draw(this._oQRCode);\t\t\t\n\t\tthis.makeImage();\n\t};\n\t\n\t/**\n\t * Make the Image from Canvas element\n\t * - It occurs automatically\n\t * - Android below 3 doesn't support Data-URI spec.\n\t * \n\t * @private\n\t */\n\tQRCode.prototype.makeImage = function () {\n\t\tif (typeof this._oDrawing.makeImage == \"function\" && (!this._android || this._android >= 3)) {\n\t\t\tthis._oDrawing.makeImage();\n\t\t}\n\t};\n\t\n\t/**\n\t * Clear the QRCode\n\t */\n\tQRCode.prototype.clear = function () {\n\t\tthis._oDrawing.clear();\n\t};\n\t\n\t/**\n\t * @name QRCode.CorrectLevel\n\t */\n\tQRCode.CorrectLevel = QRErrorCorrectLevel;\n})();\n"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.AspNet.WebApi.Client\" version=\"5.2.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.Core\" version=\"5.2.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.AspNet.WebApi.WebHost\" version=\"5.2.3\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.ActiveDirectory.GraphClient\" version=\"2.1.1\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Azure.Amqp\" version=\"1.1.5\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Azure.Devices\" version=\"1.0.16\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Azure.KeyVault.Core\" version=\"1.0.0\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.Azure.ServiceBus.EventProcessorHost\" version=\"2.2.7\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Data.Edm\" version=\"5.8.1\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Data.OData\" version=\"5.8.1\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.Data.Services.Client\" version=\"5.8.1\" targetFramework=\"net461\" />\n  <package id=\"Microsoft.WebSockets\" version=\"0.2.3.1\" targetFramework=\"net45\" />\n  <package id=\"Microsoft.WindowsAzure.ConfigurationManager\" version=\"3.2.3\" targetFramework=\"net461\" />\n  <package id=\"Mono.Security\" version=\"3.2.3.0\" targetFramework=\"net461\" />\n  <package id=\"Newtonsoft.Json\" version=\"9.0.1\" targetFramework=\"net45\" />\n  <package id=\"PCLCrypto\" version=\"2.0.147\" targetFramework=\"net461\" />\n  <package id=\"PInvoke.BCrypt\" version=\"0.3.152\" targetFramework=\"net461\" />\n  <package id=\"PInvoke.Kernel32\" version=\"0.3.152\" targetFramework=\"net461\" />\n  <package id=\"PInvoke.NCrypt\" version=\"0.3.152\" targetFramework=\"net461\" />\n  <package id=\"PInvoke.Windows.Core\" version=\"0.3.152\" targetFramework=\"net461\" />\n  <package id=\"System.Spatial\" version=\"5.8.1\" targetFramework=\"net461\" />\n  <package id=\"Validation\" version=\"2.3.7\" targetFramework=\"net461\" />\n  <package id=\"WindowsAzure.ServiceBus\" version=\"3.4.2\" targetFramework=\"net461\" />\n  <package id=\"WindowsAzure.Storage\" version=\"7.2.1\" targetFramework=\"net461\" />\n</packages>"
  },
  {
    "path": "Azure/WebSite/source/ConnectTheDotsWebSite.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.25420.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ConnectTheDotsWebSite\", \"ConnectTheDotsWebSite\\ConnectTheDotsWebSite.csproj\", \"{2E3E7496-59D5-48BC-909E-207120886E3E}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tRelease|Any CPU = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{2E3E7496-59D5-48BC-909E-207120886E3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{2E3E7496-59D5-48BC-909E-207120886E3E}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{2E3E7496-59D5-48BC-909E-207120886E3E}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{2E3E7496-59D5-48BC-909E-207120886E3E}.Release|Any CPU.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Contribute.md",
    "content": "## How to contribute\nThere are many ways that you can contribute to the ConnectTheDots project:\n\n* Submit a bug\n* Submit a code fix for a bug\n* Submit code to add a new device or sensor to the project, or modify existing device code \n* Submit code to add a new device gateway to the project, or modify existing gateway code (e.g. in a different programming language)\n* Submit code or configuration for storing or analyzing the data in Azure\n* Submit a new website design\n* Submit additions or modifications to the documentation\n* Submit a feature request\n\nThe key design principle is that the code makes it easy for people to get data from sensors into Azure and to utilize IoT services in Azure such as Azure Stream Analytics and Machine Learning.\n\n## Contributing Code\nTo contribute code you need to issue a Pull Request. All code submissions will be reviewed and tested by the team, and those that meet a high bar for both quality and design/roadmap appropriateness will be merged into the source. Be sure to follow the existing file/folder structure when adding new boards or sensors. \n\nYou must sign a [Contribution License Agreement](https://cla.microsoft.com/) ([CLA](https://cla.microsoft.com/)) before submitting a Pull Request. To complete the CLA, you will need to submit the request via the form and then electronically sign the CLA when you receive the email containing the link to the document.\n\nThis needs to only be done once, for your first contribution to the ConnectTheDots project.\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/Common/csharp/ConnectTheDotsHelper.cs",
    "content": "﻿using Microsoft.Azure.Devices.Client;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Runtime.Serialization;\nusing System.Text;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace ConnectTheDotsHelper\n{\n    // Data contract defining Connect The Dots data telemetry format\n    [DataContract]\n    public class D2CMessage\n    {\n        [DataMember]\n        public string guid;\n\n        [DataMember]\n        public string displayname;\n\n        [DataMember]\n        public string organization;\n\n        [DataMember]\n        public string location;\n\n        [DataMember]\n        public string measurename;\n\n        [DataMember]\n        public string unitofmeasure;\n\n        [DataMember]\n        public string timecreated;\n\n        [DataMember]\n        public double value;\n    }\n\n    [DataContract]\n    public class CTDSensor\n    {\n        [DataMember]\n        public D2CMessage message;\n\n        [DataMember]\n        public bool send;\n    }\n\n    // Data contract defining Connect The Dots Cloud to Device message format\n    [DataContract]\n    public class C2DMessage\n    {\n        [DataMember]\n        public string alerttype;\n\n        [DataMember]\n        public string message;\n\n        [DataMember]\n        public string guid;\n\n        [DataMember]\n        public string displayname;\n\n        [DataMember]\n        public string organization;\n\n        [DataMember]\n        public string location;\n\n        [DataMember]\n        public string measurename;\n\n        [DataMember]\n        public string unitofmeasure;\n\n        [DataMember]\n        public string timecreated;\n\n        [DataMember]\n        public double value;\n\n    }\n\n    /// <summary>\n    /// ConnectTheDots class\n    /// Provides helper functions for easily connect a device to Azure IoT Hub and send and receive messages to and from a ConnectTheDots website\n    /// </summary>\n    public class ConnectTheDots\n    {\n        // Azure IoT Hub client\n        private DeviceClient deviceClient;\n\n        // Collection of sensors\n        public Dictionary<string, CTDSensor> Sensors { get; set; } = new Dictionary<string, CTDSensor>();\n        public void AddSensor(string MeasureName, string UnitOfMeasure, bool send = true)\n        {\n            CTDSensor sensor = new CTDSensor();\n            sensor.message = new D2CMessage {\n                guid = Guid,\n                displayname = DisplayName,\n                location = Location,\n                organization = Organization,\n                measurename = MeasureName,\n                unitofmeasure = UnitOfMeasure,\n                timecreated = DateTime.UtcNow.ToString(\"o\"),\n                value = 0\n            };\n            sensor.send = send;\n\n            Sensors.Add(MeasureName, sensor);\n        }\n\n        public void setSensorStreaming(string MeasureName, bool on)\n        {\n            if ((Sensors != null) && (Sensors[MeasureName] != null))\n            {\n                Sensors[MeasureName].send = on;\n            }\n        }\n\n        // ConnectTheDots properties\n        private string _ConnectionString;\n        public string ConnectionString {\n            get\n            {\n                return _ConnectionString;\n            }\n            set\n            {\n                this._ConnectionString = value;\n                this.Guid = ExtractDeviceIdFromConnectionString(value);\n            }\n        }\n        public string Guid { get; set; }\n        public string DisplayName { get; set; }\n        public string Organization { get; set; }\n        public string Location { get; set; }\n        public bool SendTelemetryData { get; set; }\n        public int SendTelemetryFreq { get; set; } = 1000;\n        public bool IsConnected { get; set; } = false;\n\n        // Sending and receiving tasks\n        CancellationTokenSource TokenSource = new CancellationTokenSource();\n\n        // Event Handler for notifying the reception of a new message from IoT Hub\n        public event EventHandler ReceivedMessage;\n\n        /// <summary>\n        /// ReceivedMessageEventArgs class\n        /// Class to pass event arguments for new message received from ConnectTheDots dashboard\n        /// </summary>\n        public class ReceivedMessageEventArgs : System.EventArgs\n        {\n            // Provide one or more constructors, as well as fields and\n            // accessors for the arguments.\n            public C2DMessage Message { get; set; }\n\n            public ReceivedMessageEventArgs(C2DMessage message)\n            {\n                Message = message;\n            }\n        }\n\n        // Trigger for notifying reception of new message from Connect The Dots dashboard\n        protected virtual void OnReceivedMessage(ReceivedMessageEventArgs e)\n        {\n            if (ReceivedMessage != null)\n                ReceivedMessage(this, e);\n        }\n\n        /// <summary>\n        /// Serialize message\n        /// </summary>\n        private byte[] Serialize(object obj)\n        {\n            string json = JsonConvert.SerializeObject(obj);\n            return Encoding.UTF8.GetBytes(json);\n\n        }\n\n        /// <summary>\n        /// DeSerialize message\n        /// </summary>\n        private C2DMessage DeSerialize(byte[] data)\n        {\n            string text = Encoding.UTF8.GetString(data, 0, data.Length);\n            return JsonConvert.DeserializeObject<C2DMessage>(text);\n        }\n\n        /// <summary>\n        /// Send device's telemetry data to Azure IoT Hub\n        /// </summary>\n        public async void sendDeviceTelemetryData(D2CMessage[] data)\n        {\n            try\n            {\n                var msg = new Message(Serialize(data));\n                if (deviceClient != null)\n                {\n                    await deviceClient.SendEventAsync(msg);\n                    Debug.WriteLine(\"Sent telemetry data to IoT Hub\\n\" + data.ToString());\n                }\n                else Debug.WriteLine(\"Connection To IoT Hub is not established. Cannot send message now\");\n                \n            }\n            catch (System.Exception e)\n            {\n                Debug.WriteLine(\"Exception while sending device telemetry data :\\n\" + e.Message.ToString());\n            }\n        }\n\n        /// <summary>\n        /// ExtractDeviceIdFromConnectionString\n        /// Extract DeviceId from connectionstring to use as guid in ConnectTheDots dashboard\n        /// </summary>\n        /// <param name=\"connectionString\"></param>\n        /// <returns></returns>\n        public string ExtractDeviceIdFromConnectionString(string connectionString)\n        {\n            Regex pattern = new Regex(@\"HostName=(?<hostName>[^\\s/]*);DeviceId=(?<deviceId>[^\\s/]*);SharedAccessKey=(?<shareAccessKey>[^\\s/]*)\");\n            Match match = pattern.Match(connectionString);\n            return match.Groups[\"deviceId\"].Value;\n        }\n\n        /// <summary>\n        /// Connect\n        /// Connect to Azure IoT Hub ans start the send and receive loops\n        /// </summary>\n        /// <returns></returns>\n        public bool Connect()\n        {\n            try\n            {\n                // Create Azure IoT Hub Client and open messaging channel\n                deviceClient = DeviceClient.CreateFromConnectionString(this.ConnectionString, TransportType.Http1);\n\n                deviceClient.OpenAsync();\n                IsConnected = true;\n\n                // Create send and receive tasks\n                CancellationToken ct = TokenSource.Token;\n                Task.Factory.StartNew(async()=> {\n                    while (true)\n                    {\n                        if (SendTelemetryData)\n                        {\n                            // Create message to be sent\n                            D2CMessage[] dataToSend = new D2CMessage[Sensors.Count];\n                            int index = 0;\n\n                            foreach (KeyValuePair<string, CTDSensor> sensor in Sensors)\n                            {\n                                // Update the values that \n                                sensor.Value.message.guid = this.Guid;\n                                sensor.Value.message.displayname = DisplayName;\n                                sensor.Value.message.location = Location;\n                                sensor.Value.message.timecreated = DateTime.UtcNow.ToString(\"o\");\n                                if (sensor.Value.send)\n                                    dataToSend[index++] = sensor.Value.message;\n                            }\n                            // Send message\n                            sendDeviceTelemetryData(dataToSend);\n                        }\n                        await Task.Delay(SendTelemetryFreq);\n\n                        if (ct.IsCancellationRequested)\n                        {\n                            // Cancel was called\n                            Debug.WriteLine(\"Sending task canceled\");\n                            break;\n                        }\n\n                    }\n                }, ct);\n\n                Task.Factory.StartNew(async() =>\n                {\n                    while (true)\n                    {\n                        if (deviceClient != null)\n                        {\n                            Message message = null;\n                            try\n                            {\n                                // Receive message from Cloud (for now this is a pull because only HTTP is available for UWP applications)\n                                message = await deviceClient.ReceiveAsync();\n                            }\n                            catch (Exception e)\n                            {\n                                // Something went wrong. Indicate the backend that we coudn't accept the message\n                                Debug.WriteLine(\"Something went wrong when receiving message from IoT Hub: \" + e.Message);\n                            }\n\n                            if (message != null)\n                            {\n                                try\n                                {\n                                    // Read message and deserialize\n                                    C2DMessage command = DeSerialize(message.GetBytes());\n                                    // Invoke message received callback\n                                    OnReceivedMessage(new ReceivedMessageEventArgs(command));\n\n                                    // We received the message, indicate IoTHub we treated it\n                                    await deviceClient.CompleteAsync(message);\n                                }\n                                catch (Exception e)\n                                {\n                                    Debug.WriteLine(\"Something went wrong when receiving message from IoT Hub: \" + e.Message);\n                                    // Something went wrong. Indicate the backend that we coudn't accept the message\n                                    await deviceClient.RejectAsync(message);\n                                }\n                            }\n                        } else\n                        {\n                            await Task.Delay(200);\n                        }\n\n                        if (ct.IsCancellationRequested)\n                        {\n                            // Cancel was called\n                            Debug.WriteLine(\"Receiving task canceled\");\n                            break;\n                        }\n                    }\n                }, ct);\n            }\n            catch (Exception e)\n            {\n                Debug.WriteLine(\"Error while trying to connect to IoT Hub: \" + e.Message);\n                deviceClient = null;\n                return false;\n            }\n            return true;\n        }\n\n        /// <summary>\n        /// Disconnect\n        /// Disconnect from IoT Hub\n        /// </summary>\n        /// <returns></returns>\n        public bool Disconnect()\n        {\n            if (deviceClient != null)\n            {\n                try\n                {\n                    deviceClient.CloseAsync();\n                    deviceClient = null;\n                    IsConnected = false;\n                }\n                catch\n                {\n                    Debug.WriteLine(\"Error while trying close the IoT Hub connection\");\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/Common/javascript/connectthedots.js",
    "content": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nvar clientFromConnectionString = require('azure-iot-device-mqtt').clientFromConnectionString;\nvar Message = require('azure-iot-device').Message;\n\n// Using a json settings file for Events Hub connectivity\nvar devicesettings;\n\n// Iot Hub client instance\nvar client;\n\nvar is_connected = false;\nvar init_callback;\nvar receive_callback;\n\n// ---------------------------------------------------------------\n// validate settings from JSON file  passed as a parameter to the app\nfunction validate_settings(settings, options) {\n    console.log(\"Validating device settings\");\n    var missing = [];\n    for (var idx in options) {\n        if (settings[options[idx]] === undefined) missing.push(options[idx]);\n    }\n    if (missing.length > 0) {\n        // app is terminated if settings are missing\n        throw new Error('Required settings ' + (missing.join(', ')) + ' missing.');\n    }\n}\n\n\n// ---------------------------------------------------------------\n// Format sensor data into JSON\nfunction format_sensor_data(deviceid, displayname, organization, location, measurename, unitofmeasure, timecreated, value) {\n    var JSON_obj = {\n        \"guid\": deviceid,\n        \"displayname\": displayname,\n        \"organization\": organization,\n        \"location\": location,\n        \"measurename\": measurename,\n        \"unitofmeasure\": unitofmeasure,\n        \"timecreated\": timecreated,\n        \"value\": value\n    };\n    \n    return JSON.stringify(JSON_obj);\n}\n\n// ---------------------------------------------------------------\n// Initializes connection settings to Event Hub\nvar connectCallback = function (err) {\n  if (err) {\n    console.error('Could not connect: ' + err.message);\n  } else {\n    console.log('IoT Hub Client connected');\n\n    client.on('message', function (msg) {\n      \n      // Invoke receive callback to notify the user of a new message\n      if (receive_callback!==undefined) {\n          receive_callback(msg);\n      }  \n\n      client.complete(msg, printResultFor('completed'));\n      // TODO:Implement sending the received message up to the connectthedots user\n      // reject and abandon follow the same pattern.\n      // /!\\ reject and abandon are not available with MQTT\n    });\n\n    client.on('error', function (err) {\n      console.error(err.message);\n    });\n\n    client.on('disconnect', function () {\n      is_connected = false;\n      client.removeAllListeners();\n      client.connect(connectCallback);\n    });\n    \n    is_connected = true;\n    init_callback();\n  }\n}\n\nexports.init_connection = function(settings, initCallback, receiveCallback)\n{\n    console.log(\"Initializig the connection with Azure IoT Hub\");\n    devicesettings = settings;\n    \n    console.log(\"Validating connection settings\");\n    // Validate settings\n    validate_settings(devicesettings, ['deviceid', 'iothubconnectionstring', 'displayname', 'organization', 'location']);\n\n    console.log(\"Connecting to Azure IoT Hub\");\n    // Create Iot Hub Client instance \n    client = clientFromConnectionString(devicesettings.iothubconnectionstring);\n    init_callback = initCallback;\n\n    if (receiveCallback!==undefined) receive_callback = receiveCallback;  \n    \n    // Open the transport stack\n    client.open(connectCallback);\n};\n\n\nfunction send_raw_message(raw_message)\n{\n    if (is_connected)\n    {\n        var message = new Message(raw_message);\n        console.log('Sending message: ' + message.getData());\n        client.sendEvent(message, printResultFor('send'));\n    } else\n    {\n        console.log(\"Transport channel is not opened. Trying to open it...\");\n    }\n    \n}\n\n// ---------------------------------------------------------------\n// Send message to Event Hub\nexports.send_message = function(measurename, unitofmeasure, value)\n{\n    var currentTime = new Date().toISOString();\n    var message = format_sensor_data(devicesettings.deviceid, devicesettings.displayname, devicesettings.organization, devicesettings.location, measurename, unitofmeasure, currentTime, value);\n\tconsole.log(\"Sending message: \" + message);\n    \n    send_raw_message(message);\n}\n\n// ---------------------------------------------------------------\n// Send bulk messages to Event Hub\nexports.send_bulk_message = function(messages)\n{\n    var currentTime = new Date().toISOString();\n    var message;\n    \n    messages.forEach( function(element, index, array){\n        message+= format_sensor_data(devicesettings.deviceid, devicesettings.displayname, devicesettings.organization, devicesettings.location, element.measurename, element.unitofmeasure, currentTime, element.value);\n    }); \n\tconsole.log(\"Sending bulk message: \" + message);\n    \n    send_raw_message(message);\n}\n\n// Helper function to print results in the console\nfunction printResultFor(op) {\n  return function printResult(err, res) {\n    if (err) console.log(op + ' error: ' + err.toString());\n    if (res) console.log(op + ' status: ' + res.constructor.name);\n  };\n}\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/Common/javascript/package.json",
    "content": "{\n  \"name\": \"connectthedots\",\n  \"version\": \"1.0.3\",\n  \"description\": \"Simple library to connect a node app to Azure IoT Hub using ConnectTheDots.io\",\n  \"main\": \"connectthedots.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"dependencies\": {\n    \"azure-iot-device\": \"1.0.15\",\n    \"azure-iot-device-amqp\": \"1.0.15\",\n    \"azure-iot-device-http\": \"1.0.15\",\n    \"azure-iot-device-mqtt\": \"1.0.15\"\n  },\n  \"author\": \"Microsoft\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/Common/javascript/readme.md",
    "content": "[ConnectTheDots.io](http://connectthedots.io) is an open source project created by Microsoft to help you get tiny devices connected to Microsoft Azure IoT and to implement great IoT solutions taking advantage of Microsoft Azure advanced analytic services such as Azure Stream Analytics and Azure Machine Learning.\nThis library is a helper for node developers to make it easy to connect their apps to a ConnectTheDots solution.\nLearn more about the project on [http://connectthedots.io](http://connectthedots.io)"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/ESP8266/ESP8266_setup.md",
    "content": "This document explains how to connect a ESP8266 Adafruit Huzzah device to ConnectTheDots\n\n##Prerequisites ##\n\n### Required Software\n\n- Azure Subscription (this is the subscription you want the services to be deployed to if you have several Azure subscriptions)\n- [Git](https://git-scm.com/downloads) - For cloning the current repository\n- Arduino IDE, version 1.6.8. (Earlier versions will not work with the Azure IoT library)\n- Sensor libraries from Adafruit: DHT Sensor library, Adafruit Unified Sensor\n- Deploy an instance of ConnectTheDots (see related chapter below) \n\n### Required Hardware\n\n- Adafruit Huzzah ESP8266 IoT kit\n  - Huzzah ESP8266 board\n  - DHT22 Sensor\n  - breadboard\n  - M/M jumper wires\n  - 10k Ohm Resistor (brown, black, orange)\n  - A microB USB cable\n  - A desktop or laptop computer which can run **Arduino IDE 1.6.8**\n\n## Deploy The ConnectTheDots solution to your Azure subscription\nIf you have not done so already, follow all the instructions in the \"Setup Tasks\" paragraph of the [getting started guide](../../../GettingStarted.md). \nOnce the solution is deployed, you will need to create a unique id for your device in the IoT Hub device registry as instructed in the same paragraph of the getting started guide.\n\n## Connect the DHT22 Sensor Module to your Device\n\n- Using [this image](https://github.com/Azure/connectthedots/blob/master/Devices/DirectlyConnectedDevices/ESP8266/images/huzzah_connect_the_dots.png?raw=true) as a reference, connect your DHT22 and Adafruit Huzzah ESP8266 to the breadboard\n\n***\n**Note:** Column on the left corresponds to sensor and on the Right to board. On the image, the board is place between 10 and 30 and sensor between 1 and 9. Additionally, when counting the - pins, start from the right and count in, as these do not align with the numbers indicated on the board.\n***\n\n- Connect the board, sensor, and parts on the breadboard:\n\n| Start                   | End                    | Connector     |\n| ----------------------- | ---------------------- | ------------ |\n| Huzzah RST (Pin 30i)    | Huzzah CHPD (Pin 15i)  | Huzzah ESP8266 |\n| DHT22 (Pin 1J)          | DHT22 (Pin 4J)         | DHT22         |\n| NULL (Pin 2I)           | Pin 1F                 | 10k Ohm Resistor  |\n\n- For the pins, we will use the following wiring:\n\n| Start                   | End                    | Cable Color   | Connected to |\n| ----------------------- | ---------------------- | ------------ | ------------- |\n| VDD (Pin 1G)            | Pin 29J             | Red cable    | DHT22 |\n| DATA (Pin 2G)           | Pin 17B             | White cable  | DHT22 |\n| GND (Pin 4G)            | Pin 9-              | Black cable  | DHT22 |\n| GND (Pin 27J)           | Pin 25-             | Black cable  | Huzzah ESP8266 |\n| Pin 22B                 | Pin 6A              | Red cable    | Red LED  |\n| Pin 21B                 | Pin 3A              | Green cable    | Green LED  |\n\n\n- For more information, see: [Adafruit DHT22 sensor setup](https://learn.adafruit.com/dht/connecting-to-a-dhtxx-sensor).\n\n**At the end of your work, your Adafruit Huzzah ESP8266 should be connected with a working sensor.**\n\n## Run the application on the ESP8266\n\n### Add the Adafruit Huzzah ESP8266 to the Arduino IDE\nYou will need to install the Adafruit Huzzah ESP8266 board extension for the Arduino IDE:\n\n- Follow the instructions [here](https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/using-arduino-ide). There you will see how to add a URL pointing to Adafruit's repository of board extensions, how to make the Adafruit Huzzah ESP8266 board selectable under the **Tools** menu, and how to get the Blink sketch to run.\n  - **Note**: There are two versions of Huzzah board, one with microB USB connector and other with a USB cable connected directly to the board. Both works properly with Azure IoT.\n  - Boards with microB connector don't have the GPIO0 button. So, in the 'Blink Test', ignore the steps to put the board in the bootload mode, and go directly to the step to upload the sketch via the IDE.\n- After going through this, you should have a working sample with a blinking light on your board.\n    - If you run into any connection issues, unplug the board, hold the reset button, and while still holding it, plug the board back in. This will flash to board to try again.\n\n### Install Library Dependencies\n\nOpen the file Devices\\DirectlyConnectedDevices\\ESP8266\\connect_the_dots\\connect_the_dots.ino in the Arduino IDE.\n\nFor this project, we'll  need the below libraries. To install them, click on the `Sketch -> Include Library -> Manage Libraries`. Search for each library using the box in the upper-right to filter your search, click on the found library, and click the \"Install\" button. \n\n - DHT Sensor Library\n - Adafruit Unified Sensor\n - AzureIoTHub\n - AzureIoTUtility\n - AzureIoTProtocol_MQTT\n - ArduinoJSON\n\n### Modify the code\n\n- In the connect_the_dots.ino file, look for the following lines of code:\n\n```\nstatic char ssid[] = \"[Your WiFi network SSID or name]\";\nstatic char pass[] = \"[Your WiFi network WPA password or WEP key]\";\n```\n\n- Replace the placeholders with your WiFi name (SSID), WiFi password, and the device connection string you created at the beginning of this tutorial. Save with `Control-s`\n- Open up the file `connect_the_dots.cpp`. Look for the following lines of code and replace the placeholders connection information (this is the Device information that you've created when adding a new device id in the IoT Hub device registry):\n\n```\nstatic const char* deviceId = \"[deviceid]\";\nstatic const char* connectionString = \"[connectionstring]\";\n```\n\n- You can also change the location, organization and displayname values to the ones of your choice\n- Save all changes\n\n### Compile and deploy the sample\n\n- Select the COM port on the Arduino IDE. Use **Tools -&gt; Port -&gt; COM** to select it.\n- Use **Sketch -&gt;  Upload** on Arduino IDE to compile and upload to the device.\n\nAt this point your device should connect to Azure IoT Hub and start sending telemetry data to your ConnectTheDots solution."
  },
  {
    "path": "Devices/DirectlyConnectedDevices/ESP8266/connect_the_dots/connect_the_dots.cpp",
    "content": "// Copyright (c) Microsoft. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n#include <AzureIoTHub.h>\n#include <AzureIoTUtility.h>\n#include <AzureIoTProtocol_MQTT.h>\n\n// Includes and variables for serializing messages\n#include <ArduinoJson.h>\n#define JSON_BUFFER_SIZE 512\nStaticJsonBuffer<JSON_BUFFER_SIZE> jsonBuffer;\n\n// Includes and variables for the DHT22 temperature/humidity sensor\n#include <DHT.h>\n#define DHTPIN 2        // Digital pin the sensor is connected to\n#define DHTTYPE DHT22   // You'd need to change this one if you want to use a DHT1 or DHT21 sensor\nDHT dht(DHTPIN, DHTTYPE);\n\n// Find under Microsoft Azure IoT Suite -> DEVICES -> <your device> -> Device Details and Authentication Keys\nstatic const char* deviceId = \"[device-id]\";\nstatic const char* connectionString = \"[Device Connection String]\";\n\nstatic const char* organization = \"My Organization\";\nstatic const char* location = \"My Location\";\nstatic const char* tempMeasureName = \"Temperature\";\nstatic const char* tempUnitOfMeasure = \"C\";\nstatic const char* hmdtMeasureName = \"Humidity\";\nstatic const char* hmdtUnitOfMeasure = \"%\";\n\nstatic void sendMessage(IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle, const unsigned char* buffer, size_t size)\n{\n    IOTHUB_MESSAGE_HANDLE messageHandle = IoTHubMessage_CreateFromByteArray(buffer, size);\n    if (messageHandle == NULL)\n    {\n        LogInfo(\"unable to create a new IoTHubMessage\\r\\n\");\n    }\n    else\n    {\n        if (IoTHubClient_LL_SendEventAsync(iotHubClientHandle, messageHandle, NULL, NULL) != IOTHUB_CLIENT_OK)\n        {\n            LogInfo(\"failed to hand over the message to IoTHubClient\");\n        }\n        else\n        {\n            LogInfo(\"IoTHubClient accepted the message for delivery\\r\\n\");\n        }\n\n        IoTHubMessage_Destroy(messageHandle);\n    }\n}\n\n/*this function \"links\" IoTHub to the serialization library*/\nstatic IOTHUBMESSAGE_DISPOSITION_RESULT IoTHubMessage(IOTHUB_MESSAGE_HANDLE message, void* userContextCallback)\n{\n    IOTHUBMESSAGE_DISPOSITION_RESULT result;\n    const unsigned char* buffer;\n    size_t size;\n    if (IoTHubMessage_GetByteArray(message, &buffer, &size) != IOTHUB_MESSAGE_OK)\n    {\n        LogInfo(\"unable to IoTHubMessage_GetByteArray\\r\\n\");\n        result = IOTHUBMESSAGE_ABANDONED;\n    }\n    else\n    {\n        /*buffer is not zero terminated*/\n        char* temp = (char*)malloc(size + 1);\n        if (temp == NULL)\n        {\n            LogInfo(\"failed to malloc\\r\\n\");\n            result = IOTHUBMESSAGE_ABANDONED;\n        }\n        else\n        {\n          // TODO: add code to react to command\n            memcpy(temp, buffer, size);\n            temp[size] = '\\0';\n            LogInfo(\"Received message from IoTHub: %s\\r\\n\", temp);\n            result = IOTHUBMESSAGE_ACCEPTED;\n            free(temp);\n        }\n    }\n    return result;\n}\n\nvoid connect_the_dots_run(void)\n{\n    dht.begin();\n\n    IOTHUB_CLIENT_LL_HANDLE iotHubClientHandle = IoTHubClient_LL_CreateFromConnectionString(connectionString, MQTT_Protocol);\n    if (iotHubClientHandle == NULL)\n    {\n        LogInfo(\"Failed on IoTHubClient_CreateFromConnectionString\\r\\n\");\n    }\n    else\n    {\n#ifdef MBED_BUILD_TIMESTAMP\n        // For mbed add the certificate information\n        if (IoTHubClient_LL_SetOption(iotHubClientHandle, \"TrustedCerts\", certificates) != IOTHUB_CLIENT_OK)\n        {\n            LogInfo(\"failure to set option \\\"TrustedCerts\\\"\\r\\n\");\n        }\n#endif // MBED_BUILD_TIMESTAMP\n\n\n        if (IoTHubClient_LL_SetMessageCallback(iotHubClientHandle, IoTHubMessage, NULL) != IOTHUB_CLIENT_OK)\n        {\n            LogInfo(\"unable to IoTHubClient_SetMessageCallback\\r\\n\");\n        }\n        else\n        {\n            // Prepare json buffer for sending data\n            JsonArray& data = jsonBuffer.createArray();\n            JsonObject& tempRoot = jsonBuffer.createObject();\n            data.add(tempRoot);\n            JsonObject& hmdtRoot = jsonBuffer.createObject();\n            data.add(hmdtRoot);\n\n            tempRoot[\"guid\"] = (char*)deviceId;\n            tempRoot[\"displayname\"] = (char*)deviceId;\n            tempRoot[\"location\"] = (char*)location;\n            tempRoot[\"organization\"] = (char*)organization;\n            tempRoot[\"measurename\"] = (char*)tempMeasureName;\n            tempRoot[\"unitofmeasure\"] = (char*)tempUnitOfMeasure;\n            float Temp = 0;\n\n            hmdtRoot[\"guid\"] = (char*)deviceId;\n            hmdtRoot[\"displayname\"] = (char*)deviceId;\n            hmdtRoot[\"location\"] = (char*)location;\n            hmdtRoot[\"organization\"] = (char*)organization;\n            hmdtRoot[\"measurename\"] = (char*)hmdtMeasureName;\n            hmdtRoot[\"unitofmeasure\"] = (char*)hmdtUnitOfMeasure;\n            float Hmdt = 0;\n\n            char dataBuffer[JSON_BUFFER_SIZE];\n            unsigned char* dataUCBuffer;\n\n            // Variables for time stamp creation\n            time_t epochTime;\n            struct tm* currentTime;\n            char timeISOString[25];\n            \n            // Send new data point regularly.\n            while (1)\n            {\n                // Get sensor data\n                Temp = dht.readTemperature();\n                Hmdt = dht.readHumidity();\n\n                // Get current time stamp\n                epochTime = time(NULL);\n                currentTime = localtime(&epochTime);\n                sprintf(timeISOString, \"%d-%02d-%02dT%02d:%02d:%02d.000Z\",currentTime->tm_year+1900, currentTime->tm_mon+1, currentTime->tm_mday, currentTime->tm_hour, currentTime->tm_min, currentTime->tm_sec);\n\n                // Prepare JSON message\n                tempRoot[\"timecreated\"] = (char*)timeISOString;\n                tempRoot[\"value\"] = Temp;\n                hmdtRoot[\"timecreated\"] = (char*)timeISOString;\n                hmdtRoot[\"value\"] = Hmdt;\n\n                // Create JSON buffer\n                data.printTo(dataBuffer, sizeof(dataBuffer));\n                \n                // We need to convert the char* buffer into an unsigned char* one, as we need UTF8 encoded data sent to Azure\n                dataUCBuffer = (unsigned char*) &dataBuffer[0];\n                LogInfo(\"Sending message: %s\\r\\n\", dataUCBuffer);\n\n                // Send JSON message to Azure IoT Hub\n                sendMessage(iotHubClientHandle, dataUCBuffer, strlen(dataBuffer)*sizeof(unsigned char));\n                \n                IoTHubClient_LL_DoWork(iotHubClientHandle);\n                ThreadAPI_Sleep(500);\n            }\n        }\n        IoTHubClient_LL_Destroy(iotHubClientHandle);\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/ESP8266/connect_the_dots/connect_the_dots.h",
    "content": "// Copyright (c) Microsoft. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n#ifndef CONNECT_THE_DOTS_H\n#define CONNECT_THE_DOTS_H\n\n#ifdef __cplusplus\n//extern \"C\" {\n#endif\n\n    void connect_the_dots_run(void);\n\n#ifdef __cplusplus\n//}\n#endif\n\n#endif /* CONNECT_THE_DOTS_H */\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/ESP8266/connect_the_dots/connect_the_dots.ino",
    "content": "// Copyright (c) Microsoft. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\n// Please use an Arduino IDE 1.6.8 or greater\n\n#if ARDUINO_ARCH_ESP8266 //============================\n// for ESP8266\n#include <ESP8266WiFi.h>\n#include <WiFiClientSecure.h>\n#include <WiFiUdp.h>\n\nstatic WiFiClientSecure sslClient;\n\n#elif ARDUINO_SAMD_FEATHER_M0 //-----------------------\n// for Adafruit WINC1500\n#include <Adafruit_WINC1500.h>\n#include <Adafruit_WINC1500SSLClient.h>\n#include <Adafruit_WINC1500Udp.h>\n#include <NTPClient.h>\n\n// for the Adafruit WINC1500 we need to create our own WiFi instance\n// Define the WINC1500 board connections below.\n#define WINC_CS   8\n#define WINC_IRQ  7\n#define WINC_RST  4\n#define WINC_EN   2     // or, tie EN to VCC\n// Setup the WINC1500 connection with the pins above and the default hardware SPI.\nAdafruit_WINC1500 WiFi(WINC_CS, WINC_IRQ, WINC_RST);\nstatic Adafruit_WINC1500SSLClient sslClient; // for Adafruit WINC1500\n\n#else //-----------------------------------------------\n// For WiFi101 based boards/shields\n#include <WiFi101.h>\n#include <WiFiSSLClient.h>\n#include <WiFiUdp.h>\nstatic WiFiSSLClient sslClient;\n#endif //==============================================\n\n\n#include <AzureIoTHub.h>\n\n#include \"connect_the_dots.h\"\n\nstatic char ssid[] = \"Tech Summit\";\nstatic char pass[] = \"Microsoft\";\n\n/*\n * The new version of AzureIoTHub library change the AzureIoTHubClient signature.\n * As a temporary solution, we will test the definition of AzureIoTHubVersion, which is only defined \n *    in the new AzureIoTHub library version. Once we totally deprecate the last version, we can take \n *    the ‘#ifdef’ out.\n */\n#ifdef AzureIoTHubVersion\nstatic AzureIoTHubClient iotHubClient;\n#else\nAzureIoTHubClient iotHubClient(sslClient);\n#endif\n\nvoid setup() {\n    initSerial();\n    initWifi();\n    initTime();\n\n#ifdef AzureIoTHubVersion\n    iotHubClient.begin(sslClient);\n#else\n    iotHubClient.begin();\n#endif\n}\n\nvoid loop() {\n    // Run the Connect The Dots from the Azure IoT Hub C SDK\n    // You must set the device id, device key, IoT Hub name and IotHub suffix in\n    // connect_the_dots.c\n    connect_the_dots_run();\n}\n\nvoid initSerial() {\n\n#if ARDUINO_ARCH_ESP8266 //============================\n  // For ESP8266 boards\n    Serial.begin(115200);\n    Serial.setDebugOutput(true);\n#else //-----------------------------------------------\n  // For SAMD boards (e.g. MKR1000, Adafruit WINC1500 based)\n  Serial.begin(9600);\n#endif //==============================================\n}\n\nvoid initWifi() {\n\n#if ARDUINO_SAMD_FEATHER_M0 //=========================\n  // for the Adafruit WINC1500 we need to enable the chip\n  pinMode(WINC_EN, OUTPUT);\n  digitalWrite(WINC_EN, HIGH);\n#endif //==============================================\n \n    // Attempt to connect to Wifi network:\n    Serial.print(\"Attempting to connect to SSID: \");\n    Serial.println(ssid);\n\n    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:\n    WiFi.begin(ssid, pass);\n    while (WiFi.status() != WL_CONNECTED) {\n      delay(500);\n      Serial.print(\".\");\n    }\n    Serial.println(\"Connected to wifi\");\n}\n\nvoid initTime() {\n#if ARDUINO_ARCH_ESP8266 //============================\n  time_t epochTime;\n\n  configTime(0, 0, \"pool.ntp.org\", \"time.nist.gov\");\n\n  while (true) {\n    epochTime = time(NULL);\n    if (epochTime == 0) {\n      Serial.println(\"Fetching NTP epoch time failed! Waiting 2 seconds to retry.\");\n      delay(2000);\n    } else {\n      Serial.print(\"Fetched NTP epoch time is: \");\n      Serial.println(epochTime);\n      break;\n    }\n  }\n\n#elif ARDUINO_SAMD_FEATHER_M0 //-----------------------\n  Adafruit_WINC1500UDP ntpUdp;\n  NTPClient ntpClient(ntpUdp);\n\n  ntpClient.begin();\n\n  while (!ntpClient.update()) {\n    Serial.println(\"Fetching NTP epoch time failed! Waiting 5 seconds to retry.\");\n    delay(5000);\n  }\n\n  ntpClient.end();\n\n  unsigned long epochTime = ntpClient.getEpochTime();\n\n  Serial.print(\"Fetched NTP epoch time is: \");\n  Serial.println(epochTime);\n\n  iotHubClient.setEpochTime(epochTime);\n\n#else -------------------------------------------------\n  // for WiFi101 based boards\n  WiFiUDP ntpUdp;\n  NTPClient ntpClient(ntpUdp);\n\n  ntpClient.begin();\n\n  while (!ntpClient.update()) {\n    Serial.println(\"Fetching NTP epoch time failed! Waiting 5 seconds to retry.\");\n    delay(5000);\n  }\n\n  ntpClient.end();\n\n  unsigned long epochTime = ntpClient.getEpochTime();\n\n  Serial.print(\"Fetched NTP epoch time is: \");\n  Serial.println(epochTime);\n\n  iotHubClient.setEpochTime(epochTime);\n#endif ===============================================\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/BeagleBone_Black_setup.md",
    "content": "This document explains how to set up a BeagleBone Black board to send data to Azure IoT services Hub using the REST interface. \n\n##Hardware requirements ##\nCheck out the hardware requirements [here](hardware.md).\n\n##Prerequisites ##\n\nTo deploy the application you will need the following:\n\n* For Windows, download PuTTY and PSCP from [here](http://www.putty.org/).\n* Wired Internet access for the device.\n\nTo work on the code of the project, you can use your favorite code editor. \n\n## Configure the BeagleBone Black##\n\n* Connect the Grove Cape on the BeagleBone Black board\n* Connect the light sensor on the connector J7 of the Grove Cape\n* Connect the Temperature sensor on the connector J3 of the Grove Cape\n* Follow the instructions on the [BeagleBone.org site](http://beagleboard.org/getting-started) to setup the board.\n    * Update the image to the latest as instructed on the site  \n* Connect to the BeagleBone Black from your laptop, via a USB cable and use PuTTY (or your favorite remote terminal tool) to login to the OS (default user is \"root\" with no pasword)\n    \nThe default BBB image comes with node.js preinstalled.\n\n##Setup the app on the board##\n\n* In the remote terminal, type the following commands:\n\n                 mkdir node_app_slot\n                 cd node_app_slot\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/beagleboneblackctd.js\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/package.json\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/settings.json\n                 npm install\n                 \n* Before running the app, you need to update the settings.json file to input the device's connetion string and a unique device id.\nFollowing the instructions [here](../../../readme.md), get the connection string for your device.\n                 \n* In the remote terminal, open the file settings.json and edit the settings based on the configuration of your ehdevices Event Hub (if you want to use nano, just type nano settings.json and once your edits are done, type CTRL+X then Y to save). Note that the device id shall be unique per device so that data is not messed up in the connectthedots portal.\n\n                 \"iothubconnectionstring\": \"<connectionstring>\",\n                 \"deviceid\": \"<deviceid>\",\n                 \"displayname\": \"BeagleBoneBlack\",\n                 \"organization\": \"My Org\",\n                 \"location\":  \"My location\"\n\n* Once you have changed the settings file, you can test, you can test the app by typing the following command in the remote terminal (you need to be in the /node_app_slot folder):\n\n        node .\n\n##Setup the app to start automatically at boot##\n In order to have the application start automatically at boot, you need to modify the startup script rc.local.\n In the sample we are using forever, a very convinient node tool that starts a node app as a daemon and keeps it alive\n\n* Type the following commands in the remote terminal:\n\n        npm install -g forever\n        nano /etc/rc.local\n    \n* In nano, edit the rc.local file by adding the following lines just before the \"exit 0\" line\n\n        /usr/local/bin/forever start -a -f --spinSleepTime 5000 /root/node_app_slot/beagleboneblackctd.js\n    \n* To save the file, press CTRL + X then Y and ENTER\n* You can now reboot the board typing \n\n        reboot\n    \n    \n      \n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/Hardware.md",
    "content": "# Hardware requirements for BeagleBone Black & Grove sensors #\n\n - [BeagleBone Black][1]\n\n##Supported Sensors\n\n- [Seeed Grove Cape for BeagleBone series ][2]\n- [Seeed Grove Light Sensor ][3]\n- [Seeed Grove temperature sensor ][4]\n\n  [1]: http://beagleboard.org/black\n  [2]: http://www.seeedstudio.com/depot/Grove-Cape-for-BeagleBone-Series-p-1718.html\n  [3]: http://www.seeedstudio.com/depot/Grove-Light-Sensor-p-746.html\n  [4]: http://www.seeedstudio.com/depot/Grove-Temperature-Sensor-p-774.html\n  \n  \n \n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/beagleboneblackctd.js",
    "content": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// We are using the johnny-five library to access the hardware resources,'\nvar five = require('johnny-five');\nvar BeagleBone = require(\"beaglebone-io\");\nvar connectthedots = require('connectthedots');\nvar devicesettings = require('./settings.json');\n\n// ---------------------------------------------------------------\n// Let's connect_the_dots\n// You can adapt the below code to your own sensors configuration\nvar  connect_the_dots=function()\n{\n    console.log(\"Device Ready to connect its dots\");\n\n    var lght = 0;\n    var temp = 25;\n\n    var light = new five.Sensor({\n        pin: \"A2\"    \n    });\n    \n    light.on(\"change\", function() {\n        console.log(\"light: %d\", this.value);\n        lght = this.value;\n    });\n    \n    var temperature = new five.Temperature({\n        controller: \"GROVE\",\n        pin: \"A0\"    \n    });\n    \n    temperature.on(\"change\", function() {\n        console.log(\"celsius: %d\", this.celsius);\n        console.log(\"fahrenheit: %d\", this.fahrenheit);\n        console.log(\"kelvin: %d\", this.kelvin);\n        temp = this.celsius;\n    });  \n    \n    // send data to Azure every 500 milliseconds    \n    setInterval(function(){\n        connectthedots.send_message(\"Light\", \"L\", lght);\n        connectthedots.send_message(\"Temp\", \"C\", temp);\n    }, 500);\n\n};\n\nvar initCallback = function (err) {\n    // Init board\n    var board = new five.Board({io: new BeagleBone()});\n\n    // Attach callbacks for board events\n    board.on(\"ready\", connect_the_dots);\n    board.on(\"message\", function(event){\n        console.log(\"Received a %s message, from %s, reporting: %s\", event.type, event.class, event.message);\n    } );\n    board.on(\"fail\", function(event) {\n    console.log(\"%s sent a 'fail' message: %s\", event.class, event.message);\n    });\n    board.on(\"warn\", function(event) {\n    console.log(\"%s sent a 'warn' message: %s\", event.class, event.message);\n    });\n};\n\n// ---------------------------------------------------------------\n// Init app\n\n// Init connection to Azure IoT\nconnectthedots.init_connection(devicesettings, initCallback);\n\n\n\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/package.json",
    "content": "{\n  \"name\": \"ConnectTheDotsBeagleBoneBlack\",\n  \"version\": \"1.0.1\",\n  \"description\": \"Simple Node app sending data from BeagleBone Black + Grove sensors to Azure IoT services\",\n  \"main\": \"beagleboneblackctd.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"johnny-five\": \"^0.8.91\",\n    \"beaglebone-io\": \"^1.3.0\",\n    \"connectthedots\":\"^1.0.2\"\n  }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/BeagleBoneBlack/settings.json",
    "content": "﻿{\n    \"iothubconnectionstring\": \"<connectionstring>\",\n    \"deviceid\": \"<deviceid>\",\n    \"displayname\": \"BeagleBoneBlack\",\n    \"organization\": \"My Org\",\n    \"location\":  \"My location\"\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Desktop/Desktop_setup.md",
    "content": "This document explains how to run a simple node sample on a desktop machine (Windows, Linux, OSX)\n\n##Prerequisites ##\n\nTo run the application you will need to have [node.js](http://nodejs.org) installed on your system.\nThe machine will also need to be connected to the internet\n\nTo work on the code of the project, you can use your favorite code editor. \n\n##Setup the app on the desktop##\n\n* Once you have cloned or downloaded the repository, open a command prompt, and navigate to the application folder (Devices\\DirectlyConnectedDevices\\NodeJS\\Desktop) and type the following command:\n\n                 npm install\n                 \n* Before running the app, you need to update the settings.json file to input the device's connection string and a unique device id.\nFollowing the instructions [here](../../../readme.md), get the connection string for your device.\n                 \n* Open the file settings.json in your favorite text editor and edit the settings using the device id and connection string generated following the previous instructions.\n\n                 \"iothubconnectionstring\": \"<connectionstring>\",\n                 \"deviceid\": \"<deviceid>\",\n                 \"displayname\": \"BeagleBoneBlack\",\n                 \"organization\": \"My Org\",\n                 \"location\":  \"My location\"\n\n##Run the app##\n* To run the app, type the folowing command in the application folder:\n\n        node .\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Desktop/desktop.js",
    "content": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nvar connectthedots = require('connectthedots');\nvar devicesettings = require('./settings.json');\n\n// ---------------------------------------------------------------\n// Let's connect_the_dots\n// You can adapt the below code to your own sensors configuration\nvar connect_the_dots=function()\n{\n    console.log(\"Device Ready to connect its dots\");\n\n    var lght = 10;\n    var temp = 80;\n\n    // send data to Azure every 1000 milliseconds    \n    setInterval(function(){\n        lght = lght + (Math.random()*2 -1);\n        if (lght < 0 ) lght = 0;\n        temp = temp + (Math.random()*2 -1);\n        if (temp < 0 ) temp = 0;\n        connectthedots.send_message(\"Light\", \"L\", lght);\n        connectthedots.send_message(\"Temperature\", \"C\", temp);\n    }, 1000);\n\n};\n\nvar initCallback = function (err) {\n    // Once the connection to Azure IoT Hub is establish you can initialize your hardware and start sending data\n    // This is where you would insert your sensors code\n    connect_the_dots();\n};\n\nvar receiveCallback = function (msg) {\n    // A message was received\n    console.log(\"Message Id: \" + msg.messageId + \" ; Message data:\" + msg.data.toString() );\n};\n\n// ---------------------------------------------------------------\n// Init app\n\n// Init connection to Azure IoT\nconnectthedots.init_connection(devicesettings, initCallback, receiveCallback);\n\n\n\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Desktop/package.json",
    "content": "{\n  \"name\": \"ConnectTheDotsDesktop\",\n  \"version\": \"1.0.2\",\n  \"description\": \"Simple Node app sending fake data from desktop to Azure IoT services\",\n  \"main\": \"desktop.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n     \"connectthedots\":\"^1.0.3\"\n  },\n  \"files\": {\n    \"settings\":\"./settings.json\"\n  }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Desktop/settings.json",
    "content": "﻿{\n    \"iothubconnectionstring\": \"<connection-string>\",\n    \"deviceid\": \"<deviceid>\",\n    \"displayname\": \"My PC\",\n    \"organization\": \"My Org\",\n    \"location\":  \"My location\"\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/Hardware.md",
    "content": "# Hardware requirements for Intel Edison + Seeed Xadow wearable kit #\n\n - [Intel Edison kit for Arduino][1]\n\n##Supported Sensors\n\n- [Seeed Grove starter kit for Intel IoT][2]\n- and [Seeed Grove Environment Kit for Intel Edison][3]\n\n  [1]: http://www.intel.com/buy/us/en/product/emergingtechnologies/intel-edison-kit-462187\n  [2]: http://www.seeedstudio.com/depot/Grove-starter-kit-plus-Intel-IoT-Edition-for-Intel-Galileo-Gen-2-and-Edison-p-1978.html?cPath=84_13\n  [3]: http://www.seeedstudio.com/depot/Grove-Indoor-Environment-Kit-for-Intel-Edison-p-2427.html\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/Intel_Edison_setup.md",
    "content": "This document explains how to set up an Intel Edison board to send data to AzureIoT services using the REST interface. \nIt assumes that you have already deployed a connectthedots solution following the instructions [here](../../../../Azure/ARMTemplate/Readme.md).\n\n##Hardware requirements ##\nCheck out the hardware requirements [here](hardware.md).\nConnect the sensors as follows on the Grove Base shield (itself plugged onto the Intel Edison Arduino brakout board). Note that you can change the connections, but will have to adapt the code if you do so.\n\nGrove Light Sensor           -   A0\nGrove Moisture Sensor        -   A1\nGrove Rotary potentiometer   -   A2\nGrove UV Sensor              -   A3\nGrove LCD RGB Backlight      -  I2C\nGrove Temperature&Humidity   -  I2C\nGrove PIR motion Sensor      -   D7\nGrove Buzzer                 -   D4\nGrove Button                 -   D6\n\nNote that all sensors are not required to run the sample. Just edit inteledisonctd.js to comment the lines related to the sensor you don't have.\n\n##Prerequisites##\n\nTo deploy the application you will need the following:\n\n* For Windows, download PuTTY from [here](http://www.putty.org/).\n* WiFi Internet access for the device.\n\nTo work on the code of the project, you can use your favorite editor.\n\n##Configure the Edison##\n\n* Follow the instructions on the [Intel support page](https://communities.intel.com/docs/DOC-23192) to setup the Yocto image on the Edison board.\n* Connect to the Intel Edison from your laptop, via a USB using PuTTY (or your favorite remote terminal tool)\n\n* In the remote terminal, you can setup the WiFi connection typing:\n                \n                 configure_edison --wifi\n\n* Once WiFi is setup you can connect your SSH tool through the network using the IP address displayed when doing the setup at previous step or using the command ifconfig.\n* the VI text editor comes by default on the Yocto image for the Intel Edison, but if you prefer Nano, connect with SSH and type the following commands:\n\n                 echo \"src/gz all http://repo.opkg.net/edison/repo/all\" >> /etc/opkg/base-feeds.conf\n                 echo \"src/gz edison http://repo.opkg.net/edison/repo/edison\" >> /etc/opkg/base-feeds.conf\n                 echo \"src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32\" >> /etc/opkg/base-feeds.conf\n\n                 opkg update\n\n                 opkg install nano\n\n##Setup the app on the board##\n\n* In the remote terminal, type the following commands:\n\n                 cd /node_app_slot\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/inteledisonctd.js\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/package.json\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/settings.json\n                 npm install\n                 \n* Before running the app, you need to update the settings.json file to input the device's connetion string and a unique device id.\nFollowing the instructions [here](../../../readme.md), get the connection string for your device.\n                 \n* In the remote terminal, open the file settings.json and edit the settings based on the configuration of your ehdevices Event Hub (if you want to use nano, just type nano settings.json and once your edits are done, type CTRL+X then Y to save). Note that the device id shall be unique per device so that data is not messed up in the connectthedots portal.\n\n                 \"iothubconnectionstring\": \"<connectionstring>\",\n                 \"deviceid\": \"<deviceid>\",\n                 \"displayname\": \"Edison\",\n                 \"organization\": \"My Org\",\n                 \"location\":  \"My location\"\n                 \n##Run the app##\n\nYou can run the app manually typing the following in the remote terminal:\n\n                 node .\n                 \nBecause the application is deployed in the node_app_slot on the Intel Edison, it will start automatically at boot time.\n             \n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/inteledisonctd.js",
    "content": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// We are using the johnny-five library to access the hardware resources,'\nvar five = require('johnny-five');\nvar Edison = require(\"edison-io\");\nvar TH02 = require(\"th02js\");\nvar connectthedots = require('connectthedots');\nvar devicesettings = require('./settings.json');\n\n// [Linear Interpolation](https://en.wikipedia.org/wiki/Linear_interpolation)\nfunction linear(start, end, step, steps) {\n  return (end - start) * step / steps + start;\n}\n\n// ---------------------------------------------------------------\n// Let's connect_the_dots\n// You can adapt the below code to your own sensors configuration\nvar connect_the_dots = function()\n{\n    console.log(\"Device Ready to connect its dots\");\n    \n    // Initialize LCD\n    var lcd = new five.LCD({\n        controller: \"JHD1313M1\"\n    });\n    lcd.bgColor(0xFF, 0xFF, 0xFF).cursor(0,0).print('ConnectTheDots');\n    lcd.bgColor(0xFF, 0xFF, 0xFF).cursor(1,0).print('Azure IoT');\n\n    // Initialize temperature sensor\n    var data_temperature = {\"measurename\":\"Temperature\", \"unitofmeasure\":\"C\", \"value\":0};\n    var data_humidity = {\"measurename\":\"Humidity\", \"unitofmeasure\":\"%\", \"value\":0};   \n    var temperature_humidity = new TH02(6);\n    \n    setInterval(function(){\n        data_temperature.value = temperature_humidity.getCelsiusTemp();\n        data_humidity.value = temperature_humidity.getHumidity();\n        \n        // Jut for the fun of it, let's color the LCD background based on temperature\n        var r = linear(0x00, 0xFF, data_temperature.value, 40);\n        var g = linear(0x00, 0x00, data_temperature.value, 40);\n        var b = linear(0xFF, 0x00, data_temperature.value, 40);\n\n        lcd.bgColor(r, g, b).cursor(1, 0).print(\"Temp:\" +Math.round(data_temperature.value) + \"C\");\n    }, 500);\n    \n    // Initialize moisture sensor\n    var data_moisture = {\"measurename\":\"Moisture\", \"unitofmeasure\":\"%\", \"value\":0};\n    var moisture = new five.Sensor(\"A1\");    \n    moisture.scale(0, 100).on(\"change\", function() {\n        data_moisture.value = this.value;\n    });\n    \n    // Initialize light sensor\n    var data_light = {\"measurename\":\"Light\", \"unitofmeasure\":\"L\", \"value\":0};\n    var light = new five.Sensor(\"A0\");    \n    light.on(\"change\", function() {\n        data_light.value = this.value;\n    });\n\n    // Initialize light sensor\n    var data_uv  = {\"measurename\":\"UV\", \"unitofmeasure\":\"Index\", \"value\":0};\n    var uv = new five.Sensor(\"A3\");    \n    uv.on(\"change\", function() {\n        data_uv.value = this.value;\n    });\n    \n    // Initialize Button\n    var data_button  = {\"measurename\":\"Button\", \"unitofmeasure\":\"Down\", \"value\":0};\n    var button = new five.Button(6);\n    button.on(\"press\", function(){\n        data_button.value = 1;\n    });\n    button.on(\"release\", function(){\n        data_button.value = 0;\n    });\n    \n    // Initialize Motion sensor\n    var data_motion  = {\"measurename\":\"Motion\", \"unitofmeasure\":\"Move\", \"value\":0};\n    var motion = new five.Motion(7);\n    motion.on(\"motionstart\", function(){ data_motion.value  = 1;});\n    motion.on(\"motioned\", function(){ data_motion.value  = 0;});\n\n    // Initialize rotary potentiometer\n    var data_rotary = {\"measurename\":\"Potentiometer\", \"unitofmeasure\":\"Value\", \"value\":0};\n    var rotary = five.Sensor(\"A2\");\n    rotary.scale(0,100).on(\"change\", function() { data_rotary.value  = this.value;});\n    \n    // send data to Azure every second    \n    setInterval(function(){\n        \n        var messages = [\n            data_temperature,\n            data_humidity,\n            data_moisture,\n            data_light,\n            data_uv,\n            data_motion,\n            data_button,\n            data_rotary\n        ];\n\n        // we have several sensors, let's use the bulk messaging option\n        connectthedots.send_bulk_message(messages);\n\n        // reset data motion data which gets updated only on \n        data_motion.value = 0;\n\n    }, 1000);\n};\n\nvar initCallback = function (err) {\n    // Init board\n    var board = new five.Board({io: new Edison()});\n\n    board.on(\"ready\",connect_the_dots);\n    board.on(\"message\", function(event){\n        console.log(\"Received a %s message, from %s, reporting: %s\", event.type, event.class, event.message);\n    } );\n    board.on(\"fail\", function(event) {\n    console.log(\"%s sent a 'fail' message: %s\", event.class, event.message);\n    });\n    board.on(\"warn\", function(event) {\n    console.log(\"%s sent a 'warn' message: %s\", event.class, event.message);\n    });\n    \n};\n\n// ---------------------------------------------------------------\n// Init app\n\n// Init connection to Azure IoT\nconnectthedots.init_connection(devicesettings, initCallback);\n\n\n\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/package.json",
    "content": "{\n  \"name\": \"ConnectTheDotsIntelEdison\",\n  \"version\": \"1.0.1\",\n  \"description\": \"Simple Node app sending data from sensors to Azure IoT services\",\n  \"main\": \"inteledisonctd.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"johnny-five\": \"^0.8.91\",\n    \"edison-io\": \"^0.8.18\",\n    \"connectthedots\":\"^1.0.2\",\n    \"th02js\": \"^0.0.2\"\n  }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonGrove/settings.json",
    "content": "﻿{\n    \"iothubconnectionstring\": \"<connectionstring>\",\n    \"deviceid\": \"<deviceid>\",\n    \"displayname\": \"IntelEdison\",\n    \"organization\": \"My Org\",\n    \"location\":  \"My location\"\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/Hardware.md",
    "content": "# Hardware requirements for Intel Edison + TI SensorTag project #\n\n - [Intel Edison with the board for Arduino][1]\n\n##Supported Sensors\n\n- [TI SensorTag][2] (tested only with CC2541. Should work with newer version CC2650)\n\n  [1]: http://www.intel.com/content/www/us/en/do-it-yourself/edison.html\n  [2]: http://www.ti.com/sensortag\n \n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/Intel_Edison_setup.md",
    "content": "This document explains how to set up an Intel Edison board to send data to Azure Event Hub using the REST interface. \nIt assumes that you have the right tools installed and that you have cloned or downloaded the ConnectTheDots.io project on your machine.\n\n##Hardware requirements ##\nCheck out the hardware requirements [here](hardware.md).\n\n##Prerequisites ##\n\nTo deploy the application you will need the following:\n\n* For Windows, download PuTTY and PSCP from [here](http://www.putty.org/).\n* WiFi Internet access for the device.\n\nTo work on the code of the project, you can use your favorite editor... or leverage the Visual Studio 2013 support for node.js development, in which case, you will need:\n\n* Visual Studio 2013 [Community Edition](http://www.visualstudio.com/downloads/download-visual-studio-vs) or above.\n* [Node.js tools for Visual Studio](https://nodejstools.codeplex.com/)\n\n## Configure the Edison##\n\n* Follow the instructions on the [Intel support page](https://communities.intel.com/docs/DOC-23192) to setup the Yocto image on the Edison board.\n* Connect to the Intel Edison from your laptop, via a USB using PuTTY (or your favorite SSH tool)\n    * For Windows, you can download PuTTY and PSCP from [here](http://www.putty.org/).\n    * Connect to the Pi using the IP address of the Pi.\n* Via SSH you can setup the WiFi connection typing:\n                \n                 configure_edison --wifi\n\n* Once WiFi is setup you can connect your SSH tool through the network using the IP address displayed when doing the setup at previous step.\n* First thing you will need to do is to update the links to opkg packages in order to install a few libraries. In SSH console, type the following commands:\n\n                 echo \"src/gz all http://repo.opkg.net/edison/repo/all\" >> /etc/opkg/base-feeds.conf\n                 echo \"src/gz edison http://repo.opkg.net/edison/repo/edison\" >> /etc/opkg/base-feeds.conf\n                 echo \"src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32\" >> /etc/opkg/base-feeds.conf\n\n                 opkg update\n\n* the VI text editor comes by default on the Yocto image for the Intel Edison, but if you prefer Nano, connect with SSH and type the following commands:\n                 opkg install nano\n\n* To connect with the TI SensorTag, you need to enable Bluetooth low energy on the Intel Edison. Connect to the baord via SSH and type the following commands:\n\n    * In SSH, type the following commands:\n\n\t\t\t\t opkg install bluez5-dev\n\n\t* To activate bluetooth low energy, you then have to type the following commands in SSH:\n\n                 rfkill unblock bluetooth\n                 hciconfig hci0 up\n\n##Setup the app on the board##\n\n* In the remote terminal, type the following commands:\n\n                 cd /node_app_slot\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/inteledisonsensortagctd.js\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/package.json\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/settings.json\n                 mkdir lib\n                 cd lib\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/lib/cc2540.js\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/lib/cc2650.js\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/lib/common.js\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/lib/sensortag.js\n                 npm install\n                 \n* Before running the app, you need to update the settings.json file to input the device's connetion string and a unique device id.\nFollowing the instructions [here](../../../readme.md), get the connection string for your device.\n                 \n* In the remote terminal, open the file settings.json and edit the settings based on the configuration of your ehdevices Event Hub (if you want to use nano, just type nano settings.json and once your edits are done, type CTRL+X then Y to save). Note that the device id shall be unique per device so that data is not messed up in the connectthedots portal.\n\n                 \"iothubconnectionstring\": \"<connectionstring>\",\n                 \"deviceid\": \"<deviceid>\",\n                 \"displayname\": \"EdisonSensortag\",\n                 \"organization\": \"My Org\",\n                 \"location\":  \"My location\"\n                 \n##Run the app##\n\nYou can run the app manually typing the following in the remote terminal:\n\n                 node .\n                 \nBecause the application is deployed in the node_app_slot on the Intel Edison, it will start automatically at boot time.\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/inteledisonsensortagctd.js",
    "content": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// We are using the Cylon library to access the hardware resources,'\n// and take advantage of its convinient model for running tasks\nvar Cylon = require('cylon');\n\n// Using connectthedots npm package to connect to IoTHub\nvar connectthedots = require('connectthedots');\nvar devicesettings = require('./settings.json');\n\n// Adding sensor tag librarries\nvar SensorTag = require('./lib/sensortag');\n\n// Keeping track of sensortag connectivity\nvar SensorTagConnected = false;\nvar DiscoveringSensorTag = false;\n\n// ---------------------------------------------------------------\n// callback for SensorTag discovery\nfunction onDiscover(sensorTag) {\n    DiscoveringSensorTag = false;\n    console.log('discovered: ' + sensorTag.uuid + ', type = ' + sensorTag.type);\n    // Connect the the SensorTag\n    sensorTag.connectAndSetUp(function (error) {\n        if (error) {\n            console.log('ConnectAndSetup Error:' + error);\n            SensorTagConnected = false;\n        } else {\n            // SensorTag connected and setup\n            SensorTagConnected = true;\n\n            // Set \"disconnect\" callback\n            sensorTag.on('disconnect', function () {\n                console.log('Sensortag disconnected');\n                SensorTagConnected = false;\n            });\n\n            // Enable IrTemperature sensor, setup 1s period and set callback to send AMQP message to Event Hubs\n            sensorTag.enableIrTemperature(function (error) { if (error) console.log('enableIrTemperature ' + error); });\n            sensorTag.setIrTemperaturePeriod(1000, function (error) { if (error) console.log('setIrTemperaturePeriod ' + error); });\n            sensorTag.notifyIrTemperature(function (error) { if (error) console.log('notifyIrTemperature ' + error); });\n            sensorTag.on('irTemperatureChange', function (objectTemperature, ambientTemperature) {\n                var currentTime = new Date().toISOString();\n                var irObjTemp = (objectTemperature.toFixed(1) * 9) / 5 + 32;\n                connectthedots.send_message(\"IRTemperature\", \"F\", irObjTemp);\n            });\n            \n            // Enable Humidity sensor, setup 1s period and set callback to send AMQP message to Event Hubs\n            sensorTag.enableHumidity(function (error) { if (error) console.log('enableHumidity ' + error); });\n            sensorTag.setHumidityPeriod(1000, function (error) { if (error) console.log('setHumidityPeriod ' + error); });\n            sensorTag.notifyHumidity(function (error) { if (error) console.log('notifyHumidity ' + error); });\n            sensorTag.on('humidityChange', function (temperature, humidity) {\n                var currentTime = new Date().toISOString();\n                var temp = (temperature.toFixed(1) * 9) / 5 + 32;\n                var hmdt = humidity.toFixed(1);\n                connectthedots.send_message(\"Temperature\", \"F\", temp);\n                connectthedots.send_message(\"Humidity\", \"%\", hmdt);\n            });\n        }\n    });\n}\n\n// ---------------------------------------------------------------\n// Let's connect_the_dots\n// You can adapt the below code to your own sensors configuration\nvar connect_the_dots = function()\n{\n    console.log(\"Device Ready to connect its dots\");\n    // ---------------------------------------------------------------\n    // Initialization of the Cylon object\n    Cylon.robot( {\n        connections: {\n            edison: { adaptor: 'intel-iot' }\n        },\n        \n        devices: {\n            led: { driver: 'led', pin: 13 }\n        },\n        \n        work: function (my) {\n            \n            // Every second, try and connect to a SensorTag. Toggle Led when discovering. Keep led on when connected\n            every((1).second(), function () {\n\n                if (!SensorTagConnected && !DiscoveringSensorTag) {\n                    console.log('Discovering sensortag...');\n                    DiscoveringSensorTag = true;\n                    SensorTag.discover(onDiscover);\n                } else {\n                    if (DiscoveringSensorTag) my.led.toggle();\n                    else if (SensorTagConnected) my.led.turnOn();\n                }\n            });\n        }\n    }).start();\n}\n\n// Init connection to Azure IoT\nconnectthedots.init_connection(devicesettings, connect_the_dots );"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/lib/cc2540.js",
    "content": "\n// Copyright(c) 2013 Sandeep Mistry\n// from project https://github.com/sandeepmistry/node-sensortag\n//\n// The MIT License(MIT)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files(the \"Software\"), to deal in \n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so, \n// subject to the following conditions: \n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software. \n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar NobleDevice = require('noble-device');\n\nvar Common = require('./common');\n\nvar ACCELEROMETER_UUID                      = 'f000aa1004514000b000000000000000';\nvar MAGNETOMETER_UUID                       = 'f000aa3004514000b000000000000000';\nvar GYROSCOPE_UUID                          = 'f000aa5004514000b000000000000000';\nvar BAROMETRIC_PRESSURE_UUID                = 'f000aa4004514000b000000000000000';\nvar TEST_UUID                               = 'f000aa6004514000b000000000000000';\nvar OAD_UUID                                = 'f000ffc004514000b000000000000000';\n\nvar ACCELEROMETER_CONFIG_UUID               = 'f000aa1204514000b000000000000000';\nvar ACCELEROMETER_DATA_UUID                 = 'f000aa1104514000b000000000000000';\nvar ACCELEROMETER_PERIOD_UUID               = 'f000aa1304514000b000000000000000';\n\nvar MAGNETOMETER_CONFIG_UUID                = 'f000aa3204514000b000000000000000';\nvar MAGNETOMETER_DATA_UUID                  = 'f000aa3104514000b000000000000000';\nvar MAGNETOMETER_PERIOD_UUID                = 'f000aa3304514000b000000000000000';\n\nvar BAROMETRIC_PRESSURE_CONFIG_UUID         = 'f000aa4204514000b000000000000000';\nvar BAROMETRIC_PRESSURE_CALIBRATION_UUID    = 'f000aa4304514000b000000000000000';\n\nvar GYROSCOPE_CONFIG_UUID                   = 'f000aa5204514000b000000000000000';\nvar GYROSCOPE_DATA_UUID                     = 'f000aa5104514000b000000000000000';\nvar GYROSCOPE_PERIOD_UUID                   = 'f000aa5304514000b000000000000000';\n\nvar TEST_DATA_UUID                          = 'f000aa6104514000b000000000000000';\nvar TEST_CONFIGURATION_UUID                 = 'f000aa6204514000b000000000000000';\n\nvar CC2540SensorTag = function(peripheral) {\n  NobleDevice.call(this, peripheral);\n  Common.call(this);\n\n  this.type = 'cc2540';\n\n  this.onAccelerometerChangeBinded      = this.onAccelerometerChange.bind(this);\n  this.onMagnetometerChangeBinded       = this.onMagnetometerChange.bind(this);\n  this.onGyroscopeChangeBinded          = this.onGyroscopeChange.bind(this);\n};\n\nCC2540SensorTag.is = function(peripheral) {\n  var localName = peripheral.advertisement.localName;\n\n  return (localName === 'SensorTag') ||\n          (localName === 'TI BLE Sensor Tag');\n};\n\nNobleDevice.Util.inherits(CC2540SensorTag, NobleDevice);\nNobleDevice.Util.mixin(CC2540SensorTag, NobleDevice.DeviceInformationService);\nNobleDevice.Util.mixin(CC2540SensorTag, Common);\n\nCC2540SensorTag.prototype.convertIrTemperatureData = function(data, callback) {\n  // For computation refer :  http://processors.wiki.ti.com/index.php/SensorTag_User_Guide#IR_Temperature_Sensor\n\n  var ambientTemperature = data.readInt16LE(2) / 128.0;\n\n  var Vobj2 = data.readInt16LE(0) * 0.00000015625;\n  var Tdie2 = ambientTemperature + 273.15;\n  var S0 = 5.593 * Math.pow(10, -14);\n  var a1 = 1.75 * Math.pow(10 , -3);\n  var a2 = -1.678 * Math.pow(10, -5);\n  var b0 = -2.94 * Math.pow(10, -5);\n  var b1 = -5.7 * Math.pow(10, -7);\n  var b2 = 4.63 * Math.pow(10, -9);\n  var c2 = 13.4;\n  var Tref = 298.15;\n  var S = S0 * (1 + a1 * (Tdie2 - Tref) + a2 * Math.pow((Tdie2 - Tref), 2));\n  var Vos = b0 + b1 * (Tdie2 - Tref) + b2 * Math.pow((Tdie2 - Tref), 2);\n  var fObj = (Vobj2 - Vos) + c2 * Math.pow((Vobj2 - Vos), 2);\n  var objectTemperature = Math.pow(Math.pow(Tdie2, 4) + (fObj/S), 0.25);\n  objectTemperature = (objectTemperature - 273.15);\n\n  callback(objectTemperature, ambientTemperature);\n};\n\nCC2540SensorTag.prototype.convertHumidityData = function(data, callback) {\n  var temperature = -46.85 + 175.72 / 65536.0 * data.readUInt16LE(0);\n  var humidity = -6.0 + 125.0 / 65536.0 * (data.readUInt16LE(2) & ~0x0003);\n\n  callback(temperature, humidity);\n};\n\nCC2540SensorTag.prototype.enableBarometricPressure = function(callback) {\n  this.writeUInt8Characteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_CONFIG_UUID, 0x02, function(error) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.readDataCharacteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_CALIBRATION_UUID, function(error, data) {\n      if (error) {\n        return callback(error);\n      }\n\n      this._barometricPressureCalibrationData = data;\n\n      this.enableConfigCharacteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_CONFIG_UUID, callback);\n    }.bind(this));\n  }.bind(this));\n};\n\nCC2540SensorTag.prototype.convertBarometricPressureData = function(data, callback) {\n\n  // For computation refer :  http://processors.wiki.ti.com/index.php/SensorTag_User_Guide#Barometric_Pressure_Sensor_2\n  var temp;     // Temperature raw value from sensor\n  var pressure; // Pressure raw value from sensor\n  var S;        // Interim value in calculation\n  var O;        // Interim value in calculation\n  var p_a;      // Pressure actual value in unit Pascal.\n  var Pa;       // Computed value of the function\n\n  var c0 = this._barometricPressureCalibrationData.readUInt16LE(0);\n  var c1 = this._barometricPressureCalibrationData.readUInt16LE(2);\n  var c2 = this._barometricPressureCalibrationData.readUInt16LE(4);\n  var c3 = this._barometricPressureCalibrationData.readUInt16LE(6);\n\n  var c4 = this._barometricPressureCalibrationData.readInt16LE(8);\n  var c5 = this._barometricPressureCalibrationData.readInt16LE(10);\n  var c6 = this._barometricPressureCalibrationData.readInt16LE(12);\n  var c7 = this._barometricPressureCalibrationData.readInt16LE(14);\n\n  temp = data.readInt16LE(0);\n  pressure = data.readUInt16LE(2);\n\n  S = c2 + ((c3 * temp)/ 131072.0) + ((c4 * (temp * temp)) / 17179869184.0);\n  O = (c5 * 16384.0) + (((c6 * temp) / 8)) + ((c7 * (temp * temp)) / 524288.0);\n  Pa = (((S * pressure) + O) / 16384.0);\n\n  Pa /= 100.0;\n\n  callback(Pa);\n};\n\nCC2540SensorTag.prototype.enableAccelerometer = function(callback) {\n  this.enableConfigCharacteristic(ACCELEROMETER_UUID, ACCELEROMETER_CONFIG_UUID, callback);\n};\n\nCC2540SensorTag.prototype.disableAccelerometer = function(callback) {\n  this.disableConfigCharacteristic(ACCELEROMETER_UUID, ACCELEROMETER_CONFIG_UUID, callback);\n};\n\nCC2540SensorTag.prototype.readAccelerometer  = function(callback) {\n  this.readDataCharacteristic(ACCELEROMETER_UUID, ACCELEROMETER_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertAccelerometerData(data, function(x, y, z) {\n      callback(null, x, y, z);\n    }.bind(this));\n  }.bind(this));\n};\n\nCC2540SensorTag.prototype.onAccelerometerChange = function(data) {\n  this.convertAccelerometerData(data, function(x, y, z) {\n    this.emit('accelerometerChange', x, y, z);\n  }.bind(this));\n};\n\nCC2540SensorTag.prototype.convertAccelerometerData = function(data, callback) {\n  var x = data.readInt8(0) / 16.0;\n  var y = data.readInt8(1) / 16.0;\n  var z = data.readInt8(2) / 16.0;\n\n  callback(x, y, z);\n};\n\nCC2540SensorTag.prototype.notifyAccelerometer = function(callback) {\n  this.notifyCharacteristic(ACCELEROMETER_UUID, ACCELEROMETER_DATA_UUID, true, this.onAccelerometerChangeBinded, callback);\n};\n\nCC2540SensorTag.prototype.unnotifyAccelerometer = function(callback) {\n  this.notifyCharacteristic(ACCELEROMETER_UUID, ACCELEROMETER_DATA_UUID, false, this.onAccelerometerChangeBinded, callback);\n};\n\nCC2540SensorTag.prototype.setAccelerometerPeriod = function(period, callback) {\n  this.writePeriodCharacteristic(ACCELEROMETER_UUID, ACCELEROMETER_PERIOD_UUID, period, callback);\n};\n\nCC2540SensorTag.prototype.enableMagnetometer = function(callback) {\n  this.enableConfigCharacteristic(MAGNETOMETER_UUID, MAGNETOMETER_CONFIG_UUID, callback);\n};\n\nCC2540SensorTag.prototype.disableMagnetometer = function(callback) {\n  this.disableConfigCharacteristic(MAGNETOMETER_UUID, MAGNETOMETER_CONFIG_UUID, callback);\n};\n\nCC2540SensorTag.prototype.readMagnetometer = function(callback) {\n  this.readDataCharacteristic(MAGNETOMETER_UUID, MAGNETOMETER_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertMagnetometerData(data, function(x, y, z) {\n      callback(null, x, y, z);\n    }.bind(this));\n  }.bind(this));\n};\n\nCC2540SensorTag.prototype.onMagnetometerChange = function(data) {\n  this.convertMagnetometerData(data, function(x, y, z) {\n    this.emit('magnetometerChange', x, y, z);\n  }.bind(this));\n};\n\nCC2540SensorTag.prototype.convertMagnetometerData = function(data, callback) {\n  var x = data.readInt16LE(0) * 2000.0 / 65536.0;\n  var y = data.readInt16LE(2) * 2000.0 / 65536.0;\n  var z = data.readInt16LE(4) * 2000.0 / 65536.0;\n\n  callback(x, y, z);\n};\n\nCC2540SensorTag.prototype.notifyMagnetometer = function(callback) {\n  this.notifyCharacteristic(MAGNETOMETER_UUID, MAGNETOMETER_DATA_UUID, true, this.onMagnetometerChangeBinded, callback);\n};\n\nCC2540SensorTag.prototype.unnotifyMagnetometer = function(callback) {\n  this.notifyCharacteristic(MAGNETOMETER_UUID, MAGNETOMETER_DATA_UUID, false, this.onMagnetometerChangeBinded, callback);\n};\n\nCC2540SensorTag.prototype.setMagnetometerPeriod = function(period, callback) {\n  this.writePeriodCharacteristic(MAGNETOMETER_UUID, MAGNETOMETER_PERIOD_UUID, period, callback);\n};\n\nCC2540SensorTag.prototype.setGyroscopePeriod = function(period, callback) {\n  this.writePeriodCharacteristic(GYROSCOPE_UUID, GYROSCOPE_PERIOD_UUID, period, callback);\n};\n\nCC2540SensorTag.prototype.enableGyroscope = function(callback) {\n  this.writeUInt8Characteristic(GYROSCOPE_UUID, GYROSCOPE_CONFIG_UUID, 0x07, callback);\n};\n\nCC2540SensorTag.prototype.disableGyroscope = function(callback) {\n  this.disableConfigCharacteristic(GYROSCOPE_UUID, GYROSCOPE_CONFIG_UUID, callback);\n};\n\nCC2540SensorTag.prototype.readGyroscope = function(callback) {\n  this.readDataCharacteristic(GYROSCOPE_UUID, GYROSCOPE_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertGyroscopeData(data, function(x, y, z) {\n      callback(null, x, y, z);\n    }.bind(this));\n  }.bind(this));\n};\n\nCC2540SensorTag.prototype.onGyroscopeChange = function(data) {\n  this.convertGyroscopeData(data, function(x, y, z) {\n    this.emit('gyroscopeChange', x, y, z);\n  }.bind(this));\n};\n\nCC2540SensorTag.prototype.convertGyroscopeData = function(data, callback) {\n  var x = data.readInt16LE(0) * (500.0 / 65536.0) * -1;\n  var y = data.readInt16LE(2) * (500.0 / 65536.0);\n  var z = data.readInt16LE(4) * (500.0 / 65536.0);\n\n  callback(x, y, z);\n};\n\nCC2540SensorTag.prototype.notifyGyroscope = function(callback) {\n  this.notifyCharacteristic(GYROSCOPE_UUID, GYROSCOPE_DATA_UUID, true, this.onGyroscopeChangeBinded, callback);\n};\n\nCC2540SensorTag.prototype.unnotifyGyroscope = function(callback) {\n  this.notifyCharacteristic(GYROSCOPE_UUID, GYROSCOPE_DATA_UUID, false, this.onGyroscopeChangeBinded, callback);\n};\n\nCC2540SensorTag.prototype.readTestData = function(callback) {\n  this.readUInt16LECharacteristic(TEST_UUID, TEST_DATA_UUID, callback);\n};\n\nCC2540SensorTag.prototype.readTestConfiguration = function(callback) {\n  this.readUInt8Characteristic(TEST_UUID, TEST_CONFIGURATION_UUID, callback);\n};\n\nmodule.exports = CC2540SensorTag;\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/lib/cc2650.js",
    "content": "// Copyright(c) 2013 Sandeep Mistry\n// from project https://github.com/sandeepmistry/node-sensortag\n//\n// The MIT License(MIT)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files(the \"Software\"), to deal in \n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so, \n// subject to the following conditions: \n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software. \n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar NobleDevice = require('noble-device');\n\nvar Common = require('./common');\n\nvar MPU9250_UUID                            = 'f000aa8004514000b000000000000000';\nvar BAROMETRIC_PRESSURE_UUID                = 'f000aa4004514000b000000000000000';\nvar LUXOMTER_UUID                           = 'f000aa7004514000b000000000000000';\n\nvar BAROMETRIC_PRESSURE_CONFIG_UUID         = 'f000aa4204514000b000000000000000';\n\nvar MPU9250_CONFIG_UUID                     = 'f000aa8204514000b000000000000000';\nvar MPU9250_DATA_UUID                       = 'f000aa8104514000b000000000000000';\nvar MPU9250_PERIOD_UUID                     = 'f000aa8304514000b000000000000000';\n\nvar MPU9250_GYROSCOPE_MASK                  = 0x0007;\nvar MPU9250_ACCELEROMETER_MASK              = 0x0038;\nvar MPU9250_MAGNETOMETER_MASK               = 0x0040;\n\nvar LUXOMTER_CONFIG_UUID                    = 'f000aa7204514000b000000000000000';\nvar LUXOMTER_DATA_UUID                      = 'f000aa7104514000b000000000000000';\nvar LUXOMTER_PERIOD_UUID                    = 'f000aa7304514000b000000000000000';\n\nvar IO_CONFIG_UUID                          = 'f000aa6604514000b000000000000000';\nvar IO_DATA_UUID                            = 'f000aa6504514000b000000000000000';\n\nvar CC2650SensorTag = function(peripheral) {\n  NobleDevice.call(this, peripheral);\n  Common.call(this);\n\n  this.type = 'cc2650';\n  this.mpu9250mask = 0;\n  this.mpu9250notifyCount = 0;\n\n  this.onMPU9250ChangeBinded     = this.onMPU9250Change.bind(this);\n  this.onLuxometerChangeBinded   = this.onLuxometerChange.bind(this);\n};\n\nCC2650SensorTag.is = function(peripheral) {\n  var localName = peripheral.advertisement.localName;\n\n  return (localName === 'CC2650 SensorTag') ||\n          (localName === 'SensorTag 2.0');\n};\n\nNobleDevice.Util.inherits(CC2650SensorTag, NobleDevice);\nNobleDevice.Util.mixin(CC2650SensorTag, NobleDevice.DeviceInformationService);\nNobleDevice.Util.mixin(CC2650SensorTag, Common);\n\nCC2650SensorTag.prototype.convertIrTemperatureData = function(data, callback) {\n  var ambientTemperature = data.readInt16LE(2) / 128.0;\n  var objectTemperature = data.readInt16LE(0) / 128.0;\n\n  callback(objectTemperature, ambientTemperature);\n};\n\nCC2650SensorTag.prototype.convertHumidityData = function(data, callback) {\n  var temperature = -40 + ((165  * data.readUInt16LE(0)) / 65536.0);\n  var humidity = data.readUInt16LE(2) * 100 / 65536.0;\n\n  callback(temperature, humidity);\n};\n\nCC2650SensorTag.prototype.enableBarometricPressure = function(callback) {\n  this.enableConfigCharacteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_CONFIG_UUID, callback);\n};\n\nCC2650SensorTag.prototype.convertBarometricPressureData = function(data, callback) {\n  var tempBMP;     // Temperature processed value from sensor\n  var pressure; // Pressure processed value from sensor\n\n  // data is returned as 16 bit single precision float, convert to float\n  // no idea at moment why divide by 10000 and not 100\n  var exponent;\n  var mantissa;\n\n  var flTempBMP;\n  var flPressure;\n  tempBMP = data.readUInt16LE(0);\n\n  exponent = (tempBMP & 0xF000) >> 12;\n  mantissa = (tempBMP & 0x0FFF);\n\n  flTempBMP = mantissa * Math.pow(2, exponent) / 10000;\n\n  pressure = data.readUInt16LE(2);\n\n  exponent = (pressure & 0xF000) >> 12;\n  mantissa = (pressure & 0x0FFF);\n  flPressure = mantissa * Math.pow(2, exponent) / 10000;\n\n  callback(flPressure);\n};\n\nCC2650SensorTag.prototype.setMPU9250Period = function(period, callback) {\n  this.writePeriodCharacteristic(MPU9250_UUID, MPU9250_PERIOD_UUID, period, callback);\n};\n\nCC2650SensorTag.prototype.enableMPU9250 = function(mask, callback) {\n  this.mpu9250mask |= mask;\n\n  // for now, always write 0x007f, magnetometer does not seem to notify is specific mask is used\n  this.writeUInt16LECharacteristic(MPU9250_UUID, MPU9250_CONFIG_UUID, 0x007f, callback);\n};\n\nCC2650SensorTag.prototype.disableMPU9250 = function(mask, callback) {\n  this.mpu9250mask &= ~mask;\n\n  if (this.mpu9250mask === 0) {\n    this.writeUInt16LECharacteristic(MPU9250_UUID, MPU9250_CONFIG_UUID, 0x0000, callback);\n  } else if (typeof(callback) === 'function') {\n    callback();\n  }\n};\n\nCC2650SensorTag.prototype.notifyMPU9250 = function(callback) {\n  this.mpu9250notifyCount++;\n\n  if (this.mpu9250notifyCount === 1) {\n    this.notifyCharacteristic(MPU9250_UUID, MPU9250_DATA_UUID, true, this.onMPU9250ChangeBinded, callback);\n  } else if (typeof(callback) === 'function') {\n    callback();\n  }\n};\n\nCC2650SensorTag.prototype.unnotifyMPU9250 = function(callback) {\n  this.mpu9250notifyCount--;\n\n  if (this.mpu9250notifyCount === 0) {\n    this.notifyCharacteristic(MPU9250_UUID, MPU9250_DATA_UUID, false, this.onMPU9250ChangeBinded, callback);\n  } else if (typeof(callback) === 'function') {\n    callback();\n  }\n};\n\nCC2650SensorTag.prototype.enableAccelerometer = function(callback) {\n  this.enableMPU9250(MPU9250_ACCELEROMETER_MASK, callback);\n};\n\nCC2650SensorTag.prototype.disableAccelerometer = function(callback) {\n  this.disableMPU9250(MPU9250_ACCELEROMETER_MASK, callback);\n};\n\nCC2650SensorTag.prototype.readAccelerometer  = function(callback) {\n  this.readDataCharacteristic(MPU9250_UUID, MPU9250_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertMPU9250Data(data, function(x, y, z) {\n      callback(null, x, y, z);\n    }.bind(this));\n  }.bind(this));\n};\n\nCC2650SensorTag.prototype.onMPU9250Change = function(data) {\n  this.convertMPU9250Data(data, function(x, y, z, xG, yG, zG, xM, yM, zM) {\n    if (this.mpu9250mask & MPU9250_ACCELEROMETER_MASK) {\n      this.emit('accelerometerChange', x, y, z);\n    }\n\n    if (this.mpu9250mask & MPU9250_GYROSCOPE_MASK) {\n      this.emit('gyroscopeChange', xG, yG, zG);\n    }\n\n    if (this.mpu9250mask & MPU9250_MAGNETOMETER_MASK) {\n      this.emit('magnetometerChange', xM, yM, zM);\n    }\n  }.bind(this));\n};\n\nCC2650SensorTag.prototype.convertMPU9250Data = function(data, callback) {\n  // 250 deg/s range\n  var xG = data.readInt16LE(0) * (500.0 / 65536.0);\n  var yG = data.readInt16LE(2) * (500.0 / 65536.0);\n  var zG = data.readInt16LE(4) * (500.0 / 65536.0);\n\n  // we specify 2G range in setup\n  var x = data.readInt16LE(6) * 2.0 / 32768.0;\n  var y = data.readInt16LE(8) * 2.0 / 32768.0;\n  var z = data.readInt16LE(10) * 2.0 / 32768.0;\n\n  // magnetometer (page 50 of http://www.invensense.com/mems/gyro/documents/RM-MPU-9250A-00.pdf)\n  var xM = data.readInt16LE(12) * 4912.0 / 32760.0;\n  var yM = data.readInt16LE(14) * 4912.0 / 32760.0;\n  var zM = data.readInt16LE(16) * 4912.0 / 32760.0;\n\n  callback(x, y, z, xG, yG, zG, xM, yM, zM);\n};\n\nCC2650SensorTag.prototype.notifyAccelerometer = function(callback) {\n  this.notifyMPU9250(callback);\n};\n\nCC2650SensorTag.prototype.unnotifyAccelerometer = function(callback) {\n  this.unnotifyMPU9250(callback);\n};\n\nCC2650SensorTag.prototype.setAccelerometerPeriod = function(period, callback) {\n  this.setMPU9250Period(period, callback);\n};\n\nCC2650SensorTag.prototype.enableMagnetometer = function(callback) {\n  this.enableMPU9250(MPU9250_MAGNETOMETER_MASK, callback);\n};\n\nCC2650SensorTag.prototype.disableMagnetometer = function(callback) {\n  this.disableMPU9250(MPU9250_MAGNETOMETER_MASK, callback);\n};\n\nCC2650SensorTag.prototype.readMagnetometer = function(callback) {\n  this.readDataCharacteristic(MPU9250_UUID, MPU9250_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertMPU9250Data(data, function(x, y, z, xG, yG, zG, xM, yM, zM) {\n      callback(null, xM, yM, zM);\n    }.bind(this));\n  }.bind(this));\n};\n\nCC2650SensorTag.prototype.notifyMagnetometer = function(callback) {\n  this.notifyMPU9250(callback);\n};\n\nCC2650SensorTag.prototype.unnotifyMagnetometer = function(callback) {\n  this.unnotifyMPU9250(callback);\n};\n\nCC2650SensorTag.prototype.setMagnetometerPeriod = function(period, callback) {\n  this.setMPU9250Period(period, callback);\n};\n\nCC2650SensorTag.prototype.setGyroscopePeriod = function(period, callback) {\n  this.setMPU9250Period(period, callback);\n};\n\nCC2650SensorTag.prototype.enableGyroscope = function(callback) {\n  this.enableMPU9250(MPU9250_GYROSCOPE_MASK, callback);\n};\n\nCC2650SensorTag.prototype.disableGyroscope = function(callback) {\n  this.disableMPU9250(MPU9250_GYROSCOPE_MASK, callback);\n};\n\nCC2650SensorTag.prototype.readGyroscope = function(callback) {\n  this.readDataCharacteristic(MPU9250_UUID, MPU9250_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertMPU9250Data(data, function(x, y, z, xG, yG, zG) {\n      callback(null, xG, yG, zG);\n    }.bind(this));\n  }.bind(this));\n};\n\nCC2650SensorTag.prototype.notifyGyroscope = function(callback) {\n  this.notifyMPU9250(callback);\n};\n\nCC2650SensorTag.prototype.unnotifyGyroscope = function(callback) {\n  this.unnotifyMPU9250(callback);\n};\n\nCC2650SensorTag.prototype.enableLuxometer = function(callback) {\n  this.enableConfigCharacteristic(LUXOMTER_UUID, LUXOMTER_CONFIG_UUID, callback);\n};\n\nCC2650SensorTag.prototype.disableLuxometer = function(callback) {\n  this.disableConfigCharacteristic(LUXOMTER_UUID, LUXOMTER_CONFIG_UUID, callback);\n};\n\nCC2650SensorTag.prototype.readLuxometer = function(callback) {\n  this.readDataCharacteristic(LUXOMTER_UUID, LUXOMTER_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertLuxometerData(data, function(lux) {\n      callback(null, lux);\n    }.bind(this));\n  }.bind(this));\n };\n\nCC2650SensorTag.prototype.onLuxometerChange = function(data) {\n  this.convertLuxometerData(data, function(lux) {\n    this.emit('luxometerChange', lux);\n  }.bind(this));\n};\n\nCC2650SensorTag.prototype.convertLuxometerData = function(data, callback) {\n  var lux = data.readUInt16LE(0) /100;\n\n  callback(lux);\n};\n\nCC2650SensorTag.prototype.notifyLuxometer = function(callback) {\n  this.notifyCharacteristic(LUXOMTER_UUID, LUXOMTER_DATA_UUID, true, this.onLuxometerChangeBinded, callback);\n};\n\nCC2650SensorTag.prototype.unnotifyLuxometer = function(callback) {\n  this.notifyCharacteristic(LUXOMTER_UUID, LUXOMTER_DATA_UUID, false, this.onLuxometerChangeBinded, callback);\n};\n\nCC2650SensorTag.prototype.setLuxometerPeriod = function(period, callback) {\n  this.writePeriodCharacteristic(LUXOMTER_UUID, LUXOMTER_PERIOD_UUID, period, callback);\n};\n\nmodule.exports = CC2650SensorTag;\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/lib/common.js",
    "content": "\n// Copyright(c) 2013 Sandeep Mistry\n// from project https://github.com/sandeepmistry/node-sensortag\n//\n// The MIT License(MIT)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files(the \"Software\"), to deal in \n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so, \n// subject to the following conditions: \n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software. \n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// http://processors.wiki.ti.com/index.php/SensorTag_User_Guide\n\nvar IR_TEMPERATURE_UUID                     = 'f000aa0004514000b000000000000000';\nvar HUMIDITY_UUID                           = 'f000aa2004514000b000000000000000';\nvar BAROMETRIC_PRESSURE_UUID                = 'f000aa4004514000b000000000000000';\nvar SIMPLE_KEY_UUID                         = 'ffe0';\n\nvar IR_TEMPERATURE_CONFIG_UUID              = 'f000aa0204514000b000000000000000';\nvar IR_TEMPERATURE_DATA_UUID                = 'f000aa0104514000b000000000000000';\nvar IR_TEMPERATURE_PERIOD_UUID              = 'f000aa0304514000b000000000000000';\nvar IR_TEMPERATURE_PERIOD_UUID              = 'f000aa0304514000b000000000000000';\n\nvar HUMIDITY_CONFIG_UUID                    = 'f000aa2204514000b000000000000000';\nvar HUMIDITY_DATA_UUID                      = 'f000aa2104514000b000000000000000';\nvar HUMIDITY_PERIOD_UUID                    = 'f000aa2304514000b000000000000000';\n\nvar BAROMETRIC_PRESSURE_CONFIG_UUID         = 'f000aa4204514000b000000000000000';\nvar BAROMETRIC_PRESSURE_DATA_UUID           = 'f000aa4104514000b000000000000000';\nvar BAROMETRIC_PRESSURE_PERIOD_UUID         = 'f000aa4404514000b000000000000000';\n\nvar SIMPLE_KEY_DATA_UUID                    = 'ffe1';\n\nfunction SensorTagCommon() {\n  this.onIrTemperatureChangeBinded      = this.onIrTemperatureChange.bind(this);\n  this.onHumidityChangeBinded           = this.onHumidityChange.bind(this);\n  this.onBarometricPressureChangeBinded = this.onBarometricPressureChange.bind(this);\n  this.onSimpleKeyChangeBinded          = this.onSimpleKeyChange.bind(this);\n}\n\nSensorTagCommon.prototype.toString = function() {\n  return JSON.stringify({\n    uuid: this.uuid,\n    type: this.type\n  });\n};\n\nSensorTagCommon.prototype.writePeriodCharacteristic = function(serviceUuid, characteristicUuid, period, callback) {\n  period /= 10; // input is scaled by units of 10ms\n\n  if (period < 10) {\n    period = 10;\n  } else if (period > 255) {\n    period = 255;\n  }\n\n  this.writeUInt8Characteristic(serviceUuid, characteristicUuid, period, callback);\n};\n\nSensorTagCommon.prototype.enableConfigCharacteristic = function(serviceUuid, characteristicUuid, callback) {\n  this.writeUInt8Characteristic(serviceUuid, characteristicUuid, 0x01, callback);\n};\n\nSensorTagCommon.prototype.disableConfigCharacteristic = function(serviceUuid, characteristicUuid, callback) {\n  this.writeUInt8Characteristic(serviceUuid, characteristicUuid, 0x00, callback);\n};\n\nSensorTagCommon.prototype.setIrTemperaturePeriod = function(period, callback) {\n  this.writePeriodCharacteristic(IR_TEMPERATURE_UUID, IR_TEMPERATURE_PERIOD_UUID, period, callback);\n};\n\nSensorTagCommon.prototype.enableIrTemperature = function(callback) {\n  this.enableConfigCharacteristic(IR_TEMPERATURE_UUID, IR_TEMPERATURE_CONFIG_UUID, callback);\n};\n\nSensorTagCommon.prototype.disableIrTemperature = function(callback) {\n  this.disableConfigCharacteristic(IR_TEMPERATURE_UUID, IR_TEMPERATURE_CONFIG_UUID, callback);\n};\n\nSensorTagCommon.prototype.readIrTemperature = function(callback) {\n  this.readDataCharacteristic(IR_TEMPERATURE_UUID, IR_TEMPERATURE_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertIrTemperatureData(data, function(objectTemperature, ambientTemperature) {\n      callback(null, objectTemperature, ambientTemperature);\n    }.bind(this));\n  }.bind(this));\n};\n\nSensorTagCommon.prototype.onIrTemperatureChange = function(data) {\n  this.convertIrTemperatureData(data, function(objectTemperature, ambientTemperature) {\n    this.emit('irTemperatureChange', objectTemperature, ambientTemperature);\n  }.bind(this));\n};\n\nSensorTagCommon.prototype.notifyIrTemperature = function(callback) {\n  this.notifyCharacteristic(IR_TEMPERATURE_UUID, IR_TEMPERATURE_DATA_UUID, true, this.onIrTemperatureChangeBinded, callback);\n};\n\nSensorTagCommon.prototype.unnotifyIrTemperature = function(callback) {\n  this.notifyCharacteristic(IR_TEMPERATURE_UUID, IR_TEMPERATURE_DATA_UUID, false, this.onIrTemperatureChangeBinded, callback);\n};\n\nSensorTagCommon.prototype.setIrTemperaturePeriod = function(period, callback) {\n  this.writePeriodCharacteristic(IR_TEMPERATURE_UUID, IR_TEMPERATURE_PERIOD_UUID, period, callback);\n};\n\nSensorTagCommon.prototype.setHumidityPeriod = function(period, callback) {\n  this.writePeriodCharacteristic(HUMIDITY_UUID, HUMIDITY_PERIOD_UUID, period, callback);\n};\n\nSensorTagCommon.prototype.enableHumidity = function(callback) {\n  this.enableConfigCharacteristic(HUMIDITY_UUID, HUMIDITY_CONFIG_UUID, callback);\n};\n\nSensorTagCommon.prototype.disableHumidity = function(callback) {\n  this.disableConfigCharacteristic(HUMIDITY_UUID, HUMIDITY_CONFIG_UUID, callback);\n};\n\nSensorTagCommon.prototype.readHumidity = function(callback) {\n  this.readDataCharacteristic(HUMIDITY_UUID, HUMIDITY_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertHumidityData(data, function(temperature, humidity) {\n      callback(null, temperature, humidity);\n    });\n  }.bind(this));\n};\n\nSensorTagCommon.prototype.onHumidityChange = function(data) {\n  this.convertHumidityData(data, function(temperature, humidity) {\n    this.emit('humidityChange', temperature, humidity);\n  }.bind(this));\n};\n\nSensorTagCommon.prototype.notifyHumidity = function(callback) {\n  this.notifyCharacteristic(HUMIDITY_UUID, HUMIDITY_DATA_UUID, true, this.onHumidityChangeBinded, callback);\n};\n\nSensorTagCommon.prototype.unnotifyHumidity = function(callback) {\n  this.notifyCharacteristic(HUMIDITY_UUID, HUMIDITY_DATA_UUID, false, this.onHumidityChangeBinded, callback);\n};\n\nSensorTagCommon.prototype.setBarometricPressurePeriod = function(period, callback) {\n  this.writePeriodCharacteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_PERIOD_UUID, period, callback);\n};\n\nSensorTagCommon.prototype.disableBarometricPressure = function(callback) {\n  this.disableConfigCharacteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_CONFIG_UUID, callback);\n};\n\nSensorTagCommon.prototype.readBarometricPressure = function(callback) {\n  this.readDataCharacteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_DATA_UUID, function(error, data) {\n    if (error) {\n      return callback(error);\n    }\n\n    this.convertBarometricPressureData(data, function(pressure) {\n      callback(null, pressure);\n    }.bind(this));\n  }.bind(this));\n};\n\nSensorTagCommon.prototype.onBarometricPressureChange = function(data) {\n  this.convertBarometricPressureData(data, function(pressure) {\n    this.emit('barometricPressureChange', pressure);\n  }.bind(this));\n};\n\nSensorTagCommon.prototype.notifyBarometricPressure = function(callback) {\n  this.notifyCharacteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_DATA_UUID, true, this.onBarometricPressureChangeBinded, callback);\n};\n\nSensorTagCommon.prototype.unnotifyBarometricPressure = function(callback) {\n  this.notifyCharacteristic(BAROMETRIC_PRESSURE_UUID, BAROMETRIC_PRESSURE_DATA_UUID, false, this.onBarometricPressureChangeBinded, callback);\n};\n\nSensorTagCommon.prototype.onSimpleKeyChange = function(data) {\n  this.convertSimpleKeyData(data, function(left, right) {\n    this.emit('simpleKeyChange', left, right);\n  }.bind(this));\n};\n\nSensorTagCommon.prototype.convertSimpleKeyData = function(data, callback) {\n  var b = data.readUInt8(0);\n\n  var left = (b & 0x2) ? true : false;\n  var right = (b & 0x1) ? true : false;\n\n  callback(left, right);\n};\n\nSensorTagCommon.prototype.notifySimpleKey = function(callback) {\n  this.notifyCharacteristic(SIMPLE_KEY_UUID, SIMPLE_KEY_DATA_UUID, true, this.onSimpleKeyChangeBinded, callback);\n};\n\nSensorTagCommon.prototype.unnotifySimpleKey = function(callback) {\n  this.notifyCharacteristic(SIMPLE_KEY_UUID, SIMPLE_KEY_DATA_UUID, false, this.onSimpleKeyChangeBinded, callback);\n};\n\nmodule.exports = SensorTagCommon;\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/lib/sensortag.js",
    "content": "// Copyright(c) 2013 Sandeep Mistry\n// from project https://github.com/sandeepmistry/node-sensortag\n//\n// The MIT License(MIT)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files(the \"Software\"), to deal in \n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so, \n// subject to the following conditions: \n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software. \n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar CC2540SensorTag = require('./cc2540');\nvar CC2650SensorTag = require('./cc2650');\n\nvar SensorTag = function() {\n};\n\nSensorTag.discoverAll = function(onDiscover) {\n  CC2540SensorTag.discoverAll(onDiscover);\n  CC2650SensorTag.discoverAll(onDiscover);\n};\n\nSensorTag.stopDiscoverAll = function(onDiscover) {\n  CC2540SensorTag.stopDiscoverAll(onDiscover);\n  CC2650SensorTag.stopDiscoverAll(onDiscover);\n};\n\nSensorTag.discover = function(callback) {\n  var onDiscover = function(sensorTag) {\n    SensorTag.stopDiscoverAll(onDiscover);\n\n    callback(sensorTag);\n  };\n\n  SensorTag.discoverAll(onDiscover);\n};\n\nSensorTag.discoverByUuid = function(uuid, callback) {\n  var onDiscoverByUuid = function(sensorTag) {\n    if (sensorTag.uuid === uuid) {\n      SensorTag.stopDiscoverAll(onDiscoverByUuid);\n\n      callback(sensorTag);\n    }\n  };\n\n  SensorTag.discoverAll(onDiscoverByUuid);\n};\n\nSensorTag.CC2540 = CC2540SensorTag;\nSensorTag.CC2650 = CC2650SensorTag;\n\nmodule.exports = SensorTag;\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/package.json",
    "content": "{\n  \"name\": \"ConnectTheDotsIntelEdison\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Simple Node app sending data from Arduino Weather Shield to Azure Event Hubs\",\n  \"main\": \"inteledisonsensortagctd.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"cylon\": \"^0.22.1\",\n    \"cylon-gpio\": \"^0.22.1\",\n    \"cylon-intel-iot\": \"^0.5.2\",\n    \"noble\": \"^0.3.11\",\n    \"noble-device\": \"^1.0.0\",\n    \"connectthedots\":\"^1.0.2\"\n  }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonSensorTag/settings.json",
    "content": "﻿{\n    \"iothubconnectionstring\": \"<connectionstring>\",\n    \"deviceid\": \"<deviceid>\",\n    \"displayname\": \"EdisonSensorTag\",\n    \"organization\": \"My Org\",\n    \"location\":  \"My location\"\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/Hardware.md",
    "content": "# Hardware requirements for Intel Edison + Seeed Xadow wearable kit #\n\n - [Intel Edison kit for Arduino][1]\n\n##Supported Sensors\n\n- [Seeed Xadow wearable kit for Intel Edison][2]\n\n  [1]: http://www.intel.com/buy/us/en/product/emergingtechnologies/intel-edison-kit-462187\n  [2]: http://www.seeedstudio.com/depot/Xadow-Wearable-Kit-For-Intel-Edison-p-2428.html\n \n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/Intel_Edison_setup.md",
    "content": "This document explains how to set up an Intel Edison board to send data to AzureIoT services using the REST interface. \nIt assumes that you have the right tools installed and that you have cloned or downloaded the ConnectTheDots.io project on your machine.\n\n##Hardware requirements ##\nCheck out the hardware requirements [here](hardware.md).\n\n##Prerequisites ##\n\nTo deploy the application you will need the following:\n\n* For Windows, download PuTTY and PSCP from [here](http://www.putty.org/).\n* WiFi Internet access for the device.\n\nTo work on the code of the project, you can use your favorite editor.\n\n## Configure the Edison##\n\n* Follow the instructions on the [Intel support page](https://communities.intel.com/docs/DOC-23192) to setup the Yocto image on the Edison board.\n* Connect to the Intel Edison from your laptop, via a USB using PuTTY (or your favorite remote terminal tool)\n\n* In the remote terminal, you can setup the WiFi connection typing:\n                \n                 configure_edison --wifi\n\n* Once WiFi is setup you can connect your SSH tool through the network using the IP address displayed when doing the setup at previous step or using the command ifconfig.\n* the VI text editor comes by default on the Yocto image for the Intel Edison, but if you prefer Nano, connect with SSH and type the following commands:\n\n                 echo \"src/gz all http://repo.opkg.net/edison/repo/all\" >> /etc/opkg/base-feeds.conf\n                 echo \"src/gz edison http://repo.opkg.net/edison/repo/edison\" >> /etc/opkg/base-feeds.conf\n                 echo \"src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32\" >> /etc/opkg/base-feeds.conf\n\n                 opkg update\n\n                 opkg install nano\n\n##Setup the app on the board##\n\n* In the remote terminal, type the following commands:\n\n                 cd /node_app_slot\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/inteledisonctd.js\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/package.json\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/settings.json\n                 npm install\n                 \n* Before running the app, you need to update the settings.json file to input the device's connetion string and a unique device id.\nFollowing the instructions [here](../../../readme.md), get the connection string for your device.\n                 \n* In the remote terminal, open the file settings.json and edit the settings based on the configuration of your ehdevices Event Hub (if you want to use nano, just type nano settings.json and once your edits are done, type CTRL+X then Y to save). Note that the device id shall be unique per device so that data is not messed up in the connectthedots portal.\n\n                 \"iothubconnectionstring\": \"<connectionstring>\",\n                 \"deviceid\": \"<deviceid>\",\n                 \"displayname\": \"Edison\",\n                 \"organization\": \"My Org\",\n                 \"location\":  \"My location\"\n                 \n##Run the app##\n\nYou can run the app manually typing the following in the remote terminal:\n\n                 node .\n                 \nBecause the application is deployed in the node_app_slot on the Intel Edison, it will start automatically at boot time.\n             \n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/inteledisonctd.js",
    "content": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n// We are using the johnny-five library to access the hardware resources,'\nvar five = require('johnny-five');\nvar Edison = require(\"edison-io\");\nvar connectthedots = require('connectthedots');\nvar devicesettings = require('./settings.json');\n\n// ---------------------------------------------------------------\n// Let's connect_the_dots\n// You can adapt the below code to your own sensors configuration\nfunction connect_the_dots()\n{\n    console.log(\"Device Ready to connect its dots\");\n        \n    var temp = 25;\n    var acc = 0;\n    var nbaccmeasures = 0;\n\n    // Initialize temperature sensor\n    var multi = new five.Multi({\n        controller: \"BMP180\"\n    });\n    \n    multi.on(\"change\", function() {\n        // console.log(\"BMP180\");\n        // console.log(\"  pressure     : \", this.barometer.pressure);\n        // console.log(\"  temperature  : \", this.temperature.celsius)\n        // console.log(\"--------------------------------------\");\n        temp = this.temperature.celsius;\n        // var currentTime = new Date().toISOString();\n        // send_message(format_sensor_data(settings.guid1, settings.displayname, settings.organization, settings.location, \"Temperature\", \"C\", currentTime , this.temperature.celsius), currentTime);\n    \n    });\n    \n    // Initialize accelerometer    \n    var accelerometer = new five.Accelerometer({\n        controller: \"ADXL345\"\n    });\n    \n    accelerometer.on(\"change\", function() {\n        // console.log(\"accelerometer\");\n        // console.log(\"  x            : \", this.x);\n        // console.log(\"  y            : \", this.y);\n        // console.log(\"  z            : \", this.z);\n        // console.log(\"  pitch        : \", this.pitch);\n        // console.log(\"  roll         : \", this.roll);\n        // console.log(\"  acceleration : \", this.acceleration);\n        // console.log(\"  inclination  : \", this.inclination);\n        // console.log(\"  orientation  : \", this.orientation);\n        // console.log(\"--------------------------------------\");\n        acc += this.acceleration;\n        nbaccmeasures++ ;\n        // var currentTime = new Date().toISOString();\n        // send_message(format_sensor_data(settings.guid2, settings.displayname, settings.organization, settings.location, \"Acceleration\", \"G\", currentTime , this.acceleration), currentTime);\n    });\n    \n    // send data to Azure every 500 milliseconds    \n    setInterval(function(){\n        connectthedots.send_message(\"Temperature\", \"C\", temp);\n        if (nbaccmeasures>1)\n        {\n            acc = acc/nbaccmeasures;\n            connectthedots.send_message(\"Acceleration\", \"G\", acc);\n            acc = 0;\n            nbaccmeasures = 0;\n        }\n    }, 500);\n}\n\nvar initCallback = function (err) {\n    // Init board\n    var board = new five.Board({io: new Edison(Edison.Boards.Xadow)});\n\n    board.on(\"ready\",connect_the_dots);\n    board.on(\"message\", function(event){\n        console.log(\"Received a %s message, from %s, reporting: %s\", event.type, event.class, event.message);\n    } );\n    board.on(\"fail\", function(event) {\n    console.log(\"%s sent a 'fail' message: %s\", event.class, event.message);\n    });\n    board.on(\"warn\", function(event) {\n    console.log(\"%s sent a 'warn' message: %s\", event.class, event.message);\n    });\n}\n// ---------------------------------------------------------------\n// Init app\n\n// Init connection to Azure IoT\nconnectthedots.init_connection(devicesettings, initCallback)\n\n\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/package.json",
    "content": "{\n  \"name\": \"ConnectTheDotsIntelEdison\",\n  \"version\": \"1.0.1\",\n  \"description\": \"Simple Node app sending data from sensors to Azure IoT services\",\n  \"main\": \"inteledisonctd.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"johnny-five\": \"^0.8.91\",\n    \"edison-io\": \"^0.8.18\",\n    \"connectthedots\":\"^1.0.2\"\n  }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/IntelEdisonXadow/settings.json",
    "content": "﻿{\n    \"iothubconnectionstring\": \"<connectionstring>\",\n    \"deviceid\": \"<deviceid>\",\n    \"displayname\": \"IntelEdison\",\n    \"organization\": \"My Org\",\n    \"location\":  \"My location\"\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/SensorTag/Setup.md",
    "content": "### Generic SensorTag connection using a Raspberry PI, Linux, Mac OS and other Unix/Linux.\n\n### Raspberry Pi requirements\nYou will need Bluez, you can follow [this](http://www.elinux.org/RPi_Bluetooth_LE) tutorial to achieve it.\n\nSet up settings.json as with any other and you are ready to go\n```\nsudo npm start\n```\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/SensorTag/index.js",
    "content": "'use strict'\n\n// Common logic\nvar connectthedots = require('connectthedots');\n// Settings\nvar devicesettings = require('./settings.json');\n\n// Sensortag utility class\nvar worker = require('./sensorWorker.js');\n\nvar initCallback = function (err) {\n    // Once the connection to Azure IoT Hub is establish you can initialize your hardware and start sending data\n    // This is where you would insert your sensors code\n// Start sensor worker with the send_message callback to the data reception\n    worker.start(connectthedots.send_message);\n};\n\n\n// Init connection to Azure IoT\nconnectthedots.init_connection(devicesettings, initCallback);\n\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/SensorTag/package.json",
    "content": "{\n  \"name\": \"SensorTag\",\n  \"version\": \"1.0.0\",\n  \"description\": \"SensorTag connection to Connect The Dots\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"node index\",\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"Marian C Moldovan\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"async\": \"^1.4.2\",\n    \"crypto\": \"0.0.3\",\n    \"moment\": \"^2.10.6\",\n    \"sensortag\": \"^1.1.1\",\n    \"connectthedots\":\"^1.0.2\"\n  }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/SensorTag/sensorWorker.js",
    "content": "var SensorTag = require('sensortag');\nvar async = require('async');\n\nvar lastSensorTag;\nvar keepWorking = false;\nvar dataCallback;\n\nfunction onErrorRestart(){\n  if(keepWorking)\n    SensorTag.discover(onDiscover);\n}\n\nfunction onDiscover(sensorTag) {\n  console.log('SensorTag discovered', sensorTag.id);\n\n  sensorTag.on('disconnect', function() {\n    console.log('SensorTag disconnected', sensorTag.id);\n    if(keepWorking)\n      SensorTag.discover(onDiscover);\n  });\n  sensorTag.connectAndSetUp(function(error){\n    if(error){\n      onErrorRestart();\n    }\n    else {\n      lastSensorTag = sensorTag;\n\n      sensorTag.enableIrTemperature(function (error) { if (error) console.log('enableIrTemperature ' + error); });\n      sensorTag.setIrTemperaturePeriod(1000, function (error) { if (error) console.log('setIrTemperaturePeriod ' + error); });\n      sensorTag.notifyIrTemperature(function (error) { if (error) console.log('notifyIrTemperature ' + error); });\n      sensorTag.on('irTemperatureChange', function (objectTemperature, ambientTemperature) {\n        if(dataCallback) dataCallback('Temperature', 'C', ambientTemperature);\n      });\n\n      sensorTag.enableHumidity(function (error) { if (error) console.log('enableHumidity ' + error); });\n      sensorTag.setHumidityPeriod(1000, function (error) { if (error) console.log('setHumidityPeriod ' + error); });\n      sensorTag.notifyHumidity(function (error) { if (error) console.log('notifyHumidity ' + error); });\n      sensorTag.on('humidityChange', function (temperature, humidity) {\n        if(dataCallback) dataCallback('Humidity', '%', humidity);\n      });\n\n      sensorTag.enableLuxometer(function (error) { if (error) console.log('enableLuxometer ' + error); });\n      sensorTag.setLuxometerPeriod(1000, function (error) { if (error) console.log('setLuxometerPeriod ' + error); });\n      sensorTag.notifyLuxometer(function (error) { if (error) console.log('notifyIrTemperature ' + error); });\n      sensorTag.on('luxometerChange', function (lux) {\n        if(dataCallback) dataCallback('Light', 'lux', lux);\n      });\n\n      sensorTag.enableBarometricPressure(function (error) { if (error) console.log('enableBarometricPressure ' + error); });\n      sensorTag.setBarometricPressurePeriod(1000, function (error) { if (error) console.log('setBarometricPressurePeriod ' + error); });\n      sensorTag.notifyBarometricPressure(function (error) { if (error) console.log('notifyBarometricPressure ' + error); });\n      sensorTag.on('barometricPressureChange', function (pressure) {\n        if(dataCallback) dataCallback('Barometric Pressure', 'mHg', pressure);\n      });\n    }\n  });\n}\n\nexports.start = function(cb){\n  dataCallback = cb;\n  SensorTag.discover(onDiscover);\n}\n\nexports.stop = function(){\n  keepWorking = false;\n  dataCallback = null;\n  if(lastSensorTag)\n    lastSensorTag.disconnect();\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/SensorTag/settings.json",
    "content": "{\n    \"iothubconnectionstring\": \"<connectionstring>\",\n    \"deviceid\": \"<deviceid>\",\n    \"displayname\": \"SensorTag\",\n    \"organization\": \"My Org\",\n    \"location\":  \"My location\"\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Tessel2/Hardware.md",
    "content": "# Hardware requirements for Tessel 2 and modules #\n\n - [Tessel 2][1]\n\n## Supported Sensors ##\n\n- [Tessel 2 Ambient Module][2]\n\n\n  [1]: https://tessel.io/\n  [2]: https://tessel.io/modules#module-ambient\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Tessel2/Tessel2_setup.md",
    "content": "This document explains how to set up a Tessel 2 board to send data to Azure IoT services Hub using the AMQP interface.\n\n## Hardware requirements ##\nCheck out the hardware requirements [here](hardware.md).\n\n## Prerequisites ##\n\nTo deploy the application you will need the following:\n\n* Your preferred command line terminal\n* Wifi internet access for the Tessel 2 and your computer\n\nTo work on the code of the project, you can use your favorite code editor.\n\n## Configure the Tessel 2 ##\n\n* Connect the Ambient module to Port A of the Tessel 2\n* Connect to the Tessel 2 via USB from your computer\n* Follow the instructions on the [Tessel 2 site](http://tessel.github.io/t2-start/) to install the t2 CLI tool, and connect the Tessel 2 to WiFi\n\n\n## Set up the app on the board ##\n\n* In your preferred terminal, type the following commands:\n\n                 mkdir t2_connect_the_dots\n                 cd t2_connect_the_dots\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/Tessel2/tessel2ctd.js\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/Tessel2/package.json\n                 wget https://github.com/Azure/connectthedots/raw/IoTHub/Devices/DirectlyConnectedDevices/NodeJS/Tessel2/settings.json\n                 npm install\n\n* Before running the app, you need to update the settings.json file to input the device's connection string and a unique device id.\nFollowing the instructions [here](../../../readme.md), to get the connection string for your device.\n\n* In your preferred code editor, open the file settings.json and edit the settings based on the configuration of your ehdevices Event Hub. Note that the device id shall be unique per device so that data is not messed up in the connectthedots portal.\n\n                 \"iothubconnectionstring\": \"<connectionstring>\",\n                 \"deviceid\": \"<deviceid>\",\n                 \"displayname\": \"My Tessel 2\",\n                 \"organization\": \"My Org\",\n                 \"location\":  \"My location\"\n\n* Once you have changed the settings file, you can test your app. To do this, you'll be using the t2 CLI to transfer your code over to the Tessel 2 while it's connected (you need to be in the /t2_connect_the_dots folder):\n\n        t2 run tessel2ctd.js\n\n* In order to run your app on the Tessel without tethering, use the `push` command instead:\n\n        t2 push tessel2ctd.js\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Tessel2/package.json",
    "content": "{\n  \"name\": \"ConnectTheDotsTessel2\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Simple Node app sending data from a Tessel 2 + Ambient Module to Azure IoT services\",\n  \"main\": \"tessel2ctd.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"ambient-attx4\": \"^0.2.11\",\n    \"connectthedots\": \"^1.0.3\",\n    \"tessel\": \"^0.3.25\"\n  }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Tessel2/settings.json",
    "content": "﻿{\n    \"iothubconnectionstring\": \"<connection-string>\",\n    \"deviceid\": \"<deviceid>\",\n    \"displayname\": \"My Tessel 2\",\n    \"organization\": \"My Org\",\n    \"location\":  \"My location\"\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/NodeJS/Tessel2/tessel2ctd.js",
    "content": "//  ---------------------------------------------------------------------------------\r\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\r\n// \r\n//  The MIT License (MIT)\r\n// \r\n//  Permission is hereby granted, free of charge, to any person obtaining a copy\r\n//  of this software and associated documentation files (the \"Software\"), to deal\r\n//  in the Software without restriction, including without limitation the rights\r\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n//  copies of the Software, and to permit persons to whom the Software is\r\n//  furnished to do so, subject to the following conditions:\r\n// \r\n//  The above copyright notice and this permission notice shall be included in\r\n//  all copies or substantial portions of the Software.\r\n// \r\n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n//  THE SOFTWARE.\r\n//  ---------------------------------------------------------------------------------\r\n\r\nvar connectthedots = require('connectthedots');\r\nvar devicesettings = require('./settings.json');\r\nvar tessel = require('tessel');\r\nvar ambientlib = require('ambient-attx4');\r\n\r\n// main function to initialize the Tessel and start reading data\r\nvar connect_the_dots = function () {\r\n  // Connect to our ambient sensor.\r\n  var ambient = ambientlib.use(tessel.port['A']);\r\n\r\n  console.log('Tessel 2 is ready to connect its dots');\r\n\r\n  // Read light and sound data at a 1 second interval\r\n  setInterval(function () {\r\n    // read some sound level data\r\n    ambient.getSoundLevel(function (err, sdata) {\r\n      if (err) throw err;\r\n      console.log('sound: ', sdata)\r\n      // read some light level data\r\n      ambient.getLightLevel(function (err, ldata) {\r\n        if (err) throw err;\r\n        console.log('light: ', ldata);\r\n\r\n        // send data to IoT Hub\r\n        connectthedots.send_message(\"Sound\", \"units\", sdata);\r\n        connectthedots.send_message(\"Light\", \"units\", ldata);\r\n      });\r\n    });\r\n  }, 1000);\r\n}\r\n\r\nvar initCallback = function (err) {\r\n  // Once the connection to Azure IoT Hub is establish you can initialize your hardware and start sending data\r\n  // This is where you would insert your sensors code\r\n  connect_the_dots();\r\n};\r\n\r\nvar receiveCallback = function (msg) {\r\n  // A message was received\r\n  console.log(\"Received Message. Message Id: \" + msg.messageId + \" ; Message data:\" + msg.data.toString() );\r\n};\r\n\r\n\r\n// ---------------------------------------------------------------\r\n// Init app\r\n\r\n// Init connection to Azure IoT\r\nconnectthedots.init_connection(devicesettings, initCallback, receiveCallback);\r\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/App.xaml",
    "content": "﻿<Application\n    x:Class=\"UWPMSBand.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:UWPMSBand\"\n    RequestedTheme=\"Light\">\n\n</Application>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/App.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace UWPMSBand\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"UWPMSBand.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:UWPMSBand\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\">\n\n    <ScrollViewer>\n        <Grid Background=\"#FF333333\">\n            <Image x:Name=\"image\" Margin=\"56,10,58,0\" Source=\"Assets/CTD-logo-743x360.png\" Height=\"127\" VerticalAlignment=\"Top\" HorizontalAlignment=\"Center\" Width=\"246\"/>\n            <ToggleButton x:Name=\"SendDataToggle\" Content=\"Press to send data\" HorizontalAlignment=\"Center\" Margin=\"56,471,68,0\" VerticalAlignment=\"Top\" Width=\"236\" Checked=\"toggleButton_Checked\" Unchecked=\"toggleButton_Unchecked\" IsEnabled=\"False\" Height=\"44\" Foreground=\"White\"/>\n            <TextBlock x:Name=\"textBlock1\" HorizontalAlignment=\"Left\" Height=\"25\" Margin=\"10,138,0,0\" TextWrapping=\"Wrap\" Text=\"Device Name\" VerticalAlignment=\"Top\" Width=\"137\" Foreground=\"White\"/>\n            <TextBox x:Name=\"TBDeviceName\" Height=\"0\" Margin=\"10,163,20,0\" TextWrapping=\"Wrap\" Text=\"\" TextChanged=\"TBDeviceName_TextChanged\" VerticalAlignment=\"Top\"/>\n            <TextBlock x:Name=\"textBlock2\" HorizontalAlignment=\"Left\" Height=\"25\" Margin=\"10,205,0,0\" TextWrapping=\"Wrap\" Text=\"Connection String\" VerticalAlignment=\"Top\" Width=\"137\" Foreground=\"White\"/>\n            <TextBox x:Name=\"TBConnectionString\" Height=\"61\" Margin=\"10,230,20,0\" TextWrapping=\"Wrap\" Text=\"\" VerticalAlignment=\"Top\" TextChanged=\"TBConnectionString_TextChanged\" />\n            <ToggleButton x:Name=\"ConnectToggle\" Content=\"Press to connect the dots\" HorizontalAlignment=\"Center\" Margin=\"56,303,68,0\" VerticalAlignment=\"Top\" Checked=\"ConnectToggle_Checked\" Unchecked=\"ConnectToggle_Unchecked\" Height=\"44\" Width=\"236\" Foreground=\"White\"/>\n            <TextBox x:Name=\"TBAlerts\" Margin=\"10,533,20,10\" TextWrapping=\"Wrap\" Text=\"\" TextChanged=\"TBConnectionString_TextChanged\" IsReadOnly=\"True\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\"/>\n            <TextBlock x:Name=\"tbHeartRate\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"185,363,0,0\" TextWrapping=\"Wrap\" Text=\"0\" VerticalAlignment=\"Top\" Width=\"39\" Foreground=\"White\"/>\n            <CheckBox x:Name=\"cbHeartRate\" Content=\"Heart Rate\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"10,358,0,0\" VerticalAlignment=\"Top\" Width=\"170\" Foreground=\"White\" Checked=\"cbHeartRate_Checked\" Unchecked=\"cbHeartRate_Unchecked\" IsChecked=\"True\"/>\n            <TextBlock x:Name=\"tbSkinTemperature\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"185,395,0,0\" TextWrapping=\"Wrap\" Text=\"0\" VerticalAlignment=\"Top\" Width=\"39\" Foreground=\"#FFFCFCFC\"/>\n            <CheckBox x:Name=\"cbSkinTemperature\" Content=\"Skin Temperature\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"10,390,0,0\" VerticalAlignment=\"Top\" Width=\"170\" Foreground=\"White\" Checked=\"cbSkinTemperature_Checked\" Unchecked=\"cbSkinTemperature_Unchecked\" IsChecked=\"True\"/>\n            <CheckBox x:Name=\"cbSAccelerometer\" Content=\"Acceleration\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"10,423,0,0\" VerticalAlignment=\"Top\" Width=\"170\" Foreground=\"White\" IsChecked=\"True\" Unchecked=\"cbSAccelerometer_Unchecked\" Checked=\"cbSAccelerometer_Checked\"/>\n            <TextBlock x:Name=\"tbAcceleration\" HorizontalAlignment=\"Left\" Height=\"23\" Margin=\"185,426,0,0\" TextWrapping=\"Wrap\" Text=\"0\" VerticalAlignment=\"Top\" Width=\"39\" Foreground=\"#FFFCFCFC\"/>\n        </Grid>\n    </ScrollViewer>\n</Page>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Threading.Tasks;\nusing Windows.UI.Popups;\nusing Windows.Devices.Geolocation;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml;\nusing Microsoft.Band;\nusing Microsoft.Band.Sensors;\nusing System.Collections.Generic;\nusing System.Linq;\nusing ConnectTheDotsHelper;\n\nnamespace UWPMSBand\n{\n    public sealed partial class MainPage : Page\n    {\n        private GeolocationAccessStatus LocationAccess = GeolocationAccessStatus.Unspecified;\n        private Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;\n        private ConnectTheDots CTD;\n        private delegate void AppendAlert(string AlertText);\n\n        //private DeviceClient deviceClient;\n        private IBandClient bandClient;\n\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            // Initialize ConnectTheDots Helper\n            CTD = new ConnectTheDots();\n\n            // Restore local settings\n            if (localSettings.Values.ContainsKey(\"DisplayName\"))\n            {\n                CTD.DisplayName = (string)localSettings.Values[\"DisplayName\"];\n                this.TBDeviceName.Text = CTD.DisplayName;\n            }\n            if (localSettings.Values.ContainsKey(\"ConnectionString\"))\n            {\n                CTD.ConnectionString = (string)localSettings.Values[\"ConnectionString\"];\n                this.TBConnectionString.Text = CTD.ConnectionString;\n            }\n\n            // Check configuration settings\n            ConnectToggle.IsEnabled = checkConfig();\n            CTD.DisplayName = this.TBDeviceName.Text;\n            CTD.ConnectionString = this.TBConnectionString.Text;\n            CTD.Organization = \"My Company\";\n            CTD.Location = \"Unknown\";\n\n            // Hook up a callback to display message received from Azure\n            CTD.ReceivedMessage += CTD_ReceivedMessage;\n\n            // Get user consent for accessing location\n            Task.Run(async () =>\n            {\n                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,\n                async () =>\n                {\n                    this.LocationAccess = await Geolocator.RequestAccessAsync();\n                    // Get device location\n                    await updateLocation();\n                });\n            });\n\n            // Connect to MS Band\n            Task.Run(async () =>\n            {\n                await connectToBand();\n            });\n        }\n\n        private void CTD_ReceivedMessage(object sender, EventArgs e)\n        {\n            CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,\n            async () =>\n            {\n                ConnectTheDotsHelper.C2DMessage message = ((ConnectTheDotsHelper.ConnectTheDots.ReceivedMessageEventArgs)e).Message;\n                var textToDisplay = message.timecreated + \" - Alert received:\" + message.message + \": \" + message.value + \" \" + message.unitofmeasure + \"\\r\\n\";\n                TBAlerts.Text += textToDisplay;\n            });\n\n        }\n\n        /// <summary>\n        /// checkConfig\n        /// Check stored configuration\n        /// </summary>\n        /// <returns></returns>\n        private bool checkConfig()\n        {\n            return ((this.TBDeviceName.Text != null) && (this.TBConnectionString.Text != null) &&\n                    (this.TBDeviceName.Text != \"\") && (this.TBConnectionString.Text != \"\"));\n        }\n\n        /// <summary>\n        /// updateLocation\n        /// Updates current location of the device\n        /// </summary>\n        /// <returns></returns>\n        private async Task updateLocation()\n        {\n            // Update current device location\n            try\n            {\n                if (LocationAccess == GeolocationAccessStatus.Allowed)\n                {\n\n                    Geolocator geolocator = new Geolocator();\n                    Geoposition pos = await geolocator.GetGeopositionAsync();\n                    CTD.Location = pos.Coordinate.Point.Position.Longitude.ToString() + \",\" + pos.Coordinate.Point.Position.Latitude.ToString();\n                }\n            }\n            catch (Exception ex)\n            {\n                Debug.WriteLine(\"Error while trying to retreive device's location: \" + ex.Message);\n                CTD.Location = \"unknown\";\n            }\n        }\n\n        /// <summary>\n        /// toggleButton_Checked\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void toggleButton_Checked(object sender, RoutedEventArgs e)\n        {\n            SendDataToggle.Content = \"Sending telemetry data\";\n            CTD.SendTelemetryData = true;\n        }\n\n        /// <summary>\n        /// toggleButton_Unchecked\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void toggleButton_Unchecked(object sender, RoutedEventArgs e)\n        {\n            SendDataToggle.Content = \"Press to send telemetry data\";\n            CTD.SendTelemetryData = false;\n        }\n\n        /// <summary>\n        /// TBDeviceName_TextChanged\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void TBDeviceName_TextChanged(object sender, TextChangedEventArgs e)\n        {\n            CTD.DisplayName = TBDeviceName.Text;\n            localSettings.Values[\"DisplayName\"] = CTD.DisplayName;\n            ConnectToggle.IsEnabled = checkConfig();\n\n        }\n\n        /// <summary>\n        /// TBConnectionString_TextChanged\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void TBConnectionString_TextChanged(object sender, TextChangedEventArgs e)\n        {\n            CTD.ConnectionString = TBConnectionString.Text;\n            localSettings.Values[\"ConnectionString\"] = CTD.ConnectionString;\n            ConnectToggle.IsEnabled = checkConfig();\n        }\n\n        /// <summary>\n        /// ConnectToggle_Checked\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void ConnectToggle_Checked(object sender, RoutedEventArgs e)\n        {\n            if (CTD.Connect())\n            {\n                SendDataToggle.IsEnabled = true;\n                TBDeviceName.IsEnabled = false;\n                TBConnectionString.IsEnabled = false;\n                ConnectToggle.Content = \"Dots connected\";\n            }\n        }\n\n        /// <summary>\n        /// ConnectToggle_Unchecked\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void ConnectToggle_Unchecked(object sender, RoutedEventArgs e)\n        {\n            if (CTD.Disconnect())\n            {\n                SendDataToggle.IsChecked = false;\n                SendDataToggle.IsEnabled = false;\n                TBDeviceName.IsEnabled = true;\n                TBConnectionString.IsEnabled = true;\n                ConnectToggle.Content = \"Press to connect the dots\";\n            }\n        }\n\n\n        private async void SkinTemperature_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandSkinTemperatureReading> args)\n        {\n            // do work when the reading changes (i.e., update a UI element)\n            CTD.Sensors[\"SkinTemperature\"].message.value = args.SensorReading.Temperature;\n            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,\n                async () =>\n                {\n                    tbSkinTemperature.Text = string.Format(\"{0:0}\", CTD.Sensors[\"SkinTemperature\"].message.value);\n                });\n\n            //Debug.WriteLine(\"SkinTemperature Changed: \" + string.Format(\"{0:0}\", CTD.Sensors[\"SkinTemperature\"].value));\n        }\n\n        private async void HeartRate_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandHeartRateReading> args)\n        {\n            // do work when the reading changes (i.e., update a UI element)\n            CTD.Sensors[\"HeartRate\"].message.value = args.SensorReading.HeartRate;\n            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,\n                async () =>\n                {\n                    tbHeartRate.Text = string.Format(\"{0:0}\", CTD.Sensors[\"HeartRate\"].message.value);\n                });\n\n            //Debug.WriteLine(\"HeartRate Changed: \" + string.Format(\"{0:0}\", CTD.Sensors[\"HeartRate\"].value));\n        }\n\n        private async void Accelerometer_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandAccelerometerReading> args)\n        {\n            // do work when the reading changes (i.e., update a UI element)\n            CTD.Sensors[\"Acceleration\"].message.value = args.SensorReading.AccelerationX;\n            await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,\n                async () =>\n                {\n                    tbAcceleration.Text = string.Format(\"{0:0}\", CTD.Sensors[\"Acceleration\"].message.value);\n                });\n\n            //Debug.WriteLine(\"HeartRate Changed: \" + string.Format(\"{0:0}\", CTD.Sensors[\"HeartRate\"].value));\n        }\n\n        private async void AddBandSensor<T>(IBandSensor<T> sensor,\n                                         string measurename,\n                                         string unitofmeasure,\n                                         EventHandler<BandSensorReadingEventArgs<T>> ValueChangedEventHandler) where T : IBandSensorReading\n        {\n\n            // check current user consent for accessing Band sensor\n            if (sensor.GetCurrentUserConsent() != UserConsent.Granted)\n            {\n                // user hasn’t consented, request consent  \n                await sensor.RequestUserConsentAsync();\n                if (sensor.GetCurrentUserConsent() != UserConsent.Granted) return;\n            }\n            // User granted consent\n            // Add Sensor to ConnectTheDots Helper\n            CTD.AddSensor(measurename, unitofmeasure);\n\n            // hook up to the Sensor ReadingChanged event \n            IEnumerable<TimeSpan> supportedHeartRateReportingIntervals = sensor.SupportedReportingIntervals;\n            sensor.ReportingInterval = supportedHeartRateReportingIntervals.First<TimeSpan>();\n            sensor.ReadingChanged += ValueChangedEventHandler;\n\n            // start reading from the sensor\n            await sensor.StartReadingsAsync();\n        }\n\n        private async Task connectToBand()\n        {\n            try\n            {\n                IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();\n\n                bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]);\n                AddBandSensor<IBandHeartRateReading>(bandClient.SensorManager.HeartRate,\n                                    \"HeartRate\",\n                                    \"bpm\",\n                                    HeartRate_ReadingChanged);\n\n                AddBandSensor<IBandSkinTemperatureReading>(bandClient.SensorManager.SkinTemperature,\n                                    \"SkinTemperature\",\n                                    \"C\",\n                                    SkinTemperature_ReadingChanged);\n\n                AddBandSensor<IBandAccelerometerReading>(bandClient.SensorManager.Accelerometer,\n                                    \"Acceleration\",\n                                    \"G\",\n                                    Accelerometer_ReadingChanged);\n            }\n            catch (BandException ex)\n            {\n                // handle a Band connection exception \n                var dialogbox = new MessageDialog(\"Error while connecting Band Sensors: \" + ex.Message.ToString() + \"\\nRetrying...\");\n                await dialogbox.ShowAsync();\n                await connectToBand();\n            }\n        }\n\n        private void cbHeartRate_Checked(object sender, RoutedEventArgs e)\n        {\n            if (CTD != null)\n                CTD.setSensorStreaming(\"HeartRate\", true);\n        }\n\n        private void cbHeartRate_Unchecked(object sender, RoutedEventArgs e)\n        {\n            if (CTD != null)\n                CTD.setSensorStreaming(\"HeartRate\", false);\n        }\n\n        private void cbSkinTemperature_Checked(object sender, RoutedEventArgs e)\n        {\n            if (CTD != null)\n                CTD.setSensorStreaming(\"SkinTemperature\", true);\n        }\n\n        private void cbSkinTemperature_Unchecked(object sender, RoutedEventArgs e)\n        {\n            if (CTD != null)\n                CTD.setSensorStreaming(\"SkinTemperature\", false);\n        }\n\n        private void cbSAccelerometer_Unchecked(object sender, RoutedEventArgs e)\n        {\n            if (CTD != null)\n                CTD.setSensorStreaming(\"Acceleration\", false);\n        }\n\n        private void cbSAccelerometer_Checked(object sender, RoutedEventArgs e)\n        {\n            if (CTD != null)\n                CTD.setSensorStreaming(\"Acceleration\", true);\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\" xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\" xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\" IgnorableNamespaces=\"uap mp\">\n  <Identity Name=\"84eceb52-8a3f-4c5d-96b2-e20a334a5ae0\" Publisher=\"CN=olivi\" Version=\"1.0.0.0\" />\n  <mp:PhoneIdentity PhoneProductId=\"84eceb52-8a3f-4c5d-96b2-e20a334a5ae0\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\" />\n  <Properties>\n    <DisplayName>UWPMSBand</DisplayName>\n    <PublisherDisplayName>olivi</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.0.0\" MaxVersionTested=\"10.0.0.0\" />\n  </Dependencies>\n  <Resources>\n    <Resource Language=\"x-generate\" />\n  </Resources>\n  <Applications>\n    <Application Id=\"App\" Executable=\"$targetnametoken$.exe\" EntryPoint=\"UWPMSBand.App\">\n      <uap:VisualElements DisplayName=\"UWPMSBand\" Square150x150Logo=\"Assets\\Square150x150Logo.png\" Square44x44Logo=\"Assets\\Square44x44Logo.png\" Description=\"UWPMSBand\" BackgroundColor=\"#333333\">\n        <uap:DefaultTile Wide310x150Logo=\"Assets\\Wide310x150Logo.png\">\n        </uap:DefaultTile>\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" BackgroundColor=\"#333333\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n    <DeviceCapability Name=\"location\" />\n    <DeviceCapability Name=\"bluetooth\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"UWPMSBand\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UWPMSBand\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2016\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/UWPMSBand.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{38159BCB-2D15-4410-846F-C4E161FCDFEB}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UWPMSBand</RootNamespace>\n    <AssemblyName>UWPMSBand</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10240.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>UWPMSBand_TemporaryKey.pfx</PackageCertificateKeyFile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <None Include=\"project.json\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"..\\..\\Common\\csharp\\ConnectTheDotsHelper.cs\">\n      <Link>ConnectTheDotsHelper.cs</Link>\n    </Compile>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"UWPMSBand_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\CTD-logo-743x360.png\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\LockScreenLogo.scale-200.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-200.png\" />\n    <Content Include=\"Assets\\Square150x150Logo.scale-200.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.scale-200.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-24_altform-unplated.png\" />\n    <Content Include=\"Assets\\StoreLogo.png\" />\n    <Content Include=\"Assets\\Wide310x150Logo.scale-200.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/project.json",
    "content": "﻿{\n  \"dependencies\": {\n    \"Microsoft.Azure.Devices.Client\": \"1.1.1\",\n    \"Microsoft.Azure.Devices.Shared\": \"1.0.2\",\n    \"Microsoft.Band\": \"1.3.20628\",\n    \"Microsoft.NETCore.UniversalWindowsPlatform\": \"5.2.2\",\n    \"Newtonsoft.Json\": \"9.0.1\"\n  },\n  \"frameworks\": {\n    \"uap10.0\": {}\n  },\n  \"runtimes\": {\n    \"win10-arm\": {},\n    \"win10-arm-aot\": {},\n    \"win10-x86\": {},\n    \"win10-x86-aot\": {},\n    \"win10-x64\": {},\n    \"win10-x64-aot\": {}\n  }\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand/project.lock.json",
    "content": "{\n  \"locked\": false,\n  \"version\": 2,\n  \"targets\": {\n    \"UAP,Version=v10.0\": {\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Band/1.3.20628\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.AppContext.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"linux\"\n          },\n          \"runtimes/osx/lib/netstandard1.3/System.Net.NetworkInformation.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"osx\"\n          },\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Private.ServiceModel.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win7\"\n          }\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/_._\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/_._\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          },\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8\"\n          }\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8\"\n          }\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-arm\": {\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Band/1.3.20628\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.any.System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.any.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.any.System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win8-arm.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-arm/lib/netstandard1.0/System.Private.CoreLib.dll\": {},\n          \"runtimes/win8-arm/lib/netstandard1.0/mscorlib.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win8-arm/native/System.Private.CoreLib.ni.dll\": {},\n          \"runtimes/win8-arm/native/clretwrc.dll\": {},\n          \"runtimes/win8-arm/native/coreclr.dll\": {},\n          \"runtimes/win8-arm/native/dbgshim.dll\": {},\n          \"runtimes/win8-arm/native/mscordaccore.dll\": {},\n          \"runtimes/win8-arm/native/mscordbi.dll\": {},\n          \"runtimes/win8-arm/native/mscorlib.ni.dll\": {},\n          \"runtimes/win8-arm/native/mscorrc.debug.dll\": {},\n          \"runtimes/win8-arm/native/mscorrc.dll\": {},\n          \"runtimes/win8-arm/native/sos.dll\": {}\n        }\n      },\n      \"runtime.win8-arm.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win8-arm/native/clrcompression.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Collections\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tracing\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.any.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Extensions\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Resources.ResourceManager\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.any.System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.any.System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.any.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-arm-aot\": {\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Band/1.3.20628\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.aot.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win10-arm-aot.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win10-arm-aot.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"runtimes/win10-arm-aot/lib/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win10-arm-aot/lib/netcore50/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-arm-aot/lib/netstandard1.0/_._\": {}\n        },\n        \"native\": {\n          \"runtimes/win8-arm-aot/native/_._\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Collections\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tracing\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.aot.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Primitives\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Resources.ResourceManager\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.aot.System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.aot.System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.aot.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x64\": {\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Band/1.3.20628\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"runtime.win7-x64.Microsoft.NETCore.Jit\": \"1.0.3\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.any.System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.any.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.any.System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7-x64.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win7-x64.Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x64/native/clrjit.dll\": {}\n        }\n      },\n      \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x64/lib/netstandard1.0/System.Private.CoreLib.dll\": {},\n          \"runtimes/win7-x64/lib/netstandard1.0/mscorlib.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x64/native/System.Private.CoreLib.ni.dll\": {},\n          \"runtimes/win7-x64/native/clretwrc.dll\": {},\n          \"runtimes/win7-x64/native/coreclr.dll\": {},\n          \"runtimes/win7-x64/native/dbgshim.dll\": {},\n          \"runtimes/win7-x64/native/mscordaccore.dll\": {},\n          \"runtimes/win7-x64/native/mscordbi.dll\": {},\n          \"runtimes/win7-x64/native/mscorlib.ni.dll\": {},\n          \"runtimes/win7-x64/native/mscorrc.debug.dll\": {},\n          \"runtimes/win7-x64/native/mscorrc.dll\": {},\n          \"runtimes/win7-x64/native/sos.dll\": {}\n        }\n      },\n      \"runtime.win7-x64.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x64/native/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Collections\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tracing\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.any.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Extensions\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Resources.ResourceManager\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.any.System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.any.System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.any.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x64-aot\": {\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Band/1.3.20628\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"runtime.win7-x64.Microsoft.NETCore.Jit\": \"1.0.3\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.aot.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win10-x64-aot.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win10-x64-aot.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"runtimes/win10-x64-aot/lib/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win10-x64-aot/lib/netcore50/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7-x64.Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x64-aot/native/_._\": {}\n        }\n      },\n      \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x64-aot/lib/netstandard1.0/_._\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x64-aot/native/_._\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Collections\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tracing\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.aot.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Primitives\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Resources.ResourceManager\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.aot.System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.aot.System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.aot.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x86\": {\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Band/1.3.20628\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"runtime.win7-x86.Microsoft.NETCore.Jit\": \"1.0.3\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.any.System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.any.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.any.System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7-x86.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win7-x86.Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x86/native/clrjit.dll\": {}\n        }\n      },\n      \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x86/lib/netstandard1.0/System.Private.CoreLib.dll\": {},\n          \"runtimes/win7-x86/lib/netstandard1.0/mscorlib.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x86/native/System.Private.CoreLib.ni.dll\": {},\n          \"runtimes/win7-x86/native/clretwrc.dll\": {},\n          \"runtimes/win7-x86/native/coreclr.dll\": {},\n          \"runtimes/win7-x86/native/dbgshim.dll\": {},\n          \"runtimes/win7-x86/native/mscordaccore.dll\": {},\n          \"runtimes/win7-x86/native/mscordbi.dll\": {},\n          \"runtimes/win7-x86/native/mscorlib.ni.dll\": {},\n          \"runtimes/win7-x86/native/mscorrc.debug.dll\": {},\n          \"runtimes/win7-x86/native/mscorrc.dll\": {},\n          \"runtimes/win7-x86/native/sos.dll\": {}\n        }\n      },\n      \"runtime.win7-x86.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x86/native/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Collections\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tracing\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.any.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Extensions\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Resources.ResourceManager\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.any.System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.any.System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.any.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x86-aot\": {\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Band/1.3.20628\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Google.Protobuf.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\": {},\n          \"lib/uap10.0/Microsoft.Band.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"runtime.win7-x86.Microsoft.NETCore.Jit\": \"1.0.3\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.aot.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win10-x86-aot.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win10-x86-aot.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"runtimes/win10-x86-aot/lib/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win10-x86-aot/lib/netcore50/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7-x86.Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x86-aot/native/_._\": {}\n        }\n      },\n      \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x86-aot/lib/netstandard1.0/_._\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x86-aot/native/_._\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Collections\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tracing\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.aot.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Primitives\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Resources.ResourceManager\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.aot.System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.aot.System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.aot.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      }\n    }\n  },\n  \"libraries\": {\n    \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n      \"sha512\": \"3kiI8peSXbXHDDrRuo+QaX0iCEVRe0nvn2dBDRw656uPX32UalbBlSIDUDlJxu05eau4tnuhsikiUuugvvoUoQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.AspNet.WebApi.Client.5.2.3.nupkg.sha512\",\n        \"Microsoft.AspNet.WebApi.Client.nuspec\",\n        \"lib/net45/System.Net.Http.Formatting.dll\",\n        \"lib/net45/System.Net.Http.Formatting.xml\",\n        \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\",\n        \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.xml\"\n      ]\n    },\n    \"Microsoft.Azure.Amqp/1.1.5\": {\n      \"sha512\": \"6+3lPVW46h3H2NvjGtrHv+C0P3PVH11pZyCePm+w8AuhmX59OY+fvbA9/wll0MRAj81LPpz1i55oIQm41wOv7g==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.Azure.Amqp.1.1.5.nupkg.sha512\",\n        \"Microsoft.Azure.Amqp.nuspec\",\n        \"lib/net451/Microsoft.Azure.Amqp.XML\",\n        \"lib/net451/Microsoft.Azure.Amqp.dll\",\n        \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\"\n      ]\n    },\n    \"Microsoft.Azure.Devices.Client/1.1.1\": {\n      \"sha512\": \"BLh4z61INbQtdVXkhYsIiNqbYy9w7jcem4lqlSX8qZUIxIYsldN2U0QsLOgH9CP67N2lXaDtdAdnondIWehMPw==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Azure.Devices.Client/1.1.1\",\n      \"files\": [\n        \"Microsoft.Azure.Devices.Client.1.1.1.nupkg.sha512\",\n        \"Microsoft.Azure.Devices.Client.nuspec\",\n        \"build/native/Microsoft.Azure.Devices.Client.targets\",\n        \"lib/native/Microsoft.Azure.Devices.Client.winmd\",\n        \"lib/net45/Microsoft.Azure.Devices.Client.dll\",\n        \"lib/portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10/Microsoft.Azure.Devices.Client.PCL.dll\",\n        \"lib/uap10.0/Microsoft.Azure.Devices.Client.pri\",\n        \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\",\n        \"thirdpartynotice.txt\"\n      ]\n    },\n    \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n      \"sha512\": \"4j+6UpDVNvIuzmZussC+sMi2GioiNyhNwGioVKqVj7wKk1oY7pfd6Yt8Qjc4za++IYhDRoRo3yHM5YeJWskCwQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Azure.Devices.Shared/1.0.2\",\n      \"files\": [\n        \"Microsoft.Azure.Devices.Shared.1.0.2.nupkg.sha512\",\n        \"Microsoft.Azure.Devices.Shared.nuspec\",\n        \"lib/net45/Microsoft.Azure.Devices.Shared.dll\",\n        \"lib/portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10/Microsoft.Azure.Devices.Shared.PCL.dll\",\n        \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\",\n        \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.pri\",\n        \"thirdpartynotice.txt\"\n      ]\n    },\n    \"Microsoft.Band/1.3.20628\": {\n      \"sha512\": \"pXvYuw8wm+rqGmgWPGkg81UE43ZSPO3nqH1aPGUjekQM7J6SHVA7va31MdZbXbodtbnLWyj9ZnbM8crHwfZqHQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.Band.1.3.20628.nupkg.sha512\",\n        \"Microsoft.Band.nuspec\",\n        \"content/netcore451/Package.appxmanifest.transform\",\n        \"content/wpa81/Package.appxmanifest.transform\",\n        \"lib/netcore451/Google.Protobuf.dll\",\n        \"lib/netcore451/Microsoft.Band.Store.dll\",\n        \"lib/netcore451/Microsoft.Band.Store.pri\",\n        \"lib/netcore451/Microsoft.Band.Windows.dll\",\n        \"lib/netcore451/Microsoft.Band.Windows.pri\",\n        \"lib/netcore451/Microsoft.Band.dll\",\n        \"lib/portable-net45+win+wpa81/Microsoft.Band.dll\",\n        \"lib/portable-win81+wpa81/Google.Protobuf.dll\",\n        \"lib/portable-win81+wpa81/Microsoft.Band.Store.dll\",\n        \"lib/portable-win81+wpa81/Microsoft.Band.Store.pri\",\n        \"lib/portable-win81+wpa81/Microsoft.Band.dll\",\n        \"lib/uap10.0/Google.Protobuf.dll\",\n        \"lib/uap10.0/Microsoft.Band.Phone_UAP.dll\",\n        \"lib/uap10.0/Microsoft.Band.Phone_UAP.pri\",\n        \"lib/uap10.0/Microsoft.Band.Store_UAP.dll\",\n        \"lib/uap10.0/Microsoft.Band.Store_UAP.pri\",\n        \"lib/uap10.0/Microsoft.Band.dll\",\n        \"lib/wpa81/Google.Protobuf.dll\",\n        \"lib/wpa81/Microsoft.Band.Phone.dll\",\n        \"lib/wpa81/Microsoft.Band.Phone.pri\",\n        \"lib/wpa81/Microsoft.Band.Store.dll\",\n        \"lib/wpa81/Microsoft.Band.Store.pri\",\n        \"lib/wpa81/Microsoft.Band.dll\"\n      ]\n    },\n    \"Microsoft.Bcl/1.1.9\": {\n      \"sha512\": \"USQ55innJy8K+tAXvVa1O8dUTp2s7pmJ5cJj6Tl02HtGc2xBDj0P2QH5620HbGXIWKWYhydoeQF8Rm/JRDBGhw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"License-Stable.rtf\",\n        \"Microsoft.Bcl.1.1.9.nupkg.sha512\",\n        \"Microsoft.Bcl.nuspec\",\n        \"content/monoandroid/_._\",\n        \"content/monotouch/_._\",\n        \"content/net45/_._\",\n        \"content/portable-net45+win8+wp8+wpa81/_._\",\n        \"content/portable-net45+win8+wpa81/_._\",\n        \"content/portable-net451+win81+wpa81/_._\",\n        \"content/portable-net451+win81/_._\",\n        \"content/portable-win81+wp81+wpa81/_._\",\n        \"content/sl4/_._\",\n        \"content/sl5/_._\",\n        \"content/win8/_._\",\n        \"content/wp8/_._\",\n        \"content/wpa81/_._\",\n        \"lib/monoandroid/_._\",\n        \"lib/monotouch/_._\",\n        \"lib/net40/System.IO.dll\",\n        \"lib/net40/System.IO.xml\",\n        \"lib/net40/System.Runtime.dll\",\n        \"lib/net40/System.Runtime.xml\",\n        \"lib/net40/System.Threading.Tasks.dll\",\n        \"lib/net40/System.Threading.Tasks.xml\",\n        \"lib/net40/ensureRedirect.xml\",\n        \"lib/net45/_._\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.IO.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.IO.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Runtime.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Runtime.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.IO.dll\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.IO.xml\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.Runtime.dll\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.Runtime.xml\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net40+sl4+win8/System.IO.dll\",\n        \"lib/portable-net40+sl4+win8/System.IO.xml\",\n        \"lib/portable-net40+sl4+win8/System.Runtime.dll\",\n        \"lib/portable-net40+sl4+win8/System.Runtime.xml\",\n        \"lib/portable-net40+sl4+win8/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+sl4+win8/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+sl4+win8/ensureRedirect.xml\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.IO.dll\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.IO.xml\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.Runtime.dll\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.Runtime.xml\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.IO.dll\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.IO.xml\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.Runtime.dll\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.Runtime.xml\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+win8+wp8+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net40+win8/System.IO.dll\",\n        \"lib/portable-net40+win8/System.IO.xml\",\n        \"lib/portable-net40+win8/System.Runtime.dll\",\n        \"lib/portable-net40+win8/System.Runtime.xml\",\n        \"lib/portable-net40+win8/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+win8/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+win8/ensureRedirect.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/portable-net451+win81+wpa81/_._\",\n        \"lib/portable-net451+win81/_._\",\n        \"lib/portable-win81+wp81+wpa81/_._\",\n        \"lib/sl4-windowsphone71/System.IO.dll\",\n        \"lib/sl4-windowsphone71/System.IO.xml\",\n        \"lib/sl4-windowsphone71/System.Runtime.dll\",\n        \"lib/sl4-windowsphone71/System.Runtime.xml\",\n        \"lib/sl4-windowsphone71/System.Threading.Tasks.dll\",\n        \"lib/sl4-windowsphone71/System.Threading.Tasks.xml\",\n        \"lib/sl4-windowsphone71/ensureRedirect.xml\",\n        \"lib/sl4/System.IO.dll\",\n        \"lib/sl4/System.IO.xml\",\n        \"lib/sl4/System.Runtime.dll\",\n        \"lib/sl4/System.Runtime.xml\",\n        \"lib/sl4/System.Threading.Tasks.dll\",\n        \"lib/sl4/System.Threading.Tasks.xml\",\n        \"lib/sl5/System.IO.dll\",\n        \"lib/sl5/System.IO.xml\",\n        \"lib/sl5/System.Runtime.dll\",\n        \"lib/sl5/System.Runtime.xml\",\n        \"lib/sl5/System.Threading.Tasks.dll\",\n        \"lib/sl5/System.Threading.Tasks.xml\",\n        \"lib/win8/_._\",\n        \"lib/wp8/_._\",\n        \"lib/wpa81/_._\"\n      ]\n    },\n    \"Microsoft.Bcl.Build/1.0.14\": {\n      \"sha512\": \"cDLKSvNvRa519hplsbSoYqO69TjdDIhfjtKUM0g20/nVROoWsGav9KCI9HtnGjLmdV1+TcUUDhbotcllibjPEA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"License-Stable.rtf\",\n        \"Microsoft.Bcl.Build.1.0.14.nupkg.sha512\",\n        \"Microsoft.Bcl.Build.nuspec\",\n        \"content/net40/_._\",\n        \"content/netcore45/_._\",\n        \"content/portable-net40+win8+sl4+wp71+wpa81/_._\",\n        \"content/sl4-windowsphone71/_._\",\n        \"content/sl4/_._\",\n        \"tools/Install.ps1\",\n        \"tools/Microsoft.Bcl.Build.Tasks.dll\",\n        \"tools/Microsoft.Bcl.Build.targets\",\n        \"tools/Uninstall.ps1\"\n      ]\n    },\n    \"Microsoft.CSharp/4.0.1\": {\n      \"sha512\": \"/2JrH4hvYpwr7yFv3eSY2q2SG/74efeSmD0vgf2Obmgo4NsSceHgig62lYGgSEyWIpjEZZ0LJgOop7hTfB7WqQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.CSharp/4.0.1\",\n      \"files\": [\n        \"Microsoft.CSharp.4.0.1.nupkg.sha512\",\n        \"Microsoft.CSharp.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/Microsoft.CSharp.dll\",\n        \"lib/netstandard1.3/Microsoft.CSharp.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/Microsoft.CSharp.dll\",\n        \"ref/netcore50/Microsoft.CSharp.xml\",\n        \"ref/netcore50/de/Microsoft.CSharp.xml\",\n        \"ref/netcore50/es/Microsoft.CSharp.xml\",\n        \"ref/netcore50/fr/Microsoft.CSharp.xml\",\n        \"ref/netcore50/it/Microsoft.CSharp.xml\",\n        \"ref/netcore50/ja/Microsoft.CSharp.xml\",\n        \"ref/netcore50/ko/Microsoft.CSharp.xml\",\n        \"ref/netcore50/ru/Microsoft.CSharp.xml\",\n        \"ref/netcore50/zh-hans/Microsoft.CSharp.xml\",\n        \"ref/netcore50/zh-hant/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/Microsoft.CSharp.dll\",\n        \"ref/netstandard1.0/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/de/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/es/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/fr/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/it/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/ja/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/ko/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/ru/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"Microsoft.Net.Http/2.2.22\": {\n      \"sha512\": \"bqVLJ2UimlAEs2bn3y28lB1pmFRxuysv9pFyB0A86WEMYGYTfDyfjAGjm0fiaSRjlMNU1jVnp8Mxt8qe4OmpXQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"License-Stable.rtf\",\n        \"Microsoft.Net.Http.2.2.22.nupkg.sha512\",\n        \"Microsoft.Net.Http.nuspec\",\n        \"lib/monoandroid/System.Net.Http.Extensions.XML\",\n        \"lib/monoandroid/System.Net.Http.Extensions.dll\",\n        \"lib/monoandroid/System.Net.Http.Primitives.dll\",\n        \"lib/monoandroid/System.Net.Http.Primitives.xml\",\n        \"lib/monotouch/System.Net.Http.Extensions.XML\",\n        \"lib/monotouch/System.Net.Http.Extensions.dll\",\n        \"lib/monotouch/System.Net.Http.Primitives.dll\",\n        \"lib/monotouch/System.Net.Http.Primitives.xml\",\n        \"lib/net40/System.Net.Http.Extensions.XML\",\n        \"lib/net40/System.Net.Http.Extensions.dll\",\n        \"lib/net40/System.Net.Http.Primitives.dll\",\n        \"lib/net40/System.Net.Http.Primitives.xml\",\n        \"lib/net40/System.Net.Http.WebRequest.dll\",\n        \"lib/net40/System.Net.Http.WebRequest.xml\",\n        \"lib/net40/System.Net.Http.dll\",\n        \"lib/net40/System.Net.Http.xml\",\n        \"lib/net40/ensureRedirect.xml\",\n        \"lib/net45/System.Net.Http.Extensions.XML\",\n        \"lib/net45/System.Net.Http.Extensions.dll\",\n        \"lib/net45/System.Net.Http.Primitives.dll\",\n        \"lib/net45/System.Net.Http.Primitives.xml\",\n        \"lib/net45/ensureRedirect.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Extensions.XML\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Extensions.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Primitives.XML\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Primitives.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net45+win8+wpa81/System.Net.Http.Extensions.XML\",\n        \"lib/portable-net45+win8+wpa81/System.Net.Http.Extensions.dll\",\n        \"lib/portable-net45+win8+wpa81/System.Net.Http.Primitives.dll\",\n        \"lib/portable-net45+win8+wpa81/System.Net.Http.Primitives.xml\",\n        \"lib/portable-net45+win8+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net45+win8/System.Net.Http.Extensions.XML\",\n        \"lib/portable-net45+win8/System.Net.Http.Extensions.dll\",\n        \"lib/portable-net45+win8/System.Net.Http.Primitives.dll\",\n        \"lib/portable-net45+win8/System.Net.Http.Primitives.xml\",\n        \"lib/portable-net45+win8/ensureRedirect.xml\",\n        \"lib/sl4-windowsphone71/System.Net.Http.Extensions.XML\",\n        \"lib/sl4-windowsphone71/System.Net.Http.Extensions.dll\",\n        \"lib/sl4-windowsphone71/System.Net.Http.Primitives.XML\",\n        \"lib/sl4-windowsphone71/System.Net.Http.Primitives.dll\",\n        \"lib/sl4-windowsphone71/System.Net.Http.dll\",\n        \"lib/sl4-windowsphone71/System.Net.Http.xml\",\n        \"lib/win8/System.Net.Http.Extensions.XML\",\n        \"lib/win8/System.Net.Http.Extensions.dll\",\n        \"lib/win8/System.Net.Http.Primitives.dll\",\n        \"lib/win8/System.Net.Http.Primitives.xml\",\n        \"lib/wpa81/System.Net.Http.Extensions.XML\",\n        \"lib/wpa81/System.Net.Http.Extensions.dll\",\n        \"lib/wpa81/System.Net.Http.Primitives.dll\",\n        \"lib/wpa81/System.Net.Http.Primitives.xml\"\n      ]\n    },\n    \"Microsoft.NETCore/5.0.2\": {\n      \"sha512\": \"wHb/fpL+6IxrZBAL2BwRJmj51RwYr3TVcnw5KIsxUtqLxjsqgasTbBmE9kZPAlhhljnt+m2EYMc7vcFuAhGNqA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.NETCore.5.0.2.nupkg.sha512\",\n        \"Microsoft.NETCore.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\"\n      ]\n    },\n    \"Microsoft.NETCore.Jit/1.0.3\": {\n      \"sha512\": \"/l8xYwtoJrFSx9zMWRClaKrgR+BTstCD1E5P90ADgiwH0GwlEqVhLoFIrsXpYj0j9vCB/fzOq7D/ZzuCbtmrTQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.NETCore.Jit.1.0.3.nupkg.sha512\",\n        \"Microsoft.NETCore.Jit.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Platforms/1.0.1\": {\n      \"sha512\": \"mkZFCSzkvORyFJAf4xx0g6HgPUdwd/FqtJ+2Y0x3zPR987AOutHyY1F6XfNxRN1I2MJtmz00L8BxAFfd+Pnldw==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.Platforms/1.0.1\",\n      \"files\": [\n        \"Microsoft.NETCore.Platforms.1.0.1.nupkg.sha512\",\n        \"Microsoft.NETCore.Platforms.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/_._\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n      \"sha512\": \"sR4m1GQ8Tbg+Xdbf8Y8yC+LXKSUJUVe/B5vckCAU9Jd5MYf84gC1D0u2YeA72B4WjeWewCyHRB20ddA8hyLmqQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.NETCore.Portable.Compatibility.1.0.2.nupkg.sha512\",\n        \"Microsoft.NETCore.Portable.Compatibility.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"lib/netcore50/System.Core.dll\",\n        \"lib/netcore50/System.Net.dll\",\n        \"lib/netcore50/System.Numerics.dll\",\n        \"lib/netcore50/System.Runtime.Serialization.dll\",\n        \"lib/netcore50/System.ServiceModel.Web.dll\",\n        \"lib/netcore50/System.ServiceModel.dll\",\n        \"lib/netcore50/System.Windows.dll\",\n        \"lib/netcore50/System.Xml.Linq.dll\",\n        \"lib/netcore50/System.Xml.Serialization.dll\",\n        \"lib/netcore50/System.Xml.dll\",\n        \"lib/netcore50/System.dll\",\n        \"lib/netstandard1.0/System.ComponentModel.DataAnnotations.dll\",\n        \"lib/netstandard1.0/System.Core.dll\",\n        \"lib/netstandard1.0/System.Net.dll\",\n        \"lib/netstandard1.0/System.Numerics.dll\",\n        \"lib/netstandard1.0/System.Runtime.Serialization.dll\",\n        \"lib/netstandard1.0/System.ServiceModel.Web.dll\",\n        \"lib/netstandard1.0/System.ServiceModel.dll\",\n        \"lib/netstandard1.0/System.Windows.dll\",\n        \"lib/netstandard1.0/System.Xml.Linq.dll\",\n        \"lib/netstandard1.0/System.Xml.Serialization.dll\",\n        \"lib/netstandard1.0/System.Xml.dll\",\n        \"lib/netstandard1.0/System.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"ref/netcore50/System.Core.dll\",\n        \"ref/netcore50/System.Net.dll\",\n        \"ref/netcore50/System.Numerics.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.dll\",\n        \"ref/netcore50/System.ServiceModel.Web.dll\",\n        \"ref/netcore50/System.ServiceModel.dll\",\n        \"ref/netcore50/System.Windows.dll\",\n        \"ref/netcore50/System.Xml.Linq.dll\",\n        \"ref/netcore50/System.Xml.Serialization.dll\",\n        \"ref/netcore50/System.Xml.dll\",\n        \"ref/netcore50/System.dll\",\n        \"ref/netcore50/mscorlib.dll\",\n        \"ref/netstandard1.0/System.ComponentModel.DataAnnotations.dll\",\n        \"ref/netstandard1.0/System.Core.dll\",\n        \"ref/netstandard1.0/System.Net.dll\",\n        \"ref/netstandard1.0/System.Numerics.dll\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.Web.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.dll\",\n        \"ref/netstandard1.0/System.Windows.dll\",\n        \"ref/netstandard1.0/System.Xml.Linq.dll\",\n        \"ref/netstandard1.0/System.Xml.Serialization.dll\",\n        \"ref/netstandard1.0/System.Xml.dll\",\n        \"ref/netstandard1.0/System.dll\",\n        \"ref/netstandard1.0/mscorlib.dll\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"runtimes/aot/lib/netcore50/System.Core.dll\",\n        \"runtimes/aot/lib/netcore50/System.Net.dll\",\n        \"runtimes/aot/lib/netcore50/System.Numerics.dll\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\",\n        \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\",\n        \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\",\n        \"runtimes/aot/lib/netcore50/System.Windows.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.dll\",\n        \"runtimes/aot/lib/netcore50/System.dll\",\n        \"runtimes/aot/lib/netcore50/mscorlib.dll\"\n      ]\n    },\n    \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n      \"sha512\": \"tjD5r9Lxy+MD+YRJcuds5+sT+xGHkVt2Hb5LfLZIgkFmwUewBRPm/42UXi4oxhV1OIdRtt4ymwsiuFCwT16T9w==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.NETCore.Runtime.CoreCLR.1.0.3.nupkg.sha512\",\n        \"Microsoft.NETCore.Runtime.CoreCLR.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Targets/1.0.2\": {\n      \"sha512\": \"yk4GtuNbFz2sxA5NNIp2bnOwGZVlB4U+F4gWy5YnMEKmGzzJfQ4wg7zQUx334+WMQ5PiQEuS4UuOpsW+V0PzVg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.NETCore.Targets.1.0.2.nupkg.sha512\",\n        \"Microsoft.NETCore.Targets.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/_._\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n      \"sha512\": \"9UHv2YObWmcF8gqtBoDC4UW5gdHzFRtaZ5KtB9QKvCy+NC9LH1DMYyOI/ltupjVZlwYEulj3msjBXys9/QI6nw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Microsoft.NETCore.UniversalWindowsPlatform.5.2.2.nupkg.sha512\",\n        \"Microsoft.NETCore.UniversalWindowsPlatform.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\"\n      ]\n    },\n    \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n      \"sha512\": \"l4KtgtXhio03COnf9W6ywNK438XLTmXK0ODQJsHOXUpGdNXxnmaZk+dA/RQjve9sAgg9JtdWPTKeRFLQsM6xgw==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.Windows.ApiSets/1.0.1\",\n      \"files\": [\n        \"Microsoft.NETCore.Windows.ApiSets.1.0.1.nupkg.sha512\",\n        \"Microsoft.NETCore.Windows.ApiSets.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.VisualBasic/10.0.1\": {\n      \"sha512\": \"g0toSmwc+DVYDpAQSVYs9gNhgrCtkSZ+Y8+x3OKYH5UGbAuzEaAZ/exoRttqGaLgMTSg5c5DS0a4rshkc79W6g==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.VisualBasic/10.0.1\",\n      \"files\": [\n        \"Microsoft.VisualBasic.10.0.1.nupkg.sha512\",\n        \"Microsoft.VisualBasic.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/Microsoft.VisualBasic.dll\",\n        \"lib/netstandard1.3/Microsoft.VisualBasic.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/Microsoft.VisualBasic.dll\",\n        \"ref/netcore50/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/de/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/es/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/fr/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/it/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/ja/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/ko/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/ru/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/zh-hans/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/zh-hant/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/Microsoft.VisualBasic.dll\",\n        \"ref/netstandard1.1/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/de/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/es/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/fr/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/it/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/ja/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/ko/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/ru/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/zh-hans/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/zh-hant/Microsoft.VisualBasic.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"Microsoft.Win32.Primitives/4.0.1\": {\n      \"sha512\": \"WKeQQypyEn4rSdl+GpSARGmCwnCZEgPG7eZknzuTR4Kk4txmHk7xL8Ek5xoVwgwoNghaa180ACGghMG8rK1hrA==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Win32.Primitives/4.0.1\",\n      \"files\": [\n        \"Microsoft.Win32.Primitives.4.0.1.nupkg.sha512\",\n        \"Microsoft.Win32.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/Microsoft.Win32.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/Microsoft.Win32.Primitives.dll\",\n        \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\",\n        \"ref/netstandard1.3/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"Newtonsoft.Json/9.0.1\": {\n      \"sha512\": \"U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"Newtonsoft.Json.9.0.1.nupkg.sha512\",\n        \"Newtonsoft.Json.nuspec\",\n        \"lib/net20/Newtonsoft.Json.dll\",\n        \"lib/net20/Newtonsoft.Json.xml\",\n        \"lib/net35/Newtonsoft.Json.dll\",\n        \"lib/net35/Newtonsoft.Json.xml\",\n        \"lib/net40/Newtonsoft.Json.dll\",\n        \"lib/net40/Newtonsoft.Json.xml\",\n        \"lib/net45/Newtonsoft.Json.dll\",\n        \"lib/net45/Newtonsoft.Json.xml\",\n        \"lib/netstandard1.0/Newtonsoft.Json.dll\",\n        \"lib/netstandard1.0/Newtonsoft.Json.xml\",\n        \"lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll\",\n        \"lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml\",\n        \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\",\n        \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml\",\n        \"tools/install.ps1\"\n      ]\n    },\n    \"PCLCrypto/1.0.86\": {\n      \"sha512\": \"rcmxw9Bb5GuEW1ubVBegCCbR7YU8Ptr8tGfmyVHBnK+UQlk29TuBryHXmsTglt64ZNDXpi8rWl8x5l55JylpOw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"PCLCrypto.1.0.86.nupkg.sha512\",\n        \"PCLCrypto.nuspec\",\n        \"lib/Xamarin.iOS/PCLCrypto.dll\",\n        \"lib/Xamarin.iOS/PCLCrypto.xml\",\n        \"lib/monoandroid/PCLCrypto.dll\",\n        \"lib/monoandroid/PCLCrypto.xml\",\n        \"lib/monotouch/PCLCrypto.dll\",\n        \"lib/monotouch/PCLCrypto.xml\",\n        \"lib/net40-Client/PCLCrypto.dll\",\n        \"lib/net40-Client/PCLCrypto.xml\",\n        \"lib/portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/PCLCrypto.dll\",\n        \"lib/portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/PCLCrypto.xml\",\n        \"lib/sl5/PCLCrypto.dll\",\n        \"lib/sl5/PCLCrypto.xml\",\n        \"lib/win81/PCLCrypto.dll\",\n        \"lib/win81/PCLCrypto.pri\",\n        \"lib/win81/PCLCrypto.xml\",\n        \"lib/wp8/PCLCrypto.dll\",\n        \"lib/wp8/PCLCrypto.xml\",\n        \"lib/wpa81/PCLCrypto.dll\",\n        \"lib/wpa81/PCLCrypto.pri\",\n        \"lib/wpa81/PCLCrypto.xml\"\n      ]\n    },\n    \"runtime.any.System.Collections/4.0.11\": {\n      \"sha512\": \"MTBT/hu37Dm2042H1JjWSaMd8w+oPJ4ZWAbDNeLzC4ZHdqwHloP07KvD6+4VbwipDqY5obfFFy90mZYCaPDh5Q==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Collections.dll\",\n        \"lib/netstandard1.3/System.Collections.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Collections.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Collections.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Diagnostics.Tools/4.0.1\": {\n      \"sha512\": \"GJkwEYbKw7qG29QrKMIEEZEGWxC+DQboeObhaM6WPKKgwk9Od8Qt8lWhr/+5xW3FF60TdMfjjUP8Zu6Y41wIkA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Diagnostics.Tools.dll\",\n        \"lib/netstandard1.3/System.Diagnostics.Tools.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Diagnostics.Tools.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Diagnostics.Tools.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Diagnostics.Tracing/4.1.0\": {\n      \"sha512\": \"x7VLOl/v504jX97YEMePamZRHA3cJPOFY/xLw9pgjDr0Q3IQIZ+0K4oiKKtQrfMYSvOAntkzw+EvvQ+OWGRL9w==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Diagnostics.Tracing.dll\",\n        \"lib/netstandard1.5/System.Diagnostics.Tracing.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Diagnostics.Tracing.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.Diagnostics.Tracing.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Globalization/4.0.11\": {\n      \"sha512\": \"cjJ3+b83Tpf02AIc5FkGj1vzY68RnsVHiGLrOCc5n7gpNVg1JnZrt1mcY99ykQ/wr3nCdvSP2pYvdxbYsxZdlA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Globalization.dll\",\n        \"lib/netstandard1.3/System.Globalization.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Globalization.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Globalization.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Globalization.Calendars/4.0.1\": {\n      \"sha512\": \"SAdVwIKKKR3VG9NMKEgF+wbAKkQA60YOb4G9YGj4EUPsuwS+pH7FjjG6qQeXDyOaxUcrlRzI3LHcGloX/GHBxQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net/_._\",\n        \"lib/netcore50/System.Globalization.Calendars.dll\",\n        \"lib/netstandard1.3/System.Globalization.Calendars.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Globalization.Calendars.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Globalization.Calendars.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.IO/4.1.0\": {\n      \"sha512\": \"sC7zKVdhYQEtrREKBJf4zkUwNdi6fsbkzrhJLDIAxIxD+YA5PABAQJps13zxpA1Ke3AgzOA9551JDymAfmRuTg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.IO.dll\",\n        \"lib/netstandard1.5/System.IO.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.IO.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.IO.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Reflection/4.1.0\": {\n      \"sha512\": \"eKq6/GprEINYbugjWf2V9cjkyuAH/y+Raed28PJQ35zd30oR/pvKEHNN8JbPAgzYpI09TCd1yuhXN/Rb8PM8GA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.dll\",\n        \"lib/netstandard1.5/System.Reflection.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Reflection.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.Reflection.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Reflection.Extensions/4.0.1\": {\n      \"sha512\": \"ajAAD1MHX4KSNq/CW0d1IMlq5seVTuzTMMhA5EFWagMejfamzljIL92/wD19eK/1mPuux5nb16K4PFBYQrZOrQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Extensions.dll\",\n        \"lib/netstandard1.3/System.Reflection.Extensions.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Reflection.Extensions.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Reflection.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Reflection.Primitives/4.0.1\": {\n      \"sha512\": \"oKs78h11WDhCGFNpxT26IqL8Oo8OBzr6YOW0WG+R14FGaB/WDM5UHiK/jr6dipdnO8Wxlg/U48ka6uaPM6l53w==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Primitives.dll\",\n        \"lib/netstandard1.3/System.Reflection.Primitives.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Reflection.Primitives.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Reflection.Primitives.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Resources.ResourceManager/4.0.1\": {\n      \"sha512\": \"hes7WFTOERydB/hLGmLj66NbK7I2AnjLHEeTpf7EmPZOIrRWeuC1dPoFYC9XRVIVzfCcOZI7oXM7KXe4vakt9Q==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Resources.ResourceManager.dll\",\n        \"lib/netstandard1.3/System.Resources.ResourceManager.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Resources.ResourceManager.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Resources.ResourceManager.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Runtime/4.1.0\": {\n      \"sha512\": \"0QVLwEGXROl0Trt2XosEjly9uqXcjHKStoZyZG9twJYFZJqq2JJXcBMXl/fnyQAgYEEODV8lUsU+t7NCCY0nUQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.dll\",\n        \"lib/netstandard1.5/System.Runtime.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Runtime.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.Runtime.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Runtime.Handles/4.0.1\": {\n      \"sha512\": \"MZ5fVmAE/3S11wt3hPfn3RsAHppj5gUz+VZuLQkRjLCMSlX0krOI601IZsMWc3CoxUb+wMt3gZVb/mEjblw6Mg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netstandard1.3/System.Runtime.Handles.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Runtime.Handles.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Runtime.Handles.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Runtime.InteropServices/4.1.0\": {\n      \"sha512\": \"gmibdZ9x/eB6hf5le33DWLCQbhcIUD2vqoc0tBgqSUWlB8YjEzVJXyTPDO+ypKLlL90Kv3ZDrK7yPCNqcyhqCA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.InteropServices.dll\",\n        \"lib/netstandard1.5/System.Runtime.InteropServices.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Runtime.InteropServices.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.Runtime.InteropServices.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Text.Encoding/4.0.11\": {\n      \"sha512\": \"uweRMRDD4O8Iy8m4h1cJvoFIHNCzHMpipuxkRNAMML6EMzAhDCQTjgvRwki7PlUg8RGY1ctXnBZjT1rXvMZuRw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Text.Encoding.dll\",\n        \"lib/netstandard1.3/System.Text.Encoding.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Text.Encoding.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Text.Encoding.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Text.Encoding.Extensions/4.0.11\": {\n      \"sha512\": \"3n6qbf59NMgA7F9S+q9gmqFV7T/CtAZw2pa6aprfdZxUinR2mDvVchsgthoacpQvAQu6e3ok8WWeypSu/yjXrA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Text.Encoding.Extensions.dll\",\n        \"lib/netstandard1.3/System.Text.Encoding.Extensions.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Text.Encoding.Extensions.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Text.Encoding.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Threading.Tasks/4.0.11\": {\n      \"sha512\": \"CEvWO0IwtdCAsmCb9aAl59psy0hzx+whYh4DzbjNb0GsQmxw/G7bZEcrBtE8c9QupNVbu87c2xaMi6p4r1bpjA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.Tasks.dll\",\n        \"lib/netstandard1.3/System.Threading.Tasks.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Threading.Tasks.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Threading.Tasks.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Threading.Timer/4.0.1\": {\n      \"sha512\": \"C9d5eRAW/gd5iBZF78JRcwjvjCDRfU0oB48/wx/XbKnONZU4k6hWneTT4M7v3TmVqPFl7UDcLzKCtQ/24efOzw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.Timer.dll\",\n        \"lib/netstandard1.3/System.Threading.Timer.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Threading.Timer.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Threading.Timer.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.aot.System.Collections/4.0.10\": {\n      \"sha512\": \"JaNCSMYW8RoPTrzlqRp3IsPdbSp8IhnNQ3qeKVGtBggT/9bZFz6FjfU+YG3NEiy/yPo03NMQ5EtXMT2MCIrV1A==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Collections.4.0.10.nupkg.sha512\",\n        \"runtime.aot.System.Collections.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Collections.dll\"\n      ]\n    },\n    \"runtime.aot.System.Diagnostics.Tools/4.0.1\": {\n      \"sha512\": \"29xXSZEpRNd2wJsEXX40CEaWhhQjfqFGal4f1DuqY7Gd7+ARcV7zJK9aKRX9SkHnQfx3qSm3+D/VWBPI7pgEYQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Diagnostics.Tools.4.0.1.nupkg.sha512\",\n        \"runtime.aot.System.Diagnostics.Tools.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.Tools.dll\"\n      ]\n    },\n    \"runtime.aot.System.Diagnostics.Tracing/4.0.20\": {\n      \"sha512\": \"1zaLtCd4/msBeR4hDRjywdONAqnMl+mfsYO2er+kj9HEMQfrItSdApImXakl3CTRqb1S8upuBru2v/SLEY2vtg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Diagnostics.Tracing.4.0.20.nupkg.sha512\",\n        \"runtime.aot.System.Diagnostics.Tracing.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.Tracing.dll\"\n      ]\n    },\n    \"runtime.aot.System.Globalization/4.0.11\": {\n      \"sha512\": \"eEPSEA2yUp1HLNlp8Cve/J6UpN2mFnWUJhjqVEw+d+JUkWrzE2+ebl+0kf91Nwls4Mnia0GkjRRDiDKt8XeAAQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Globalization.4.0.11.nupkg.sha512\",\n        \"runtime.aot.System.Globalization.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Globalization.dll\"\n      ]\n    },\n    \"runtime.aot.System.Globalization.Calendars/4.0.1\": {\n      \"sha512\": \"nXHH2LS832GzQMr//792HTXyuUGlREv/8IZ24USS+q8QobtPwAis0mDumSoSd6z+IoiFGK7ol1Ev/ab+dRiVTg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Globalization.Calendars.4.0.1.nupkg.sha512\",\n        \"runtime.aot.System.Globalization.Calendars.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Globalization.Calendars.dll\"\n      ]\n    },\n    \"runtime.aot.System.IO/4.1.0\": {\n      \"sha512\": \"zI0PBKDpAvTNbxTgcZutcb50D7jHJaC9vQLxKhUBn4gS7VHQqnZjqyEqXBxc4rnx6rdZzlMADNZAMUWNW42Sxw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.IO.4.1.0.nupkg.sha512\",\n        \"runtime.aot.System.IO.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.IO.dll\",\n        \"runtimes/aot/lib/netstandard1.3/System.IO.dll\"\n      ]\n    },\n    \"runtime.aot.System.Reflection/4.0.10\": {\n      \"sha512\": \"vrUbKdxXRNkmIsiMFP03cKLmzGoN7ObqU7rpjr/9ABL2ovHO7vyFhVfkpUXg4uX94ixgVaytbISLe+yxFQtl8w==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Reflection.4.0.10.nupkg.sha512\",\n        \"runtime.aot.System.Reflection.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.dll\"\n      ]\n    },\n    \"runtime.aot.System.Reflection.Extensions/4.0.0\": {\n      \"sha512\": \"WWw59m7k4XZLWN6XbptSR0TOdrLgwh5XEBj77QaUZQ+PcmvSzdJ79Jfp76ncQb5SzJZVu5ByZ7ufWX2bIeDpFQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Reflection.Extensions.4.0.0.nupkg.sha512\",\n        \"runtime.aot.System.Reflection.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.Extensions.dll\"\n      ]\n    },\n    \"runtime.aot.System.Reflection.Primitives/4.0.0\": {\n      \"sha512\": \"826QEny5/GvZ270fhG70vnzYlFnTxNAHiHfyRS2zMZ5X1MpAsiW0y0XHAJjq7MrrnRjyG3qHF0zqytpNPJLaFQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Reflection.Primitives.4.0.0.nupkg.sha512\",\n        \"runtime.aot.System.Reflection.Primitives.nuspec\",\n        \"runtimes/aot/lib/MonoAndroid10/_._\",\n        \"runtimes/aot/lib/MonoTouch10/_._\",\n        \"runtimes/aot/lib/net45/_._\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.Primitives.dll\",\n        \"runtimes/aot/lib/win8/_._\",\n        \"runtimes/aot/lib/wp80/_._\",\n        \"runtimes/aot/lib/wpa81/_._\",\n        \"runtimes/aot/lib/xamarinios10/_._\",\n        \"runtimes/aot/lib/xamarinmac20/_._\",\n        \"runtimes/aot/lib/xamarintvos10/_._\",\n        \"runtimes/aot/lib/xamarinwatchos10/_._\"\n      ]\n    },\n    \"runtime.aot.System.Resources.ResourceManager/4.0.0\": {\n      \"sha512\": \"j+xK1M/oJ5ll7WT6UD9oQ/YUESFtT0YN3th1TIliJjK5J0Ek4vDPTMDQceu3WFy7aQOThDmIxjkAVSxZV7OWIA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Resources.ResourceManager.4.0.0.nupkg.sha512\",\n        \"runtime.aot.System.Resources.ResourceManager.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Resources.ResourceManager.dll\"\n      ]\n    },\n    \"runtime.aot.System.Runtime/4.0.20\": {\n      \"sha512\": \"ax423Smc+2Bcm8Go70iwj30hpjUIuahVtBAqlGXzhOoRwRR4vlEN3OGp8qTecWki3ZhGrbOXy+A1U89V3DzG/w==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Runtime.4.0.20.nupkg.sha512\",\n        \"runtime.aot.System.Runtime.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.dll\"\n      ]\n    },\n    \"runtime.aot.System.Runtime.Handles/4.0.1\": {\n      \"sha512\": \"UPzDQF5lwQ+BN+B1Zu2u3b5YQvIo4A96N9v5Uwo4VL1hWEf4STqiZgRogumy21TeRLjtEpF7I5JqIDhcc3OMCw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Runtime.Handles.4.0.1.nupkg.sha512\",\n        \"runtime.aot.System.Runtime.Handles.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Handles.dll\"\n      ]\n    },\n    \"runtime.aot.System.Runtime.InteropServices/4.0.20\": {\n      \"sha512\": \"s4P2Jlf6ev4RgeLjNIq4hXsESIuE6t0Ljf+KVfRGDvrZ+yJuoPjwS3zMkm2SPj5Qif1HZ9vskKTdHPtk1B89Bw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Runtime.InteropServices.4.0.20.nupkg.sha512\",\n        \"runtime.aot.System.Runtime.InteropServices.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.dll\"\n      ]\n    },\n    \"runtime.aot.System.Text.Encoding/4.0.11\": {\n      \"sha512\": \"mUltrQRF5trt9DvIDPxV5E3girWcXlJgQBnYHfy1b8RQU2Ipob6xzCqlDnnECa8+FdhD8C/A7s7krxvHWcJ/pw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Text.Encoding.4.0.11.nupkg.sha512\",\n        \"runtime.aot.System.Text.Encoding.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Text.Encoding.dll\"\n      ]\n    },\n    \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\": {\n      \"sha512\": \"N6XCU9y8ZC51LfxnE5tgNFy+3emNQTRY6W3NeLqlHLcina5vbChsSsPDOCpEIGMTOMxbODe5HtWYbzaOOSFtGg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Text.Encoding.Extensions.4.0.11.nupkg.sha512\",\n        \"runtime.aot.System.Text.Encoding.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Text.Encoding.Extensions.dll\"\n      ]\n    },\n    \"runtime.aot.System.Threading.Tasks/4.0.11\": {\n      \"sha512\": \"55coohhmT0Usdq536a54bqGK4ij2D1ZTaJo8lQ3k/piwVx+Dl2r3xmDGsims+jVimQVayU2tXptKSAn9nhgRfA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Threading.Tasks.4.0.11.nupkg.sha512\",\n        \"runtime.aot.System.Threading.Tasks.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Threading.Tasks.dll\"\n      ]\n    },\n    \"runtime.aot.System.Threading.Timer/4.0.1\": {\n      \"sha512\": \"c4IE4f4MBSzr3b8uSCIpqc70uXbkNJx9oAASbEMhFGdyxljpwz14xYR5hp8AgnF4msF8tPL6zgOf7lDlSo0j/g==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Threading.Timer.4.0.1.nupkg.sha512\",\n        \"runtime.aot.System.Threading.Timer.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Threading.Timer.dll\"\n      ]\n    },\n    \"runtime.native.System.IO.Compression/4.1.0\": {\n      \"sha512\": \"8tm5jQhvrdzSuQDEr366HN7lDWnut+TMJIxRBy8sW6XgnEN4j1DXHSxay4bPYkpJqiRaZ74A+6G8xoBQfFeySQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.native.System.IO.Compression/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/_._\",\n        \"runtime.native.System.IO.Compression.4.1.0.nupkg.sha512\",\n        \"runtime.native.System.IO.Compression.nuspec\"\n      ]\n    },\n    \"runtime.native.System.Security.Cryptography/4.0.0\": {\n      \"sha512\": \"C5MLmsqD0xEF+nZFh42cmVji0b7cKLmcOqOJOgqOTr8FZkLY3xp/kWFpfZj52vMElXLMjlYL3rRGYCLbfWX5lw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.native.System.Security.Cryptography/4.0.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/_._\",\n        \"runtime.native.System.Security.Cryptography.4.0.0.nupkg.sha512\",\n        \"runtime.native.System.Security.Cryptography.nuspec\"\n      ]\n    },\n    \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n      \"sha512\": \"0alFxXfT7M+xhhgMkNzG/Mnfii3o+DGQV9gkmhfLr6wsRPNxlIHdz4yQC8ksHqqmOu1Sq0FD9FxrSQyGo+8syA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.Microsoft.Win32.Primitives.4.0.1.nupkg.sha512\",\n        \"runtime.win.Microsoft.Win32.Primitives.nuspec\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\"\n      ]\n    },\n    \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n      \"sha512\": \"q8Fm954ezFLfmG0tHNUmsNy+qaEjWtWqYhWh3cGSVjtJwkcBsfigWCh+fdaIVZ9K7m+6lgb3ElL2BBU6G+RijA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.Diagnostics.Debug.4.0.11.nupkg.sha512\",\n        \"runtime.win.System.Diagnostics.Debug.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.Debug.dll\",\n        \"runtimes/win/lib/net45/_._\",\n        \"runtimes/win/lib/netcore50/System.Diagnostics.Debug.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Diagnostics.Debug.dll\",\n        \"runtimes/win/lib/win8/_._\",\n        \"runtimes/win/lib/wp80/_._\",\n        \"runtimes/win/lib/wpa81/_._\"\n      ]\n    },\n    \"runtime.win.System.IO.FileSystem/4.0.1\": {\n      \"sha512\": \"4FG9RK8J5CsUpXjkiZWS07aJu+H+vTIeQkFKXyjwibfBedUM168SCEaqV3Bjkbv4b3pUuf5Gy1RaqX/HnmKlZw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.IO.FileSystem.4.0.1.nupkg.sha512\",\n        \"runtime.win.System.IO.FileSystem.nuspec\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.IO.FileSystem.dll\",\n        \"runtimes/win/lib/win8/_._\",\n        \"runtimes/win/lib/wp8/_._\",\n        \"runtimes/win/lib/wpa81/_._\"\n      ]\n    },\n    \"runtime.win.System.Net.Primitives/4.0.11\": {\n      \"sha512\": \"36AsEkT9p+4cLHHh7sgSIOPWWeTKMh/DOoeQCzJmaLM8rtD9YaRZMmXGynf77ZP5KoXWwA4Y3aGbntrPbmmlcA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.Net.Primitives.4.0.11.nupkg.sha512\",\n        \"runtime.win.System.Net.Primitives.nuspec\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.Primitives.dll\"\n      ]\n    },\n    \"runtime.win.System.Net.Sockets/4.1.0\": {\n      \"sha512\": \"BviTpQJbl+T/XVkwLw5xupFq9WXKru9KM/2U/ijmLuO2XEeMgdwk3g0e9sHWqvbrLvVT9yDf+SpbRXM1LNxTvA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.Net.Sockets.4.1.0.nupkg.sha512\",\n        \"runtime.win.System.Net.Sockets.nuspec\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.Sockets.dll\"\n      ]\n    },\n    \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n      \"sha512\": \"U3F/M+djxVXuKJaoW2AGpAE2ZWAp372140jsX4d/ctqki+Qb61HuyQY4yUPSA/gdKGbbq6HXzZ6oxB6/G3MYPA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.Runtime.Extensions.4.1.0.nupkg.sha512\",\n        \"runtime.win.System.Runtime.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Extensions.dll\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netcore50/System.Runtime.Extensions.dll\",\n        \"runtimes/win/lib/netstandard1.5/System.Runtime.Extensions.dll\"\n      ]\n    },\n    \"runtime.win10-arm-aot.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"fzsKrHHfrv6wpLE1sxAHcWoB9vpAyoNjxVTnBJkzeXow2ZivR1H7wdpnsoKXIIb0d2EzYrrezHeHy4gI6tqqTA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win10-arm-aot.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win10-arm-aot.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win10-arm-aot/lib/netcore50/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win10-x64-aot.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"qr2+iGSxqUjVW3eATYzV4GHN6qQOu5cDTzCGf7VZ4aaxXGv2P/XVk9BkQ6WdPCDitEdIuWmtFYIFvGdvY/qN6Q==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win10-x64-aot.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win10-x64-aot.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win10-x64-aot/lib/netcore50/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win10-x86-aot.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"c3yeCSi1emskJMjeqbX6B+neZRozhYk4et/Lv/6s05Yz30jcwY2Mj5PAr7mvmlAZtP5+HLbxz+Ux+RNNM/1GUA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win10-x86-aot.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win10-x86-aot.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win10-x86-aot/lib/netcore50/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win7-x64.Microsoft.NETCore.Jit/1.0.3\": {\n      \"sha512\": \"pXLZyhN1gFNVjmmZloXzGxbdZyUjkiHKpojzxUxCZ2U+T0jD6ooK3rYhwqFzlSjVKUAdQ9QNDoixxnEr3/5VWw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win7-x64.Microsoft.NETCore.Jit.1.0.3.nupkg.sha512\",\n        \"runtime.win7-x64.Microsoft.NETCore.Jit.nuspec\",\n        \"runtimes/win7-x64-aot/native/_._\",\n        \"runtimes/win7-x64/native/clrjit.dll\"\n      ]\n    },\n    \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n      \"sha512\": \"YaXA5RVLCYIcV1N31A7MJhWJnNkNfGnyRBNH1yYilUrBDvzMxNsbXX2pD7owWsC/go/4LRwbHbdWWXwHowKNvw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard1.0/_._\",\n        \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512\",\n        \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR.nuspec\",\n        \"runtimes/win7-x64-aot/lib/netstandard1.0/_._\",\n        \"runtimes/win7-x64-aot/native/_._\",\n        \"runtimes/win7-x64/lib/netstandard1.0/System.Private.CoreLib.dll\",\n        \"runtimes/win7-x64/lib/netstandard1.0/mscorlib.dll\",\n        \"runtimes/win7-x64/native/System.Private.CoreLib.ni.dll\",\n        \"runtimes/win7-x64/native/clretwrc.dll\",\n        \"runtimes/win7-x64/native/coreclr.dll\",\n        \"runtimes/win7-x64/native/dbgshim.dll\",\n        \"runtimes/win7-x64/native/mscordaccore.dll\",\n        \"runtimes/win7-x64/native/mscordbi.dll\",\n        \"runtimes/win7-x64/native/mscorlib.ni.dll\",\n        \"runtimes/win7-x64/native/mscorrc.debug.dll\",\n        \"runtimes/win7-x64/native/mscorrc.dll\",\n        \"runtimes/win7-x64/native/sos.dll\",\n        \"tools/crossgen.exe\"\n      ]\n    },\n    \"runtime.win7-x64.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"4LLiT65shsAsGc+mUKV3vUw1SXfOaQWGWoblOYpYuZJSVkA3/LPx92M2GSYyn2sHR/XOFtY5TZmxJKgGlZOLFw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win7-x64.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win7-x64.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win7-x64/native/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win7-x86.Microsoft.NETCore.Jit/1.0.3\": {\n      \"sha512\": \"bU1EUneMeB6JltMNDCekL7nP1dluxOlnUgmAFx8EGsD6a+lgaYoDLk7V7F3H5Zpw/LeCxl5XmZqgPObGAlW7Dg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win7-x86.Microsoft.NETCore.Jit.1.0.3.nupkg.sha512\",\n        \"runtime.win7-x86.Microsoft.NETCore.Jit.nuspec\",\n        \"runtimes/win7-x86-aot/native/_._\",\n        \"runtimes/win7-x86/native/clrjit.dll\"\n      ]\n    },\n    \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n      \"sha512\": \"80Jj8QlMLAnTq+BDhoHBnSNXRKqVjjZM9VjHcpw9/F98cBmh80rBdbnM0AAr54htjhzupYvwLqwuKnlzxec04A==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard1.0/_._\",\n        \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512\",\n        \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR.nuspec\",\n        \"runtimes/win7-x86-aot/lib/netstandard1.0/_._\",\n        \"runtimes/win7-x86-aot/native/_._\",\n        \"runtimes/win7-x86/lib/netstandard1.0/System.Private.CoreLib.dll\",\n        \"runtimes/win7-x86/lib/netstandard1.0/mscorlib.dll\",\n        \"runtimes/win7-x86/native/System.Private.CoreLib.ni.dll\",\n        \"runtimes/win7-x86/native/clretwrc.dll\",\n        \"runtimes/win7-x86/native/coreclr.dll\",\n        \"runtimes/win7-x86/native/dbgshim.dll\",\n        \"runtimes/win7-x86/native/mscordaccore.dll\",\n        \"runtimes/win7-x86/native/mscordbi.dll\",\n        \"runtimes/win7-x86/native/mscorlib.ni.dll\",\n        \"runtimes/win7-x86/native/mscorrc.debug.dll\",\n        \"runtimes/win7-x86/native/mscorrc.dll\",\n        \"runtimes/win7-x86/native/sos.dll\",\n        \"tools/crossgen.exe\"\n      ]\n    },\n    \"runtime.win7-x86.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"3jgpS2GhE76QqeoTxCakx6jlX7EIeXvxHnFFDa03Jf++s9+EGnRD38R6GDb1ism73xo6IHe0iev7zd5y+oD3BA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win7-x86.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win7-x86.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win7-x86/native/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win7.System.Private.Uri/4.0.2\": {\n      \"sha512\": \"N0nsmkEe+e3fl28KZ9LrHQ06XvhTC4FGyWacInV90h3pmty2s0fnG0GZ41rQw8d51s+pLcTQ0dKS0eN0xESY7g==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win7.System.Private.Uri.4.0.2.nupkg.sha512\",\n        \"runtime.win7.System.Private.Uri.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Private.Uri.dll\",\n        \"runtimes/win/lib/netcore50/System.Private.Uri.dll\",\n        \"runtimes/win/lib/netstandard1.0/System.Private.Uri.dll\"\n      ]\n    },\n    \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n      \"sha512\": \"0V6sq7Dg0bQPrJtm/Qw5Zu0e7gidnRPLaqUhKIkLYzVn64jkat+JnR6LcezryD3c0Wuva/MdJWYSAaOPq5V/Zw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard1.0/_._\",\n        \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512\",\n        \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR.nuspec\",\n        \"runtimes/win8-arm-aot/lib/netstandard1.0/_._\",\n        \"runtimes/win8-arm-aot/native/_._\",\n        \"runtimes/win8-arm/lib/netstandard1.0/System.Private.CoreLib.dll\",\n        \"runtimes/win8-arm/lib/netstandard1.0/mscorlib.dll\",\n        \"runtimes/win8-arm/native/System.Private.CoreLib.ni.dll\",\n        \"runtimes/win8-arm/native/clretwrc.dll\",\n        \"runtimes/win8-arm/native/coreclr.dll\",\n        \"runtimes/win8-arm/native/dbgshim.dll\",\n        \"runtimes/win8-arm/native/mscordaccore.dll\",\n        \"runtimes/win8-arm/native/mscordbi.dll\",\n        \"runtimes/win8-arm/native/mscorlib.ni.dll\",\n        \"runtimes/win8-arm/native/mscorrc.debug.dll\",\n        \"runtimes/win8-arm/native/mscorrc.dll\",\n        \"runtimes/win8-arm/native/sos.dll\",\n        \"tools/crossgen.exe\",\n        \"tools/sos.dll\"\n      ]\n    },\n    \"runtime.win8-arm.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"EwyUwoJJLeSqfmeZoX9nxKx8Q9pEwX5zLLgSwtdH04+TzUYxaDIaoNqH5hfhoaSl2VoDsHGbEnQ6Y5bXLcWSkA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win8-arm.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win8-arm.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win8-arm/native/clrcompression.dll\"\n      ]\n    },\n    \"System.AppContext/4.1.0\": {\n      \"sha512\": \"065m4cS0FdPdzD9Jusy+5Y8ONECKRmrNKdRTrBY4Dyv9DVBB78ATRlaZAJU1nh5inZ6+pugr9HbXx75OME2+Ug==\",\n      \"type\": \"package\",\n      \"path\": \"System.AppContext/4.1.0\",\n      \"files\": [\n        \"System.AppContext.4.1.0.nupkg.sha512\",\n        \"System.AppContext.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.AppContext.dll\",\n        \"lib/net463/System.AppContext.dll\",\n        \"lib/netcore50/System.AppContext.dll\",\n        \"lib/netstandard1.6/System.AppContext.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.AppContext.dll\",\n        \"ref/net463/System.AppContext.dll\",\n        \"ref/netstandard/_._\",\n        \"ref/netstandard1.3/System.AppContext.dll\",\n        \"ref/netstandard1.3/System.AppContext.xml\",\n        \"ref/netstandard1.3/de/System.AppContext.xml\",\n        \"ref/netstandard1.3/es/System.AppContext.xml\",\n        \"ref/netstandard1.3/fr/System.AppContext.xml\",\n        \"ref/netstandard1.3/it/System.AppContext.xml\",\n        \"ref/netstandard1.3/ja/System.AppContext.xml\",\n        \"ref/netstandard1.3/ko/System.AppContext.xml\",\n        \"ref/netstandard1.3/ru/System.AppContext.xml\",\n        \"ref/netstandard1.3/zh-hans/System.AppContext.xml\",\n        \"ref/netstandard1.3/zh-hant/System.AppContext.xml\",\n        \"ref/netstandard1.6/System.AppContext.dll\",\n        \"ref/netstandard1.6/System.AppContext.xml\",\n        \"ref/netstandard1.6/de/System.AppContext.xml\",\n        \"ref/netstandard1.6/es/System.AppContext.xml\",\n        \"ref/netstandard1.6/fr/System.AppContext.xml\",\n        \"ref/netstandard1.6/it/System.AppContext.xml\",\n        \"ref/netstandard1.6/ja/System.AppContext.xml\",\n        \"ref/netstandard1.6/ko/System.AppContext.xml\",\n        \"ref/netstandard1.6/ru/System.AppContext.xml\",\n        \"ref/netstandard1.6/zh-hans/System.AppContext.xml\",\n        \"ref/netstandard1.6/zh-hant/System.AppContext.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.AppContext.dll\"\n      ]\n    },\n    \"System.Buffers/4.0.0\": {\n      \"sha512\": \"Ekxnj6EiW3/Aa0MhIuvAE72YXRjo57fKdlbxvHnAaGtP4ivaPsjuBCWKEQl6EG0/3WANHbs4g94M0Juoj21waQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Buffers/4.0.0\",\n      \"files\": [\n        \"System.Buffers.4.0.0.nupkg.sha512\",\n        \"System.Buffers.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.1/.xml\",\n        \"lib/netstandard1.1/System.Buffers.dll\"\n      ]\n    },\n    \"System.Collections/4.0.11\": {\n      \"sha512\": \"nhCpV23xO41EXWy1KdfwWogXycduRf82JWuTOF4ThHR/vc/l87c+xFtUTbmAoYvwzURkp9xdk+ziYfQ6CQdy5A==\",\n      \"type\": \"package\",\n      \"path\": \"System.Collections/4.0.11\",\n      \"files\": [\n        \"System.Collections.4.0.11.nupkg.sha512\",\n        \"System.Collections.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Collections.dll\",\n        \"ref/netcore50/System.Collections.xml\",\n        \"ref/netcore50/de/System.Collections.xml\",\n        \"ref/netcore50/es/System.Collections.xml\",\n        \"ref/netcore50/fr/System.Collections.xml\",\n        \"ref/netcore50/it/System.Collections.xml\",\n        \"ref/netcore50/ja/System.Collections.xml\",\n        \"ref/netcore50/ko/System.Collections.xml\",\n        \"ref/netcore50/ru/System.Collections.xml\",\n        \"ref/netcore50/zh-hans/System.Collections.xml\",\n        \"ref/netcore50/zh-hant/System.Collections.xml\",\n        \"ref/netstandard1.0/System.Collections.dll\",\n        \"ref/netstandard1.0/System.Collections.xml\",\n        \"ref/netstandard1.0/de/System.Collections.xml\",\n        \"ref/netstandard1.0/es/System.Collections.xml\",\n        \"ref/netstandard1.0/fr/System.Collections.xml\",\n        \"ref/netstandard1.0/it/System.Collections.xml\",\n        \"ref/netstandard1.0/ja/System.Collections.xml\",\n        \"ref/netstandard1.0/ko/System.Collections.xml\",\n        \"ref/netstandard1.0/ru/System.Collections.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Collections.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Collections.xml\",\n        \"ref/netstandard1.3/System.Collections.dll\",\n        \"ref/netstandard1.3/System.Collections.xml\",\n        \"ref/netstandard1.3/de/System.Collections.xml\",\n        \"ref/netstandard1.3/es/System.Collections.xml\",\n        \"ref/netstandard1.3/fr/System.Collections.xml\",\n        \"ref/netstandard1.3/it/System.Collections.xml\",\n        \"ref/netstandard1.3/ja/System.Collections.xml\",\n        \"ref/netstandard1.3/ko/System.Collections.xml\",\n        \"ref/netstandard1.3/ru/System.Collections.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Collections.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Collections.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Collections.Concurrent/4.0.12\": {\n      \"sha512\": \"8p3ZKVUaCqybDLtI+rVxbJvCAi//Ae1d1DOwbu7OsD+1jhV1LHeIVt1rC631MpF/Za+9TuqtOvfp3CBvpNWisA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Collections.Concurrent/4.0.12\",\n      \"files\": [\n        \"System.Collections.Concurrent.4.0.12.nupkg.sha512\",\n        \"System.Collections.Concurrent.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Collections.Concurrent.dll\",\n        \"lib/netstandard1.3/System.Collections.Concurrent.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Collections.Concurrent.dll\",\n        \"ref/netcore50/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/de/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/es/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/fr/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/it/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/ja/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/ko/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/ru/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/zh-hans/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/zh-hant/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/System.Collections.Concurrent.dll\",\n        \"ref/netstandard1.1/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/de/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/es/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/fr/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/it/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/ja/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/ko/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/ru/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/System.Collections.Concurrent.dll\",\n        \"ref/netstandard1.3/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/de/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/es/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/fr/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/it/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/ja/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/ko/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/ru/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Collections.Immutable/1.2.0\": {\n      \"sha512\": \"cmmcdedHB75UEhPGJWQ0AdBniMm3hExrd0IbqhlypVE9K8uHitPyPVrhsipa3ZUULnJXkIX81+di999NIsOLag==\",\n      \"type\": \"package\",\n      \"path\": \"System.Collections.Immutable/1.2.0\",\n      \"files\": [\n        \"System.Collections.Immutable.1.2.0.nupkg.sha512\",\n        \"System.Collections.Immutable.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/System.Collections.Immutable.dll\",\n        \"lib/netstandard1.0/System.Collections.Immutable.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml\"\n      ]\n    },\n    \"System.Collections.NonGeneric/4.0.1\": {\n      \"sha512\": \"hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Collections.NonGeneric.4.0.1.nupkg.sha512\",\n        \"System.Collections.NonGeneric.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Collections.NonGeneric.dll\",\n        \"lib/netstandard1.3/System.Collections.NonGeneric.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Collections.NonGeneric.dll\",\n        \"ref/netstandard1.3/System.Collections.NonGeneric.dll\",\n        \"ref/netstandard1.3/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/de/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/es/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/fr/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/it/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/ja/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/ko/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/ru/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Collections.Specialized/4.0.1\": {\n      \"sha512\": \"/HKQyVP0yH1I0YtK7KJL/28snxHNH/bi+0lgk/+MbURF6ULhAE31MDI+NZDerNWu264YbxklXCCygISgm+HMug==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Collections.Specialized.4.0.1.nupkg.sha512\",\n        \"System.Collections.Specialized.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Collections.Specialized.dll\",\n        \"lib/netstandard1.3/System.Collections.Specialized.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Collections.Specialized.dll\",\n        \"ref/netstandard1.3/System.Collections.Specialized.dll\",\n        \"ref/netstandard1.3/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/de/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/es/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/fr/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/it/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/ja/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/ko/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/ru/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Collections.Specialized.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ComponentModel/4.0.1\": {\n      \"sha512\": \"YCzWsbChY5bZVK8xTNfpqdOzP0ikw2k0dPkgu5zQX8woGg+42Q1yaZCkZ6f5SvPK3YHmBAs0C6VuXp2ORNlxjw==\",\n      \"type\": \"package\",\n      \"path\": \"System.ComponentModel/4.0.1\",\n      \"files\": [\n        \"System.ComponentModel.4.0.1.nupkg.sha512\",\n        \"System.ComponentModel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ComponentModel.dll\",\n        \"lib/netstandard1.3/System.ComponentModel.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ComponentModel.dll\",\n        \"ref/netcore50/System.ComponentModel.xml\",\n        \"ref/netcore50/de/System.ComponentModel.xml\",\n        \"ref/netcore50/es/System.ComponentModel.xml\",\n        \"ref/netcore50/fr/System.ComponentModel.xml\",\n        \"ref/netcore50/it/System.ComponentModel.xml\",\n        \"ref/netcore50/ja/System.ComponentModel.xml\",\n        \"ref/netcore50/ko/System.ComponentModel.xml\",\n        \"ref/netcore50/ru/System.ComponentModel.xml\",\n        \"ref/netcore50/zh-hans/System.ComponentModel.xml\",\n        \"ref/netcore50/zh-hant/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/System.ComponentModel.dll\",\n        \"ref/netstandard1.0/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/de/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/es/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/fr/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/it/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/ja/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/ko/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/ru/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ComponentModel.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ComponentModel.Annotations/4.1.0\": {\n      \"sha512\": \"ixk6+qnJwjQXX+7I2zRW3zbWt6IAAV0ETpW6J4DZ/E68hmT2ZpSOKlwdaTin06lSjtzmo3a9+X+KAtnoCWVJkw==\",\n      \"type\": \"package\",\n      \"path\": \"System.ComponentModel.Annotations/4.1.0\",\n      \"files\": [\n        \"System.ComponentModel.Annotations.4.1.0.nupkg.sha512\",\n        \"System.ComponentModel.Annotations.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net461/System.ComponentModel.Annotations.dll\",\n        \"lib/netcore50/System.ComponentModel.Annotations.dll\",\n        \"lib/netstandard1.4/System.ComponentModel.Annotations.dll\",\n        \"lib/portable-net45+win8/_._\",\n        \"lib/win8/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net461/System.ComponentModel.Annotations.dll\",\n        \"ref/netcore50/System.ComponentModel.Annotations.dll\",\n        \"ref/netcore50/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/de/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/es/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/it/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/System.ComponentModel.Annotations.dll\",\n        \"ref/netstandard1.1/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/de/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/es/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/it/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/System.ComponentModel.Annotations.dll\",\n        \"ref/netstandard1.3/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/de/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/es/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/it/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/System.ComponentModel.Annotations.dll\",\n        \"ref/netstandard1.4/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/de/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/es/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/it/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/portable-net45+win8/_._\",\n        \"ref/win8/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n      \"sha512\": \"Z7SO6vvQIR84daPE4uhaNdef9CjgjDMGYkas8epUhf0U3WGuaGgZ0Mm4QuNycMdbHUY8KEdZrtgxonkAiJaAlA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.ComponentModel.EventBasedAsync.4.0.11.nupkg.sha512\",\n        \"System.ComponentModel.EventBasedAsync.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\",\n        \"lib/netstandard1.3/System.ComponentModel.EventBasedAsync.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\",\n        \"ref/netcore50/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/de/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/es/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/fr/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/it/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/ja/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/ko/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/ru/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/zh-hans/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/zh-hant/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/System.ComponentModel.EventBasedAsync.dll\",\n        \"ref/netstandard1.0/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/de/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/es/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/fr/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/it/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/ja/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/ko/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/ru/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/System.ComponentModel.EventBasedAsync.dll\",\n        \"ref/netstandard1.3/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/de/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/es/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/fr/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/it/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/ja/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/ko/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/ru/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Data.Common/4.1.0\": {\n      \"sha512\": \"epU8jeTe7aE7RqGHq9rZ8b0Q4Ah7DgubzHQblgZMSqgW1saW868WmooSyC5ywf8upLBkcVLDu93W9GPWUYsU2Q==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Data.Common.4.1.0.nupkg.sha512\",\n        \"System.Data.Common.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net451/System.Data.Common.dll\",\n        \"lib/netstandard1.2/System.Data.Common.dll\",\n        \"lib/portable-net451+win8+wp8+wpa81/System.Data.Common.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net451/System.Data.Common.dll\",\n        \"ref/netstandard1.2/System.Data.Common.dll\",\n        \"ref/netstandard1.2/System.Data.Common.xml\",\n        \"ref/netstandard1.2/de/System.Data.Common.xml\",\n        \"ref/netstandard1.2/es/System.Data.Common.xml\",\n        \"ref/netstandard1.2/fr/System.Data.Common.xml\",\n        \"ref/netstandard1.2/it/System.Data.Common.xml\",\n        \"ref/netstandard1.2/ja/System.Data.Common.xml\",\n        \"ref/netstandard1.2/ko/System.Data.Common.xml\",\n        \"ref/netstandard1.2/ru/System.Data.Common.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Data.Common.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/System.Data.Common.dll\",\n        \"ref/portable-net451+win8+wp8+wpa81/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/de/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/es/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/fr/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/it/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/ja/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/ko/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/ru/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/zh-hans/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/zh-hant/System.Data.Common.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Diagnostics.Contracts/4.0.1\": {\n      \"sha512\": \"HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Diagnostics.Contracts.4.0.1.nupkg.sha512\",\n        \"System.Diagnostics.Contracts.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Diagnostics.Contracts.dll\",\n        \"lib/netstandard1.0/System.Diagnostics.Contracts.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Diagnostics.Contracts.dll\",\n        \"ref/netcore50/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/de/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/es/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/fr/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/it/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/ja/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/ko/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/ru/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/zh-hans/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/zh-hant/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/System.Diagnostics.Contracts.dll\",\n        \"ref/netstandard1.0/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/de/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/es/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/fr/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/it/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/ja/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/ko/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/ru/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Diagnostics.Contracts.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\"\n      ]\n    },\n    \"System.Diagnostics.Debug/4.0.11\": {\n      \"sha512\": \"GpBQnj8FwT7/hRA3CdFtbHQjYtek0KxMC2QiXHcem7CYL/ltd2cJDdIhJqrJeKh3mrFz6G1vsVOJ4DvJCN6jlg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.Debug/4.0.11\",\n      \"files\": [\n        \"System.Diagnostics.Debug.4.0.11.nupkg.sha512\",\n        \"System.Diagnostics.Debug.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Diagnostics.Debug.dll\",\n        \"ref/netcore50/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/de/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/es/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/fr/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/it/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/ja/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/ko/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/ru/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/zh-hans/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/zh-hant/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/System.Diagnostics.Debug.dll\",\n        \"ref/netstandard1.0/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/de/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/es/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/fr/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/it/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/ja/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/ko/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/ru/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/System.Diagnostics.Debug.dll\",\n        \"ref/netstandard1.3/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/de/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/es/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/fr/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/it/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/ja/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/ko/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/ru/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n      \"sha512\": \"bYxnzTncblGHb5t1VQQkXMsyvq8tHhoQoVun+dN57cwUjx38MR1wBc05roqNFT3DOxu+6wVxTrabe3hNcuPiug==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.DiagnosticSource/4.0.0\",\n      \"files\": [\n        \"System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512\",\n        \"System.Diagnostics.DiagnosticSource.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net46/System.Diagnostics.DiagnosticSource.dll\",\n        \"lib/net46/System.Diagnostics.DiagnosticSource.xml\",\n        \"lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll\",\n        \"lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml\",\n        \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\",\n        \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml\",\n        \"lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll\",\n        \"lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml\"\n      ]\n    },\n    \"System.Diagnostics.StackTrace/4.0.2\": {\n      \"sha512\": \"MmP424iVWLyeW7XGtwC5NyfzsIwodFKwhW6yns3d+Sh8WFsFoPWq2cUlJJDAteapIm2qoJ8fc3VwIUroolbsEA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Diagnostics.StackTrace.4.0.2.nupkg.sha512\",\n        \"System.Diagnostics.StackTrace.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Diagnostics.StackTrace.dll\",\n        \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Diagnostics.StackTrace.dll\",\n        \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\",\n        \"ref/netstandard1.3/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/de/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/es/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/fr/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/it/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/ja/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/ko/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/ru/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Diagnostics.StackTrace.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\"\n      ]\n    },\n    \"System.Diagnostics.Tools/4.0.1\": {\n      \"sha512\": \"a2pA+nZ+S5MEeu76APG4t1gti6o/R5UPinu5jIL9i9xquGHeGSsLMYSCz71BGwl+XKq+tsCK8u2je2jD6j3h4w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.Tools/4.0.1\",\n      \"files\": [\n        \"System.Diagnostics.Tools.4.0.1.nupkg.sha512\",\n        \"System.Diagnostics.Tools.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Diagnostics.Tools.dll\",\n        \"ref/netcore50/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/de/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/es/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/fr/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/it/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/ja/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/ko/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/ru/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/zh-hans/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/zh-hant/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/System.Diagnostics.Tools.dll\",\n        \"ref/netstandard1.0/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/de/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/es/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/fr/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/it/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/ja/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/ko/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/ru/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Diagnostics.Tracing/4.1.0\": {\n      \"sha512\": \"pkpgsxR3N6GZpoYzFJbBa+hVT79m4bv7kAFasDhhcYECtSMwYt4dynrzVnFjVn76E/dQvD4Nw6C+6AnhrhTkVA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.Tracing/4.1.0\",\n      \"files\": [\n        \"System.Diagnostics.Tracing.4.1.0.nupkg.sha512\",\n        \"System.Diagnostics.Tracing.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Diagnostics.Tracing.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Diagnostics.Tracing.dll\",\n        \"ref/netcore50/System.Diagnostics.Tracing.dll\",\n        \"ref/netcore50/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/System.Diagnostics.Tracing.dll\",\n        \"ref/netstandard1.1/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/System.Diagnostics.Tracing.dll\",\n        \"ref/netstandard1.2/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/System.Diagnostics.Tracing.dll\",\n        \"ref/netstandard1.3/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/System.Diagnostics.Tracing.dll\",\n        \"ref/netstandard1.5/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Dynamic.Runtime/4.0.11\": {\n      \"sha512\": \"t0Dvjd5Yy/pEzGsiv7kEQEUIcLocQw8uTVK15oEfg2/hPZnu3MZlYduJQPkKoEaWpS2g4vswT2tVMzZbOJQa3w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Dynamic.Runtime/4.0.11\",\n      \"files\": [\n        \"System.Dynamic.Runtime.4.0.11.nupkg.sha512\",\n        \"System.Dynamic.Runtime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Dynamic.Runtime.dll\",\n        \"lib/netstandard1.3/System.Dynamic.Runtime.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Dynamic.Runtime.dll\",\n        \"ref/netcore50/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/de/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/es/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/fr/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/it/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/ja/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/ko/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/ru/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/zh-hans/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/zh-hant/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/System.Dynamic.Runtime.dll\",\n        \"ref/netstandard1.0/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/de/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/es/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/fr/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/it/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/ja/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/ko/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/ru/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/System.Dynamic.Runtime.dll\",\n        \"ref/netstandard1.3/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/de/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/es/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/fr/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/it/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/ja/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/ko/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/ru/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\"\n      ]\n    },\n    \"System.Globalization/4.0.11\": {\n      \"sha512\": \"8Jls/STjJ75LFQrLz+RijMjx/2H72QY1Mik7Db3mlh0GgDg8hgJoZemreit41VzxgSCnTxkSBeHi3wB+Phq5ew==\",\n      \"type\": \"package\",\n      \"path\": \"System.Globalization/4.0.11\",\n      \"files\": [\n        \"System.Globalization.4.0.11.nupkg.sha512\",\n        \"System.Globalization.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Globalization.dll\",\n        \"ref/netcore50/System.Globalization.xml\",\n        \"ref/netcore50/de/System.Globalization.xml\",\n        \"ref/netcore50/es/System.Globalization.xml\",\n        \"ref/netcore50/fr/System.Globalization.xml\",\n        \"ref/netcore50/it/System.Globalization.xml\",\n        \"ref/netcore50/ja/System.Globalization.xml\",\n        \"ref/netcore50/ko/System.Globalization.xml\",\n        \"ref/netcore50/ru/System.Globalization.xml\",\n        \"ref/netcore50/zh-hans/System.Globalization.xml\",\n        \"ref/netcore50/zh-hant/System.Globalization.xml\",\n        \"ref/netstandard1.0/System.Globalization.dll\",\n        \"ref/netstandard1.0/System.Globalization.xml\",\n        \"ref/netstandard1.0/de/System.Globalization.xml\",\n        \"ref/netstandard1.0/es/System.Globalization.xml\",\n        \"ref/netstandard1.0/fr/System.Globalization.xml\",\n        \"ref/netstandard1.0/it/System.Globalization.xml\",\n        \"ref/netstandard1.0/ja/System.Globalization.xml\",\n        \"ref/netstandard1.0/ko/System.Globalization.xml\",\n        \"ref/netstandard1.0/ru/System.Globalization.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Globalization.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Globalization.xml\",\n        \"ref/netstandard1.3/System.Globalization.dll\",\n        \"ref/netstandard1.3/System.Globalization.xml\",\n        \"ref/netstandard1.3/de/System.Globalization.xml\",\n        \"ref/netstandard1.3/es/System.Globalization.xml\",\n        \"ref/netstandard1.3/fr/System.Globalization.xml\",\n        \"ref/netstandard1.3/it/System.Globalization.xml\",\n        \"ref/netstandard1.3/ja/System.Globalization.xml\",\n        \"ref/netstandard1.3/ko/System.Globalization.xml\",\n        \"ref/netstandard1.3/ru/System.Globalization.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Globalization.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Globalization.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Globalization.Calendars/4.0.1\": {\n      \"sha512\": \"ZBAgCvQmmZeG68GyJMhNUURcrAmbiHW396yhlVlz+ygTsvuh3dWmDAk1wOypQJL8KkISAuJjgzqDdddFKLyUZg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Globalization.Calendars/4.0.1\",\n      \"files\": [\n        \"System.Globalization.Calendars.4.0.1.nupkg.sha512\",\n        \"System.Globalization.Calendars.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Globalization.Calendars.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Globalization.Calendars.dll\",\n        \"ref/netstandard1.3/System.Globalization.Calendars.dll\",\n        \"ref/netstandard1.3/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/de/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/es/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/fr/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/it/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/ja/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/ko/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/ru/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Globalization.Extensions/4.0.1\": {\n      \"sha512\": \"vILdo3P1BZT6EQuPiwIPFs12W6U0zOBflfZdlFy+W/JoInB8M7NpNCdv4vJ2PP/RbFIaPpla12iyVGfA/+3tcg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Globalization.Extensions/4.0.1\",\n      \"files\": [\n        \"System.Globalization.Extensions.4.0.1.nupkg.sha512\",\n        \"System.Globalization.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Globalization.Extensions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Globalization.Extensions.dll\",\n        \"ref/netstandard1.3/System.Globalization.Extensions.dll\",\n        \"ref/netstandard1.3/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/de/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/es/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/fr/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/it/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/ja/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/ko/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/ru/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll\",\n        \"runtimes/win/lib/net46/System.Globalization.Extensions.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\"\n      ]\n    },\n    \"System.IO/4.1.0\": {\n      \"sha512\": \"karXRXjiOZXIAa7ZJR9CgRL3o9XXSo8ZTyS26eiuJaruf7gWq/wLDrYRp6i1ZxK4OGArjnwulMv86pUxqQe5SA==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO/4.1.0\",\n      \"files\": [\n        \"System.IO.4.1.0.nupkg.sha512\",\n        \"System.IO.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.IO.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.IO.dll\",\n        \"ref/netcore50/System.IO.dll\",\n        \"ref/netcore50/System.IO.xml\",\n        \"ref/netcore50/de/System.IO.xml\",\n        \"ref/netcore50/es/System.IO.xml\",\n        \"ref/netcore50/fr/System.IO.xml\",\n        \"ref/netcore50/it/System.IO.xml\",\n        \"ref/netcore50/ja/System.IO.xml\",\n        \"ref/netcore50/ko/System.IO.xml\",\n        \"ref/netcore50/ru/System.IO.xml\",\n        \"ref/netcore50/zh-hans/System.IO.xml\",\n        \"ref/netcore50/zh-hant/System.IO.xml\",\n        \"ref/netstandard1.0/System.IO.dll\",\n        \"ref/netstandard1.0/System.IO.xml\",\n        \"ref/netstandard1.0/de/System.IO.xml\",\n        \"ref/netstandard1.0/es/System.IO.xml\",\n        \"ref/netstandard1.0/fr/System.IO.xml\",\n        \"ref/netstandard1.0/it/System.IO.xml\",\n        \"ref/netstandard1.0/ja/System.IO.xml\",\n        \"ref/netstandard1.0/ko/System.IO.xml\",\n        \"ref/netstandard1.0/ru/System.IO.xml\",\n        \"ref/netstandard1.0/zh-hans/System.IO.xml\",\n        \"ref/netstandard1.0/zh-hant/System.IO.xml\",\n        \"ref/netstandard1.3/System.IO.dll\",\n        \"ref/netstandard1.3/System.IO.xml\",\n        \"ref/netstandard1.3/de/System.IO.xml\",\n        \"ref/netstandard1.3/es/System.IO.xml\",\n        \"ref/netstandard1.3/fr/System.IO.xml\",\n        \"ref/netstandard1.3/it/System.IO.xml\",\n        \"ref/netstandard1.3/ja/System.IO.xml\",\n        \"ref/netstandard1.3/ko/System.IO.xml\",\n        \"ref/netstandard1.3/ru/System.IO.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.xml\",\n        \"ref/netstandard1.5/System.IO.dll\",\n        \"ref/netstandard1.5/System.IO.xml\",\n        \"ref/netstandard1.5/de/System.IO.xml\",\n        \"ref/netstandard1.5/es/System.IO.xml\",\n        \"ref/netstandard1.5/fr/System.IO.xml\",\n        \"ref/netstandard1.5/it/System.IO.xml\",\n        \"ref/netstandard1.5/ja/System.IO.xml\",\n        \"ref/netstandard1.5/ko/System.IO.xml\",\n        \"ref/netstandard1.5/ru/System.IO.xml\",\n        \"ref/netstandard1.5/zh-hans/System.IO.xml\",\n        \"ref/netstandard1.5/zh-hant/System.IO.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.Compression/4.1.1\": {\n      \"sha512\": \"ac/GG9DNsUr/grHGstCtWDoglgWr1OhL/yAZjXfpXtx52RmVVCpO52pShIDilQrD9dDZxw8zluiXEfezhPaYzg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.IO.Compression.4.1.1.nupkg.sha512\",\n        \"System.IO.Compression.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.IO.Compression.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.IO.Compression.dll\",\n        \"ref/netcore50/System.IO.Compression.dll\",\n        \"ref/netcore50/System.IO.Compression.xml\",\n        \"ref/netcore50/de/System.IO.Compression.xml\",\n        \"ref/netcore50/es/System.IO.Compression.xml\",\n        \"ref/netcore50/fr/System.IO.Compression.xml\",\n        \"ref/netcore50/it/System.IO.Compression.xml\",\n        \"ref/netcore50/ja/System.IO.Compression.xml\",\n        \"ref/netcore50/ko/System.IO.Compression.xml\",\n        \"ref/netcore50/ru/System.IO.Compression.xml\",\n        \"ref/netcore50/zh-hans/System.IO.Compression.xml\",\n        \"ref/netcore50/zh-hant/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/System.IO.Compression.dll\",\n        \"ref/netstandard1.1/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/de/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/es/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/fr/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/it/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/ja/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/ko/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/ru/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/zh-hans/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/zh-hant/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/System.IO.Compression.dll\",\n        \"ref/netstandard1.3/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/de/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/es/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/fr/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/it/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/ja/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/ko/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/ru/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.Compression.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll\",\n        \"runtimes/win/lib/net46/System.IO.Compression.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\"\n      ]\n    },\n    \"System.IO.Compression.ZipFile/4.0.1\": {\n      \"sha512\": \"feyGeijUF0WwU0xIO+NrNdjsKpL37xiDe6vUsXvJpRnyPmLKWDhVAfZ1E3ms5BzXOIR2DPBAwJlNyYNpcHRRXg==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.Compression.ZipFile/4.0.1\",\n      \"files\": [\n        \"System.IO.Compression.ZipFile.4.0.1.nupkg.sha512\",\n        \"System.IO.Compression.ZipFile.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.Compression.ZipFile.dll\",\n        \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.IO.Compression.ZipFile.dll\",\n        \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\",\n        \"ref/netstandard1.3/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.FileSystem/4.0.1\": {\n      \"sha512\": \"fPJ0jdEKZFK5D4hOewtshk9jIN32j06g1YzCapqoKlk4qEVAm4UHFm2Us0pvK3NTCub5EAS5Qz6Kh6yTbD9gPA==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.FileSystem/4.0.1\",\n      \"files\": [\n        \"System.IO.FileSystem.4.0.1.nupkg.sha512\",\n        \"System.IO.FileSystem.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.FileSystem.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.IO.FileSystem.dll\",\n        \"ref/netstandard1.3/System.IO.FileSystem.dll\",\n        \"ref/netstandard1.3/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/de/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/es/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/fr/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/it/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/ja/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/ko/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/ru/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.FileSystem.Primitives/4.0.1\": {\n      \"sha512\": \"HZnKMIk6T8kt1rqbhLpvSC4sIcBMx/kocwTHZpEOpxL7qdgQV/OglEkV7Zl8Ds++y387KOq15Nh4QQVtSXIkjQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.FileSystem.Primitives/4.0.1\",\n      \"files\": [\n        \"System.IO.FileSystem.Primitives.4.0.1.nupkg.sha512\",\n        \"System.IO.FileSystem.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.FileSystem.Primitives.dll\",\n        \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.IO.FileSystem.Primitives.dll\",\n        \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\",\n        \"ref/netstandard1.3/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.IsolatedStorage/4.0.1\": {\n      \"sha512\": \"PuSuDi3FV84wh6RbF+Dvr0BvLJ6MCpvNIdVE3K0sSnOVKEV7mOQ0qnEvO1tWjxquMaugULTxJHHLaxkCHCz4IQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.IO.IsolatedStorage.4.0.1.nupkg.sha512\",\n        \"System.IO.IsolatedStorage.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/netcore50/System.IO.IsolatedStorage.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\",\n        \"ref/netstandard1.4/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/de/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/es/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/fr/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/it/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/ja/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/ko/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/ru/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/zh-hans/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/zh-hant/System.IO.IsolatedStorage.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n      \"sha512\": \"3884Ps2yRz5RFkDtF2NVtAzYshbtKuMa1QUxgu3/5G74VMyvJ6xcDpiDAMKy+sFnDsomj+V2oMUwKrFGfCX10Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.UnmanagedMemoryStream/4.0.1\",\n      \"files\": [\n        \"System.IO.UnmanagedMemoryStream.4.0.1.nupkg.sha512\",\n        \"System.IO.UnmanagedMemoryStream.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.UnmanagedMemoryStream.dll\",\n        \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.IO.UnmanagedMemoryStream.dll\",\n        \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\",\n        \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/de/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/es/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/fr/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/it/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/ja/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/ko/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/ru/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Linq/4.1.0\": {\n      \"sha512\": \"Vvarb8OTsZu8F9lsbyWPqW04HIQN04TjfP0K3NXh63GGf34Q6hQol4aupWbZkdunnVuj+sF9dF/OaZuxxPxJRg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Linq/4.1.0\",\n      \"files\": [\n        \"System.Linq.4.1.0.nupkg.sha512\",\n        \"System.Linq.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net463/System.Linq.dll\",\n        \"lib/netcore50/System.Linq.dll\",\n        \"lib/netstandard1.6/System.Linq.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net463/System.Linq.dll\",\n        \"ref/netcore50/System.Linq.dll\",\n        \"ref/netcore50/System.Linq.xml\",\n        \"ref/netcore50/de/System.Linq.xml\",\n        \"ref/netcore50/es/System.Linq.xml\",\n        \"ref/netcore50/fr/System.Linq.xml\",\n        \"ref/netcore50/it/System.Linq.xml\",\n        \"ref/netcore50/ja/System.Linq.xml\",\n        \"ref/netcore50/ko/System.Linq.xml\",\n        \"ref/netcore50/ru/System.Linq.xml\",\n        \"ref/netcore50/zh-hans/System.Linq.xml\",\n        \"ref/netcore50/zh-hant/System.Linq.xml\",\n        \"ref/netstandard1.0/System.Linq.dll\",\n        \"ref/netstandard1.0/System.Linq.xml\",\n        \"ref/netstandard1.0/de/System.Linq.xml\",\n        \"ref/netstandard1.0/es/System.Linq.xml\",\n        \"ref/netstandard1.0/fr/System.Linq.xml\",\n        \"ref/netstandard1.0/it/System.Linq.xml\",\n        \"ref/netstandard1.0/ja/System.Linq.xml\",\n        \"ref/netstandard1.0/ko/System.Linq.xml\",\n        \"ref/netstandard1.0/ru/System.Linq.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Linq.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Linq.xml\",\n        \"ref/netstandard1.6/System.Linq.dll\",\n        \"ref/netstandard1.6/System.Linq.xml\",\n        \"ref/netstandard1.6/de/System.Linq.xml\",\n        \"ref/netstandard1.6/es/System.Linq.xml\",\n        \"ref/netstandard1.6/fr/System.Linq.xml\",\n        \"ref/netstandard1.6/it/System.Linq.xml\",\n        \"ref/netstandard1.6/ja/System.Linq.xml\",\n        \"ref/netstandard1.6/ko/System.Linq.xml\",\n        \"ref/netstandard1.6/ru/System.Linq.xml\",\n        \"ref/netstandard1.6/zh-hans/System.Linq.xml\",\n        \"ref/netstandard1.6/zh-hant/System.Linq.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Linq.Expressions/4.1.0\": {\n      \"sha512\": \"zXYAAevGjqGwJBklQe2W7nidn+9EHvJPpKuLK089qHqF4z12r/sQncFPT63KGdDOFhWpibFtTa/RnNLFmvmMRA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Linq.Expressions/4.1.0\",\n      \"files\": [\n        \"System.Linq.Expressions.4.1.0.nupkg.sha512\",\n        \"System.Linq.Expressions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net463/System.Linq.Expressions.dll\",\n        \"lib/netcore50/System.Linq.Expressions.dll\",\n        \"lib/netstandard1.6/System.Linq.Expressions.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net463/System.Linq.Expressions.dll\",\n        \"ref/netcore50/System.Linq.Expressions.dll\",\n        \"ref/netcore50/System.Linq.Expressions.xml\",\n        \"ref/netcore50/de/System.Linq.Expressions.xml\",\n        \"ref/netcore50/es/System.Linq.Expressions.xml\",\n        \"ref/netcore50/fr/System.Linq.Expressions.xml\",\n        \"ref/netcore50/it/System.Linq.Expressions.xml\",\n        \"ref/netcore50/ja/System.Linq.Expressions.xml\",\n        \"ref/netcore50/ko/System.Linq.Expressions.xml\",\n        \"ref/netcore50/ru/System.Linq.Expressions.xml\",\n        \"ref/netcore50/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/netcore50/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/System.Linq.Expressions.dll\",\n        \"ref/netstandard1.0/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/de/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/es/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/fr/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/it/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/ja/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/ko/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/ru/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/System.Linq.Expressions.dll\",\n        \"ref/netstandard1.3/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/de/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/es/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/fr/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/it/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/ja/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/ko/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/ru/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/System.Linq.Expressions.dll\",\n        \"ref/netstandard1.6/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/de/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/es/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/fr/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/it/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/ja/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/ko/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/ru/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\"\n      ]\n    },\n    \"System.Linq.Parallel/4.0.1\": {\n      \"sha512\": \"rU0mLIfq46Q7M3CRPq6or8wdxJpWSSvoD6dMAsp4NJXPvEvXMxtwI9jcJ25TN5jrjx1h0bYdIjvqtWDz3/oi7w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Linq.Parallel/4.0.1\",\n      \"files\": [\n        \"System.Linq.Parallel.4.0.1.nupkg.sha512\",\n        \"System.Linq.Parallel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Linq.Parallel.dll\",\n        \"lib/netstandard1.3/System.Linq.Parallel.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Linq.Parallel.dll\",\n        \"ref/netcore50/System.Linq.Parallel.xml\",\n        \"ref/netcore50/de/System.Linq.Parallel.xml\",\n        \"ref/netcore50/es/System.Linq.Parallel.xml\",\n        \"ref/netcore50/fr/System.Linq.Parallel.xml\",\n        \"ref/netcore50/it/System.Linq.Parallel.xml\",\n        \"ref/netcore50/ja/System.Linq.Parallel.xml\",\n        \"ref/netcore50/ko/System.Linq.Parallel.xml\",\n        \"ref/netcore50/ru/System.Linq.Parallel.xml\",\n        \"ref/netcore50/zh-hans/System.Linq.Parallel.xml\",\n        \"ref/netcore50/zh-hant/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/System.Linq.Parallel.dll\",\n        \"ref/netstandard1.1/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/de/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/es/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/fr/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/it/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/ja/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/ko/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/ru/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Linq.Parallel.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Linq.Queryable/4.0.1\": {\n      \"sha512\": \"f/xa103VzDwMZzgHhs1zXlN/wIATqlDgXOfkOOHkmKy/aCB8ATR1QTGG4GWVuCjZ/BmitBVuDryUbrTRcPcHkw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Linq.Queryable/4.0.1\",\n      \"files\": [\n        \"System.Linq.Queryable.4.0.1.nupkg.sha512\",\n        \"System.Linq.Queryable.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/monoandroid10/_._\",\n        \"lib/monotouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Linq.Queryable.dll\",\n        \"lib/netstandard1.3/System.Linq.Queryable.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/monoandroid10/_._\",\n        \"ref/monotouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Linq.Queryable.dll\",\n        \"ref/netcore50/System.Linq.Queryable.xml\",\n        \"ref/netcore50/de/System.Linq.Queryable.xml\",\n        \"ref/netcore50/es/System.Linq.Queryable.xml\",\n        \"ref/netcore50/fr/System.Linq.Queryable.xml\",\n        \"ref/netcore50/it/System.Linq.Queryable.xml\",\n        \"ref/netcore50/ja/System.Linq.Queryable.xml\",\n        \"ref/netcore50/ko/System.Linq.Queryable.xml\",\n        \"ref/netcore50/ru/System.Linq.Queryable.xml\",\n        \"ref/netcore50/zh-hans/System.Linq.Queryable.xml\",\n        \"ref/netcore50/zh-hant/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/System.Linq.Queryable.dll\",\n        \"ref/netstandard1.0/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/de/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/es/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/fr/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/it/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/ja/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/ko/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/ru/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.Http/4.1.0\": {\n      \"sha512\": \"L64DHGDyGYQkprfGNcQoAZKUucEyfS+5SuYl/XlL4W37SNU9gwC2oYu5/zLymf3nDgPYL4xnyk2oyDIIF/MHOg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Http/4.1.0\",\n      \"files\": [\n        \"System.Net.Http.4.1.0.nupkg.sha512\",\n        \"System.Net.Http.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/Xamarinmac20/_._\",\n        \"lib/monoandroid10/_._\",\n        \"lib/monotouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.Net.Http.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/Xamarinmac20/_._\",\n        \"ref/monoandroid10/_._\",\n        \"ref/monotouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.Net.Http.dll\",\n        \"ref/net46/System.Net.Http.xml\",\n        \"ref/net46/de/System.Net.Http.xml\",\n        \"ref/net46/es/System.Net.Http.xml\",\n        \"ref/net46/fr/System.Net.Http.xml\",\n        \"ref/net46/it/System.Net.Http.xml\",\n        \"ref/net46/ja/System.Net.Http.xml\",\n        \"ref/net46/ko/System.Net.Http.xml\",\n        \"ref/net46/ru/System.Net.Http.xml\",\n        \"ref/net46/zh-hans/System.Net.Http.xml\",\n        \"ref/net46/zh-hant/System.Net.Http.xml\",\n        \"ref/netcore50/System.Net.Http.dll\",\n        \"ref/netcore50/System.Net.Http.xml\",\n        \"ref/netcore50/de/System.Net.Http.xml\",\n        \"ref/netcore50/es/System.Net.Http.xml\",\n        \"ref/netcore50/fr/System.Net.Http.xml\",\n        \"ref/netcore50/it/System.Net.Http.xml\",\n        \"ref/netcore50/ja/System.Net.Http.xml\",\n        \"ref/netcore50/ko/System.Net.Http.xml\",\n        \"ref/netcore50/ru/System.Net.Http.xml\",\n        \"ref/netcore50/zh-hans/System.Net.Http.xml\",\n        \"ref/netcore50/zh-hant/System.Net.Http.xml\",\n        \"ref/netstandard1.1/System.Net.Http.dll\",\n        \"ref/netstandard1.1/System.Net.Http.xml\",\n        \"ref/netstandard1.1/de/System.Net.Http.xml\",\n        \"ref/netstandard1.1/es/System.Net.Http.xml\",\n        \"ref/netstandard1.1/fr/System.Net.Http.xml\",\n        \"ref/netstandard1.1/it/System.Net.Http.xml\",\n        \"ref/netstandard1.1/ja/System.Net.Http.xml\",\n        \"ref/netstandard1.1/ko/System.Net.Http.xml\",\n        \"ref/netstandard1.1/ru/System.Net.Http.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Net.Http.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Net.Http.xml\",\n        \"ref/netstandard1.3/System.Net.Http.dll\",\n        \"ref/netstandard1.3/System.Net.Http.xml\",\n        \"ref/netstandard1.3/de/System.Net.Http.xml\",\n        \"ref/netstandard1.3/es/System.Net.Http.xml\",\n        \"ref/netstandard1.3/fr/System.Net.Http.xml\",\n        \"ref/netstandard1.3/it/System.Net.Http.xml\",\n        \"ref/netstandard1.3/ja/System.Net.Http.xml\",\n        \"ref/netstandard1.3/ko/System.Net.Http.xml\",\n        \"ref/netstandard1.3/ru/System.Net.Http.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.Http.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.Http.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.6/System.Net.Http.dll\",\n        \"runtimes/win/lib/net46/System.Net.Http.dll\",\n        \"runtimes/win/lib/netcore50/System.Net.Http.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.Http.dll\"\n      ]\n    },\n    \"System.Net.Http.Rtc/4.0.1\": {\n      \"sha512\": \"o2AlTAvlZOc0dRUpmr379G57VUjSQ+JO7X2vIduaV+zReroM7WVwvtg6q1tGBrT4aVFvqWPDavWuBgSMTwugyw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Net.Http.Rtc.4.0.1.nupkg.sha512\",\n        \"System.Net.Http.Rtc.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/win8/_._\",\n        \"ref/netcore50/System.Net.Http.Rtc.dll\",\n        \"ref/netcore50/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/de/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/es/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/fr/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/it/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/ja/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/ko/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/ru/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/zh-hans/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/zh-hant/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/System.Net.Http.Rtc.dll\",\n        \"ref/netstandard1.1/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/de/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/es/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/fr/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/it/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/ja/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/ko/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/ru/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Net.Http.Rtc.xml\",\n        \"ref/win8/_._\",\n        \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\"\n      ]\n    },\n    \"System.Net.NameResolution/4.0.0\": {\n      \"sha512\": \"rfmciwKXK+hb+dhSiNIUhCS6se+414wzsAGe0ZljzZAEwcGHg4sY1aA0YUP8i549TAPXHHOFjFH805UYCj3+GQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.NameResolution/4.0.0\",\n      \"files\": [\n        \"System.Net.NameResolution.4.0.0.nupkg.sha512\",\n        \"System.Net.NameResolution.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.NameResolution.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Net.NameResolution.dll\",\n        \"ref/netstandard1.3/System.Net.NameResolution.dll\",\n        \"ref/netstandard1.3/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/de/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/es/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/fr/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/it/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/ja/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/ko/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/ru/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll\",\n        \"runtimes/win/lib/net46/System.Net.NameResolution.dll\",\n        \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll\"\n      ]\n    },\n    \"System.Net.NetworkInformation/4.1.0\": {\n      \"sha512\": \"Q0rfeiW6QsiZuicGjrFA7cRr2+kXex0JIljTTxzI09GIftB8k+aNL31VsQD1sI2g31cw7UGDTgozA/FgeNSzsQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Net.NetworkInformation.4.1.0.nupkg.sha512\",\n        \"System.Net.NetworkInformation.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.Net.NetworkInformation.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.Net.NetworkInformation.dll\",\n        \"ref/netcore50/System.Net.NetworkInformation.dll\",\n        \"ref/netcore50/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/de/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/es/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/fr/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/it/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/ja/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/ko/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/ru/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/zh-hans/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/zh-hant/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/System.Net.NetworkInformation.dll\",\n        \"ref/netstandard1.0/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/de/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/es/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/fr/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/it/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/ja/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/ko/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/ru/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/System.Net.NetworkInformation.dll\",\n        \"ref/netstandard1.3/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/de/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/es/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/fr/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/it/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/ja/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/ko/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/ru/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.NetworkInformation.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll\",\n        \"runtimes/osx/lib/netstandard1.3/System.Net.NetworkInformation.dll\",\n        \"runtimes/win/lib/net46/System.Net.NetworkInformation.dll\",\n        \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.NetworkInformation.dll\"\n      ]\n    },\n    \"System.Net.Primitives/4.0.11\": {\n      \"sha512\": \"jsRO34LzQYAP3cOsi8wfq2recVB7MVa3KxXW8pRO3KT3nJ9YErSq7BcFvZUxpq0gUXoaqQS+D0McoPSkne9ODQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Primitives/4.0.11\",\n      \"files\": [\n        \"System.Net.Primitives.4.0.11.nupkg.sha512\",\n        \"System.Net.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Net.Primitives.dll\",\n        \"ref/netcore50/System.Net.Primitives.xml\",\n        \"ref/netcore50/de/System.Net.Primitives.xml\",\n        \"ref/netcore50/es/System.Net.Primitives.xml\",\n        \"ref/netcore50/fr/System.Net.Primitives.xml\",\n        \"ref/netcore50/it/System.Net.Primitives.xml\",\n        \"ref/netcore50/ja/System.Net.Primitives.xml\",\n        \"ref/netcore50/ko/System.Net.Primitives.xml\",\n        \"ref/netcore50/ru/System.Net.Primitives.xml\",\n        \"ref/netcore50/zh-hans/System.Net.Primitives.xml\",\n        \"ref/netcore50/zh-hant/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/System.Net.Primitives.dll\",\n        \"ref/netstandard1.0/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/de/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/es/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/fr/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/it/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/ja/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/ko/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/ru/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/System.Net.Primitives.dll\",\n        \"ref/netstandard1.1/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/de/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/es/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/fr/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/it/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/ja/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/ko/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/ru/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/System.Net.Primitives.dll\",\n        \"ref/netstandard1.3/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/de/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/es/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/fr/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/it/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/ja/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/ko/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/ru/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.Primitives.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.Requests/4.0.11\": {\n      \"sha512\": \"d9cMsfzdDKOIpho6HSHOMtn3HNdTQALql+Oc4KV3EIiFd7h5iH2xsCQ5AVJIfvLMmg81RmalUfkFHCH4WHMWKw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Requests/4.0.11\",\n      \"files\": [\n        \"System.Net.Requests.4.0.11.nupkg.sha512\",\n        \"System.Net.Requests.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/_._\",\n        \"ref/netcore50/System.Net.Requests.dll\",\n        \"ref/netcore50/System.Net.Requests.xml\",\n        \"ref/netcore50/de/System.Net.Requests.xml\",\n        \"ref/netcore50/es/System.Net.Requests.xml\",\n        \"ref/netcore50/fr/System.Net.Requests.xml\",\n        \"ref/netcore50/it/System.Net.Requests.xml\",\n        \"ref/netcore50/ja/System.Net.Requests.xml\",\n        \"ref/netcore50/ko/System.Net.Requests.xml\",\n        \"ref/netcore50/ru/System.Net.Requests.xml\",\n        \"ref/netcore50/zh-hans/System.Net.Requests.xml\",\n        \"ref/netcore50/zh-hant/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/System.Net.Requests.dll\",\n        \"ref/netstandard1.0/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/de/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/es/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/fr/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/it/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/ja/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/ko/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/ru/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/System.Net.Requests.dll\",\n        \"ref/netstandard1.1/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/de/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/es/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/fr/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/it/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/ja/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/ko/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/ru/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/System.Net.Requests.dll\",\n        \"ref/netstandard1.3/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/de/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/es/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/fr/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/it/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/ja/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/ko/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/ru/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.Requests.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll\",\n        \"runtimes/win/lib/net46/_._\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\"\n      ]\n    },\n    \"System.Net.Sockets/4.1.0\": {\n      \"sha512\": \"UyAPV214uSwvR3FmMILzc9OdWFy+ZGOGQJmCulgUkLVKvhdvWzIGqPK16PfZ1elvF0xLKTCA79ZDLlcZIlTsKg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Sockets/4.1.0\",\n      \"files\": [\n        \"System.Net.Sockets.4.1.0.nupkg.sha512\",\n        \"System.Net.Sockets.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.Sockets.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Net.Sockets.dll\",\n        \"ref/netstandard1.3/System.Net.Sockets.dll\",\n        \"ref/netstandard1.3/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/de/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/es/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/fr/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/it/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/ja/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/ko/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/ru/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.Sockets.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.WebHeaderCollection/4.0.1\": {\n      \"sha512\": \"LcbOpgkH52Rx+DpbuxhI9DYHHtP+/OzLT5NXdkrTmq4MUiaO+2fQocCiBB593+N9D2R79swiimHbxUeomQNH6A==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.WebHeaderCollection/4.0.1\",\n      \"files\": [\n        \"System.Net.WebHeaderCollection.4.0.1.nupkg.sha512\",\n        \"System.Net.WebHeaderCollection.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/_._\",\n        \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\",\n        \"ref/netstandard1.3/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/de/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/es/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/fr/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/it/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/ja/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/ko/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/ru/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.WebHeaderCollection.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.WebSockets/4.0.0\": {\n      \"sha512\": \"2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Net.WebSockets.4.0.0.nupkg.sha512\",\n        \"System.Net.WebSockets.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.WebSockets.dll\",\n        \"lib/netstandard1.3/System.Net.WebSockets.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Net.WebSockets.dll\",\n        \"ref/netstandard1.3/System.Net.WebSockets.dll\",\n        \"ref/netstandard1.3/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/de/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/es/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/fr/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/it/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/ja/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/ko/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/ru/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.WebSockets.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.WebSockets.Client/4.0.0\": {\n      \"sha512\": \"GY5h9cn0ZVsG4ORQqMytTldrqxet2RC2CSEsgWGf4XNW5jhL5SxzcUZph03xbZsgn7K3qMr+Rq+gkbJNI+FEXg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Net.WebSockets.Client.4.0.0.nupkg.sha512\",\n        \"System.Net.WebSockets.Client.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.WebSockets.Client.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Net.WebSockets.Client.dll\",\n        \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\",\n        \"ref/netstandard1.3/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/de/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/es/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/fr/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/it/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/ja/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/ko/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/ru/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.WebSockets.Client.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll\",\n        \"runtimes/win/lib/net46/System.Net.WebSockets.Client.dll\",\n        \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll\"\n      ]\n    },\n    \"System.Numerics.Vectors/4.1.1\": {\n      \"sha512\": \"VYujDrypAsX61KS3RRJwYf6SD+9b4Ct3FX6bGn0apvsrBiAIoMDcl6HN2zt1AkKePCybQ74+fIVIWn12C6N+TQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Numerics.Vectors/4.1.1\",\n      \"files\": [\n        \"System.Numerics.Vectors.4.1.1.nupkg.sha512\",\n        \"System.Numerics.Vectors.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Numerics.Vectors.dll\",\n        \"lib/net46/System.Numerics.Vectors.xml\",\n        \"lib/netstandard1.0/System.Numerics.Vectors.dll\",\n        \"lib/netstandard1.0/System.Numerics.Vectors.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Numerics.Vectors.dll\",\n        \"ref/net46/System.Numerics.Vectors.xml\",\n        \"ref/netstandard1.0/System.Numerics.Vectors.dll\",\n        \"ref/netstandard1.0/System.Numerics.Vectors.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n      \"sha512\": \"T4RJY6Z+0AuynCnMy8VMyP1g2mrB/OGubx5Og6d8ve6LkVLPrpiGtV5iMJeBv7lTDF1zhviILg+LecgKBjkWag==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Numerics.Vectors.WindowsRuntime.4.0.1.nupkg.sha512\",\n        \"System.Numerics.Vectors.WindowsRuntime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.ObjectModel/4.0.12\": {\n      \"sha512\": \"7jOMCnM279XuLEoLi/bXRG8AYM5HSZK/N/XgGuQ1K36S+0Vnk7UHMUSnUlLobQAq87SDDuBRqSvq4ejhSoxDPQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.ObjectModel/4.0.12\",\n      \"files\": [\n        \"System.ObjectModel.4.0.12.nupkg.sha512\",\n        \"System.ObjectModel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ObjectModel.dll\",\n        \"lib/netstandard1.3/System.ObjectModel.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ObjectModel.dll\",\n        \"ref/netcore50/System.ObjectModel.xml\",\n        \"ref/netcore50/de/System.ObjectModel.xml\",\n        \"ref/netcore50/es/System.ObjectModel.xml\",\n        \"ref/netcore50/fr/System.ObjectModel.xml\",\n        \"ref/netcore50/it/System.ObjectModel.xml\",\n        \"ref/netcore50/ja/System.ObjectModel.xml\",\n        \"ref/netcore50/ko/System.ObjectModel.xml\",\n        \"ref/netcore50/ru/System.ObjectModel.xml\",\n        \"ref/netcore50/zh-hans/System.ObjectModel.xml\",\n        \"ref/netcore50/zh-hant/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/System.ObjectModel.dll\",\n        \"ref/netstandard1.0/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/de/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/es/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/fr/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/it/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/ja/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/ko/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/ru/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/System.ObjectModel.dll\",\n        \"ref/netstandard1.3/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/de/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/es/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/fr/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/it/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/ja/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/ko/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/ru/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ObjectModel.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Private.DataContractSerialization/4.1.1\": {\n      \"sha512\": \"lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Private.DataContractSerialization.4.1.1.nupkg.sha512\",\n        \"System.Private.DataContractSerialization.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\",\n        \"ref/netstandard/_._\",\n        \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\"\n      ]\n    },\n    \"System.Private.ServiceModel/4.1.0\": {\n      \"sha512\": \"/QviVqIgta03ms7IDFALHCJOQCANZ1lILobf/OoLzdphHN40M3r6zqso2NsKvvSV7rJus+QLLWS/q33XGIybrQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Private.ServiceModel.4.1.0.nupkg.sha512\",\n        \"System.Private.ServiceModel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Private.ServiceModel.dll\",\n        \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\",\n        \"runtimes/win7/lib/netstandard1.3/System.Private.ServiceModel.dll\"\n      ]\n    },\n    \"System.Private.Uri/4.0.1\": {\n      \"sha512\": \"OltceAn9yyNf9LZIqvf80DhdRH55iVu1fxowdR79018w1CWIRNojUZBStsiRHvADeKI5pXcM9EftOFikBQh5AA==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Private.Uri.4.0.1.nupkg.sha512\",\n        \"System.Private.Uri.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\"\n      ]\n    },\n    \"System.Reflection/4.1.0\": {\n      \"sha512\": \"IFXkYDIDLbPNUt7EApWyeEIx1HiAj63dDP74r5V/dgiEv9v97M/ttlmQzGCsyyCCUzM1ZZU9wYCGSYY0yHvU+Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection/4.1.0\",\n      \"files\": [\n        \"System.Reflection.4.1.0.nupkg.sha512\",\n        \"System.Reflection.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Reflection.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Reflection.dll\",\n        \"ref/netcore50/System.Reflection.dll\",\n        \"ref/netcore50/System.Reflection.xml\",\n        \"ref/netcore50/de/System.Reflection.xml\",\n        \"ref/netcore50/es/System.Reflection.xml\",\n        \"ref/netcore50/fr/System.Reflection.xml\",\n        \"ref/netcore50/it/System.Reflection.xml\",\n        \"ref/netcore50/ja/System.Reflection.xml\",\n        \"ref/netcore50/ko/System.Reflection.xml\",\n        \"ref/netcore50/ru/System.Reflection.xml\",\n        \"ref/netcore50/zh-hans/System.Reflection.xml\",\n        \"ref/netcore50/zh-hant/System.Reflection.xml\",\n        \"ref/netstandard1.0/System.Reflection.dll\",\n        \"ref/netstandard1.0/System.Reflection.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.xml\",\n        \"ref/netstandard1.3/System.Reflection.dll\",\n        \"ref/netstandard1.3/System.Reflection.xml\",\n        \"ref/netstandard1.3/de/System.Reflection.xml\",\n        \"ref/netstandard1.3/es/System.Reflection.xml\",\n        \"ref/netstandard1.3/fr/System.Reflection.xml\",\n        \"ref/netstandard1.3/it/System.Reflection.xml\",\n        \"ref/netstandard1.3/ja/System.Reflection.xml\",\n        \"ref/netstandard1.3/ko/System.Reflection.xml\",\n        \"ref/netstandard1.3/ru/System.Reflection.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Reflection.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Reflection.xml\",\n        \"ref/netstandard1.5/System.Reflection.dll\",\n        \"ref/netstandard1.5/System.Reflection.xml\",\n        \"ref/netstandard1.5/de/System.Reflection.xml\",\n        \"ref/netstandard1.5/es/System.Reflection.xml\",\n        \"ref/netstandard1.5/fr/System.Reflection.xml\",\n        \"ref/netstandard1.5/it/System.Reflection.xml\",\n        \"ref/netstandard1.5/ja/System.Reflection.xml\",\n        \"ref/netstandard1.5/ko/System.Reflection.xml\",\n        \"ref/netstandard1.5/ru/System.Reflection.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Reflection.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Reflection.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Reflection.Context/4.0.1\": {\n      \"sha512\": \"nU4qA/juVb7OCAqLdWAnxeyTjs5tbwQmtF6ep1gTVSa79aGF1J5orD88WHQmNhgVbgfhSGPnz4+d94o/iBXZ7g==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Reflection.Context.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Context.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Context.dll\",\n        \"lib/netstandard1.1/System.Reflection.Context.dll\",\n        \"lib/portable-net45+win8/_._\",\n        \"lib/win8/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Context.dll\",\n        \"ref/netcore50/System.Reflection.Context.xml\",\n        \"ref/netcore50/de/System.Reflection.Context.xml\",\n        \"ref/netcore50/es/System.Reflection.Context.xml\",\n        \"ref/netcore50/fr/System.Reflection.Context.xml\",\n        \"ref/netcore50/it/System.Reflection.Context.xml\",\n        \"ref/netcore50/ja/System.Reflection.Context.xml\",\n        \"ref/netcore50/ko/System.Reflection.Context.xml\",\n        \"ref/netcore50/ru/System.Reflection.Context.xml\",\n        \"ref/netcore50/zh-hans/System.Reflection.Context.xml\",\n        \"ref/netcore50/zh-hant/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/System.Reflection.Context.dll\",\n        \"ref/netstandard1.1/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/de/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/es/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/fr/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/it/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/ja/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/ko/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/ru/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Reflection.Context.xml\",\n        \"ref/portable-net45+win8/_._\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.Reflection.DispatchProxy/4.0.1\": {\n      \"sha512\": \"4efmEZM25p9AiTekmWSvwKLaEVKORi4SsL1Qa66jY9nIRBI00KRTI7mJdgKXCDjI0JmkncUakPBWfNzIo4eRkg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.DispatchProxy/4.0.1\",\n      \"files\": [\n        \"System.Reflection.DispatchProxy.4.0.1.nupkg.sha512\",\n        \"System.Reflection.DispatchProxy.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\",\n        \"ref/netstandard1.3/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/de/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/es/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/fr/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/it/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/ja/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/ko/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/ru/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Reflection.DispatchProxy.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\"\n      ]\n    },\n    \"System.Reflection.Emit/4.0.1\": {\n      \"sha512\": \"Op9FobZUg2561W/CL0TV89SLUAEzViA6QEojV26ZmW01B92GAM6AMc7uXlqMXL6ijvmzK3cB6hNQ0AT52v25wQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Emit/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Emit.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Emit.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.dll\",\n        \"lib/netstandard1.3/System.Reflection.Emit.dll\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netstandard1.1/System.Reflection.Emit.dll\",\n        \"ref/netstandard1.1/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/de/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/es/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/fr/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/it/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/ja/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/ko/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/ru/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n      \"sha512\": \"yxiJWtM/c5r4aY7HZuWcO9IUPW/bN5QrxqUf4x62Xwtm6bj2p2HX+hcqcF/TATqmKJidlwaH6V7RbAqq/z+ACA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Emit.ILGeneration/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Emit.ILGeneration.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Emit.ILGeneration.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\",\n        \"lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll\",\n        \"lib/portable-net45+wp8/_._\",\n        \"lib/wp80/_._\",\n        \"ref/net45/_._\",\n        \"ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll\",\n        \"ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/portable-net45+wp8/_._\",\n        \"ref/wp80/_._\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"System.Reflection.Emit.Lightweight/4.0.1\": {\n      \"sha512\": \"H/nqtd+zhmqKGyjgCgm4xC9XjnJtsN78JuIG1lWFcXWBe+nuo8d2gmHTgNIyV6KpUkjJ55QeQ3sFbUga49bBiQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Emit.Lightweight/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Emit.Lightweight.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Emit.Lightweight.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\",\n        \"lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll\",\n        \"lib/portable-net45+wp8/_._\",\n        \"lib/wp80/_._\",\n        \"ref/net45/_._\",\n        \"ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll\",\n        \"ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/portable-net45+wp8/_._\",\n        \"ref/wp80/_._\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"System.Reflection.Extensions/4.0.1\": {\n      \"sha512\": \"aC0iBvp77nThKAy9RAnZoLquWovp5D0H8DK7Mjb2ON6pPaNrS6/Po+qfAdaM0q9bjLpmt1W7JQ6QlLVpWQszZg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Extensions/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Extensions.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Extensions.dll\",\n        \"ref/netcore50/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/de/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/es/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/fr/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/it/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/ja/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/ko/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/ru/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/zh-hans/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/zh-hant/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/System.Reflection.Extensions.dll\",\n        \"ref/netstandard1.0/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Reflection.Metadata/1.3.0\": {\n      \"sha512\": \"sruaBTiGAHKrEbHRC/lkeXcjuZ1eu2hndmmhkUidqAZsG28dewEu7sq/k4dKd+v0m3Zctkm4onEHqc85InlMwQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Metadata/1.3.0\",\n      \"files\": [\n        \"System.Reflection.Metadata.1.3.0.nupkg.sha512\",\n        \"System.Reflection.Metadata.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.1/System.Reflection.Metadata.dll\",\n        \"lib/netstandard1.1/System.Reflection.Metadata.xml\",\n        \"lib/portable-net45+win8/System.Reflection.Metadata.dll\",\n        \"lib/portable-net45+win8/System.Reflection.Metadata.xml\"\n      ]\n    },\n    \"System.Reflection.Primitives/4.0.1\": {\n      \"sha512\": \"tUcC/Kjs4ZvV2G5tKTNuKHPryTXR3eAyzDXPvhaHDeb2ZZS/XFMrdWG6KY/3oWwEhMrm85WO2Q4cQq0ukR3jYg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Primitives/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Primitives.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Primitives.dll\",\n        \"ref/netcore50/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/de/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/es/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/fr/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/it/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/ja/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/ko/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/ru/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/zh-hans/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/zh-hant/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/System.Reflection.Primitives.dll\",\n        \"ref/netstandard1.0/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Reflection.TypeExtensions/4.1.0\": {\n      \"sha512\": \"j2APlYMPkQCnJf9LK7ytYWzTxlOui9VQCnJY/TGobElEdvszhklyRbXonzf9iZgFq9douHCDSWB1IxZbfIbfPg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.TypeExtensions/4.1.0\",\n      \"files\": [\n        \"System.Reflection.TypeExtensions.4.1.0.nupkg.sha512\",\n        \"System.Reflection.TypeExtensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Reflection.TypeExtensions.dll\",\n        \"lib/net462/System.Reflection.TypeExtensions.dll\",\n        \"lib/netcore50/System.Reflection.TypeExtensions.dll\",\n        \"lib/netstandard1.5/System.Reflection.TypeExtensions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Reflection.TypeExtensions.dll\",\n        \"ref/net462/System.Reflection.TypeExtensions.dll\",\n        \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\",\n        \"ref/netstandard1.3/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/System.Reflection.TypeExtensions.dll\",\n        \"ref/netstandard1.5/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\"\n      ]\n    },\n    \"System.Resources.ResourceManager/4.0.1\": {\n      \"sha512\": \"0CcQOn4WItnjon4GNnbCEKtn6+9Pw3J8FfQN1qAY/B/wC/ym/AO/JY0cQv7plDPDziP8aAlu5gWbC9cfRYRDtg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Resources.ResourceManager/4.0.1\",\n      \"files\": [\n        \"System.Resources.ResourceManager.4.0.1.nupkg.sha512\",\n        \"System.Resources.ResourceManager.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Resources.ResourceManager.dll\",\n        \"ref/netcore50/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/de/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/es/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/fr/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/it/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/ja/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/ko/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/ru/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/zh-hans/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/zh-hant/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/System.Resources.ResourceManager.dll\",\n        \"ref/netstandard1.0/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/de/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/es/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/fr/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/it/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/ja/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/ko/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/ru/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime/4.1.0\": {\n      \"sha512\": \"dNUxQcyAFhic0cnxJtcYgYmcqgp7PUXDZK5uvqUxW6CLEBwBt4/i4/tRYBBLw5WXoUoGtBrLQ2SjbDy1xQGB5Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime/4.1.0\",\n      \"files\": [\n        \"System.Runtime.4.1.0.nupkg.sha512\",\n        \"System.Runtime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Runtime.dll\",\n        \"lib/portable-net45+win8+wp80+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Runtime.dll\",\n        \"ref/netcore50/System.Runtime.dll\",\n        \"ref/netcore50/System.Runtime.xml\",\n        \"ref/netcore50/de/System.Runtime.xml\",\n        \"ref/netcore50/es/System.Runtime.xml\",\n        \"ref/netcore50/fr/System.Runtime.xml\",\n        \"ref/netcore50/it/System.Runtime.xml\",\n        \"ref/netcore50/ja/System.Runtime.xml\",\n        \"ref/netcore50/ko/System.Runtime.xml\",\n        \"ref/netcore50/ru/System.Runtime.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.xml\",\n        \"ref/netstandard1.0/System.Runtime.dll\",\n        \"ref/netstandard1.0/System.Runtime.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.xml\",\n        \"ref/netstandard1.2/System.Runtime.dll\",\n        \"ref/netstandard1.2/System.Runtime.xml\",\n        \"ref/netstandard1.2/de/System.Runtime.xml\",\n        \"ref/netstandard1.2/es/System.Runtime.xml\",\n        \"ref/netstandard1.2/fr/System.Runtime.xml\",\n        \"ref/netstandard1.2/it/System.Runtime.xml\",\n        \"ref/netstandard1.2/ja/System.Runtime.xml\",\n        \"ref/netstandard1.2/ko/System.Runtime.xml\",\n        \"ref/netstandard1.2/ru/System.Runtime.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Runtime.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Runtime.xml\",\n        \"ref/netstandard1.3/System.Runtime.dll\",\n        \"ref/netstandard1.3/System.Runtime.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.xml\",\n        \"ref/netstandard1.5/System.Runtime.dll\",\n        \"ref/netstandard1.5/System.Runtime.xml\",\n        \"ref/netstandard1.5/de/System.Runtime.xml\",\n        \"ref/netstandard1.5/es/System.Runtime.xml\",\n        \"ref/netstandard1.5/fr/System.Runtime.xml\",\n        \"ref/netstandard1.5/it/System.Runtime.xml\",\n        \"ref/netstandard1.5/ja/System.Runtime.xml\",\n        \"ref/netstandard1.5/ko/System.Runtime.xml\",\n        \"ref/netstandard1.5/ru/System.Runtime.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Runtime.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Runtime.xml\",\n        \"ref/portable-net45+win8+wp80+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.Extensions/4.1.0\": {\n      \"sha512\": \"b2d+O5cdaAMydGoSm4pUuDyuhnBjyAYo5chDM6ROJ33Ow5SZEL4CdISfRCGs+AwdmaFUjflKtMsWsuID7XDYXw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Extensions/4.1.0\",\n      \"files\": [\n        \"System.Runtime.Extensions.4.1.0.nupkg.sha512\",\n        \"System.Runtime.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Runtime.Extensions.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Runtime.Extensions.dll\",\n        \"ref/netcore50/System.Runtime.Extensions.dll\",\n        \"ref/netcore50/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/de/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/es/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/fr/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/it/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/ja/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/ko/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/ru/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/System.Runtime.Extensions.dll\",\n        \"ref/netstandard1.0/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/System.Runtime.Extensions.dll\",\n        \"ref/netstandard1.3/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/System.Runtime.Extensions.dll\",\n        \"ref/netstandard1.5/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/de/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/es/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/fr/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/it/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/ja/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/ko/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/ru/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.Handles/4.0.1\": {\n      \"sha512\": \"39CAK1kWvFuZV+OvwMZrYiErBzhtOBWgv9ZWTOPn5a2ECMSpR0KVAA5rdlUDra66tNm1GuLDl4KOCWl91MJ5Pw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Handles/4.0.1\",\n      \"files\": [\n        \"System.Runtime.Handles.4.0.1.nupkg.sha512\",\n        \"System.Runtime.Handles.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/_._\",\n        \"ref/netstandard1.3/System.Runtime.Handles.dll\",\n        \"ref/netstandard1.3/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.InteropServices/4.1.0\": {\n      \"sha512\": \"KmIIw0sflkqgGdp6tzb9BfNm9HFD3Ibw95MJyscumVK169nmKQaoJZA9p7gTJosuJcqNVYd/t2tbytTv6LCg0w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.InteropServices/4.1.0\",\n      \"files\": [\n        \"System.Runtime.InteropServices.4.1.0.nupkg.sha512\",\n        \"System.Runtime.InteropServices.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Runtime.InteropServices.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Runtime.InteropServices.dll\",\n        \"ref/netcore50/System.Runtime.InteropServices.dll\",\n        \"ref/netcore50/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/de/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/es/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/it/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/System.Runtime.InteropServices.dll\",\n        \"ref/netstandard1.1/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/de/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/es/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/it/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/System.Runtime.InteropServices.dll\",\n        \"ref/netstandard1.2/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/de/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/es/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/it/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/System.Runtime.InteropServices.dll\",\n        \"ref/netstandard1.3/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/System.Runtime.InteropServices.dll\",\n        \"ref/netstandard1.5/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/de/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/es/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/it/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n      \"sha512\": \"oIIXM4w2y3MiEZEXA+RTtfPV+SZ1ymbFdWppHlUciNdNIL0/Uo3HW9q9iN2O7T7KUmRdvjA7C2Gv4exAyW4zEQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Runtime.InteropServices.WindowsRuntime.4.0.1.nupkg.sha512\",\n        \"System.Runtime.InteropServices.WindowsRuntime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"lib/netstandard1.3/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios1/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/de/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/es/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/fr/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/it/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/ja/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/ko/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/ru/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.Runtime.Numerics/4.0.1\": {\n      \"sha512\": \"GXLieN7/+UYytbbjD8JXSAbAs8+b0Xw3gdJiqwRxdM8ObAPh6fKMVNKwV77CqY0xDPRvR3/Xq8q50EAkn5OQiA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Numerics/4.0.1\",\n      \"files\": [\n        \"System.Runtime.Numerics.4.0.1.nupkg.sha512\",\n        \"System.Runtime.Numerics.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.Numerics.dll\",\n        \"lib/netstandard1.3/System.Runtime.Numerics.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.Numerics.dll\",\n        \"ref/netcore50/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/de/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/es/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/fr/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/it/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/ja/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/ko/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/ru/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/System.Runtime.Numerics.dll\",\n        \"ref/netstandard1.1/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/de/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/es/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/fr/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/it/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/ja/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/ko/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/ru/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.Serialization.Json/4.0.2\": {\n      \"sha512\": \"+7DIJhnKYgCzUgcLbVTtRQb2l1M0FP549XFlFkQM5lmNiUBl44AfNbx4bz61xA8PzLtlYwfmif4JJJW7MPPnjg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Runtime.Serialization.Json.4.0.2.nupkg.sha512\",\n        \"System.Runtime.Serialization.Json.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.Serialization.Json.dll\",\n        \"lib/netstandard1.3/System.Runtime.Serialization.Json.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.Serialization.Json.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/de/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/es/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/fr/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/it/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/ja/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/ko/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/ru/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Json.dll\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Json.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.Serialization.Primitives/4.1.1\": {\n      \"sha512\": \"HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Runtime.Serialization.Primitives.4.1.1.nupkg.sha512\",\n        \"System.Runtime.Serialization.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.Runtime.Serialization.Primitives.dll\",\n        \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\",\n        \"lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/de/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/es/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/fr/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/it/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/ja/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/ko/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/ru/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/netstandard1.3/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\"\n      ]\n    },\n    \"System.Runtime.Serialization.Xml/4.1.1\": {\n      \"sha512\": \"yqfKHkWUAdI0hdDIdD9KDzluKtZ8IIqLF3O7xIZlt6UTs1bOvFRpCvRTvGQva3Ak/ZM9/nq9IHBJ1tC4Ybcrjg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Runtime.Serialization.Xml.4.1.1.nupkg.sha512\",\n        \"System.Runtime.Serialization.Xml.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.Runtime.Serialization.Xml.dll\",\n        \"lib/netcore50/System.Runtime.Serialization.Xml.dll\",\n        \"lib/netstandard1.3/System.Runtime.Serialization.Xml.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.Runtime.Serialization.Xml.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Xml.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/de/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/es/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/fr/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/it/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/ja/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/ko/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/ru/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Xml.dll\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/System.Runtime.Serialization.Xml.dll\",\n        \"ref/netstandard1.3/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Xml.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.WindowsRuntime/4.0.11\": {\n      \"sha512\": \"C7rjmukRI0zE1Upl9hhmO4ZxasFYUTadXtgikLTgWwmIwa1jAD7yhOHKX3odajlRnSt34Ih+5VZliaqfFvQOcg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Runtime.WindowsRuntime.4.0.11.nupkg.sha512\",\n        \"System.Runtime.WindowsRuntime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/portable-win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.dll\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/de/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/es/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/fr/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/it/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/ja/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/ko/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/ru/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/System.Runtime.WindowsRuntime.dll\",\n        \"ref/netstandard1.0/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/System.Runtime.WindowsRuntime.dll\",\n        \"ref/netstandard1.2/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/de/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/es/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/fr/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/it/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/ja/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/ko/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/ru/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Runtime.WindowsRuntime.xml\",\n        \"ref/portable-win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\",\n        \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n      \"sha512\": \"ZG2uW8JYmFs1sGlhhAoW/F5WmZotkeSxzMils72qGEsJI6+JcQUa6oleSujULC4nk13F5Us9zvlvD2WfB+9Thw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Runtime.WindowsRuntime.UI.Xaml.4.0.1.nupkg.sha512\",\n        \"System.Runtime.WindowsRuntime.UI.Xaml.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/portable-win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/de/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/es/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/fr/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/it/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/ja/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/ko/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/ru/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/System.Runtime.WindowsRuntime.UI.Xaml.dll\",\n        \"ref/netstandard1.1/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/de/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/es/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/fr/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/it/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/ja/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/ko/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/ru/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/portable-win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\"\n      ]\n    },\n    \"System.Security.Claims/4.0.1\": {\n      \"sha512\": \"Uc9b5DyxfFkTin13rqSr/LtrRxY0B3T/izmzDfPIXn/ak7P3VjBxb7KNVz8XWqYXF3ZDAE0rOF1CFFOfIs54iw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Claims/4.0.1\",\n      \"files\": [\n        \"System.Security.Claims.4.0.1.nupkg.sha512\",\n        \"System.Security.Claims.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Claims.dll\",\n        \"lib/netstandard1.3/System.Security.Claims.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Claims.dll\",\n        \"ref/netstandard1.3/System.Security.Claims.dll\",\n        \"ref/netstandard1.3/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/de/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/es/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/fr/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/it/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/ja/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/ko/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/ru/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Security.Claims.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Security.Cryptography.Algorithms/4.2.0\": {\n      \"sha512\": \"zWFPaCthkO5Vfl4L3S4Ooxt6q06lq/0bkNHQF7xlZgbBpBfYGGaH0R3rMt74HaaiuWmcF5A5CK3/rR4pMKIZTg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.Algorithms/4.2.0\",\n      \"files\": [\n        \"System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512\",\n        \"System.Security.Cryptography.Algorithms.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Cryptography.Algorithms.dll\",\n        \"lib/net461/System.Security.Cryptography.Algorithms.dll\",\n        \"lib/net463/System.Security.Cryptography.Algorithms.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/net461/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/net463/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll\"\n      ]\n    },\n    \"System.Security.Cryptography.Cng/4.2.0\": {\n      \"sha512\": \"hkFtNHKFnykH8MQQUJfI8LMO/V91+XBjwcshX1nNoX+zKB/rvL88sl9oxxLRxAnEc5oL5r4vMyr/d7N2Xdlhow==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.Cng/4.2.0\",\n      \"files\": [\n        \"System.Security.Cryptography.Cng.4.2.0.nupkg.sha512\",\n        \"System.Security.Cryptography.Cng.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net46/System.Security.Cryptography.Cng.dll\",\n        \"lib/net461/System.Security.Cryptography.Cng.dll\",\n        \"lib/net463/System.Security.Cryptography.Cng.dll\",\n        \"ref/net46/System.Security.Cryptography.Cng.dll\",\n        \"ref/net461/System.Security.Cryptography.Cng.dll\",\n        \"ref/net463/System.Security.Cryptography.Cng.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Cng.dll\",\n        \"ref/netstandard1.4/System.Security.Cryptography.Cng.dll\",\n        \"ref/netstandard1.6/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll\"\n      ]\n    },\n    \"System.Security.Cryptography.Encoding/4.0.0\": {\n      \"sha512\": \"+61WQgp8D8VRHr8h2oFa4dRBxHg0CGOcFhBi1J+qHMDx5hiHFFe2iaAVXyt9w9zSGJpeUWRB10u97Z3mZHDqMA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.Encoding/4.0.0\",\n      \"files\": [\n        \"System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512\",\n        \"System.Security.Cryptography.Encoding.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Cryptography.Encoding.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Cryptography.Encoding.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\",\n        \"runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\"\n      ]\n    },\n    \"System.Security.Cryptography.Primitives/4.0.0\": {\n      \"sha512\": \"oqBa62dVFbIpEMw39/yjjzW1vKPaRwxhAq96BUhiP96vr8gyP/pCTOv25kGQAWwRKfhZic7p9zoIUFc1nNOMVg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.Primitives/4.0.0\",\n      \"files\": [\n        \"System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512\",\n        \"System.Security.Cryptography.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Cryptography.Primitives.dll\",\n        \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Cryptography.Primitives.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n      \"sha512\": \"YOURSTUb2RNriiXC5nbOIT1n11CDHbX202CcFCRRr0Xs+crmpSNTCbzO9HJzBpEBE/Am+ogtQovPJpg5mksEAw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.X509Certificates/4.1.0\",\n      \"files\": [\n        \"System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512\",\n        \"System.Security.Cryptography.X509Certificates.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Cryptography.X509Certificates.dll\",\n        \"lib/net461/System.Security.Cryptography.X509Certificates.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Cryptography.X509Certificates.dll\",\n        \"ref/net461/System.Security.Cryptography.X509Certificates.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\",\n        \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll\",\n        \"runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll\",\n        \"runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll\",\n        \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\",\n        \"runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll\"\n      ]\n    },\n    \"System.Security.Principal/4.0.1\": {\n      \"sha512\": \"tYeNk0R4Ulo5ZfZCXU3d98T/qYh0/ZfA2QbX2EX/LsQU9zYq5STaAZ9fyQMzYvb9Ug/5TFW5XbjrKxQPeqObGg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Principal/4.0.1\",\n      \"files\": [\n        \"System.Security.Principal.4.0.1.nupkg.sha512\",\n        \"System.Security.Principal.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Security.Principal.dll\",\n        \"lib/netstandard1.0/System.Security.Principal.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Security.Principal.dll\",\n        \"ref/netcore50/System.Security.Principal.xml\",\n        \"ref/netcore50/de/System.Security.Principal.xml\",\n        \"ref/netcore50/es/System.Security.Principal.xml\",\n        \"ref/netcore50/fr/System.Security.Principal.xml\",\n        \"ref/netcore50/it/System.Security.Principal.xml\",\n        \"ref/netcore50/ja/System.Security.Principal.xml\",\n        \"ref/netcore50/ko/System.Security.Principal.xml\",\n        \"ref/netcore50/ru/System.Security.Principal.xml\",\n        \"ref/netcore50/zh-hans/System.Security.Principal.xml\",\n        \"ref/netcore50/zh-hant/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/System.Security.Principal.dll\",\n        \"ref/netstandard1.0/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/de/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/es/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/fr/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/it/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/ja/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/ko/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/ru/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Security.Principal.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ServiceModel.Duplex/4.0.1\": {\n      \"sha512\": \"4I6WSQP4BiT3yG5NetAyAb626e2HlsgSzkiiqGtf4LxGpO3uFQ4eGSXsgVRnxJoDYcnDCH7q215eH/jZBMmx+w==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.ServiceModel.Duplex.4.0.1.nupkg.sha512\",\n        \"System.ServiceModel.Duplex.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ServiceModel.Duplex.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.Duplex.dll\",\n        \"lib/portable-net45+win8/_._\",\n        \"lib/win8/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ServiceModel.Duplex.dll\",\n        \"ref/netcore50/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/de/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/es/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/it/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.Duplex.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.Duplex.xml\",\n        \"ref/portable-net45+win8/_._\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.ServiceModel.Http/4.1.0\": {\n      \"sha512\": \"sCIV+wrA4Antjnk0+fk6rxpzQkd2bReN4UTipGv5iyPNApVv/KtAfeDMg+YIajJ7VkQD60uVBTQmy3LZrRnNOw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.ServiceModel.Http.4.1.0.nupkg.sha512\",\n        \"System.ServiceModel.Http.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.ServiceModel.Http.dll\",\n        \"lib/netcore50/System.ServiceModel.Http.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.Http.dll\",\n        \"lib/portable-net45+win8+wp8/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp8/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.ServiceModel.Http.dll\",\n        \"ref/netcore50/System.ServiceModel.Http.dll\",\n        \"ref/netcore50/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/de/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/es/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/it/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/System.ServiceModel.Http.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/de/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/es/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/fr/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/it/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/ja/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/ko/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/ru/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.Http.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/System.ServiceModel.Http.dll\",\n        \"ref/netstandard1.3/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/de/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/es/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/fr/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/it/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/ja/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/ko/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/ru/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/portable-net45+win8+wp8/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp8/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ServiceModel.NetTcp/4.1.0\": {\n      \"sha512\": \"n+Ir2B9SAd5XwAaXPIpLQsbaDcscSsyJH0ODpm5tpK8xXxmLhiPct5kujzeAiAhB37lVSetrSINdFb1Llg2ngg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.ServiceModel.NetTcp.4.1.0.nupkg.sha512\",\n        \"System.ServiceModel.NetTcp.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.ServiceModel.NetTcp.dll\",\n        \"lib/netcore50/System.ServiceModel.NetTcp.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.NetTcp.dll\",\n        \"lib/portable-net45+win8/_._\",\n        \"lib/win8/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.ServiceModel.NetTcp.dll\",\n        \"ref/netcore50/System.ServiceModel.NetTcp.dll\",\n        \"ref/netcore50/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/de/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/es/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/it/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.NetTcp.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/System.ServiceModel.NetTcp.dll\",\n        \"ref/netstandard1.3/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/de/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/es/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/fr/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/it/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/ja/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/ko/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/ru/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ServiceModel.NetTcp.xml\",\n        \"ref/portable-net45+win8/_._\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.ServiceModel.Primitives/4.1.0\": {\n      \"sha512\": \"Kd65HOn/5pL9xtCUkSL8xVqpqBUYy9tsfo0qe/MTTzApY8WQ+6i4I2ts++M+m4vbOanCoEsjjUj26P6C6ilQjQ==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.ServiceModel.Primitives.4.1.0.nupkg.sha512\",\n        \"System.ServiceModel.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.ServiceModel.Primitives.dll\",\n        \"lib/netcore50/System.ServiceModel.Primitives.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.Primitives.dll\",\n        \"lib/portable-net45+win8+wp8/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp8/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.ServiceModel.Primitives.dll\",\n        \"ref/netcore50/System.ServiceModel.Primitives.dll\",\n        \"ref/netcore50/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/de/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/es/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/it/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/System.ServiceModel.Primitives.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/de/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/es/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/it/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.Primitives.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/System.ServiceModel.Primitives.dll\",\n        \"ref/netstandard1.3/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/de/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/es/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/it/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/portable-net45+win8+wp8/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp8/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ServiceModel.Security/4.0.1\": {\n      \"sha512\": \"82pkDb6LMq/NHi+DVHZ7zKHMMJ7mR6rVl9TpH+p8zJhZrVYJez9vTbdMsxQhbNOngEkJKzZFveNYpaRv/3RMsg==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.ServiceModel.Security.4.0.1.nupkg.sha512\",\n        \"System.ServiceModel.Security.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ServiceModel.Security.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.Security.dll\",\n        \"lib/portable-net45+win8+wp8/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp8/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ServiceModel.Security.dll\",\n        \"ref/netcore50/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/de/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/es/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/it/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/System.ServiceModel.Security.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/de/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/es/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/fr/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/it/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/ja/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/ko/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/ru/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.Security.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.Security.xml\",\n        \"ref/portable-net45+win8+wp8/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp8/_._\"\n      ]\n    },\n    \"System.Text.Encoding/4.0.11\": {\n      \"sha512\": \"XU/T53PgG9qApSiVA+GtPtLbU787krHRE9hedLcwnZgYpbNgJG0GVy/fLcH6hCpHgOMLVipqHvJtQdDNqC5U/Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Text.Encoding/4.0.11\",\n      \"files\": [\n        \"System.Text.Encoding.4.0.11.nupkg.sha512\",\n        \"System.Text.Encoding.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Text.Encoding.dll\",\n        \"ref/netcore50/System.Text.Encoding.xml\",\n        \"ref/netcore50/de/System.Text.Encoding.xml\",\n        \"ref/netcore50/es/System.Text.Encoding.xml\",\n        \"ref/netcore50/fr/System.Text.Encoding.xml\",\n        \"ref/netcore50/it/System.Text.Encoding.xml\",\n        \"ref/netcore50/ja/System.Text.Encoding.xml\",\n        \"ref/netcore50/ko/System.Text.Encoding.xml\",\n        \"ref/netcore50/ru/System.Text.Encoding.xml\",\n        \"ref/netcore50/zh-hans/System.Text.Encoding.xml\",\n        \"ref/netcore50/zh-hant/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/System.Text.Encoding.dll\",\n        \"ref/netstandard1.0/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/de/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/es/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/fr/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/it/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/ja/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/ko/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/ru/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/System.Text.Encoding.dll\",\n        \"ref/netstandard1.3/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/de/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/es/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/fr/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/it/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/ja/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/ko/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/ru/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Text.Encoding.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Text.Encoding.CodePages/4.0.1\": {\n      \"sha512\": \"k1jbRl6NE++AOSzxudhFfweNv/wnfI8KOBUyQD/sfX83X4XVrd285ED8b7/PEgSMqWnyIgfFQjZNGUfzboXOzA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Text.Encoding.CodePages/4.0.1\",\n      \"files\": [\n        \"System.Text.Encoding.CodePages.4.0.1.nupkg.sha512\",\n        \"System.Text.Encoding.CodePages.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Text.Encoding.CodePages.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\",\n        \"ref/netstandard1.3/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\"\n      ]\n    },\n    \"System.Text.Encoding.Extensions/4.0.11\": {\n      \"sha512\": \"tUmgrKNcoHx1rb8oVFXPxwvjolnQ5SxJUsCHujfYxoN0bU9ozrbk5PovItIMzcPi1fYxeZjQ6sCLqKDeLJi6nw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Text.Encoding.Extensions/4.0.11\",\n      \"files\": [\n        \"System.Text.Encoding.Extensions.4.0.11.nupkg.sha512\",\n        \"System.Text.Encoding.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Text.Encoding.Extensions.dll\",\n        \"ref/netcore50/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/de/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/es/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/fr/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/it/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/ja/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/ko/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/ru/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/System.Text.Encoding.Extensions.dll\",\n        \"ref/netstandard1.0/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/System.Text.Encoding.Extensions.dll\",\n        \"ref/netstandard1.3/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Text.RegularExpressions/4.1.0\": {\n      \"sha512\": \"s3hrq+DHOv7mO+vyziDEGAxclaJgMzkjh4SJl7elMqTRsYxCzldDTU7A0VfCImsEafMEdzTzRmlJfCFoSgMjXg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Text.RegularExpressions/4.1.0\",\n      \"files\": [\n        \"System.Text.RegularExpressions.4.1.0.nupkg.sha512\",\n        \"System.Text.RegularExpressions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net463/System.Text.RegularExpressions.dll\",\n        \"lib/netcore50/System.Text.RegularExpressions.dll\",\n        \"lib/netstandard1.6/System.Text.RegularExpressions.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net463/System.Text.RegularExpressions.dll\",\n        \"ref/netcore50/System.Text.RegularExpressions.dll\",\n        \"ref/netcore50/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/de/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/es/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/fr/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/it/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/ja/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/ko/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/ru/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/System.Text.RegularExpressions.dll\",\n        \"ref/netstandard1.0/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/de/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/es/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/fr/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/it/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/ja/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/ko/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/ru/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/System.Text.RegularExpressions.dll\",\n        \"ref/netstandard1.3/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/de/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/es/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/fr/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/it/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/ja/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/ko/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/ru/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/System.Text.RegularExpressions.dll\",\n        \"ref/netstandard1.6/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/de/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/es/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/fr/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/it/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/ja/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/ko/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/ru/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Threading/4.0.11\": {\n      \"sha512\": \"DEyRNv35Hclmuu4xEk8pdZr0b8G4fnZClWkAb3ag77ZWcD2KUiGWSoTFICF5i8mgMLRRmDfAv0yrLI8aBmzuZw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading/4.0.11\",\n      \"files\": [\n        \"System.Threading.4.0.11.nupkg.sha512\",\n        \"System.Threading.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.dll\",\n        \"lib/netstandard1.3/System.Threading.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Threading.dll\",\n        \"ref/netcore50/System.Threading.xml\",\n        \"ref/netcore50/de/System.Threading.xml\",\n        \"ref/netcore50/es/System.Threading.xml\",\n        \"ref/netcore50/fr/System.Threading.xml\",\n        \"ref/netcore50/it/System.Threading.xml\",\n        \"ref/netcore50/ja/System.Threading.xml\",\n        \"ref/netcore50/ko/System.Threading.xml\",\n        \"ref/netcore50/ru/System.Threading.xml\",\n        \"ref/netcore50/zh-hans/System.Threading.xml\",\n        \"ref/netcore50/zh-hant/System.Threading.xml\",\n        \"ref/netstandard1.0/System.Threading.dll\",\n        \"ref/netstandard1.0/System.Threading.xml\",\n        \"ref/netstandard1.0/de/System.Threading.xml\",\n        \"ref/netstandard1.0/es/System.Threading.xml\",\n        \"ref/netstandard1.0/fr/System.Threading.xml\",\n        \"ref/netstandard1.0/it/System.Threading.xml\",\n        \"ref/netstandard1.0/ja/System.Threading.xml\",\n        \"ref/netstandard1.0/ko/System.Threading.xml\",\n        \"ref/netstandard1.0/ru/System.Threading.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Threading.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Threading.xml\",\n        \"ref/netstandard1.3/System.Threading.dll\",\n        \"ref/netstandard1.3/System.Threading.xml\",\n        \"ref/netstandard1.3/de/System.Threading.xml\",\n        \"ref/netstandard1.3/es/System.Threading.xml\",\n        \"ref/netstandard1.3/fr/System.Threading.xml\",\n        \"ref/netstandard1.3/it/System.Threading.xml\",\n        \"ref/netstandard1.3/ja/System.Threading.xml\",\n        \"ref/netstandard1.3/ko/System.Threading.xml\",\n        \"ref/netstandard1.3/ru/System.Threading.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Threading.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Threading.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Threading.dll\"\n      ]\n    },\n    \"System.Threading.Overlapped/4.0.1\": {\n      \"sha512\": \"9HrkqzI718N2lLoJmQWFL+O5zzwF991G660GjHI00NZhbBjX33mzrVVzlE7nb2n5qU7Ax3JlTpuThVvyvCUyEA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Overlapped/4.0.1\",\n      \"files\": [\n        \"System.Threading.Overlapped.4.0.1.nupkg.sha512\",\n        \"System.Threading.Overlapped.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net46/System.Threading.Overlapped.dll\",\n        \"ref/net46/System.Threading.Overlapped.dll\",\n        \"ref/netstandard1.3/System.Threading.Overlapped.dll\",\n        \"ref/netstandard1.3/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/de/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/es/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/fr/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/it/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/ja/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/ko/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/ru/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml\",\n        \"runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll\",\n        \"runtimes/win/lib/net46/System.Threading.Overlapped.dll\",\n        \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll\"\n      ]\n    },\n    \"System.Threading.Tasks/4.0.11\": {\n      \"sha512\": \"U8/8NstkRxAdWYJRe7AI3gfA1OKkfOKhwYBP/3KJH0oB3ADoMs3S1rh+CPRl5SP9WIhb+M4+oEaqYcenbOI0OQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Tasks/4.0.11\",\n      \"files\": [\n        \"System.Threading.Tasks.4.0.11.nupkg.sha512\",\n        \"System.Threading.Tasks.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Threading.Tasks.dll\",\n        \"ref/netcore50/System.Threading.Tasks.xml\",\n        \"ref/netcore50/de/System.Threading.Tasks.xml\",\n        \"ref/netcore50/es/System.Threading.Tasks.xml\",\n        \"ref/netcore50/fr/System.Threading.Tasks.xml\",\n        \"ref/netcore50/it/System.Threading.Tasks.xml\",\n        \"ref/netcore50/ja/System.Threading.Tasks.xml\",\n        \"ref/netcore50/ko/System.Threading.Tasks.xml\",\n        \"ref/netcore50/ru/System.Threading.Tasks.xml\",\n        \"ref/netcore50/zh-hans/System.Threading.Tasks.xml\",\n        \"ref/netcore50/zh-hant/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/System.Threading.Tasks.dll\",\n        \"ref/netstandard1.0/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/de/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/es/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/fr/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/it/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/ja/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/ko/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/ru/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/System.Threading.Tasks.dll\",\n        \"ref/netstandard1.3/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/de/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/es/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/fr/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/it/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/ja/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/ko/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/ru/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Threading.Tasks.Dataflow/4.6.0\": {\n      \"sha512\": \"lYqhNcIS7wrZaxQsVH9zVr9guziNKk7v5mbErxJDgBmvAu8cSYKdqBUZHsdHoUVwZK6qr+0hog7jL5mHB6ye9w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Tasks.Dataflow/4.6.0\",\n      \"files\": [\n        \"System.Threading.Tasks.Dataflow.4.6.0.nupkg.sha512\",\n        \"System.Threading.Tasks.Dataflow.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML\",\n        \"lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll\",\n        \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML\",\n        \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\"\n      ]\n    },\n    \"System.Threading.Tasks.Extensions/4.0.0\": {\n      \"sha512\": \"FjsEih9scCfkGilJ6elxtF8Xb+C2gwOL17/f0lPi1RyMl4CBqyWe0IC97gIBYZ8fatME+wq9RJlZQo4pwP0BhA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Tasks.Extensions/4.0.0\",\n      \"files\": [\n        \"System.Threading.Tasks.Extensions.4.0.0.nupkg.sha512\",\n        \"System.Threading.Tasks.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/System.Threading.Tasks.Extensions.dll\",\n        \"lib/netstandard1.0/System.Threading.Tasks.Extensions.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml\"\n      ]\n    },\n    \"System.Threading.Tasks.Parallel/4.0.1\": {\n      \"sha512\": \"Du9bQ5FxQCAgpjC1BL225rv263kYgk6kvi2keDWjJ0tmHv8niu6v2zAPkxWPoQlYib3l1XcAoGeO0ZLLAUkzvw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Tasks.Parallel/4.0.1\",\n      \"files\": [\n        \"System.Threading.Tasks.Parallel.4.0.1.nupkg.sha512\",\n        \"System.Threading.Tasks.Parallel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.Tasks.Parallel.dll\",\n        \"lib/netstandard1.3/System.Threading.Tasks.Parallel.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Threading.Tasks.Parallel.dll\",\n        \"ref/netcore50/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/de/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/es/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/fr/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/it/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/ja/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/ko/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/ru/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/System.Threading.Tasks.Parallel.dll\",\n        \"ref/netstandard1.1/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Threading.Timer/4.0.1\": {\n      \"sha512\": \"/fE2DFLL/MDW3Uu1C4yAb5ROzvdy3JxWOD+oInYi1tqMg9X6oAzvZtgHs0P6rUgRt+bI3vYnov68aSWC+5I2BQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Timer/4.0.1\",\n      \"files\": [\n        \"System.Threading.Timer.4.0.1.nupkg.sha512\",\n        \"System.Threading.Timer.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net451/_._\",\n        \"lib/portable-net451+win81+wpa81/_._\",\n        \"lib/win81/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net451/_._\",\n        \"ref/netcore50/System.Threading.Timer.dll\",\n        \"ref/netcore50/System.Threading.Timer.xml\",\n        \"ref/netcore50/de/System.Threading.Timer.xml\",\n        \"ref/netcore50/es/System.Threading.Timer.xml\",\n        \"ref/netcore50/fr/System.Threading.Timer.xml\",\n        \"ref/netcore50/it/System.Threading.Timer.xml\",\n        \"ref/netcore50/ja/System.Threading.Timer.xml\",\n        \"ref/netcore50/ko/System.Threading.Timer.xml\",\n        \"ref/netcore50/ru/System.Threading.Timer.xml\",\n        \"ref/netcore50/zh-hans/System.Threading.Timer.xml\",\n        \"ref/netcore50/zh-hant/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/System.Threading.Timer.dll\",\n        \"ref/netstandard1.2/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/de/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/es/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/fr/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/it/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/ja/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/ko/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/ru/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Threading.Timer.xml\",\n        \"ref/portable-net451+win81+wpa81/_._\",\n        \"ref/win81/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Xml.ReaderWriter/4.0.11\": {\n      \"sha512\": \"ljLZUmQZA3R3BQs0dN9ALdDomowUoN8L8PDNFJPaZRY2VSi550G8WFZyVIcCTG3W3VJKnDE8o0HmbLOYwzrbjw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Xml.ReaderWriter/4.0.11\",\n      \"files\": [\n        \"System.Xml.ReaderWriter.4.0.11.nupkg.sha512\",\n        \"System.Xml.ReaderWriter.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Xml.ReaderWriter.dll\",\n        \"lib/netstandard1.3/System.Xml.ReaderWriter.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Xml.ReaderWriter.dll\",\n        \"ref/netcore50/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/de/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/es/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/fr/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/it/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/ja/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/ko/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/ru/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/System.Xml.ReaderWriter.dll\",\n        \"ref/netstandard1.0/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/de/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/es/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/it/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/System.Xml.ReaderWriter.dll\",\n        \"ref/netstandard1.3/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/de/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/es/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/it/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Xml.XDocument/4.0.11\": {\n      \"sha512\": \"xkGSOIWppKi8/g6SpOS638guIkds9Ct7+7rXErjg95O50+rkPfspKkP5kq1tNQBrTeDjyIo8cWnFPR46xnX7Mg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Xml.XDocument/4.0.11\",\n      \"files\": [\n        \"System.Xml.XDocument.4.0.11.nupkg.sha512\",\n        \"System.Xml.XDocument.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Xml.XDocument.dll\",\n        \"lib/netstandard1.3/System.Xml.XDocument.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Xml.XDocument.dll\",\n        \"ref/netcore50/System.Xml.XDocument.xml\",\n        \"ref/netcore50/de/System.Xml.XDocument.xml\",\n        \"ref/netcore50/es/System.Xml.XDocument.xml\",\n        \"ref/netcore50/fr/System.Xml.XDocument.xml\",\n        \"ref/netcore50/it/System.Xml.XDocument.xml\",\n        \"ref/netcore50/ja/System.Xml.XDocument.xml\",\n        \"ref/netcore50/ko/System.Xml.XDocument.xml\",\n        \"ref/netcore50/ru/System.Xml.XDocument.xml\",\n        \"ref/netcore50/zh-hans/System.Xml.XDocument.xml\",\n        \"ref/netcore50/zh-hant/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/System.Xml.XDocument.dll\",\n        \"ref/netstandard1.0/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/de/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/es/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/fr/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/it/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/ja/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/ko/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/ru/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/System.Xml.XDocument.dll\",\n        \"ref/netstandard1.3/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/de/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/es/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/fr/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/it/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/ja/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/ko/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/ru/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Xml.XmlDocument/4.0.1\": {\n      \"sha512\": \"Y1fE49fNxbKAf/aqoA0Xg26Ly3+MVG2NGk8GAJKSVLFUAf3EssdeImEtIuyREC7ZlygEdAfmuPwjeLoCxXnF3Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Xml.XmlDocument/4.0.1\",\n      \"files\": [\n        \"System.Xml.XmlDocument.4.0.1.nupkg.sha512\",\n        \"System.Xml.XmlDocument.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Xml.XmlDocument.dll\",\n        \"lib/netstandard1.3/System.Xml.XmlDocument.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Xml.XmlDocument.dll\",\n        \"ref/netstandard1.3/System.Xml.XmlDocument.dll\",\n        \"ref/netstandard1.3/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/de/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/es/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/fr/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/it/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/ja/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/ko/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/ru/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Xml.XmlSerializer/4.0.11\": {\n      \"sha512\": \"FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==\",\n      \"type\": \"package\",\n      \"files\": [\n        \"System.Xml.XmlSerializer.4.0.11.nupkg.sha512\",\n        \"System.Xml.XmlSerializer.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Xml.XmlSerializer.dll\",\n        \"lib/netstandard1.3/System.Xml.XmlSerializer.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Xml.XmlSerializer.dll\",\n        \"ref/netcore50/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/de/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/es/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/fr/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/it/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/ja/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/ko/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/ru/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/zh-hans/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/zh-hant/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/System.Xml.XmlSerializer.dll\",\n        \"ref/netstandard1.0/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/de/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/es/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/fr/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/it/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/ja/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/ko/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/ru/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/System.Xml.XmlSerializer.dll\",\n        \"ref/netstandard1.3/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/de/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/es/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/fr/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/it/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/ja/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/ko/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/ru/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Xml.XmlSerializer.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\"\n      ]\n    },\n    \"Validation/2.2.8\": {\n      \"sha512\": \"DMNc7JhPlgRwnR+NNb+ldoluObL+RBw96aMoiZae/Looa4vgaAnIysmle/bV2OKqDNW9oUBDckPyfa2+sX6JdA==\",\n      \"type\": \"package\",\n      \"path\": \"Validation/2.2.8\",\n      \"files\": [\n        \"README.md\",\n        \"Validation.2.2.8.nupkg.sha512\",\n        \"Validation.nuspec\",\n        \"lib/dotnet/Validation.dll\",\n        \"lib/dotnet/Validation.xml\",\n        \"lib/portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Validation.dll\",\n        \"lib/portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Validation.xml\",\n        \"lib/portable-net45+dnxcore50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Validation.dll\",\n        \"lib/portable-net45+dnxcore50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Validation.xml\",\n        \"tools/2013/RequiresNotNull.snippet\",\n        \"tools/2013/RequiresNotNullOrEmpty.snippet\",\n        \"tools/2015/RequiresNotNull.snippet\",\n        \"tools/2015/RequiresNotNullOrEmpty.snippet\",\n        \"tools/install_snippets.cmd\",\n        \"tools/uninstall_snippets.cmd\"\n      ]\n    }\n  },\n  \"projectFileDependencyGroups\": {\n    \"\": [\n      \"Microsoft.Azure.Devices.Client >= 1.1.1\",\n      \"Microsoft.Azure.Devices.Shared >= 1.0.2\",\n      \"Microsoft.Band >= 1.3.20628\",\n      \"Microsoft.NETCore.UniversalWindowsPlatform >= 5.2.2\",\n      \"Newtonsoft.Json >= 9.0.1\"\n    ],\n    \"UAP,Version=v10.0\": []\n  },\n  \"tools\": {},\n  \"projectFileToolGroups\": {}\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPMSBand/UWPMSBand.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.24720.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"UWPMSBand\", \"UWPMSBand\\UWPMSBand.csproj\", \"{38159BCB-2D15-4410-846F-C4E161FCDFEB}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|x64.Build.0 = Debug|x64\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|x86.Build.0 = Debug|x86\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|ARM.Build.0 = Release|ARM\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|x64.ActiveCfg = Release|x64\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|x64.Build.0 = Release|x64\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|x64.Deploy.0 = Release|x64\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|x86.ActiveCfg = Release|x86\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|x86.Build.0 = Release|x86\n\t\t{38159BCB-2D15-4410-846F-C4E161FCDFEB}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/App.xaml",
    "content": "﻿<Application\n    x:Class=\"UWPSimulatedSensors.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:UWPSimulatedSensors\"\n    RequestedTheme=\"Light\">\n\n</Application>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/App.xaml.cs",
    "content": "﻿using System;\nusing Windows.ApplicationModel;\nusing Windows.ApplicationModel.Activation;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml.Navigation;\n\nnamespace UWPSimulatedSensors\n{\n    /// <summary>\n    /// Provides application-specific behavior to supplement the default Application class.\n    /// </summary>\n    sealed partial class App : Application\n    {\n        /// <summary>\n        /// Initializes the singleton application object.  This is the first line of authored code\n        /// executed, and as such is the logical equivalent of main() or WinMain().\n        /// </summary>\n        public App()\n        {\n            Microsoft.ApplicationInsights.WindowsAppInitializer.InitializeAsync(\n                Microsoft.ApplicationInsights.WindowsCollectors.Metadata |\n                Microsoft.ApplicationInsights.WindowsCollectors.Session);\n            this.InitializeComponent();\n            this.Suspending += OnSuspending;\n        }\n\n        /// <summary>\n        /// Invoked when the application is launched normally by the end user.  Other entry points\n        /// will be used such as when the application is launched to open a specific file.\n        /// </summary>\n        /// <param name=\"e\">Details about the launch request and process.</param>\n        protected override void OnLaunched(LaunchActivatedEventArgs e)\n        {\n\n#if DEBUG\n            if (System.Diagnostics.Debugger.IsAttached)\n            {\n                this.DebugSettings.EnableFrameRateCounter = true;\n            }\n#endif\n\n            Frame rootFrame = Window.Current.Content as Frame;\n\n            // Do not repeat app initialization when the Window already has content,\n            // just ensure that the window is active\n            if (rootFrame == null)\n            {\n                // Create a Frame to act as the navigation context and navigate to the first page\n                rootFrame = new Frame();\n\n                rootFrame.NavigationFailed += OnNavigationFailed;\n\n                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)\n                {\n                    //TODO: Load state from previously suspended application\n                }\n\n                // Place the frame in the current Window\n                Window.Current.Content = rootFrame;\n            }\n\n            if (rootFrame.Content == null)\n            {\n                // When the navigation stack isn't restored navigate to the first page,\n                // configuring the new page by passing required information as a navigation\n                // parameter\n                rootFrame.Navigate(typeof(MainPage), e.Arguments);\n            }\n            // Ensure the current window is active\n            Window.Current.Activate();\n        }\n\n        /// <summary>\n        /// Invoked when Navigation to a certain page fails\n        /// </summary>\n        /// <param name=\"sender\">The Frame which failed navigation</param>\n        /// <param name=\"e\">Details about the navigation failure</param>\n        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)\n        {\n            throw new Exception(\"Failed to load Page \" + e.SourcePageType.FullName);\n        }\n\n        /// <summary>\n        /// Invoked when application execution is being suspended.  Application state is saved\n        /// without knowing whether the application will be terminated or resumed with the contents\n        /// of memory still intact.\n        /// </summary>\n        /// <param name=\"sender\">The source of the suspend request.</param>\n        /// <param name=\"e\">Details about the suspend request.</param>\n        private void OnSuspending(object sender, SuspendingEventArgs e)\n        {\n            var deferral = e.SuspendingOperation.GetDeferral();\n            //TODO: Save application state and stop any background activity\n            deferral.Complete();\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/ApplicationInsights.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ApplicationInsights xmlns = \"http://schemas.microsoft.com/ApplicationInsights/2013/Settings\">\n</ApplicationInsights>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/MainPage.xaml",
    "content": "﻿<Page\n    x:Class=\"UWPSimulatedSensors.MainPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"using:UWPSimulatedSensors\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    mc:Ignorable=\"d\"\n    NavigationCacheMode=\"Enabled\">\n\n    <ScrollViewer>\n        <Grid Background=\"#FF333333\">\n            <Image x:Name=\"image\" Margin=\"56,10,58,0\" Source=\"Assets/CTD-logo-743x360.png\" Height=\"127\" VerticalAlignment=\"Top\" HorizontalAlignment=\"Center\" Width=\"246\"/>\n            <Slider x:Name=\"TempSlider\" Height=\"31\" Margin=\"10,378,20,0\" VerticalAlignment=\"Top\" Value=\"50\" ValueChanged=\"TempSlider_ValueChanged\"/>\n            <TextBlock x:Name=\"textBlock\" HorizontalAlignment=\"Left\" Margin=\"10,360,0,0\" TextWrapping=\"Wrap\" Text=\"Temperature\" VerticalAlignment=\"Top\" Foreground=\"White\"/>\n            <Slider x:Name=\"HmdtSlider\" Height=\"31\" Margin=\"10,435,20,0\" VerticalAlignment=\"Top\" Value=\"50\" ValueChanged=\"HmdtSlider_ValueChanged\"/>\n            <TextBlock x:Name=\"HmdtTB\" HorizontalAlignment=\"Left\" Margin=\"10,417,0,0\" TextWrapping=\"Wrap\" Text=\"Humidity\" VerticalAlignment=\"Top\" Foreground=\"White\"/>\n            <ToggleButton x:Name=\"SendDataToggle\" Content=\"Press to send data\" HorizontalAlignment=\"Center\" Margin=\"56,471,68,0\" VerticalAlignment=\"Top\" Width=\"236\" Checked=\"toggleButton_Checked\" Unchecked=\"toggleButton_Unchecked\" IsEnabled=\"False\" Height=\"44\" Foreground=\"White\"/>\n            <TextBlock x:Name=\"textBlock1\" HorizontalAlignment=\"Left\" Height=\"25\" Margin=\"10,138,0,0\" TextWrapping=\"Wrap\" Text=\"Device Name\" VerticalAlignment=\"Top\" Width=\"137\" Foreground=\"White\"/>\n            <TextBox x:Name=\"TBDeviceName\" Height=\"0\" Margin=\"10,163,20,0\" TextWrapping=\"Wrap\" Text=\"\" TextChanged=\"TBDeviceName_TextChanged\" VerticalAlignment=\"Top\"/>\n            <TextBlock x:Name=\"textBlock2\" HorizontalAlignment=\"Left\" Height=\"25\" Margin=\"10,205,0,0\" TextWrapping=\"Wrap\" Text=\"Connection String\" VerticalAlignment=\"Top\" Width=\"137\" Foreground=\"White\"/>\n            <TextBox x:Name=\"TBConnectionString\" Height=\"61\" Margin=\"10,230,95,0\" TextWrapping=\"Wrap\" Text=\"\" VerticalAlignment=\"Top\" TextChanged=\"TBConnectionString_TextChanged\" />\n            <ToggleButton x:Name=\"ConnectToggle\" Content=\"Press to connect the dots\" HorizontalAlignment=\"Center\" Margin=\"56,303,68,0\" VerticalAlignment=\"Top\" Checked=\"ConnectToggle_Checked\" Unchecked=\"ConnectToggle_Unchecked\" Height=\"44\" Width=\"236\" Foreground=\"White\"/>\n            <TextBox x:Name=\"TBAlerts\" Margin=\"10,533,20,10\" TextWrapping=\"Wrap\" Text=\"\" TextChanged=\"TBConnectionString_TextChanged\" IsReadOnly=\"True\" ScrollViewer.VerticalScrollBarVisibility=\"Auto\"/>\n            <Button x:Name=\"buttonScanCode\" Content=\"Scan\" HorizontalAlignment=\"Right\" Margin=\"0,230,20,0\" VerticalAlignment=\"Top\" Height=\"61\" Tapped=\"buttonScanCode_Tapped\" Width=\"68\"/>\n        </Grid>\n    </ScrollViewer>\n\n</Page>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/MainPage.xaml.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Threading.Tasks;\nusing Windows.Devices.Geolocation;\nusing Windows.ApplicationModel.Core;\nusing Windows.UI.Core;\nusing Windows.UI.Xaml.Controls;\nusing Windows.UI.Xaml;\nusing Windows.UI.Xaml.Controls.Primitives;\nusing ConnectTheDotsHelper;\nusing ZXing.Mobile;\nusing Windows.UI.Popups;\n\nnamespace UWPSimulatedSensors\n{\n    /// <summary>\n    /// An empty page that can be used on its own or navigated to within a Frame.\n    /// </summary>\n    public sealed partial class MainPage : Page\n    {\n        private GeolocationAccessStatus LocationAccess = GeolocationAccessStatus.Unspecified;\n        private Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;\n        private ConnectTheDots CTD;\n        private MobileBarcodeScanner Scanner;\n\n        public MainPage()\n        {\n            this.InitializeComponent();\n\n            // Initialize QRCode Scanner\n            Scanner = new MobileBarcodeScanner(Dispatcher);\n            Scanner.Dispatcher = Dispatcher;\n\n            // Initialize ConnectTheDots Helper\n            CTD = new ConnectTheDots();\n\n            // Hook up a callback to display message received from Azure\n            CTD.ReceivedMessage += CTD_ReceivedMessage;\n\n            // Restore local settings\n            if (localSettings.Values.ContainsKey(\"ConnectionString\"))\n            {\n                CTD.ConnectionString = (string)localSettings.Values[\"ConnectionString\"];\n                this.TBConnectionString.Text = CTD.ConnectionString;\n            }\n\n            if (localSettings.Values.ContainsKey(\"DisplayName\"))\n            {\n                CTD.DisplayName = (string)localSettings.Values[\"DisplayName\"];\n                this.TBDeviceName.Text = CTD.DisplayName;\n            }\n\n            // Check configuration settings\n            ConnectToggle.IsEnabled = checkConfig();\n            CTD.ConnectionString = this.TBConnectionString.Text;\n            CTD.DisplayName = this.TBDeviceName.Text;\n            CTD.Organization = \"My Company\";\n            CTD.Location = \"Unknown\";\n\n            // Get user consent for accessing location\n            Task.Run(async () =>\n            {\n                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,\n                async () =>\n                {\n                    this.LocationAccess = await Geolocator.RequestAccessAsync();\n                    // Get device location\n                    await updateLocation();\n\n                });\n            });\n\n            // Add sensors to the ConnectTheDots object\n            CTD.AddSensor(\"Temperature\", \"C\");\n            CTD.AddSensor(\"Humidity\", \"%\");\n\n        }\n\n        /// <summary>\n        /// CTD_ReceivedMessage\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private async void CTD_ReceivedMessage(object sender, EventArgs e)\n        {\n            await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n            {\n                C2DMessage message = ((ConnectTheDots.ReceivedMessageEventArgs)e).Message;\n                var textToDisplay = message.timecreated + \" - Alert received:\" + message.message + \": \" + message.value + \" \" + message.unitofmeasure + \"\\r\\n\";\n                TBAlerts.Text += textToDisplay;\n            });\n\n        }\n\n        /// <summary>\n        /// checkConfig\n        /// Check stored configuration\n        /// </summary>\n        /// <returns></returns>\n        private bool checkConfig()\n        {\n            return ((this.TBDeviceName.Text != null) && (this.TBConnectionString.Text != null) &&\n                    (this.TBDeviceName.Text != \"\") && (this.TBConnectionString.Text != \"\"));\n        }\n\n        /// <summary>\n        /// updateLocation\n        /// Updates current location of the device\n        /// </summary>\n        /// <returns></returns>\n        private async Task updateLocation()\n        {\n            // Update current device location\n            try\n            {\n                if (LocationAccess == GeolocationAccessStatus.Allowed)\n                {\n\n                    Geolocator geolocator = new Geolocator();\n                    Geoposition pos = await geolocator.GetGeopositionAsync();\n                    CTD.Location = pos.Coordinate.Point.Position.Longitude.ToString() + \",\" + pos.Coordinate.Point.Position.Latitude.ToString();\n                }\n            }\n            catch (Exception ex)\n            {\n                Debug.WriteLine(\"Error while trying to retreive device's location: \" + ex.Message);\n                CTD.Location = \"unknown\";\n            }\n        }\n\n        /// <summary>\n        /// toggleButton_Checked\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void toggleButton_Checked(object sender, RoutedEventArgs e)\n        {\n            SendDataToggle.Content = \"Sending telemetry data\";\n            CTD.SendTelemetryData = true;\n        }\n        /// <summary>\n        /// toggleButton_Unchecked\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void toggleButton_Unchecked(object sender, RoutedEventArgs e)\n        {\n            SendDataToggle.Content = \"Press to send telemetry data\";\n            CTD.SendTelemetryData = false;\n        }\n        /// <summary>\n        /// TempSlider_ValueChanged\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void TempSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)\n        {\n            if ((CTD !=null) && (CTD.Sensors[\"Temperature\"] != null))\n                CTD.Sensors[\"Temperature\"].message.value = TempSlider.Value;\n        }\n        /// <summary>\n        /// HmdtSlider_ValueChanged\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void HmdtSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)\n        {\n            if ((CTD != null) && (CTD.Sensors[\"Humidity\"] != null))\n                CTD.Sensors[\"Humidity\"].message.value = HmdtSlider.Value;\n        }\n        /// <summary>\n        /// TBDeviceName_TextChanged\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void TBDeviceName_TextChanged(object sender, TextChangedEventArgs e)\n        {\n            CTD.DisplayName = TBDeviceName.Text;\n            localSettings.Values[\"DisplayName\"] = CTD.DisplayName;\n            ConnectToggle.IsEnabled = checkConfig();\n\n        }\n        /// <summary>\n        /// TBConnectionString_TextChanged\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void TBConnectionString_TextChanged(object sender, TextChangedEventArgs e)\n        {\n            if (CTD.ConnectionString != TBConnectionString.Text)\n            {\n                CTD.ConnectionString = TBConnectionString.Text;\n            }\n            localSettings.Values[\"ConnectionString\"] = CTD.ConnectionString;\n            ConnectToggle.IsEnabled = checkConfig();\n        }\n\n        /// <summary>\n        /// ConnectToggle_Checked\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void ConnectToggle_Checked(object sender, RoutedEventArgs e)\n        {\n            if (CTD.Connect())\n            {\n                SendDataToggle.IsEnabled = true;\n                TBDeviceName.IsEnabled = false;\n                TBConnectionString.IsEnabled = false;\n                ConnectToggle.Content = \"Dots connected\";\n                buttonScanCode.IsEnabled = false;\n            }\n        }\n\n        /// <summary>\n        /// ConnectToggle_Unchecked\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        private void ConnectToggle_Unchecked(object sender, RoutedEventArgs e)\n        {\n            if (CTD.Disconnect())\n            {\n                SendDataToggle.IsChecked = false;\n                SendDataToggle.IsEnabled = false;\n                TBDeviceName.IsEnabled = true;\n                TBConnectionString.IsEnabled = true;\n                ConnectToggle.Content = \"Press to connect the dots\";\n                buttonScanCode.IsEnabled = true;\n            }\n        }\n\n\n        /// <summary>\n        /// ScanCode\n        /// Scan a QR Code using the ZXing library\n        /// </summary>\n        /// <returns></returns>\n        private async Task ScanCode()\n        {\n            Scanner.UseCustomOverlay = false;\n            Scanner.TopText = \"Hold camera up to QR code\";\n            Scanner.BottomText = \"Camera will automatically scan QR code\\r\\n\\rPress the 'Back' button to cancel\";\n\n            ZXing.Result result = await Scanner.Scan().ConfigureAwait(true);\n\n            if (result == null || (string.IsNullOrEmpty(result.Text)))\n            {\n                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>\n                    {\n                        MessageDialog dialog = new MessageDialog(\"An error occured while scanning the QRCode. Try again\");\n                        await dialog.ShowAsync();\n                    });\n            }\n            else\n            {\n                await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n                {\n                    TBConnectionString.Text = result.Text;\n                    TBDeviceName.Text = CTD.ExtractDeviceIdFromConnectionString(result.Text);\n                });\n            }\n        }\n\n        /// <summary>\n        /// buttonScanCode_Tapped\n        /// </summary>\n        /// <param name=\"sender\"></param>\n        /// <param name=\"e\"></param>\n        /// <returns></returns>\n        private async void buttonScanCode_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)\n        {\n            if (SendDataToggle.IsEnabled == false)\n            {\n                await ScanCode();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Package.appxmanifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\" xmlns:mp=\"http://schemas.microsoft.com/appx/2014/phone/manifest\" xmlns:uap=\"http://schemas.microsoft.com/appx/manifest/uap/windows10\" IgnorableNamespaces=\"uap mp\">\n  <Identity Name=\"4f56ccd4-032c-4850-9ac1-94f1a00d2da5\" Publisher=\"CN=olivi\" Version=\"1.0.0.0\" />\n  <mp:PhoneIdentity PhoneProductId=\"4f56ccd4-032c-4850-9ac1-94f1a00d2da5\" PhonePublisherId=\"00000000-0000-0000-0000-000000000000\" />\n  <Properties>\n    <DisplayName>UWPSimulatedSensors</DisplayName>\n    <PublisherDisplayName>olivi</PublisherDisplayName>\n    <Logo>Assets\\StoreLogo.png</Logo>\n  </Properties>\n  <Dependencies>\n    <TargetDeviceFamily Name=\"Windows.Universal\" MinVersion=\"10.0.0.0\" MaxVersionTested=\"10.0.0.0\" />\n  </Dependencies>\n  <Resources>\n    <Resource Language=\"x-generate\" />\n  </Resources>\n  <Applications>\n    <Application Id=\"App\" Executable=\"$targetnametoken$.exe\" EntryPoint=\"UWPSimulatedSensors.App\">\n      <uap:VisualElements DisplayName=\"UWPSimulatedSensors\" Square150x150Logo=\"Assets\\Square150x150Logo.png\" Square44x44Logo=\"Assets\\Square44x44Logo.png\" Description=\"UWPSimulatedSensors\" BackgroundColor=\"#333333\">\n        <uap:DefaultTile Wide310x150Logo=\"Assets\\Wide310x150Logo.png\">\n        </uap:DefaultTile>\n        <uap:SplashScreen Image=\"Assets\\SplashScreen.png\" BackgroundColor=\"#333333\" />\n      </uap:VisualElements>\n    </Application>\n  </Applications>\n  <Capabilities>\n    <Capability Name=\"internetClient\" />\n    <DeviceCapability Name=\"location\" />\n    <DeviceCapability Name=\"webcam\" />\n  </Capabilities>\n</Package>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"UWPSimulatedSensors\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"UWPSimulatedSensors\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2016\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n[assembly: ComVisible(false)]"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/Properties/Default.rd.xml",
    "content": "<!--\n    This file contains Runtime Directives used by .NET Native. The defaults here are suitable for most\n    developers. However, you can modify these parameters to modify the behavior of the .NET Native\n    optimizer.\n\n    Runtime Directives are documented at http://go.microsoft.com/fwlink/?LinkID=391919\n\n    To fully enable reflection for App1.MyClass and all of its public/private members\n    <Type Name=\"App1.MyClass\" Dynamic=\"Required All\"/>\n\n    To enable dynamic creation of the specific instantiation of AppClass<T> over System.Int32\n    <TypeInstantiation Name=\"App1.AppClass\" Arguments=\"System.Int32\" Activate=\"Required Public\" />\n\n    Using the Namespace directive to apply reflection policy to all the types in a particular namespace\n    <Namespace Name=\"DataClasses.ViewModels\" Seralize=\"All\" />\n-->\n\n<Directives xmlns=\"http://schemas.microsoft.com/netfx/2013/01/metadata\">\n  <Application>\n    <!--\n      An Assembly element with Name=\"*Application*\" applies to all assemblies in\n      the application package. The asterisks are not wildcards.\n    -->\n    <Assembly Name=\"*Application*\" Dynamic=\"Required All\" />\n    \n    \n    <!-- Add your application specific runtime directives here. -->\n\n\n  </Application>\n</Directives>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/UWPSimulatedSensors.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProjectGuid>{CE0FF36D-7C6D-407A-A798-E5269E252F91}</ProjectGuid>\n    <OutputType>AppContainerExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>UWPSimulatedSensors</RootNamespace>\n    <AssemblyName>UWPSimulatedSensors</AssemblyName>\n    <DefaultLanguage>en-US</DefaultLanguage>\n    <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>\n    <TargetPlatformVersion>10.0.10586.0</TargetPlatformVersion>\n    <TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion>\n    <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>\n    <FileAlignment>512</FileAlignment>\n    <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <PackageCertificateKeyFile>UWPSimulatedSensors_TemporaryKey.pfx</PackageCertificateKeyFile>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x86'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x86\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x86'\">\n    <OutputPath>bin\\x86\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x86</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|ARM'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\ARM\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|ARM'\">\n    <OutputPath>bin\\ARM\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>ARM</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Debug|x64'\">\n    <DebugSymbols>true</DebugSymbols>\n    <OutputPath>bin\\x64\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>full</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)' == 'Release|x64'\">\n    <OutputPath>bin\\x64\\Release\\</OutputPath>\n    <DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>\n    <Optimize>true</Optimize>\n    <NoWarn>;2008</NoWarn>\n    <DebugType>pdbonly</DebugType>\n    <PlatformTarget>x64</PlatformTarget>\n    <UseVSHostingProcess>false</UseVSHostingProcess>\n    <ErrorReport>prompt</ErrorReport>\n    <Prefer32Bit>true</Prefer32Bit>\n    <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>\n  </PropertyGroup>\n  <ItemGroup>\n    <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->\n    <Content Include=\"ApplicationInsights.config\">\n      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\n    </Content>\n    <None Include=\"project.json\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"..\\..\\Common\\csharp\\ConnectTheDotsHelper.cs\">\n      <Link>ConnectTheDotsHelper.cs</Link>\n    </Compile>\n    <Compile Include=\"App.xaml.cs\">\n      <DependentUpon>App.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"MainPage.xaml.cs\">\n      <DependentUpon>MainPage.xaml</DependentUpon>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AppxManifest Include=\"Package.appxmanifest\">\n      <SubType>Designer</SubType>\n    </AppxManifest>\n    <None Include=\"UWPSimulatedSensors_TemporaryKey.pfx\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Content Include=\"Assets\\CTD-logo-743x360.png\" />\n    <Content Include=\"Properties\\Default.rd.xml\" />\n    <Content Include=\"Assets\\LockScreenLogo.scale-200.png\" />\n    <Content Include=\"Assets\\SplashScreen.scale-200.png\" />\n    <Content Include=\"Assets\\Square150x150Logo.scale-200.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.scale-200.png\" />\n    <Content Include=\"Assets\\Square44x44Logo.targetsize-24_altform-unplated.png\" />\n    <Content Include=\"Assets\\StoreLogo.png\" />\n    <Content Include=\"Assets\\Wide310x150Logo.scale-200.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ApplicationDefinition Include=\"App.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </ApplicationDefinition>\n    <Page Include=\"MainPage.xaml\">\n      <Generator>MSBuild:Compile</Generator>\n      <SubType>Designer</SubType>\n    </Page>\n  </ItemGroup>\n  <PropertyGroup Condition=\" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' \">\n    <VisualStudioVersion>14.0</VisualStudioVersion>\n  </PropertyGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Microsoft\\WindowsXaml\\v$(VisualStudioVersion)\\Microsoft.Windows.UI.Xaml.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/project.json",
    "content": "﻿{\n  \"dependencies\": {\n    \"Microsoft.ApplicationInsights\": \"2.1.0\",\n    \"Microsoft.ApplicationInsights.PersistenceChannel\": \"1.2.3\",\n    \"Microsoft.ApplicationInsights.WindowsApps\": \"1.1.1\",\n    \"Microsoft.Azure.Devices.Client\": \"1.1.1\",\n    \"Microsoft.Azure.Devices.Shared\": \"1.0.2\",\n    \"Microsoft.NETCore.UniversalWindowsPlatform\": \"5.2.2\",\n    \"Newtonsoft.Json\": \"9.0.1\",\n    \"ZXing.Net.Mobile\": \"2.1.47\"\n  },\n  \"frameworks\": {\n    \"uap10.0\": {}\n  },\n  \"runtimes\": {\n    \"win10-arm\": {},\n    \"win10-arm-aot\": {},\n    \"win10-x86\": {},\n    \"win10-x86-aot\": {},\n    \"win10-x64\": {},\n    \"win10-x64-aot\": {}\n  }\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors/project.lock.json",
    "content": "{\n  \"locked\": false,\n  \"version\": 2,\n  \"targets\": {\n    \"UAP,Version=v10.0\": {\n      \"Microsoft.ApplicationInsights/2.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.2.3\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"[1.2.3]\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"[1.2.3]\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/System.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          },\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.AppContext.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"linux\"\n          },\n          \"runtimes/osx/lib/netstandard1.3/System.Net.NetworkInformation.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"osx\"\n          },\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Private.ServiceModel.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win7\"\n          }\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/_._\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/_._\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8-aot\"\n          },\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8\"\n          }\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win8\"\n          }\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"unix\"\n          },\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"win\"\n          }\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtimeTargets\": {\n          \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {\n            \"assetType\": \"runtime\",\n            \"rid\": \"aot\"\n          }\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      },\n      \"ZXing.Net.Mobile/2.1.47\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-arm\": {\n      \"Microsoft.ApplicationInsights/2.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.2.3\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"[1.2.3]\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"[1.2.3]\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.any.System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.any.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.any.System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win8-arm.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-arm/lib/netstandard1.0/System.Private.CoreLib.dll\": {},\n          \"runtimes/win8-arm/lib/netstandard1.0/mscorlib.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win8-arm/native/System.Private.CoreLib.ni.dll\": {},\n          \"runtimes/win8-arm/native/clretwrc.dll\": {},\n          \"runtimes/win8-arm/native/coreclr.dll\": {},\n          \"runtimes/win8-arm/native/dbgshim.dll\": {},\n          \"runtimes/win8-arm/native/mscordaccore.dll\": {},\n          \"runtimes/win8-arm/native/mscordbi.dll\": {},\n          \"runtimes/win8-arm/native/mscorlib.ni.dll\": {},\n          \"runtimes/win8-arm/native/mscorrc.debug.dll\": {},\n          \"runtimes/win8-arm/native/mscorrc.dll\": {},\n          \"runtimes/win8-arm/native/sos.dll\": {}\n        }\n      },\n      \"runtime.win8-arm.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win8-arm/native/clrcompression.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Collections\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tracing\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.any.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Extensions\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Resources.ResourceManager\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.any.System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.any.System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.any.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      },\n      \"ZXing.Net.Mobile/2.1.47\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-arm-aot\": {\n      \"Microsoft.ApplicationInsights/2.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.2.3\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"[1.2.3]\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"[1.2.3]\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.aot.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win10-arm-aot.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win10-arm-aot.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"runtimes/win10-arm-aot/lib/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win10-arm-aot/lib/netcore50/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-arm-aot/lib/netstandard1.0/_._\": {}\n        },\n        \"native\": {\n          \"runtimes/win8-arm-aot/native/_._\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Collections\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tracing\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.aot.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Primitives\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Resources.ResourceManager\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.aot.System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.aot.System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.aot.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      },\n      \"ZXing.Net.Mobile/2.1.47\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x64\": {\n      \"Microsoft.ApplicationInsights/2.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.2.3\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"[1.2.3]\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"[1.2.3]\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"runtime.win7-x64.Microsoft.NETCore.Jit\": \"1.0.3\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.any.System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.any.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.any.System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7-x64.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win7-x64.Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x64/native/clrjit.dll\": {}\n        }\n      },\n      \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x64/lib/netstandard1.0/System.Private.CoreLib.dll\": {},\n          \"runtimes/win7-x64/lib/netstandard1.0/mscorlib.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x64/native/System.Private.CoreLib.ni.dll\": {},\n          \"runtimes/win7-x64/native/clretwrc.dll\": {},\n          \"runtimes/win7-x64/native/coreclr.dll\": {},\n          \"runtimes/win7-x64/native/dbgshim.dll\": {},\n          \"runtimes/win7-x64/native/mscordaccore.dll\": {},\n          \"runtimes/win7-x64/native/mscordbi.dll\": {},\n          \"runtimes/win7-x64/native/mscorlib.ni.dll\": {},\n          \"runtimes/win7-x64/native/mscorrc.debug.dll\": {},\n          \"runtimes/win7-x64/native/mscorrc.dll\": {},\n          \"runtimes/win7-x64/native/sos.dll\": {}\n        }\n      },\n      \"runtime.win7-x64.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x64/native/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Collections\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tracing\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.any.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Extensions\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Resources.ResourceManager\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.any.System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.any.System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.any.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      },\n      \"ZXing.Net.Mobile/2.1.47\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x64-aot\": {\n      \"Microsoft.ApplicationInsights/2.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.2.3\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"[1.2.3]\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"[1.2.3]\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"runtime.win7-x64.Microsoft.NETCore.Jit\": \"1.0.3\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.aot.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win10-x64-aot.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win10-x64-aot.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"runtimes/win10-x64-aot/lib/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win10-x64-aot/lib/netcore50/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7-x64.Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x64-aot/native/_._\": {}\n        }\n      },\n      \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x64-aot/lib/netstandard1.0/_._\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x64-aot/native/_._\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Collections\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tracing\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.aot.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Primitives\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Resources.ResourceManager\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.aot.System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.aot.System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.aot.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      },\n      \"ZXing.Net.Mobile/2.1.47\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x86\": {\n      \"Microsoft.ApplicationInsights/2.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.2.3\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"[1.2.3]\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"[1.2.3]\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"runtime.win7-x86.Microsoft.NETCore.Jit\": \"1.0.3\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"lib/netcore50/System.Core.dll\": {},\n          \"lib/netcore50/System.Net.dll\": {},\n          \"lib/netcore50/System.Numerics.dll\": {},\n          \"lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"lib/netcore50/System.ServiceModel.dll\": {},\n          \"lib/netcore50/System.Windows.dll\": {},\n          \"lib/netcore50/System.Xml.Linq.dll\": {},\n          \"lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"lib/netcore50/System.Xml.dll\": {},\n          \"lib/netcore50/System.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.any.System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.any.System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.any.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.any.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.any.System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.any.System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.any.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.any.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7-x86.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win7-x86.Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x86/native/clrjit.dll\": {}\n        }\n      },\n      \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x86/lib/netstandard1.0/System.Private.CoreLib.dll\": {},\n          \"runtimes/win7-x86/lib/netstandard1.0/mscorlib.dll\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x86/native/System.Private.CoreLib.ni.dll\": {},\n          \"runtimes/win7-x86/native/clretwrc.dll\": {},\n          \"runtimes/win7-x86/native/coreclr.dll\": {},\n          \"runtimes/win7-x86/native/dbgshim.dll\": {},\n          \"runtimes/win7-x86/native/mscordaccore.dll\": {},\n          \"runtimes/win7-x86/native/mscordbi.dll\": {},\n          \"runtimes/win7-x86/native/mscorlib.ni.dll\": {},\n          \"runtimes/win7-x86/native/mscorrc.debug.dll\": {},\n          \"runtimes/win7-x86/native/mscorrc.dll\": {},\n          \"runtimes/win7-x86/native/sos.dll\": {}\n        }\n      },\n      \"runtime.win7-x86.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x86/native/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Collections\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Diagnostics.Tracing\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.any.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Extensions\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Reflection.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Resources.ResourceManager\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.any.System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.any.System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.any.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.any.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      },\n      \"ZXing.Net.Mobile/2.1.47\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        }\n      }\n    },\n    \"UAP,Version=v10.0/win10-x86-aot\": {\n      \"Microsoft.ApplicationInsights/2.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.10\",\n          \"System.Diagnostics.Debug\": \"4.0.10\",\n          \"System.Diagnostics.Tools\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.0.20\",\n          \"System.Globalization\": \"4.0.10\",\n          \"System.IO\": \"4.0.10\",\n          \"System.IO.Compression\": \"4.0.0\",\n          \"System.Linq\": \"4.0.0\",\n          \"System.Net.Http\": \"4.0.0\",\n          \"System.Reflection\": \"4.0.10\",\n          \"System.Reflection.Extensions\": \"4.0.0\",\n          \"System.Runtime\": \"4.0.20\",\n          \"System.Runtime.Extensions\": \"4.0.10\",\n          \"System.Text.Encoding\": \"4.0.10\",\n          \"System.Text.Encoding.Extensions\": \"4.0.10\",\n          \"System.Text.RegularExpressions\": \"4.0.10\",\n          \"System.Threading\": \"4.0.10\",\n          \"System.Threading.Tasks\": \"4.0.10\",\n          \"System.Xml.XDocument\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.ApplicationInsights.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"1.2.3\"\n        },\n        \"compile\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\": {}\n        }\n      },\n      \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.ApplicationInsights\": \"[1.2.3]\",\n          \"Microsoft.ApplicationInsights.PersistenceChannel\": \"[1.2.3]\"\n        },\n        \"compile\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\": {}\n        }\n      },\n      \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Net.Http\": \"2.2.22\",\n          \"Newtonsoft.Json\": \"6.0.4\"\n        },\n        \"compile\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Amqp/1.1.5\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Client/1.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.AspNet.WebApi.Client\": \"5.2.3\",\n          \"Microsoft.Azure.Amqp\": \"1.1.5\",\n          \"PCLCrypto\": \"1.0.86\",\n          \"Validation\": \"2.2.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\": {}\n        }\n      },\n      \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Newtonsoft.Json\": \"6.0.8\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\": {}\n        }\n      },\n      \"Microsoft.Bcl/1.1.9\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"Microsoft.Bcl.Build/1.0.14\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.CSharp/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.CSharp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.CSharp.dll\": {}\n        }\n      },\n      \"Microsoft.Net.Http/2.2.22\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Bcl\": \"1.1.9\",\n          \"Microsoft.Bcl.Build\": \"1.0.14\"\n        },\n        \"compile\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/System.Net.Http.Extensions.dll\": {},\n          \"lib/win8/System.Net.Http.Primitives.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore/5.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.CSharp\": \"4.0.1\",\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.VisualBasic\": \"10.0.1\",\n          \"System.AppContext\": \"4.1.0\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.Immutable\": \"1.2.0\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.ComponentModel.Annotations\": \"4.1.0\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.1\",\n          \"System.IO.Compression.ZipFile\": \"4.0.1\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.IO.UnmanagedMemoryStream\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Parallel\": \"4.0.1\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.NetworkInformation\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Metadata\": \"1.3.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Dataflow\": \"4.6.0\",\n          \"System.Threading.Tasks.Parallel\": \"4.0.1\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XDocument\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"runtime.win7-x86.Microsoft.NETCore.Jit\": \"1.0.3\"\n        }\n      },\n      \"Microsoft.NETCore.Platforms/1.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"ref/netcore50/System.Core.dll\": {},\n          \"ref/netcore50/System.Net.dll\": {},\n          \"ref/netcore50/System.Numerics.dll\": {},\n          \"ref/netcore50/System.Runtime.Serialization.dll\": {},\n          \"ref/netcore50/System.ServiceModel.Web.dll\": {},\n          \"ref/netcore50/System.ServiceModel.dll\": {},\n          \"ref/netcore50/System.Windows.dll\": {},\n          \"ref/netcore50/System.Xml.Linq.dll\": {},\n          \"ref/netcore50/System.Xml.Serialization.dll\": {},\n          \"ref/netcore50/System.Xml.dll\": {},\n          \"ref/netcore50/System.dll\": {},\n          \"ref/netcore50/mscorlib.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Core.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Net.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Numerics.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Windows.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.Xml.dll\": {},\n          \"runtimes/aot/lib/netcore50/System.dll\": {},\n          \"runtimes/aot/lib/netcore50/mscorlib.dll\": {}\n        }\n      },\n      \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Jit\": \"1.0.3\",\n          \"Microsoft.NETCore.Windows.ApiSets\": \"1.0.1\",\n          \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.2\"\n        }\n      },\n      \"Microsoft.NETCore.Targets/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore\": \"5.0.2\",\n          \"Microsoft.NETCore.Portable.Compatibility\": \"1.0.2\",\n          \"Microsoft.NETCore.Runtime.CoreCLR\": \"1.0.3\",\n          \"Microsoft.NETCore.Targets\": \"1.0.2\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Data.Common\": \"4.1.0\",\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.StackTrace\": \"4.0.2\",\n          \"System.IO.IsolatedStorage\": \"4.0.1\",\n          \"System.Net.Http.Rtc\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Requests\": \"4.0.11\",\n          \"System.Net.Sockets\": \"4.1.0\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.Numerics.Vectors.WindowsRuntime\": \"4.0.1\",\n          \"System.Reflection.Context\": \"4.0.1\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.Serialization.Json\": \"4.0.2\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Runtime.WindowsRuntime.UI.Xaml\": \"4.0.1\",\n          \"System.ServiceModel.Duplex\": \"4.0.1\",\n          \"System.ServiceModel.Http\": \"4.1.0\",\n          \"System.ServiceModel.NetTcp\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.ServiceModel.Security\": \"4.0.1\",\n          \"System.Text.Encoding.CodePages\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        }\n      },\n      \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n        \"type\": \"package\"\n      },\n      \"Microsoft.VisualBasic/10.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Dynamic.Runtime\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/Microsoft.VisualBasic.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/Microsoft.VisualBasic.dll\": {}\n        }\n      },\n      \"Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.Microsoft.Win32.Primitives\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"Newtonsoft.Json/9.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\": {}\n        }\n      },\n      \"PCLCrypto/1.0.86\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Validation\": \"[2.0.6, 3.0.0)\"\n        },\n        \"compile\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/PCLCrypto.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Collections/4.0.10\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Collections.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tools.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Diagnostics.Tracing/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Tracing.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"runtime.aot.System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.IO.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection/4.0.10\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Reflection.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.Primitives.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Resources.ResourceManager/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Resources.ResourceManager.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime/4.0.20\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Runtime.InteropServices/4.0.20\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Tasks.dll\": {}\n        }\n      },\n      \"runtime.aot.System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.Timer.dll\": {}\n        }\n      },\n      \"runtime.native.System.IO.Compression/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win10-x86-aot.runtime.native.System.IO.Compression\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.native.System.Security.Cryptography/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"lib/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.0/_._\": {}\n        }\n      },\n      \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Debug.dll\": {}\n        }\n      },\n      \"runtime.win.System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\": {}\n        }\n      },\n      \"runtime.win.System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Net.NameResolution\": \"4.0.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Overlapped\": \"4.0.1\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.Uri\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Extensions.dll\": {}\n        }\n      },\n      \"runtime.win10-x86-aot.runtime.native.System.IO.Compression/4.0.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"runtimes/win10-x86-aot/lib/netcore50/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win10-x86-aot/lib/netcore50/clrcompression.dll\": {}\n        }\n      },\n      \"runtime.win7-x86.Microsoft.NETCore.Jit/1.0.3\": {\n        \"type\": \"package\",\n        \"native\": {\n          \"runtimes/win7-x86-aot/native/_._\": {}\n        }\n      },\n      \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7-x86-aot/lib/netstandard1.0/_._\": {}\n        },\n        \"native\": {\n          \"runtimes/win7-x86-aot/native/_._\": {}\n        }\n      },\n      \"runtime.win7.System.Private.Uri/4.0.2\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.Uri.dll\": {}\n        }\n      },\n      \"System.AppContext/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.AppContext.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.AppContext.dll\": {}\n        }\n      },\n      \"System.Buffers/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Buffers.dll\": {}\n        }\n      },\n      \"System.Collections/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Collections\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Collections.Concurrent/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Collections.Concurrent.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Collections.Concurrent.dll\": {}\n        }\n      },\n      \"System.Collections.Immutable/1.2.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\": {}\n        }\n      },\n      \"System.Collections.NonGeneric/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.NonGeneric.dll\": {}\n        }\n      },\n      \"System.Collections.Specialized/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Collections.Specialized.dll\": {}\n        }\n      },\n      \"System.ComponentModel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.dll\": {}\n        }\n      },\n      \"System.ComponentModel.Annotations/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.Annotations.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.Annotations.dll\": {}\n        }\n      },\n      \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\": {}\n        }\n      },\n      \"System.Data.Common/4.1.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.2/System.Data.Common.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.2/System.Data.Common.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Contracts/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Contracts.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Debug/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Diagnostics.Debug\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Debug.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\": {}\n        }\n      },\n      \"System.Diagnostics.StackTrace/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\": {}\n        }\n      },\n      \"System.Diagnostics.Tools/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tools\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tools.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Diagnostics.Tracing/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Diagnostics.Tracing\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Diagnostics.Tracing.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Dynamic.Runtime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Dynamic.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\": {}\n        }\n      },\n      \"System.Globalization/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Globalization.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Globalization.Calendars/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Globalization.Calendars\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Calendars.dll\": {}\n        }\n      },\n      \"System.Globalization.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\": {}\n        }\n      },\n      \"System.IO/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.aot.System.IO\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.IO.Compression/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.native.System.IO.Compression\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.IO.Compression.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\": {}\n        }\n      },\n      \"System.IO.Compression.ZipFile/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Buffers\": \"4.0.0\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.IO.FileSystem\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.dll\": {}\n        }\n      },\n      \"System.IO.FileSystem.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\": {}\n        }\n      },\n      \"System.IO.IsolatedStorage/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.IO.IsolatedStorage.dll\": {}\n        }\n      },\n      \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\": {}\n        }\n      },\n      \"System.Linq/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.dll\": {}\n        }\n      },\n      \"System.Linq.Expressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Emit.Lightweight\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Expressions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\": {}\n        }\n      },\n      \"System.Linq.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Parallel.dll\": {}\n        }\n      },\n      \"System.Linq.Queryable/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Linq.Queryable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Linq.Queryable.dll\": {}\n        }\n      },\n      \"System.Net.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.DiagnosticSource\": \"4.0.0\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.dll\": {}\n        }\n      },\n      \"System.Net.Http.Rtc/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Http.Rtc.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\": {}\n        }\n      },\n      \"System.Net.NameResolution/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.NameResolution.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\": {}\n        }\n      },\n      \"System.Net.NetworkInformation/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.NetworkInformation.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\": {}\n        }\n      },\n      \"System.Net.Primitives/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.win.System.Net.Primitives\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Net.Requests/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Net.Requests.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\": {}\n        }\n      },\n      \"System.Net.Sockets/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"runtime.win.System.Net.Sockets\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.Sockets.dll\": {}\n        }\n      },\n      \"System.Net.WebHeaderCollection/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.Win32.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Net.WebSockets.dll\": {}\n        }\n      },\n      \"System.Net.WebSockets.Client/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices.WindowsRuntime\": \"4.0.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors/4.1.1\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"ref/netstandard1.0/System.Numerics.Vectors.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\": {}\n        }\n      },\n      \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Numerics.Vectors\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.ObjectModel/4.0.12\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ObjectModel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ObjectModel.dll\": {}\n        }\n      },\n      \"System.Private.DataContractSerialization/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\": {}\n        }\n      },\n      \"System.Private.ServiceModel/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Collections.NonGeneric\": \"4.0.1\",\n          \"System.Collections.Specialized\": \"4.0.1\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.Compression\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Linq.Expressions\": \"4.1.0\",\n          \"System.Linq.Queryable\": \"4.0.1\",\n          \"System.Net.Http\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Net.WebSockets\": \"4.0.0\",\n          \"System.Net.WebSockets.Client\": \"4.0.0\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.DispatchProxy\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\",\n          \"System.Security.Claims\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Timer\": \"4.0.1\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\",\n          \"System.Xml.XmlSerializer\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\": {}\n        }\n      },\n      \"System.Private.Uri/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.win7.System.Private.Uri\": \"4.0.2\"\n        },\n        \"compile\": {\n          \"ref/netstandard/_._\": {}\n        }\n      },\n      \"System.Reflection/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection\": \"4.0.10\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Context/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Context.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Context.dll\": {}\n        }\n      },\n      \"System.Reflection.DispatchProxy/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.1/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Reflection.Emit.dll\": {}\n        }\n      },\n      \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Emit.Lightweight/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.0/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/_._\": {}\n        }\n      },\n      \"System.Reflection.Extensions/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.Metadata/1.3.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Immutable\": \"1.2.0\"\n        },\n        \"compile\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8/System.Reflection.Metadata.dll\": {}\n        }\n      },\n      \"System.Reflection.Primitives/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Reflection.Primitives\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Reflection.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Reflection.TypeExtensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Contracts\": \"4.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\": {}\n        }\n      },\n      \"System.Resources.ResourceManager/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Resources.ResourceManager\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Resources.ResourceManager.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"runtime.aot.System.Runtime\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Extensions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.win.System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.Handles/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Runtime.Handles\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Runtime.Handles.dll\": {}\n        }\n      },\n      \"System.Runtime.InteropServices/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"runtime.aot.System.Runtime.InteropServices\": \"4.0.20\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.Numerics/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Numerics.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Numerics.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Json/4.0.2\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Json.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Primitives/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\": {}\n        }\n      },\n      \"System.Runtime.Serialization.Xml/4.1.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.IO\": \"4.1.0\",\n          \"System.Private.DataContractSerialization\": \"4.1.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Runtime.Serialization.Xml.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\": {}\n        }\n      },\n      \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.WindowsRuntime\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\": {}\n        }\n      },\n      \"System.Security.Claims/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Claims.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Claims.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Algorithms/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Cng/4.2.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/_._\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Encoding/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.native.System.Security.Cryptography\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.Primitives/4.0.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\": {}\n        }\n      },\n      \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Globalization.Calendars\": \"4.0.1\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Runtime.Numerics\": \"4.0.1\",\n          \"System.Security.Cryptography.Algorithms\": \"4.2.0\",\n          \"System.Security.Cryptography.Cng\": \"4.2.0\",\n          \"System.Security.Cryptography.Encoding\": \"4.0.0\",\n          \"System.Security.Cryptography.Primitives\": \"4.0.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\": {}\n        }\n      },\n      \"System.Security.Principal/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Security.Principal.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Security.Principal.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Duplex/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Duplex.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Duplex.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Http/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Net.WebHeaderCollection\": \"4.0.1\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Http.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Http.dll\": {}\n        }\n      },\n      \"System.ServiceModel.NetTcp/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.NetTcp.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Primitives/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.ComponentModel.EventBasedAsync\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Net.Primitives\": \"4.0.11\",\n          \"System.ObjectModel\": \"4.0.12\",\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Primitives\": \"4.1.1\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.Security.Cryptography.X509Certificates\": \"4.1.0\",\n          \"System.Security.Principal\": \"4.0.1\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Primitives.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Primitives.dll\": {}\n        }\n      },\n      \"System.ServiceModel.Security/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Private.ServiceModel\": \"4.1.0\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Serialization.Xml\": \"4.1.1\",\n          \"System.ServiceModel.Primitives\": \"4.1.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.ServiceModel.Security.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.ServiceModel.Security.dll\": {}\n        }\n      },\n      \"System.Text.Encoding/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Text.Encoding\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.Encoding.CodePages/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\": {}\n        }\n      },\n      \"System.Text.Encoding.Extensions/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"runtime.aot.System.Text.Encoding.Extensions\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.Encoding.Extensions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Text.RegularExpressions/4.1.0\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Text.RegularExpressions.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Text.RegularExpressions.dll\": {}\n        }\n      },\n      \"System.Threading/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Threading.dll\": {}\n        }\n      },\n      \"System.Threading.Overlapped/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.Handles\": \"4.0.1\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/System.Threading.Overlapped.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win8/_._\": {}\n        }\n      },\n      \"System.Threading.Tasks.Dataflow/4.6.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Extensions/4.0.0\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/portable-net45+win8+wp8+wpa81/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\": {}\n        }\n      },\n      \"System.Threading.Tasks.Parallel/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections.Concurrent\": \"4.0.12\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tracing\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Threading.Tasks\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Threading.Tasks.Parallel.dll\": {}\n        }\n      },\n      \"System.Threading.Timer/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"Microsoft.NETCore.Platforms\": \"1.0.1\",\n          \"Microsoft.NETCore.Targets\": \"1.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"runtime.aot.System.Threading.Timer\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Threading.Timer.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/win81/_._\": {}\n        }\n      },\n      \"System.Xml.ReaderWriter/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.IO.FileSystem\": \"4.0.1\",\n          \"System.IO.FileSystem.Primitives\": \"4.0.1\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Runtime.InteropServices\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Text.Encoding.Extensions\": \"4.0.11\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading.Tasks\": \"4.0.11\",\n          \"System.Threading.Tasks.Extensions\": \"4.0.0\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.ReaderWriter.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.ReaderWriter.dll\": {}\n        }\n      },\n      \"System.Xml.XDocument/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Diagnostics.Tools\": \"4.0.1\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XDocument.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/netcore50/System.Xml.XDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlDocument/4.0.1\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Diagnostics.Debug\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.Encoding\": \"4.0.11\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\"\n        },\n        \"compile\": {\n          \"ref/netstandard1.3/_._\": {}\n        },\n        \"runtime\": {\n          \"lib/netstandard1.3/System.Xml.XmlDocument.dll\": {}\n        }\n      },\n      \"System.Xml.XmlSerializer/4.0.11\": {\n        \"type\": \"package\",\n        \"dependencies\": {\n          \"System.Collections\": \"4.0.11\",\n          \"System.Globalization\": \"4.0.11\",\n          \"System.IO\": \"4.1.0\",\n          \"System.Linq\": \"4.1.0\",\n          \"System.Reflection\": \"4.1.0\",\n          \"System.Reflection.Emit\": \"4.0.1\",\n          \"System.Reflection.Emit.ILGeneration\": \"4.0.1\",\n          \"System.Reflection.Extensions\": \"4.0.1\",\n          \"System.Reflection.Primitives\": \"4.0.1\",\n          \"System.Reflection.TypeExtensions\": \"4.1.0\",\n          \"System.Resources.ResourceManager\": \"4.0.1\",\n          \"System.Runtime\": \"4.1.0\",\n          \"System.Runtime.Extensions\": \"4.1.0\",\n          \"System.Text.RegularExpressions\": \"4.1.0\",\n          \"System.Threading\": \"4.0.11\",\n          \"System.Xml.ReaderWriter\": \"4.0.11\",\n          \"System.Xml.XmlDocument\": \"4.0.1\"\n        },\n        \"compile\": {\n          \"ref/netcore50/System.Xml.XmlSerializer.dll\": {}\n        },\n        \"runtime\": {\n          \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\": {}\n        }\n      },\n      \"Validation/2.2.8\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/dotnet/Validation.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/dotnet/Validation.dll\": {}\n        }\n      },\n      \"ZXing.Net.Mobile/2.1.47\": {\n        \"type\": \"package\",\n        \"compile\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        },\n        \"runtime\": {\n          \"lib/UAP10/ZXing.Net.Mobile.Core.dll\": {},\n          \"lib/UAP10/ZXingNetMobile.dll\": {},\n          \"lib/UAP10/zxing.portable.dll\": {}\n        }\n      }\n    }\n  },\n  \"libraries\": {\n    \"Microsoft.ApplicationInsights/2.1.0\": {\n      \"sha512\": \"mviO8PLQd3r22Pmv8JfjYzTCQ9ByhkU9wdC4fwd6WmAARwAMgMw9HEbHeYS3r+8pB3w+fZMi7p4LKijzgNybRQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.ApplicationInsights/2.1.0\",\n      \"files\": [\n        \"Microsoft.ApplicationInsights.2.1.0.nupkg.sha512\",\n        \"Microsoft.ApplicationInsights.nuspec\",\n        \"lib/dotnet5.4/Microsoft.ApplicationInsights.XML\",\n        \"lib/dotnet5.4/Microsoft.ApplicationInsights.dll\",\n        \"lib/net40/Microsoft.ApplicationInsights.XML\",\n        \"lib/net40/Microsoft.ApplicationInsights.dll\",\n        \"lib/net45/Microsoft.ApplicationInsights.XML\",\n        \"lib/net45/Microsoft.ApplicationInsights.dll\",\n        \"lib/net46/Microsoft.ApplicationInsights.XML\",\n        \"lib/net46/Microsoft.ApplicationInsights.dll\",\n        \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.dll\",\n        \"lib/uap10.0/Microsoft.ApplicationInsights.dll\",\n        \"lib/wp8/Microsoft.ApplicationInsights.dll\"\n      ]\n    },\n    \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\": {\n      \"sha512\": \"5MGcvPQVaGlGyAVh9adg4sSkIVSYDKn+H3+YnZa9hi1gH/g6UsRt4HLc8vp/IxjlbmXbJyAB7dYJV/NHmAGAgA==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.ApplicationInsights.PersistenceChannel/1.2.3\",\n      \"files\": [\n        \"Microsoft.ApplicationInsights.PersistenceChannel.1.2.3.nupkg.sha512\",\n        \"Microsoft.ApplicationInsights.PersistenceChannel.nuspec\",\n        \"lib/net40/Microsoft.ApplicationInsights.PersistenceChannel.XML\",\n        \"lib/net40/Microsoft.ApplicationInsights.PersistenceChannel.dll\",\n        \"lib/net45/Microsoft.ApplicationInsights.PersistenceChannel.XML\",\n        \"lib/net45/Microsoft.ApplicationInsights.PersistenceChannel.dll\",\n        \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.XML\",\n        \"lib/portable-win81+wpa81/Microsoft.ApplicationInsights.PersistenceChannel.dll\",\n        \"lib/wp8/Microsoft.ApplicationInsights.PersistenceChannel.XML\",\n        \"lib/wp8/Microsoft.ApplicationInsights.PersistenceChannel.dll\"\n      ]\n    },\n    \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\": {\n      \"sha512\": \"Orj0UQrjQ2z0aWZZoexl734Ge7Q4oVev3VFSsk6t8l2kImrfJ1eygkJWtQ1d7u0kF6MLLrvUvsMSxo+0rgPiMQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.ApplicationInsights.WindowsApps/1.1.1\",\n      \"files\": [\n        \"Microsoft.ApplicationInsights.WindowsApps.1.1.1.nupkg.sha512\",\n        \"Microsoft.ApplicationInsights.WindowsApps.nuspec\",\n        \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.XML\",\n        \"lib/win81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\",\n        \"lib/wp8/Microsoft.ApplicationInsights.Extensibility.Windows.XML\",\n        \"lib/wp8/Microsoft.ApplicationInsights.Extensibility.Windows.dll\",\n        \"lib/wpa81/Microsoft.ApplicationInsights.Extensibility.Windows.XML\",\n        \"lib/wpa81/Microsoft.ApplicationInsights.Extensibility.Windows.dll\"\n      ]\n    },\n    \"Microsoft.AspNet.WebApi.Client/5.2.3\": {\n      \"sha512\": \"3kiI8peSXbXHDDrRuo+QaX0iCEVRe0nvn2dBDRw656uPX32UalbBlSIDUDlJxu05eau4tnuhsikiUuugvvoUoQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.AspNet.WebApi.Client/5.2.3\",\n      \"files\": [\n        \"Microsoft.AspNet.WebApi.Client.5.2.3.nupkg.sha512\",\n        \"Microsoft.AspNet.WebApi.Client.nuspec\",\n        \"lib/net45/System.Net.Http.Formatting.dll\",\n        \"lib/net45/System.Net.Http.Formatting.xml\",\n        \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.dll\",\n        \"lib/portable-wp8+netcore45+net45+wp81+wpa81/System.Net.Http.Formatting.xml\"\n      ]\n    },\n    \"Microsoft.Azure.Amqp/1.1.5\": {\n      \"sha512\": \"6+3lPVW46h3H2NvjGtrHv+C0P3PVH11pZyCePm+w8AuhmX59OY+fvbA9/wll0MRAj81LPpz1i55oIQm41wOv7g==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Azure.Amqp/1.1.5\",\n      \"files\": [\n        \"Microsoft.Azure.Amqp.1.1.5.nupkg.sha512\",\n        \"Microsoft.Azure.Amqp.nuspec\",\n        \"lib/net451/Microsoft.Azure.Amqp.XML\",\n        \"lib/net451/Microsoft.Azure.Amqp.dll\",\n        \"lib/uap10.0/Microsoft.Azure.Amqp.Uwp.dll\"\n      ]\n    },\n    \"Microsoft.Azure.Devices.Client/1.1.1\": {\n      \"sha512\": \"BLh4z61INbQtdVXkhYsIiNqbYy9w7jcem4lqlSX8qZUIxIYsldN2U0QsLOgH9CP67N2lXaDtdAdnondIWehMPw==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Azure.Devices.Client/1.1.1\",\n      \"files\": [\n        \"Microsoft.Azure.Devices.Client.1.1.1.nupkg.sha512\",\n        \"Microsoft.Azure.Devices.Client.nuspec\",\n        \"build/native/Microsoft.Azure.Devices.Client.targets\",\n        \"lib/native/Microsoft.Azure.Devices.Client.winmd\",\n        \"lib/net45/Microsoft.Azure.Devices.Client.dll\",\n        \"lib/portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10/Microsoft.Azure.Devices.Client.PCL.dll\",\n        \"lib/uap10.0/Microsoft.Azure.Devices.Client.pri\",\n        \"lib/uap10.0/Microsoft.Azure.Devices.Client.winmd\",\n        \"thirdpartynotice.txt\"\n      ]\n    },\n    \"Microsoft.Azure.Devices.Shared/1.0.2\": {\n      \"sha512\": \"4j+6UpDVNvIuzmZussC+sMi2GioiNyhNwGioVKqVj7wKk1oY7pfd6Yt8Qjc4za++IYhDRoRo3yHM5YeJWskCwQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Azure.Devices.Shared/1.0.2\",\n      \"files\": [\n        \"Microsoft.Azure.Devices.Shared.1.0.2.nupkg.sha512\",\n        \"Microsoft.Azure.Devices.Shared.nuspec\",\n        \"lib/net45/Microsoft.Azure.Devices.Shared.dll\",\n        \"lib/portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10/Microsoft.Azure.Devices.Shared.PCL.dll\",\n        \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.dll\",\n        \"lib/uap10.0/Microsoft.Azure.Devices.Shared.WinRT.pri\",\n        \"thirdpartynotice.txt\"\n      ]\n    },\n    \"Microsoft.Bcl/1.1.9\": {\n      \"sha512\": \"USQ55innJy8K+tAXvVa1O8dUTp2s7pmJ5cJj6Tl02HtGc2xBDj0P2QH5620HbGXIWKWYhydoeQF8Rm/JRDBGhw==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Bcl/1.1.9\",\n      \"files\": [\n        \"License-Stable.rtf\",\n        \"Microsoft.Bcl.1.1.9.nupkg.sha512\",\n        \"Microsoft.Bcl.nuspec\",\n        \"content/monoandroid/_._\",\n        \"content/monotouch/_._\",\n        \"content/net45/_._\",\n        \"content/portable-net45+win8+wp8+wpa81/_._\",\n        \"content/portable-net45+win8+wpa81/_._\",\n        \"content/portable-net451+win81+wpa81/_._\",\n        \"content/portable-net451+win81/_._\",\n        \"content/portable-win81+wp81+wpa81/_._\",\n        \"content/sl4/_._\",\n        \"content/sl5/_._\",\n        \"content/win8/_._\",\n        \"content/wp8/_._\",\n        \"content/wpa81/_._\",\n        \"lib/monoandroid/_._\",\n        \"lib/monotouch/_._\",\n        \"lib/net40/System.IO.dll\",\n        \"lib/net40/System.IO.xml\",\n        \"lib/net40/System.Runtime.dll\",\n        \"lib/net40/System.Runtime.xml\",\n        \"lib/net40/System.Threading.Tasks.dll\",\n        \"lib/net40/System.Threading.Tasks.xml\",\n        \"lib/net40/ensureRedirect.xml\",\n        \"lib/net45/_._\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.IO.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.IO.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Runtime.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Runtime.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.IO.dll\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.IO.xml\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.Runtime.dll\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.Runtime.xml\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+sl4+win8+wp8+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net40+sl4+win8/System.IO.dll\",\n        \"lib/portable-net40+sl4+win8/System.IO.xml\",\n        \"lib/portable-net40+sl4+win8/System.Runtime.dll\",\n        \"lib/portable-net40+sl4+win8/System.Runtime.xml\",\n        \"lib/portable-net40+sl4+win8/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+sl4+win8/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+sl4+win8/ensureRedirect.xml\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.IO.dll\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.IO.xml\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.Runtime.dll\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.Runtime.xml\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+sl5+win8+wp8+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.IO.dll\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.IO.xml\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.Runtime.dll\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.Runtime.xml\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+win8+wp8+wpa81/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+win8+wp8+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net40+win8/System.IO.dll\",\n        \"lib/portable-net40+win8/System.IO.xml\",\n        \"lib/portable-net40+win8/System.Runtime.dll\",\n        \"lib/portable-net40+win8/System.Runtime.xml\",\n        \"lib/portable-net40+win8/System.Threading.Tasks.dll\",\n        \"lib/portable-net40+win8/System.Threading.Tasks.xml\",\n        \"lib/portable-net40+win8/ensureRedirect.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/portable-net451+win81+wpa81/_._\",\n        \"lib/portable-net451+win81/_._\",\n        \"lib/portable-win81+wp81+wpa81/_._\",\n        \"lib/sl4-windowsphone71/System.IO.dll\",\n        \"lib/sl4-windowsphone71/System.IO.xml\",\n        \"lib/sl4-windowsphone71/System.Runtime.dll\",\n        \"lib/sl4-windowsphone71/System.Runtime.xml\",\n        \"lib/sl4-windowsphone71/System.Threading.Tasks.dll\",\n        \"lib/sl4-windowsphone71/System.Threading.Tasks.xml\",\n        \"lib/sl4-windowsphone71/ensureRedirect.xml\",\n        \"lib/sl4/System.IO.dll\",\n        \"lib/sl4/System.IO.xml\",\n        \"lib/sl4/System.Runtime.dll\",\n        \"lib/sl4/System.Runtime.xml\",\n        \"lib/sl4/System.Threading.Tasks.dll\",\n        \"lib/sl4/System.Threading.Tasks.xml\",\n        \"lib/sl5/System.IO.dll\",\n        \"lib/sl5/System.IO.xml\",\n        \"lib/sl5/System.Runtime.dll\",\n        \"lib/sl5/System.Runtime.xml\",\n        \"lib/sl5/System.Threading.Tasks.dll\",\n        \"lib/sl5/System.Threading.Tasks.xml\",\n        \"lib/win8/_._\",\n        \"lib/wp8/_._\",\n        \"lib/wpa81/_._\"\n      ]\n    },\n    \"Microsoft.Bcl.Build/1.0.14\": {\n      \"sha512\": \"cDLKSvNvRa519hplsbSoYqO69TjdDIhfjtKUM0g20/nVROoWsGav9KCI9HtnGjLmdV1+TcUUDhbotcllibjPEA==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Bcl.Build/1.0.14\",\n      \"files\": [\n        \"License-Stable.rtf\",\n        \"Microsoft.Bcl.Build.1.0.14.nupkg.sha512\",\n        \"Microsoft.Bcl.Build.nuspec\",\n        \"content/net40/_._\",\n        \"content/netcore45/_._\",\n        \"content/portable-net40+win8+sl4+wp71+wpa81/_._\",\n        \"content/sl4-windowsphone71/_._\",\n        \"content/sl4/_._\",\n        \"tools/Install.ps1\",\n        \"tools/Microsoft.Bcl.Build.Tasks.dll\",\n        \"tools/Microsoft.Bcl.Build.targets\",\n        \"tools/Uninstall.ps1\"\n      ]\n    },\n    \"Microsoft.CSharp/4.0.1\": {\n      \"sha512\": \"/2JrH4hvYpwr7yFv3eSY2q2SG/74efeSmD0vgf2Obmgo4NsSceHgig62lYGgSEyWIpjEZZ0LJgOop7hTfB7WqQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.CSharp/4.0.1\",\n      \"files\": [\n        \"Microsoft.CSharp.4.0.1.nupkg.sha512\",\n        \"Microsoft.CSharp.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/Microsoft.CSharp.dll\",\n        \"lib/netstandard1.3/Microsoft.CSharp.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/Microsoft.CSharp.dll\",\n        \"ref/netcore50/Microsoft.CSharp.xml\",\n        \"ref/netcore50/de/Microsoft.CSharp.xml\",\n        \"ref/netcore50/es/Microsoft.CSharp.xml\",\n        \"ref/netcore50/fr/Microsoft.CSharp.xml\",\n        \"ref/netcore50/it/Microsoft.CSharp.xml\",\n        \"ref/netcore50/ja/Microsoft.CSharp.xml\",\n        \"ref/netcore50/ko/Microsoft.CSharp.xml\",\n        \"ref/netcore50/ru/Microsoft.CSharp.xml\",\n        \"ref/netcore50/zh-hans/Microsoft.CSharp.xml\",\n        \"ref/netcore50/zh-hant/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/Microsoft.CSharp.dll\",\n        \"ref/netstandard1.0/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/de/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/es/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/fr/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/it/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/ja/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/ko/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/ru/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml\",\n        \"ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"Microsoft.Net.Http/2.2.22\": {\n      \"sha512\": \"bqVLJ2UimlAEs2bn3y28lB1pmFRxuysv9pFyB0A86WEMYGYTfDyfjAGjm0fiaSRjlMNU1jVnp8Mxt8qe4OmpXQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Net.Http/2.2.22\",\n      \"files\": [\n        \"License-Stable.rtf\",\n        \"Microsoft.Net.Http.2.2.22.nupkg.sha512\",\n        \"Microsoft.Net.Http.nuspec\",\n        \"lib/monoandroid/System.Net.Http.Extensions.XML\",\n        \"lib/monoandroid/System.Net.Http.Extensions.dll\",\n        \"lib/monoandroid/System.Net.Http.Primitives.dll\",\n        \"lib/monoandroid/System.Net.Http.Primitives.xml\",\n        \"lib/monotouch/System.Net.Http.Extensions.XML\",\n        \"lib/monotouch/System.Net.Http.Extensions.dll\",\n        \"lib/monotouch/System.Net.Http.Primitives.dll\",\n        \"lib/monotouch/System.Net.Http.Primitives.xml\",\n        \"lib/net40/System.Net.Http.Extensions.XML\",\n        \"lib/net40/System.Net.Http.Extensions.dll\",\n        \"lib/net40/System.Net.Http.Primitives.dll\",\n        \"lib/net40/System.Net.Http.Primitives.xml\",\n        \"lib/net40/System.Net.Http.WebRequest.dll\",\n        \"lib/net40/System.Net.Http.WebRequest.xml\",\n        \"lib/net40/System.Net.Http.dll\",\n        \"lib/net40/System.Net.Http.xml\",\n        \"lib/net40/ensureRedirect.xml\",\n        \"lib/net45/System.Net.Http.Extensions.XML\",\n        \"lib/net45/System.Net.Http.Extensions.dll\",\n        \"lib/net45/System.Net.Http.Primitives.dll\",\n        \"lib/net45/System.Net.Http.Primitives.xml\",\n        \"lib/net45/ensureRedirect.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Extensions.XML\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Extensions.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Primitives.XML\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.Primitives.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.dll\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/System.Net.Http.xml\",\n        \"lib/portable-net40+sl4+win8+wp71+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net45+win8+wpa81/System.Net.Http.Extensions.XML\",\n        \"lib/portable-net45+win8+wpa81/System.Net.Http.Extensions.dll\",\n        \"lib/portable-net45+win8+wpa81/System.Net.Http.Primitives.dll\",\n        \"lib/portable-net45+win8+wpa81/System.Net.Http.Primitives.xml\",\n        \"lib/portable-net45+win8+wpa81/ensureRedirect.xml\",\n        \"lib/portable-net45+win8/System.Net.Http.Extensions.XML\",\n        \"lib/portable-net45+win8/System.Net.Http.Extensions.dll\",\n        \"lib/portable-net45+win8/System.Net.Http.Primitives.dll\",\n        \"lib/portable-net45+win8/System.Net.Http.Primitives.xml\",\n        \"lib/portable-net45+win8/ensureRedirect.xml\",\n        \"lib/sl4-windowsphone71/System.Net.Http.Extensions.XML\",\n        \"lib/sl4-windowsphone71/System.Net.Http.Extensions.dll\",\n        \"lib/sl4-windowsphone71/System.Net.Http.Primitives.XML\",\n        \"lib/sl4-windowsphone71/System.Net.Http.Primitives.dll\",\n        \"lib/sl4-windowsphone71/System.Net.Http.dll\",\n        \"lib/sl4-windowsphone71/System.Net.Http.xml\",\n        \"lib/win8/System.Net.Http.Extensions.XML\",\n        \"lib/win8/System.Net.Http.Extensions.dll\",\n        \"lib/win8/System.Net.Http.Primitives.dll\",\n        \"lib/win8/System.Net.Http.Primitives.xml\",\n        \"lib/wpa81/System.Net.Http.Extensions.XML\",\n        \"lib/wpa81/System.Net.Http.Extensions.dll\",\n        \"lib/wpa81/System.Net.Http.Primitives.dll\",\n        \"lib/wpa81/System.Net.Http.Primitives.xml\"\n      ]\n    },\n    \"Microsoft.NETCore/5.0.2\": {\n      \"sha512\": \"wHb/fpL+6IxrZBAL2BwRJmj51RwYr3TVcnw5KIsxUtqLxjsqgasTbBmE9kZPAlhhljnt+m2EYMc7vcFuAhGNqA==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore/5.0.2\",\n      \"files\": [\n        \"Microsoft.NETCore.5.0.2.nupkg.sha512\",\n        \"Microsoft.NETCore.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\"\n      ]\n    },\n    \"Microsoft.NETCore.Jit/1.0.3\": {\n      \"sha512\": \"/l8xYwtoJrFSx9zMWRClaKrgR+BTstCD1E5P90ADgiwH0GwlEqVhLoFIrsXpYj0j9vCB/fzOq7D/ZzuCbtmrTQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.Jit/1.0.3\",\n      \"files\": [\n        \"Microsoft.NETCore.Jit.1.0.3.nupkg.sha512\",\n        \"Microsoft.NETCore.Jit.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Platforms/1.0.1\": {\n      \"sha512\": \"mkZFCSzkvORyFJAf4xx0g6HgPUdwd/FqtJ+2Y0x3zPR987AOutHyY1F6XfNxRN1I2MJtmz00L8BxAFfd+Pnldw==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.Platforms/1.0.1\",\n      \"files\": [\n        \"Microsoft.NETCore.Platforms.1.0.1.nupkg.sha512\",\n        \"Microsoft.NETCore.Platforms.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/_._\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Portable.Compatibility/1.0.2\": {\n      \"sha512\": \"sR4m1GQ8Tbg+Xdbf8Y8yC+LXKSUJUVe/B5vckCAU9Jd5MYf84gC1D0u2YeA72B4WjeWewCyHRB20ddA8hyLmqQ==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.Portable.Compatibility/1.0.2\",\n      \"files\": [\n        \"Microsoft.NETCore.Portable.Compatibility.1.0.2.nupkg.sha512\",\n        \"Microsoft.NETCore.Portable.Compatibility.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"lib/netcore50/System.Core.dll\",\n        \"lib/netcore50/System.Net.dll\",\n        \"lib/netcore50/System.Numerics.dll\",\n        \"lib/netcore50/System.Runtime.Serialization.dll\",\n        \"lib/netcore50/System.ServiceModel.Web.dll\",\n        \"lib/netcore50/System.ServiceModel.dll\",\n        \"lib/netcore50/System.Windows.dll\",\n        \"lib/netcore50/System.Xml.Linq.dll\",\n        \"lib/netcore50/System.Xml.Serialization.dll\",\n        \"lib/netcore50/System.Xml.dll\",\n        \"lib/netcore50/System.dll\",\n        \"lib/netstandard1.0/System.ComponentModel.DataAnnotations.dll\",\n        \"lib/netstandard1.0/System.Core.dll\",\n        \"lib/netstandard1.0/System.Net.dll\",\n        \"lib/netstandard1.0/System.Numerics.dll\",\n        \"lib/netstandard1.0/System.Runtime.Serialization.dll\",\n        \"lib/netstandard1.0/System.ServiceModel.Web.dll\",\n        \"lib/netstandard1.0/System.ServiceModel.dll\",\n        \"lib/netstandard1.0/System.Windows.dll\",\n        \"lib/netstandard1.0/System.Xml.Linq.dll\",\n        \"lib/netstandard1.0/System.Xml.Serialization.dll\",\n        \"lib/netstandard1.0/System.Xml.dll\",\n        \"lib/netstandard1.0/System.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"ref/netcore50/System.Core.dll\",\n        \"ref/netcore50/System.Net.dll\",\n        \"ref/netcore50/System.Numerics.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.dll\",\n        \"ref/netcore50/System.ServiceModel.Web.dll\",\n        \"ref/netcore50/System.ServiceModel.dll\",\n        \"ref/netcore50/System.Windows.dll\",\n        \"ref/netcore50/System.Xml.Linq.dll\",\n        \"ref/netcore50/System.Xml.Serialization.dll\",\n        \"ref/netcore50/System.Xml.dll\",\n        \"ref/netcore50/System.dll\",\n        \"ref/netcore50/mscorlib.dll\",\n        \"ref/netstandard1.0/System.ComponentModel.DataAnnotations.dll\",\n        \"ref/netstandard1.0/System.Core.dll\",\n        \"ref/netstandard1.0/System.Net.dll\",\n        \"ref/netstandard1.0/System.Numerics.dll\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.Web.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.dll\",\n        \"ref/netstandard1.0/System.Windows.dll\",\n        \"ref/netstandard1.0/System.Xml.Linq.dll\",\n        \"ref/netstandard1.0/System.Xml.Serialization.dll\",\n        \"ref/netstandard1.0/System.Xml.dll\",\n        \"ref/netstandard1.0/System.dll\",\n        \"ref/netstandard1.0/mscorlib.dll\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/aot/lib/netcore50/System.ComponentModel.DataAnnotations.dll\",\n        \"runtimes/aot/lib/netcore50/System.Core.dll\",\n        \"runtimes/aot/lib/netcore50/System.Net.dll\",\n        \"runtimes/aot/lib/netcore50/System.Numerics.dll\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.dll\",\n        \"runtimes/aot/lib/netcore50/System.ServiceModel.Web.dll\",\n        \"runtimes/aot/lib/netcore50/System.ServiceModel.dll\",\n        \"runtimes/aot/lib/netcore50/System.Windows.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.Linq.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.Serialization.dll\",\n        \"runtimes/aot/lib/netcore50/System.Xml.dll\",\n        \"runtimes/aot/lib/netcore50/System.dll\",\n        \"runtimes/aot/lib/netcore50/mscorlib.dll\"\n      ]\n    },\n    \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\": {\n      \"sha512\": \"tjD5r9Lxy+MD+YRJcuds5+sT+xGHkVt2Hb5LfLZIgkFmwUewBRPm/42UXi4oxhV1OIdRtt4ymwsiuFCwT16T9w==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.Runtime.CoreCLR/1.0.3\",\n      \"files\": [\n        \"Microsoft.NETCore.Runtime.CoreCLR.1.0.3.nupkg.sha512\",\n        \"Microsoft.NETCore.Runtime.CoreCLR.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.Targets/1.0.2\": {\n      \"sha512\": \"yk4GtuNbFz2sxA5NNIp2bnOwGZVlB4U+F4gWy5YnMEKmGzzJfQ4wg7zQUx334+WMQ5PiQEuS4UuOpsW+V0PzVg==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.Targets/1.0.2\",\n      \"files\": [\n        \"Microsoft.NETCore.Targets.1.0.2.nupkg.sha512\",\n        \"Microsoft.NETCore.Targets.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/_._\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\": {\n      \"sha512\": \"9UHv2YObWmcF8gqtBoDC4UW5gdHzFRtaZ5KtB9QKvCy+NC9LH1DMYyOI/ltupjVZlwYEulj3msjBXys9/QI6nw==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.UniversalWindowsPlatform/5.2.2\",\n      \"files\": [\n        \"Microsoft.NETCore.UniversalWindowsPlatform.5.2.2.nupkg.sha512\",\n        \"Microsoft.NETCore.UniversalWindowsPlatform.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\"\n      ]\n    },\n    \"Microsoft.NETCore.Windows.ApiSets/1.0.1\": {\n      \"sha512\": \"l4KtgtXhio03COnf9W6ywNK438XLTmXK0ODQJsHOXUpGdNXxnmaZk+dA/RQjve9sAgg9JtdWPTKeRFLQsM6xgw==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.NETCore.Windows.ApiSets/1.0.1\",\n      \"files\": [\n        \"Microsoft.NETCore.Windows.ApiSets.1.0.1.nupkg.sha512\",\n        \"Microsoft.NETCore.Windows.ApiSets.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.json\"\n      ]\n    },\n    \"Microsoft.VisualBasic/10.0.1\": {\n      \"sha512\": \"g0toSmwc+DVYDpAQSVYs9gNhgrCtkSZ+Y8+x3OKYH5UGbAuzEaAZ/exoRttqGaLgMTSg5c5DS0a4rshkc79W6g==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.VisualBasic/10.0.1\",\n      \"files\": [\n        \"Microsoft.VisualBasic.10.0.1.nupkg.sha512\",\n        \"Microsoft.VisualBasic.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/Microsoft.VisualBasic.dll\",\n        \"lib/netstandard1.3/Microsoft.VisualBasic.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/Microsoft.VisualBasic.dll\",\n        \"ref/netcore50/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/de/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/es/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/fr/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/it/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/ja/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/ko/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/ru/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/zh-hans/Microsoft.VisualBasic.xml\",\n        \"ref/netcore50/zh-hant/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/Microsoft.VisualBasic.dll\",\n        \"ref/netstandard1.1/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/de/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/es/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/fr/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/it/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/ja/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/ko/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/ru/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/zh-hans/Microsoft.VisualBasic.xml\",\n        \"ref/netstandard1.1/zh-hant/Microsoft.VisualBasic.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\"\n      ]\n    },\n    \"Microsoft.Win32.Primitives/4.0.1\": {\n      \"sha512\": \"WKeQQypyEn4rSdl+GpSARGmCwnCZEgPG7eZknzuTR4Kk4txmHk7xL8Ek5xoVwgwoNghaa180ACGghMG8rK1hrA==\",\n      \"type\": \"package\",\n      \"path\": \"Microsoft.Win32.Primitives/4.0.1\",\n      \"files\": [\n        \"Microsoft.Win32.Primitives.4.0.1.nupkg.sha512\",\n        \"Microsoft.Win32.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/Microsoft.Win32.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/Microsoft.Win32.Primitives.dll\",\n        \"ref/netstandard1.3/Microsoft.Win32.Primitives.dll\",\n        \"ref/netstandard1.3/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"Newtonsoft.Json/9.0.1\": {\n      \"sha512\": \"U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw==\",\n      \"type\": \"package\",\n      \"path\": \"Newtonsoft.Json/9.0.1\",\n      \"files\": [\n        \"Newtonsoft.Json.9.0.1.nupkg.sha512\",\n        \"Newtonsoft.Json.nuspec\",\n        \"lib/net20/Newtonsoft.Json.dll\",\n        \"lib/net20/Newtonsoft.Json.xml\",\n        \"lib/net35/Newtonsoft.Json.dll\",\n        \"lib/net35/Newtonsoft.Json.xml\",\n        \"lib/net40/Newtonsoft.Json.dll\",\n        \"lib/net40/Newtonsoft.Json.xml\",\n        \"lib/net45/Newtonsoft.Json.dll\",\n        \"lib/net45/Newtonsoft.Json.xml\",\n        \"lib/netstandard1.0/Newtonsoft.Json.dll\",\n        \"lib/netstandard1.0/Newtonsoft.Json.xml\",\n        \"lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.dll\",\n        \"lib/portable-net40+sl5+wp80+win8+wpa81/Newtonsoft.Json.xml\",\n        \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.dll\",\n        \"lib/portable-net45+wp80+win8+wpa81/Newtonsoft.Json.xml\",\n        \"tools/install.ps1\"\n      ]\n    },\n    \"PCLCrypto/1.0.86\": {\n      \"sha512\": \"rcmxw9Bb5GuEW1ubVBegCCbR7YU8Ptr8tGfmyVHBnK+UQlk29TuBryHXmsTglt64ZNDXpi8rWl8x5l55JylpOw==\",\n      \"type\": \"package\",\n      \"path\": \"PCLCrypto/1.0.86\",\n      \"files\": [\n        \"PCLCrypto.1.0.86.nupkg.sha512\",\n        \"PCLCrypto.nuspec\",\n        \"lib/Xamarin.iOS/PCLCrypto.dll\",\n        \"lib/Xamarin.iOS/PCLCrypto.xml\",\n        \"lib/monoandroid/PCLCrypto.dll\",\n        \"lib/monoandroid/PCLCrypto.xml\",\n        \"lib/monotouch/PCLCrypto.dll\",\n        \"lib/monotouch/PCLCrypto.xml\",\n        \"lib/net40-Client/PCLCrypto.dll\",\n        \"lib/net40-Client/PCLCrypto.xml\",\n        \"lib/portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/PCLCrypto.dll\",\n        \"lib/portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/PCLCrypto.xml\",\n        \"lib/sl5/PCLCrypto.dll\",\n        \"lib/sl5/PCLCrypto.xml\",\n        \"lib/win81/PCLCrypto.dll\",\n        \"lib/win81/PCLCrypto.pri\",\n        \"lib/win81/PCLCrypto.xml\",\n        \"lib/wp8/PCLCrypto.dll\",\n        \"lib/wp8/PCLCrypto.xml\",\n        \"lib/wpa81/PCLCrypto.dll\",\n        \"lib/wpa81/PCLCrypto.pri\",\n        \"lib/wpa81/PCLCrypto.xml\"\n      ]\n    },\n    \"runtime.any.System.Collections/4.0.11\": {\n      \"sha512\": \"MTBT/hu37Dm2042H1JjWSaMd8w+oPJ4ZWAbDNeLzC4ZHdqwHloP07KvD6+4VbwipDqY5obfFFy90mZYCaPDh5Q==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Collections/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Collections.dll\",\n        \"lib/netstandard1.3/System.Collections.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Collections.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Collections.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Diagnostics.Tools/4.0.1\": {\n      \"sha512\": \"GJkwEYbKw7qG29QrKMIEEZEGWxC+DQboeObhaM6WPKKgwk9Od8Qt8lWhr/+5xW3FF60TdMfjjUP8Zu6Y41wIkA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Diagnostics.Tools/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Diagnostics.Tools.dll\",\n        \"lib/netstandard1.3/System.Diagnostics.Tools.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Diagnostics.Tools.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Diagnostics.Tools.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Diagnostics.Tracing/4.1.0\": {\n      \"sha512\": \"x7VLOl/v504jX97YEMePamZRHA3cJPOFY/xLw9pgjDr0Q3IQIZ+0K4oiKKtQrfMYSvOAntkzw+EvvQ+OWGRL9w==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Diagnostics.Tracing/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Diagnostics.Tracing.dll\",\n        \"lib/netstandard1.5/System.Diagnostics.Tracing.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Diagnostics.Tracing.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.Diagnostics.Tracing.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Globalization/4.0.11\": {\n      \"sha512\": \"cjJ3+b83Tpf02AIc5FkGj1vzY68RnsVHiGLrOCc5n7gpNVg1JnZrt1mcY99ykQ/wr3nCdvSP2pYvdxbYsxZdlA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Globalization/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Globalization.dll\",\n        \"lib/netstandard1.3/System.Globalization.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Globalization.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Globalization.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Globalization.Calendars/4.0.1\": {\n      \"sha512\": \"SAdVwIKKKR3VG9NMKEgF+wbAKkQA60YOb4G9YGj4EUPsuwS+pH7FjjG6qQeXDyOaxUcrlRzI3LHcGloX/GHBxQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Globalization.Calendars/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net/_._\",\n        \"lib/netcore50/System.Globalization.Calendars.dll\",\n        \"lib/netstandard1.3/System.Globalization.Calendars.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Globalization.Calendars.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Globalization.Calendars.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.IO/4.1.0\": {\n      \"sha512\": \"sC7zKVdhYQEtrREKBJf4zkUwNdi6fsbkzrhJLDIAxIxD+YA5PABAQJps13zxpA1Ke3AgzOA9551JDymAfmRuTg==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.IO/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.IO.dll\",\n        \"lib/netstandard1.5/System.IO.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.IO.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.IO.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Reflection/4.1.0\": {\n      \"sha512\": \"eKq6/GprEINYbugjWf2V9cjkyuAH/y+Raed28PJQ35zd30oR/pvKEHNN8JbPAgzYpI09TCd1yuhXN/Rb8PM8GA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Reflection/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.dll\",\n        \"lib/netstandard1.5/System.Reflection.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Reflection.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.Reflection.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Reflection.Extensions/4.0.1\": {\n      \"sha512\": \"ajAAD1MHX4KSNq/CW0d1IMlq5seVTuzTMMhA5EFWagMejfamzljIL92/wD19eK/1mPuux5nb16K4PFBYQrZOrQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Reflection.Extensions/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Extensions.dll\",\n        \"lib/netstandard1.3/System.Reflection.Extensions.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Reflection.Extensions.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Reflection.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Reflection.Primitives/4.0.1\": {\n      \"sha512\": \"oKs78h11WDhCGFNpxT26IqL8Oo8OBzr6YOW0WG+R14FGaB/WDM5UHiK/jr6dipdnO8Wxlg/U48ka6uaPM6l53w==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Reflection.Primitives/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Primitives.dll\",\n        \"lib/netstandard1.3/System.Reflection.Primitives.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Reflection.Primitives.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Reflection.Primitives.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Resources.ResourceManager/4.0.1\": {\n      \"sha512\": \"hes7WFTOERydB/hLGmLj66NbK7I2AnjLHEeTpf7EmPZOIrRWeuC1dPoFYC9XRVIVzfCcOZI7oXM7KXe4vakt9Q==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Resources.ResourceManager/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Resources.ResourceManager.dll\",\n        \"lib/netstandard1.3/System.Resources.ResourceManager.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Resources.ResourceManager.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Resources.ResourceManager.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Runtime/4.1.0\": {\n      \"sha512\": \"0QVLwEGXROl0Trt2XosEjly9uqXcjHKStoZyZG9twJYFZJqq2JJXcBMXl/fnyQAgYEEODV8lUsU+t7NCCY0nUQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Runtime/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.dll\",\n        \"lib/netstandard1.5/System.Runtime.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Runtime.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.Runtime.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Runtime.Handles/4.0.1\": {\n      \"sha512\": \"MZ5fVmAE/3S11wt3hPfn3RsAHppj5gUz+VZuLQkRjLCMSlX0krOI601IZsMWc3CoxUb+wMt3gZVb/mEjblw6Mg==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Runtime.Handles/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netstandard1.3/System.Runtime.Handles.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Runtime.Handles.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Runtime.Handles.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Runtime.InteropServices/4.1.0\": {\n      \"sha512\": \"gmibdZ9x/eB6hf5le33DWLCQbhcIUD2vqoc0tBgqSUWlB8YjEzVJXyTPDO+ypKLlL90Kv3ZDrK7yPCNqcyhqCA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Runtime.InteropServices/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.InteropServices.dll\",\n        \"lib/netstandard1.5/System.Runtime.InteropServices.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Runtime.InteropServices.4.1.0.nupkg.sha512\",\n        \"runtime.any.System.Runtime.InteropServices.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Text.Encoding/4.0.11\": {\n      \"sha512\": \"uweRMRDD4O8Iy8m4h1cJvoFIHNCzHMpipuxkRNAMML6EMzAhDCQTjgvRwki7PlUg8RGY1ctXnBZjT1rXvMZuRw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Text.Encoding/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Text.Encoding.dll\",\n        \"lib/netstandard1.3/System.Text.Encoding.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Text.Encoding.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Text.Encoding.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Text.Encoding.Extensions/4.0.11\": {\n      \"sha512\": \"3n6qbf59NMgA7F9S+q9gmqFV7T/CtAZw2pa6aprfdZxUinR2mDvVchsgthoacpQvAQu6e3ok8WWeypSu/yjXrA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Text.Encoding.Extensions/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Text.Encoding.Extensions.dll\",\n        \"lib/netstandard1.3/System.Text.Encoding.Extensions.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Text.Encoding.Extensions.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Text.Encoding.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Threading.Tasks/4.0.11\": {\n      \"sha512\": \"CEvWO0IwtdCAsmCb9aAl59psy0hzx+whYh4DzbjNb0GsQmxw/G7bZEcrBtE8c9QupNVbu87c2xaMi6p4r1bpjA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Threading.Tasks/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.Tasks.dll\",\n        \"lib/netstandard1.3/System.Threading.Tasks.dll\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Threading.Tasks.4.0.11.nupkg.sha512\",\n        \"runtime.any.System.Threading.Tasks.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.any.System.Threading.Timer/4.0.1\": {\n      \"sha512\": \"C9d5eRAW/gd5iBZF78JRcwjvjCDRfU0oB48/wx/XbKnONZU4k6hWneTT4M7v3TmVqPFl7UDcLzKCtQ/24efOzw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.any.System.Threading.Timer/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.Timer.dll\",\n        \"lib/netstandard1.3/System.Threading.Timer.dll\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/netstandard/_._\",\n        \"runtime.any.System.Threading.Timer.4.0.1.nupkg.sha512\",\n        \"runtime.any.System.Threading.Timer.nuspec\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"runtime.aot.System.Collections/4.0.10\": {\n      \"sha512\": \"JaNCSMYW8RoPTrzlqRp3IsPdbSp8IhnNQ3qeKVGtBggT/9bZFz6FjfU+YG3NEiy/yPo03NMQ5EtXMT2MCIrV1A==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Collections/4.0.10\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Collections.4.0.10.nupkg.sha512\",\n        \"runtime.aot.System.Collections.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Collections.dll\"\n      ]\n    },\n    \"runtime.aot.System.Diagnostics.Tools/4.0.1\": {\n      \"sha512\": \"29xXSZEpRNd2wJsEXX40CEaWhhQjfqFGal4f1DuqY7Gd7+ARcV7zJK9aKRX9SkHnQfx3qSm3+D/VWBPI7pgEYQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Diagnostics.Tools/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Diagnostics.Tools.4.0.1.nupkg.sha512\",\n        \"runtime.aot.System.Diagnostics.Tools.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.Tools.dll\"\n      ]\n    },\n    \"runtime.aot.System.Diagnostics.Tracing/4.0.20\": {\n      \"sha512\": \"1zaLtCd4/msBeR4hDRjywdONAqnMl+mfsYO2er+kj9HEMQfrItSdApImXakl3CTRqb1S8upuBru2v/SLEY2vtg==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Diagnostics.Tracing/4.0.20\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Diagnostics.Tracing.4.0.20.nupkg.sha512\",\n        \"runtime.aot.System.Diagnostics.Tracing.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.Tracing.dll\"\n      ]\n    },\n    \"runtime.aot.System.Globalization/4.0.11\": {\n      \"sha512\": \"eEPSEA2yUp1HLNlp8Cve/J6UpN2mFnWUJhjqVEw+d+JUkWrzE2+ebl+0kf91Nwls4Mnia0GkjRRDiDKt8XeAAQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Globalization/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Globalization.4.0.11.nupkg.sha512\",\n        \"runtime.aot.System.Globalization.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Globalization.dll\"\n      ]\n    },\n    \"runtime.aot.System.Globalization.Calendars/4.0.1\": {\n      \"sha512\": \"nXHH2LS832GzQMr//792HTXyuUGlREv/8IZ24USS+q8QobtPwAis0mDumSoSd6z+IoiFGK7ol1Ev/ab+dRiVTg==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Globalization.Calendars/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Globalization.Calendars.4.0.1.nupkg.sha512\",\n        \"runtime.aot.System.Globalization.Calendars.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Globalization.Calendars.dll\"\n      ]\n    },\n    \"runtime.aot.System.IO/4.1.0\": {\n      \"sha512\": \"zI0PBKDpAvTNbxTgcZutcb50D7jHJaC9vQLxKhUBn4gS7VHQqnZjqyEqXBxc4rnx6rdZzlMADNZAMUWNW42Sxw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.IO/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.IO.4.1.0.nupkg.sha512\",\n        \"runtime.aot.System.IO.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.IO.dll\",\n        \"runtimes/aot/lib/netstandard1.3/System.IO.dll\"\n      ]\n    },\n    \"runtime.aot.System.Reflection/4.0.10\": {\n      \"sha512\": \"vrUbKdxXRNkmIsiMFP03cKLmzGoN7ObqU7rpjr/9ABL2ovHO7vyFhVfkpUXg4uX94ixgVaytbISLe+yxFQtl8w==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Reflection/4.0.10\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Reflection.4.0.10.nupkg.sha512\",\n        \"runtime.aot.System.Reflection.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.dll\"\n      ]\n    },\n    \"runtime.aot.System.Reflection.Extensions/4.0.0\": {\n      \"sha512\": \"WWw59m7k4XZLWN6XbptSR0TOdrLgwh5XEBj77QaUZQ+PcmvSzdJ79Jfp76ncQb5SzJZVu5ByZ7ufWX2bIeDpFQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Reflection.Extensions/4.0.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Reflection.Extensions.4.0.0.nupkg.sha512\",\n        \"runtime.aot.System.Reflection.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.Extensions.dll\"\n      ]\n    },\n    \"runtime.aot.System.Reflection.Primitives/4.0.0\": {\n      \"sha512\": \"826QEny5/GvZ270fhG70vnzYlFnTxNAHiHfyRS2zMZ5X1MpAsiW0y0XHAJjq7MrrnRjyG3qHF0zqytpNPJLaFQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Reflection.Primitives/4.0.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Reflection.Primitives.4.0.0.nupkg.sha512\",\n        \"runtime.aot.System.Reflection.Primitives.nuspec\",\n        \"runtimes/aot/lib/MonoAndroid10/_._\",\n        \"runtimes/aot/lib/MonoTouch10/_._\",\n        \"runtimes/aot/lib/net45/_._\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.Primitives.dll\",\n        \"runtimes/aot/lib/win8/_._\",\n        \"runtimes/aot/lib/wp80/_._\",\n        \"runtimes/aot/lib/wpa81/_._\",\n        \"runtimes/aot/lib/xamarinios10/_._\",\n        \"runtimes/aot/lib/xamarinmac20/_._\",\n        \"runtimes/aot/lib/xamarintvos10/_._\",\n        \"runtimes/aot/lib/xamarinwatchos10/_._\"\n      ]\n    },\n    \"runtime.aot.System.Resources.ResourceManager/4.0.0\": {\n      \"sha512\": \"j+xK1M/oJ5ll7WT6UD9oQ/YUESFtT0YN3th1TIliJjK5J0Ek4vDPTMDQceu3WFy7aQOThDmIxjkAVSxZV7OWIA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Resources.ResourceManager/4.0.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Resources.ResourceManager.4.0.0.nupkg.sha512\",\n        \"runtime.aot.System.Resources.ResourceManager.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Resources.ResourceManager.dll\"\n      ]\n    },\n    \"runtime.aot.System.Runtime/4.0.20\": {\n      \"sha512\": \"ax423Smc+2Bcm8Go70iwj30hpjUIuahVtBAqlGXzhOoRwRR4vlEN3OGp8qTecWki3ZhGrbOXy+A1U89V3DzG/w==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Runtime/4.0.20\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Runtime.4.0.20.nupkg.sha512\",\n        \"runtime.aot.System.Runtime.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.dll\"\n      ]\n    },\n    \"runtime.aot.System.Runtime.Handles/4.0.1\": {\n      \"sha512\": \"UPzDQF5lwQ+BN+B1Zu2u3b5YQvIo4A96N9v5Uwo4VL1hWEf4STqiZgRogumy21TeRLjtEpF7I5JqIDhcc3OMCw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Runtime.Handles/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Runtime.Handles.4.0.1.nupkg.sha512\",\n        \"runtime.aot.System.Runtime.Handles.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Handles.dll\"\n      ]\n    },\n    \"runtime.aot.System.Runtime.InteropServices/4.0.20\": {\n      \"sha512\": \"s4P2Jlf6ev4RgeLjNIq4hXsESIuE6t0Ljf+KVfRGDvrZ+yJuoPjwS3zMkm2SPj5Qif1HZ9vskKTdHPtk1B89Bw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Runtime.InteropServices/4.0.20\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Runtime.InteropServices.4.0.20.nupkg.sha512\",\n        \"runtime.aot.System.Runtime.InteropServices.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.dll\"\n      ]\n    },\n    \"runtime.aot.System.Text.Encoding/4.0.11\": {\n      \"sha512\": \"mUltrQRF5trt9DvIDPxV5E3girWcXlJgQBnYHfy1b8RQU2Ipob6xzCqlDnnECa8+FdhD8C/A7s7krxvHWcJ/pw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Text.Encoding/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Text.Encoding.4.0.11.nupkg.sha512\",\n        \"runtime.aot.System.Text.Encoding.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Text.Encoding.dll\"\n      ]\n    },\n    \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\": {\n      \"sha512\": \"N6XCU9y8ZC51LfxnE5tgNFy+3emNQTRY6W3NeLqlHLcina5vbChsSsPDOCpEIGMTOMxbODe5HtWYbzaOOSFtGg==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Text.Encoding.Extensions/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Text.Encoding.Extensions.4.0.11.nupkg.sha512\",\n        \"runtime.aot.System.Text.Encoding.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Text.Encoding.Extensions.dll\"\n      ]\n    },\n    \"runtime.aot.System.Threading.Tasks/4.0.11\": {\n      \"sha512\": \"55coohhmT0Usdq536a54bqGK4ij2D1ZTaJo8lQ3k/piwVx+Dl2r3xmDGsims+jVimQVayU2tXptKSAn9nhgRfA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Threading.Tasks/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Threading.Tasks.4.0.11.nupkg.sha512\",\n        \"runtime.aot.System.Threading.Tasks.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Threading.Tasks.dll\"\n      ]\n    },\n    \"runtime.aot.System.Threading.Timer/4.0.1\": {\n      \"sha512\": \"c4IE4f4MBSzr3b8uSCIpqc70uXbkNJx9oAASbEMhFGdyxljpwz14xYR5hp8AgnF4msF8tPL6zgOf7lDlSo0j/g==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.aot.System.Threading.Timer/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.aot.System.Threading.Timer.4.0.1.nupkg.sha512\",\n        \"runtime.aot.System.Threading.Timer.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Threading.Timer.dll\"\n      ]\n    },\n    \"runtime.native.System.IO.Compression/4.1.0\": {\n      \"sha512\": \"8tm5jQhvrdzSuQDEr366HN7lDWnut+TMJIxRBy8sW6XgnEN4j1DXHSxay4bPYkpJqiRaZ74A+6G8xoBQfFeySQ==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.native.System.IO.Compression/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/_._\",\n        \"runtime.native.System.IO.Compression.4.1.0.nupkg.sha512\",\n        \"runtime.native.System.IO.Compression.nuspec\"\n      ]\n    },\n    \"runtime.native.System.Security.Cryptography/4.0.0\": {\n      \"sha512\": \"C5MLmsqD0xEF+nZFh42cmVji0b7cKLmcOqOJOgqOTr8FZkLY3xp/kWFpfZj52vMElXLMjlYL3rRGYCLbfWX5lw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.native.System.Security.Cryptography/4.0.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/_._\",\n        \"runtime.native.System.Security.Cryptography.4.0.0.nupkg.sha512\",\n        \"runtime.native.System.Security.Cryptography.nuspec\"\n      ]\n    },\n    \"runtime.win.Microsoft.Win32.Primitives/4.0.1\": {\n      \"sha512\": \"0alFxXfT7M+xhhgMkNzG/Mnfii3o+DGQV9gkmhfLr6wsRPNxlIHdz4yQC8ksHqqmOu1Sq0FD9FxrSQyGo+8syA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win.Microsoft.Win32.Primitives/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.Microsoft.Win32.Primitives.4.0.1.nupkg.sha512\",\n        \"runtime.win.Microsoft.Win32.Primitives.nuspec\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netstandard1.3/Microsoft.Win32.Primitives.dll\"\n      ]\n    },\n    \"runtime.win.System.Diagnostics.Debug/4.0.11\": {\n      \"sha512\": \"q8Fm954ezFLfmG0tHNUmsNy+qaEjWtWqYhWh3cGSVjtJwkcBsfigWCh+fdaIVZ9K7m+6lgb3ElL2BBU6G+RijA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win.System.Diagnostics.Debug/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.Diagnostics.Debug.4.0.11.nupkg.sha512\",\n        \"runtime.win.System.Diagnostics.Debug.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.Debug.dll\",\n        \"runtimes/win/lib/net45/_._\",\n        \"runtimes/win/lib/netcore50/System.Diagnostics.Debug.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Diagnostics.Debug.dll\",\n        \"runtimes/win/lib/win8/_._\",\n        \"runtimes/win/lib/wp80/_._\",\n        \"runtimes/win/lib/wpa81/_._\"\n      ]\n    },\n    \"runtime.win.System.IO.FileSystem/4.0.1\": {\n      \"sha512\": \"4FG9RK8J5CsUpXjkiZWS07aJu+H+vTIeQkFKXyjwibfBedUM168SCEaqV3Bjkbv4b3pUuf5Gy1RaqX/HnmKlZw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win.System.IO.FileSystem/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.IO.FileSystem.4.0.1.nupkg.sha512\",\n        \"runtime.win.System.IO.FileSystem.nuspec\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netcore50/System.IO.FileSystem.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.IO.FileSystem.dll\",\n        \"runtimes/win/lib/win8/_._\",\n        \"runtimes/win/lib/wp8/_._\",\n        \"runtimes/win/lib/wpa81/_._\"\n      ]\n    },\n    \"runtime.win.System.Net.Primitives/4.0.11\": {\n      \"sha512\": \"36AsEkT9p+4cLHHh7sgSIOPWWeTKMh/DOoeQCzJmaLM8rtD9YaRZMmXGynf77ZP5KoXWwA4Y3aGbntrPbmmlcA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win.System.Net.Primitives/4.0.11\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.Net.Primitives.4.0.11.nupkg.sha512\",\n        \"runtime.win.System.Net.Primitives.nuspec\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netcore50/System.Net.Primitives.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.Primitives.dll\"\n      ]\n    },\n    \"runtime.win.System.Net.Sockets/4.1.0\": {\n      \"sha512\": \"BviTpQJbl+T/XVkwLw5xupFq9WXKru9KM/2U/ijmLuO2XEeMgdwk3g0e9sHWqvbrLvVT9yDf+SpbRXM1LNxTvA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win.System.Net.Sockets/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.Net.Sockets.4.1.0.nupkg.sha512\",\n        \"runtime.win.System.Net.Sockets.nuspec\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netcore50/System.Net.Sockets.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.Sockets.dll\"\n      ]\n    },\n    \"runtime.win.System.Runtime.Extensions/4.1.0\": {\n      \"sha512\": \"U3F/M+djxVXuKJaoW2AGpAE2ZWAp372140jsX4d/ctqki+Qb61HuyQY4yUPSA/gdKGbbq6HXzZ6oxB6/G3MYPA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win.System.Runtime.Extensions/4.1.0\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win.System.Runtime.Extensions.4.1.0.nupkg.sha512\",\n        \"runtime.win.System.Runtime.Extensions.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Extensions.dll\",\n        \"runtimes/win/lib/net/_._\",\n        \"runtimes/win/lib/netcore50/System.Runtime.Extensions.dll\",\n        \"runtimes/win/lib/netstandard1.5/System.Runtime.Extensions.dll\"\n      ]\n    },\n    \"runtime.win10-arm-aot.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"fzsKrHHfrv6wpLE1sxAHcWoB9vpAyoNjxVTnBJkzeXow2ZivR1H7wdpnsoKXIIb0d2EzYrrezHeHy4gI6tqqTA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win10-arm-aot.runtime.native.System.IO.Compression/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win10-arm-aot.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win10-arm-aot.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win10-arm-aot/lib/netcore50/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win10-x64-aot.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"qr2+iGSxqUjVW3eATYzV4GHN6qQOu5cDTzCGf7VZ4aaxXGv2P/XVk9BkQ6WdPCDitEdIuWmtFYIFvGdvY/qN6Q==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win10-x64-aot.runtime.native.System.IO.Compression/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win10-x64-aot.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win10-x64-aot.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win10-x64-aot/lib/netcore50/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win10-x86-aot.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"c3yeCSi1emskJMjeqbX6B+neZRozhYk4et/Lv/6s05Yz30jcwY2Mj5PAr7mvmlAZtP5+HLbxz+Ux+RNNM/1GUA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win10-x86-aot.runtime.native.System.IO.Compression/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win10-x86-aot.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win10-x86-aot.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win10-x86-aot/lib/netcore50/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win7-x64.Microsoft.NETCore.Jit/1.0.3\": {\n      \"sha512\": \"pXLZyhN1gFNVjmmZloXzGxbdZyUjkiHKpojzxUxCZ2U+T0jD6ooK3rYhwqFzlSjVKUAdQ9QNDoixxnEr3/5VWw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win7-x64.Microsoft.NETCore.Jit/1.0.3\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win7-x64.Microsoft.NETCore.Jit.1.0.3.nupkg.sha512\",\n        \"runtime.win7-x64.Microsoft.NETCore.Jit.nuspec\",\n        \"runtimes/win7-x64-aot/native/_._\",\n        \"runtimes/win7-x64/native/clrjit.dll\"\n      ]\n    },\n    \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n      \"sha512\": \"YaXA5RVLCYIcV1N31A7MJhWJnNkNfGnyRBNH1yYilUrBDvzMxNsbXX2pD7owWsC/go/4LRwbHbdWWXwHowKNvw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard1.0/_._\",\n        \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512\",\n        \"runtime.win7-x64.Microsoft.NETCore.Runtime.CoreCLR.nuspec\",\n        \"runtimes/win7-x64-aot/lib/netstandard1.0/_._\",\n        \"runtimes/win7-x64-aot/native/_._\",\n        \"runtimes/win7-x64/lib/netstandard1.0/System.Private.CoreLib.dll\",\n        \"runtimes/win7-x64/lib/netstandard1.0/mscorlib.dll\",\n        \"runtimes/win7-x64/native/System.Private.CoreLib.ni.dll\",\n        \"runtimes/win7-x64/native/clretwrc.dll\",\n        \"runtimes/win7-x64/native/coreclr.dll\",\n        \"runtimes/win7-x64/native/dbgshim.dll\",\n        \"runtimes/win7-x64/native/mscordaccore.dll\",\n        \"runtimes/win7-x64/native/mscordbi.dll\",\n        \"runtimes/win7-x64/native/mscorlib.ni.dll\",\n        \"runtimes/win7-x64/native/mscorrc.debug.dll\",\n        \"runtimes/win7-x64/native/mscorrc.dll\",\n        \"runtimes/win7-x64/native/sos.dll\",\n        \"tools/crossgen.exe\"\n      ]\n    },\n    \"runtime.win7-x64.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"4LLiT65shsAsGc+mUKV3vUw1SXfOaQWGWoblOYpYuZJSVkA3/LPx92M2GSYyn2sHR/XOFtY5TZmxJKgGlZOLFw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win7-x64.runtime.native.System.IO.Compression/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win7-x64.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win7-x64.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win7-x64/native/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win7-x86.Microsoft.NETCore.Jit/1.0.3\": {\n      \"sha512\": \"bU1EUneMeB6JltMNDCekL7nP1dluxOlnUgmAFx8EGsD6a+lgaYoDLk7V7F3H5Zpw/LeCxl5XmZqgPObGAlW7Dg==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win7-x86.Microsoft.NETCore.Jit/1.0.3\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win7-x86.Microsoft.NETCore.Jit.1.0.3.nupkg.sha512\",\n        \"runtime.win7-x86.Microsoft.NETCore.Jit.nuspec\",\n        \"runtimes/win7-x86-aot/native/_._\",\n        \"runtimes/win7-x86/native/clrjit.dll\"\n      ]\n    },\n    \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n      \"sha512\": \"80Jj8QlMLAnTq+BDhoHBnSNXRKqVjjZM9VjHcpw9/F98cBmh80rBdbnM0AAr54htjhzupYvwLqwuKnlzxec04A==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard1.0/_._\",\n        \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512\",\n        \"runtime.win7-x86.Microsoft.NETCore.Runtime.CoreCLR.nuspec\",\n        \"runtimes/win7-x86-aot/lib/netstandard1.0/_._\",\n        \"runtimes/win7-x86-aot/native/_._\",\n        \"runtimes/win7-x86/lib/netstandard1.0/System.Private.CoreLib.dll\",\n        \"runtimes/win7-x86/lib/netstandard1.0/mscorlib.dll\",\n        \"runtimes/win7-x86/native/System.Private.CoreLib.ni.dll\",\n        \"runtimes/win7-x86/native/clretwrc.dll\",\n        \"runtimes/win7-x86/native/coreclr.dll\",\n        \"runtimes/win7-x86/native/dbgshim.dll\",\n        \"runtimes/win7-x86/native/mscordaccore.dll\",\n        \"runtimes/win7-x86/native/mscordbi.dll\",\n        \"runtimes/win7-x86/native/mscorlib.ni.dll\",\n        \"runtimes/win7-x86/native/mscorrc.debug.dll\",\n        \"runtimes/win7-x86/native/mscorrc.dll\",\n        \"runtimes/win7-x86/native/sos.dll\",\n        \"tools/crossgen.exe\"\n      ]\n    },\n    \"runtime.win7-x86.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"3jgpS2GhE76QqeoTxCakx6jlX7EIeXvxHnFFDa03Jf++s9+EGnRD38R6GDb1ism73xo6IHe0iev7zd5y+oD3BA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win7-x86.runtime.native.System.IO.Compression/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win7-x86.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win7-x86.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win7-x86/native/clrcompression.dll\"\n      ]\n    },\n    \"runtime.win7.System.Private.Uri/4.0.2\": {\n      \"sha512\": \"N0nsmkEe+e3fl28KZ9LrHQ06XvhTC4FGyWacInV90h3pmty2s0fnG0GZ41rQw8d51s+pLcTQ0dKS0eN0xESY7g==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win7.System.Private.Uri/4.0.2\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtime.win7.System.Private.Uri.4.0.2.nupkg.sha512\",\n        \"runtime.win7.System.Private.Uri.nuspec\",\n        \"runtimes/aot/lib/netcore50/System.Private.Uri.dll\",\n        \"runtimes/win/lib/netcore50/System.Private.Uri.dll\",\n        \"runtimes/win/lib/netstandard1.0/System.Private.Uri.dll\"\n      ]\n    },\n    \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\": {\n      \"sha512\": \"0V6sq7Dg0bQPrJtm/Qw5Zu0e7gidnRPLaqUhKIkLYzVn64jkat+JnR6LcezryD3c0Wuva/MdJWYSAaOPq5V/Zw==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR/1.0.2\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard1.0/_._\",\n        \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR.1.0.2.nupkg.sha512\",\n        \"runtime.win8-arm.Microsoft.NETCore.Runtime.CoreCLR.nuspec\",\n        \"runtimes/win8-arm-aot/lib/netstandard1.0/_._\",\n        \"runtimes/win8-arm-aot/native/_._\",\n        \"runtimes/win8-arm/lib/netstandard1.0/System.Private.CoreLib.dll\",\n        \"runtimes/win8-arm/lib/netstandard1.0/mscorlib.dll\",\n        \"runtimes/win8-arm/native/System.Private.CoreLib.ni.dll\",\n        \"runtimes/win8-arm/native/clretwrc.dll\",\n        \"runtimes/win8-arm/native/coreclr.dll\",\n        \"runtimes/win8-arm/native/dbgshim.dll\",\n        \"runtimes/win8-arm/native/mscordaccore.dll\",\n        \"runtimes/win8-arm/native/mscordbi.dll\",\n        \"runtimes/win8-arm/native/mscorlib.ni.dll\",\n        \"runtimes/win8-arm/native/mscorrc.debug.dll\",\n        \"runtimes/win8-arm/native/mscorrc.dll\",\n        \"runtimes/win8-arm/native/sos.dll\",\n        \"tools/crossgen.exe\",\n        \"tools/sos.dll\"\n      ]\n    },\n    \"runtime.win8-arm.runtime.native.System.IO.Compression/4.0.1\": {\n      \"sha512\": \"EwyUwoJJLeSqfmeZoX9nxKx8Q9pEwX5zLLgSwtdH04+TzUYxaDIaoNqH5hfhoaSl2VoDsHGbEnQ6Y5bXLcWSkA==\",\n      \"type\": \"package\",\n      \"path\": \"runtime.win8-arm.runtime.native.System.IO.Compression/4.0.1\",\n      \"files\": [\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"runtime.win8-arm.runtime.native.System.IO.Compression.4.0.1.nupkg.sha512\",\n        \"runtime.win8-arm.runtime.native.System.IO.Compression.nuspec\",\n        \"runtimes/win8-arm/native/clrcompression.dll\"\n      ]\n    },\n    \"System.AppContext/4.1.0\": {\n      \"sha512\": \"065m4cS0FdPdzD9Jusy+5Y8ONECKRmrNKdRTrBY4Dyv9DVBB78ATRlaZAJU1nh5inZ6+pugr9HbXx75OME2+Ug==\",\n      \"type\": \"package\",\n      \"path\": \"System.AppContext/4.1.0\",\n      \"files\": [\n        \"System.AppContext.4.1.0.nupkg.sha512\",\n        \"System.AppContext.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.AppContext.dll\",\n        \"lib/net463/System.AppContext.dll\",\n        \"lib/netcore50/System.AppContext.dll\",\n        \"lib/netstandard1.6/System.AppContext.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.AppContext.dll\",\n        \"ref/net463/System.AppContext.dll\",\n        \"ref/netstandard/_._\",\n        \"ref/netstandard1.3/System.AppContext.dll\",\n        \"ref/netstandard1.3/System.AppContext.xml\",\n        \"ref/netstandard1.3/de/System.AppContext.xml\",\n        \"ref/netstandard1.3/es/System.AppContext.xml\",\n        \"ref/netstandard1.3/fr/System.AppContext.xml\",\n        \"ref/netstandard1.3/it/System.AppContext.xml\",\n        \"ref/netstandard1.3/ja/System.AppContext.xml\",\n        \"ref/netstandard1.3/ko/System.AppContext.xml\",\n        \"ref/netstandard1.3/ru/System.AppContext.xml\",\n        \"ref/netstandard1.3/zh-hans/System.AppContext.xml\",\n        \"ref/netstandard1.3/zh-hant/System.AppContext.xml\",\n        \"ref/netstandard1.6/System.AppContext.dll\",\n        \"ref/netstandard1.6/System.AppContext.xml\",\n        \"ref/netstandard1.6/de/System.AppContext.xml\",\n        \"ref/netstandard1.6/es/System.AppContext.xml\",\n        \"ref/netstandard1.6/fr/System.AppContext.xml\",\n        \"ref/netstandard1.6/it/System.AppContext.xml\",\n        \"ref/netstandard1.6/ja/System.AppContext.xml\",\n        \"ref/netstandard1.6/ko/System.AppContext.xml\",\n        \"ref/netstandard1.6/ru/System.AppContext.xml\",\n        \"ref/netstandard1.6/zh-hans/System.AppContext.xml\",\n        \"ref/netstandard1.6/zh-hant/System.AppContext.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.AppContext.dll\"\n      ]\n    },\n    \"System.Buffers/4.0.0\": {\n      \"sha512\": \"Ekxnj6EiW3/Aa0MhIuvAE72YXRjo57fKdlbxvHnAaGtP4ivaPsjuBCWKEQl6EG0/3WANHbs4g94M0Juoj21waQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Buffers/4.0.0\",\n      \"files\": [\n        \"System.Buffers.4.0.0.nupkg.sha512\",\n        \"System.Buffers.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.1/.xml\",\n        \"lib/netstandard1.1/System.Buffers.dll\"\n      ]\n    },\n    \"System.Collections/4.0.11\": {\n      \"sha512\": \"nhCpV23xO41EXWy1KdfwWogXycduRf82JWuTOF4ThHR/vc/l87c+xFtUTbmAoYvwzURkp9xdk+ziYfQ6CQdy5A==\",\n      \"type\": \"package\",\n      \"path\": \"System.Collections/4.0.11\",\n      \"files\": [\n        \"System.Collections.4.0.11.nupkg.sha512\",\n        \"System.Collections.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Collections.dll\",\n        \"ref/netcore50/System.Collections.xml\",\n        \"ref/netcore50/de/System.Collections.xml\",\n        \"ref/netcore50/es/System.Collections.xml\",\n        \"ref/netcore50/fr/System.Collections.xml\",\n        \"ref/netcore50/it/System.Collections.xml\",\n        \"ref/netcore50/ja/System.Collections.xml\",\n        \"ref/netcore50/ko/System.Collections.xml\",\n        \"ref/netcore50/ru/System.Collections.xml\",\n        \"ref/netcore50/zh-hans/System.Collections.xml\",\n        \"ref/netcore50/zh-hant/System.Collections.xml\",\n        \"ref/netstandard1.0/System.Collections.dll\",\n        \"ref/netstandard1.0/System.Collections.xml\",\n        \"ref/netstandard1.0/de/System.Collections.xml\",\n        \"ref/netstandard1.0/es/System.Collections.xml\",\n        \"ref/netstandard1.0/fr/System.Collections.xml\",\n        \"ref/netstandard1.0/it/System.Collections.xml\",\n        \"ref/netstandard1.0/ja/System.Collections.xml\",\n        \"ref/netstandard1.0/ko/System.Collections.xml\",\n        \"ref/netstandard1.0/ru/System.Collections.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Collections.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Collections.xml\",\n        \"ref/netstandard1.3/System.Collections.dll\",\n        \"ref/netstandard1.3/System.Collections.xml\",\n        \"ref/netstandard1.3/de/System.Collections.xml\",\n        \"ref/netstandard1.3/es/System.Collections.xml\",\n        \"ref/netstandard1.3/fr/System.Collections.xml\",\n        \"ref/netstandard1.3/it/System.Collections.xml\",\n        \"ref/netstandard1.3/ja/System.Collections.xml\",\n        \"ref/netstandard1.3/ko/System.Collections.xml\",\n        \"ref/netstandard1.3/ru/System.Collections.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Collections.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Collections.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Collections.Concurrent/4.0.12\": {\n      \"sha512\": \"8p3ZKVUaCqybDLtI+rVxbJvCAi//Ae1d1DOwbu7OsD+1jhV1LHeIVt1rC631MpF/Za+9TuqtOvfp3CBvpNWisA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Collections.Concurrent/4.0.12\",\n      \"files\": [\n        \"System.Collections.Concurrent.4.0.12.nupkg.sha512\",\n        \"System.Collections.Concurrent.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Collections.Concurrent.dll\",\n        \"lib/netstandard1.3/System.Collections.Concurrent.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Collections.Concurrent.dll\",\n        \"ref/netcore50/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/de/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/es/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/fr/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/it/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/ja/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/ko/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/ru/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/zh-hans/System.Collections.Concurrent.xml\",\n        \"ref/netcore50/zh-hant/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/System.Collections.Concurrent.dll\",\n        \"ref/netstandard1.1/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/de/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/es/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/fr/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/it/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/ja/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/ko/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/ru/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/System.Collections.Concurrent.dll\",\n        \"ref/netstandard1.3/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/de/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/es/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/fr/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/it/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/ja/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/ko/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/ru/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Collections.Immutable/1.2.0\": {\n      \"sha512\": \"cmmcdedHB75UEhPGJWQ0AdBniMm3hExrd0IbqhlypVE9K8uHitPyPVrhsipa3ZUULnJXkIX81+di999NIsOLag==\",\n      \"type\": \"package\",\n      \"path\": \"System.Collections.Immutable/1.2.0\",\n      \"files\": [\n        \"System.Collections.Immutable.1.2.0.nupkg.sha512\",\n        \"System.Collections.Immutable.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/System.Collections.Immutable.dll\",\n        \"lib/netstandard1.0/System.Collections.Immutable.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml\"\n      ]\n    },\n    \"System.Collections.NonGeneric/4.0.1\": {\n      \"sha512\": \"hMxFT2RhhlffyCdKLDXjx8WEC5JfCvNozAZxCablAuFRH74SCV4AgzE8yJCh/73bFnEoZgJ9MJmkjQ0dJmnKqA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Collections.NonGeneric/4.0.1\",\n      \"files\": [\n        \"System.Collections.NonGeneric.4.0.1.nupkg.sha512\",\n        \"System.Collections.NonGeneric.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Collections.NonGeneric.dll\",\n        \"lib/netstandard1.3/System.Collections.NonGeneric.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Collections.NonGeneric.dll\",\n        \"ref/netstandard1.3/System.Collections.NonGeneric.dll\",\n        \"ref/netstandard1.3/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/de/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/es/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/fr/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/it/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/ja/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/ko/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/ru/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Collections.NonGeneric.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Collections.NonGeneric.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Collections.Specialized/4.0.1\": {\n      \"sha512\": \"/HKQyVP0yH1I0YtK7KJL/28snxHNH/bi+0lgk/+MbURF6ULhAE31MDI+NZDerNWu264YbxklXCCygISgm+HMug==\",\n      \"type\": \"package\",\n      \"path\": \"System.Collections.Specialized/4.0.1\",\n      \"files\": [\n        \"System.Collections.Specialized.4.0.1.nupkg.sha512\",\n        \"System.Collections.Specialized.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Collections.Specialized.dll\",\n        \"lib/netstandard1.3/System.Collections.Specialized.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Collections.Specialized.dll\",\n        \"ref/netstandard1.3/System.Collections.Specialized.dll\",\n        \"ref/netstandard1.3/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/de/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/es/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/fr/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/it/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/ja/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/ko/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/ru/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Collections.Specialized.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Collections.Specialized.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ComponentModel/4.0.1\": {\n      \"sha512\": \"YCzWsbChY5bZVK8xTNfpqdOzP0ikw2k0dPkgu5zQX8woGg+42Q1yaZCkZ6f5SvPK3YHmBAs0C6VuXp2ORNlxjw==\",\n      \"type\": \"package\",\n      \"path\": \"System.ComponentModel/4.0.1\",\n      \"files\": [\n        \"System.ComponentModel.4.0.1.nupkg.sha512\",\n        \"System.ComponentModel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ComponentModel.dll\",\n        \"lib/netstandard1.3/System.ComponentModel.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ComponentModel.dll\",\n        \"ref/netcore50/System.ComponentModel.xml\",\n        \"ref/netcore50/de/System.ComponentModel.xml\",\n        \"ref/netcore50/es/System.ComponentModel.xml\",\n        \"ref/netcore50/fr/System.ComponentModel.xml\",\n        \"ref/netcore50/it/System.ComponentModel.xml\",\n        \"ref/netcore50/ja/System.ComponentModel.xml\",\n        \"ref/netcore50/ko/System.ComponentModel.xml\",\n        \"ref/netcore50/ru/System.ComponentModel.xml\",\n        \"ref/netcore50/zh-hans/System.ComponentModel.xml\",\n        \"ref/netcore50/zh-hant/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/System.ComponentModel.dll\",\n        \"ref/netstandard1.0/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/de/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/es/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/fr/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/it/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/ja/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/ko/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/ru/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ComponentModel.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ComponentModel.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ComponentModel.Annotations/4.1.0\": {\n      \"sha512\": \"ixk6+qnJwjQXX+7I2zRW3zbWt6IAAV0ETpW6J4DZ/E68hmT2ZpSOKlwdaTin06lSjtzmo3a9+X+KAtnoCWVJkw==\",\n      \"type\": \"package\",\n      \"path\": \"System.ComponentModel.Annotations/4.1.0\",\n      \"files\": [\n        \"System.ComponentModel.Annotations.4.1.0.nupkg.sha512\",\n        \"System.ComponentModel.Annotations.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net461/System.ComponentModel.Annotations.dll\",\n        \"lib/netcore50/System.ComponentModel.Annotations.dll\",\n        \"lib/netstandard1.4/System.ComponentModel.Annotations.dll\",\n        \"lib/portable-net45+win8/_._\",\n        \"lib/win8/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net461/System.ComponentModel.Annotations.dll\",\n        \"ref/netcore50/System.ComponentModel.Annotations.dll\",\n        \"ref/netcore50/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/de/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/es/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/it/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/System.ComponentModel.Annotations.dll\",\n        \"ref/netstandard1.1/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/de/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/es/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/it/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/System.ComponentModel.Annotations.dll\",\n        \"ref/netstandard1.3/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/de/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/es/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/it/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/System.ComponentModel.Annotations.dll\",\n        \"ref/netstandard1.4/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/de/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/es/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/it/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml\",\n        \"ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml\",\n        \"ref/portable-net45+win8/_._\",\n        \"ref/win8/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ComponentModel.EventBasedAsync/4.0.11\": {\n      \"sha512\": \"Z7SO6vvQIR84daPE4uhaNdef9CjgjDMGYkas8epUhf0U3WGuaGgZ0Mm4QuNycMdbHUY8KEdZrtgxonkAiJaAlA==\",\n      \"type\": \"package\",\n      \"path\": \"System.ComponentModel.EventBasedAsync/4.0.11\",\n      \"files\": [\n        \"System.ComponentModel.EventBasedAsync.4.0.11.nupkg.sha512\",\n        \"System.ComponentModel.EventBasedAsync.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ComponentModel.EventBasedAsync.dll\",\n        \"lib/netstandard1.3/System.ComponentModel.EventBasedAsync.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ComponentModel.EventBasedAsync.dll\",\n        \"ref/netcore50/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/de/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/es/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/fr/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/it/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/ja/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/ko/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/ru/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/zh-hans/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netcore50/zh-hant/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/System.ComponentModel.EventBasedAsync.dll\",\n        \"ref/netstandard1.0/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/de/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/es/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/fr/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/it/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/ja/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/ko/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/ru/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/System.ComponentModel.EventBasedAsync.dll\",\n        \"ref/netstandard1.3/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/de/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/es/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/fr/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/it/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/ja/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/ko/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/ru/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ComponentModel.EventBasedAsync.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Data.Common/4.1.0\": {\n      \"sha512\": \"epU8jeTe7aE7RqGHq9rZ8b0Q4Ah7DgubzHQblgZMSqgW1saW868WmooSyC5ywf8upLBkcVLDu93W9GPWUYsU2Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Data.Common/4.1.0\",\n      \"files\": [\n        \"System.Data.Common.4.1.0.nupkg.sha512\",\n        \"System.Data.Common.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net451/System.Data.Common.dll\",\n        \"lib/netstandard1.2/System.Data.Common.dll\",\n        \"lib/portable-net451+win8+wp8+wpa81/System.Data.Common.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net451/System.Data.Common.dll\",\n        \"ref/netstandard1.2/System.Data.Common.dll\",\n        \"ref/netstandard1.2/System.Data.Common.xml\",\n        \"ref/netstandard1.2/de/System.Data.Common.xml\",\n        \"ref/netstandard1.2/es/System.Data.Common.xml\",\n        \"ref/netstandard1.2/fr/System.Data.Common.xml\",\n        \"ref/netstandard1.2/it/System.Data.Common.xml\",\n        \"ref/netstandard1.2/ja/System.Data.Common.xml\",\n        \"ref/netstandard1.2/ko/System.Data.Common.xml\",\n        \"ref/netstandard1.2/ru/System.Data.Common.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Data.Common.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/System.Data.Common.dll\",\n        \"ref/portable-net451+win8+wp8+wpa81/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/de/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/es/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/fr/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/it/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/ja/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/ko/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/ru/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/zh-hans/System.Data.Common.xml\",\n        \"ref/portable-net451+win8+wp8+wpa81/zh-hant/System.Data.Common.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Diagnostics.Contracts/4.0.1\": {\n      \"sha512\": \"HvQQjy712vnlpPxaloZYkuE78Gn353L0SJLJVeLcNASeg9c4qla2a1Xq8I7B3jZoDzKPtHTkyVO7AZ5tpeQGuA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.Contracts/4.0.1\",\n      \"files\": [\n        \"System.Diagnostics.Contracts.4.0.1.nupkg.sha512\",\n        \"System.Diagnostics.Contracts.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Diagnostics.Contracts.dll\",\n        \"lib/netstandard1.0/System.Diagnostics.Contracts.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Diagnostics.Contracts.dll\",\n        \"ref/netcore50/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/de/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/es/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/fr/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/it/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/ja/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/ko/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/ru/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/zh-hans/System.Diagnostics.Contracts.xml\",\n        \"ref/netcore50/zh-hant/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/System.Diagnostics.Contracts.dll\",\n        \"ref/netstandard1.0/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/de/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/es/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/fr/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/it/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/ja/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/ko/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/ru/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Diagnostics.Contracts.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Diagnostics.Contracts.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.Contracts.dll\"\n      ]\n    },\n    \"System.Diagnostics.Debug/4.0.11\": {\n      \"sha512\": \"GpBQnj8FwT7/hRA3CdFtbHQjYtek0KxMC2QiXHcem7CYL/ltd2cJDdIhJqrJeKh3mrFz6G1vsVOJ4DvJCN6jlg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.Debug/4.0.11\",\n      \"files\": [\n        \"System.Diagnostics.Debug.4.0.11.nupkg.sha512\",\n        \"System.Diagnostics.Debug.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Diagnostics.Debug.dll\",\n        \"ref/netcore50/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/de/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/es/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/fr/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/it/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/ja/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/ko/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/ru/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/zh-hans/System.Diagnostics.Debug.xml\",\n        \"ref/netcore50/zh-hant/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/System.Diagnostics.Debug.dll\",\n        \"ref/netstandard1.0/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/de/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/es/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/fr/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/it/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/ja/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/ko/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/ru/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/System.Diagnostics.Debug.dll\",\n        \"ref/netstandard1.3/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/de/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/es/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/fr/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/it/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/ja/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/ko/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/ru/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Diagnostics.Debug.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Diagnostics.Debug.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Diagnostics.DiagnosticSource/4.0.0\": {\n      \"sha512\": \"bYxnzTncblGHb5t1VQQkXMsyvq8tHhoQoVun+dN57cwUjx38MR1wBc05roqNFT3DOxu+6wVxTrabe3hNcuPiug==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.DiagnosticSource/4.0.0\",\n      \"files\": [\n        \"System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512\",\n        \"System.Diagnostics.DiagnosticSource.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net46/System.Diagnostics.DiagnosticSource.dll\",\n        \"lib/net46/System.Diagnostics.DiagnosticSource.xml\",\n        \"lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll\",\n        \"lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml\",\n        \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll\",\n        \"lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml\",\n        \"lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll\",\n        \"lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml\"\n      ]\n    },\n    \"System.Diagnostics.StackTrace/4.0.2\": {\n      \"sha512\": \"MmP424iVWLyeW7XGtwC5NyfzsIwodFKwhW6yns3d+Sh8WFsFoPWq2cUlJJDAteapIm2qoJ8fc3VwIUroolbsEA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.StackTrace/4.0.2\",\n      \"files\": [\n        \"System.Diagnostics.StackTrace.4.0.2.nupkg.sha512\",\n        \"System.Diagnostics.StackTrace.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Diagnostics.StackTrace.dll\",\n        \"lib/netstandard1.3/System.Diagnostics.StackTrace.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Diagnostics.StackTrace.dll\",\n        \"ref/netstandard1.3/System.Diagnostics.StackTrace.dll\",\n        \"ref/netstandard1.3/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/de/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/es/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/fr/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/it/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/ja/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/ko/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/ru/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Diagnostics.StackTrace.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Diagnostics.StackTrace.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Diagnostics.StackTrace.dll\"\n      ]\n    },\n    \"System.Diagnostics.Tools/4.0.1\": {\n      \"sha512\": \"a2pA+nZ+S5MEeu76APG4t1gti6o/R5UPinu5jIL9i9xquGHeGSsLMYSCz71BGwl+XKq+tsCK8u2je2jD6j3h4w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.Tools/4.0.1\",\n      \"files\": [\n        \"System.Diagnostics.Tools.4.0.1.nupkg.sha512\",\n        \"System.Diagnostics.Tools.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Diagnostics.Tools.dll\",\n        \"ref/netcore50/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/de/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/es/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/fr/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/it/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/ja/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/ko/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/ru/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/zh-hans/System.Diagnostics.Tools.xml\",\n        \"ref/netcore50/zh-hant/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/System.Diagnostics.Tools.dll\",\n        \"ref/netstandard1.0/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/de/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/es/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/fr/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/it/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/ja/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/ko/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/ru/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Diagnostics.Tracing/4.1.0\": {\n      \"sha512\": \"pkpgsxR3N6GZpoYzFJbBa+hVT79m4bv7kAFasDhhcYECtSMwYt4dynrzVnFjVn76E/dQvD4Nw6C+6AnhrhTkVA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Diagnostics.Tracing/4.1.0\",\n      \"files\": [\n        \"System.Diagnostics.Tracing.4.1.0.nupkg.sha512\",\n        \"System.Diagnostics.Tracing.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Diagnostics.Tracing.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Diagnostics.Tracing.dll\",\n        \"ref/netcore50/System.Diagnostics.Tracing.dll\",\n        \"ref/netcore50/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/System.Diagnostics.Tracing.dll\",\n        \"ref/netstandard1.1/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/System.Diagnostics.Tracing.dll\",\n        \"ref/netstandard1.2/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/System.Diagnostics.Tracing.dll\",\n        \"ref/netstandard1.3/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/System.Diagnostics.Tracing.dll\",\n        \"ref/netstandard1.5/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/de/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/es/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/it/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Dynamic.Runtime/4.0.11\": {\n      \"sha512\": \"t0Dvjd5Yy/pEzGsiv7kEQEUIcLocQw8uTVK15oEfg2/hPZnu3MZlYduJQPkKoEaWpS2g4vswT2tVMzZbOJQa3w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Dynamic.Runtime/4.0.11\",\n      \"files\": [\n        \"System.Dynamic.Runtime.4.0.11.nupkg.sha512\",\n        \"System.Dynamic.Runtime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Dynamic.Runtime.dll\",\n        \"lib/netstandard1.3/System.Dynamic.Runtime.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Dynamic.Runtime.dll\",\n        \"ref/netcore50/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/de/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/es/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/fr/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/it/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/ja/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/ko/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/ru/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/zh-hans/System.Dynamic.Runtime.xml\",\n        \"ref/netcore50/zh-hant/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/System.Dynamic.Runtime.dll\",\n        \"ref/netstandard1.0/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/de/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/es/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/fr/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/it/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/ja/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/ko/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/ru/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/System.Dynamic.Runtime.dll\",\n        \"ref/netstandard1.3/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/de/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/es/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/fr/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/it/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/ja/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/ko/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/ru/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Dynamic.Runtime.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Dynamic.Runtime.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Dynamic.Runtime.dll\"\n      ]\n    },\n    \"System.Globalization/4.0.11\": {\n      \"sha512\": \"8Jls/STjJ75LFQrLz+RijMjx/2H72QY1Mik7Db3mlh0GgDg8hgJoZemreit41VzxgSCnTxkSBeHi3wB+Phq5ew==\",\n      \"type\": \"package\",\n      \"path\": \"System.Globalization/4.0.11\",\n      \"files\": [\n        \"System.Globalization.4.0.11.nupkg.sha512\",\n        \"System.Globalization.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Globalization.dll\",\n        \"ref/netcore50/System.Globalization.xml\",\n        \"ref/netcore50/de/System.Globalization.xml\",\n        \"ref/netcore50/es/System.Globalization.xml\",\n        \"ref/netcore50/fr/System.Globalization.xml\",\n        \"ref/netcore50/it/System.Globalization.xml\",\n        \"ref/netcore50/ja/System.Globalization.xml\",\n        \"ref/netcore50/ko/System.Globalization.xml\",\n        \"ref/netcore50/ru/System.Globalization.xml\",\n        \"ref/netcore50/zh-hans/System.Globalization.xml\",\n        \"ref/netcore50/zh-hant/System.Globalization.xml\",\n        \"ref/netstandard1.0/System.Globalization.dll\",\n        \"ref/netstandard1.0/System.Globalization.xml\",\n        \"ref/netstandard1.0/de/System.Globalization.xml\",\n        \"ref/netstandard1.0/es/System.Globalization.xml\",\n        \"ref/netstandard1.0/fr/System.Globalization.xml\",\n        \"ref/netstandard1.0/it/System.Globalization.xml\",\n        \"ref/netstandard1.0/ja/System.Globalization.xml\",\n        \"ref/netstandard1.0/ko/System.Globalization.xml\",\n        \"ref/netstandard1.0/ru/System.Globalization.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Globalization.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Globalization.xml\",\n        \"ref/netstandard1.3/System.Globalization.dll\",\n        \"ref/netstandard1.3/System.Globalization.xml\",\n        \"ref/netstandard1.3/de/System.Globalization.xml\",\n        \"ref/netstandard1.3/es/System.Globalization.xml\",\n        \"ref/netstandard1.3/fr/System.Globalization.xml\",\n        \"ref/netstandard1.3/it/System.Globalization.xml\",\n        \"ref/netstandard1.3/ja/System.Globalization.xml\",\n        \"ref/netstandard1.3/ko/System.Globalization.xml\",\n        \"ref/netstandard1.3/ru/System.Globalization.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Globalization.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Globalization.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Globalization.Calendars/4.0.1\": {\n      \"sha512\": \"ZBAgCvQmmZeG68GyJMhNUURcrAmbiHW396yhlVlz+ygTsvuh3dWmDAk1wOypQJL8KkISAuJjgzqDdddFKLyUZg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Globalization.Calendars/4.0.1\",\n      \"files\": [\n        \"System.Globalization.Calendars.4.0.1.nupkg.sha512\",\n        \"System.Globalization.Calendars.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Globalization.Calendars.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Globalization.Calendars.dll\",\n        \"ref/netstandard1.3/System.Globalization.Calendars.dll\",\n        \"ref/netstandard1.3/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/de/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/es/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/fr/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/it/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/ja/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/ko/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/ru/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Globalization.Extensions/4.0.1\": {\n      \"sha512\": \"vILdo3P1BZT6EQuPiwIPFs12W6U0zOBflfZdlFy+W/JoInB8M7NpNCdv4vJ2PP/RbFIaPpla12iyVGfA/+3tcg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Globalization.Extensions/4.0.1\",\n      \"files\": [\n        \"System.Globalization.Extensions.4.0.1.nupkg.sha512\",\n        \"System.Globalization.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Globalization.Extensions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Globalization.Extensions.dll\",\n        \"ref/netstandard1.3/System.Globalization.Extensions.dll\",\n        \"ref/netstandard1.3/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/de/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/es/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/fr/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/it/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/ja/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/ko/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/ru/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Globalization.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Globalization.Extensions.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Globalization.Extensions.dll\",\n        \"runtimes/win/lib/net46/System.Globalization.Extensions.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Globalization.Extensions.dll\"\n      ]\n    },\n    \"System.IO/4.1.0\": {\n      \"sha512\": \"karXRXjiOZXIAa7ZJR9CgRL3o9XXSo8ZTyS26eiuJaruf7gWq/wLDrYRp6i1ZxK4OGArjnwulMv86pUxqQe5SA==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO/4.1.0\",\n      \"files\": [\n        \"System.IO.4.1.0.nupkg.sha512\",\n        \"System.IO.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.IO.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.IO.dll\",\n        \"ref/netcore50/System.IO.dll\",\n        \"ref/netcore50/System.IO.xml\",\n        \"ref/netcore50/de/System.IO.xml\",\n        \"ref/netcore50/es/System.IO.xml\",\n        \"ref/netcore50/fr/System.IO.xml\",\n        \"ref/netcore50/it/System.IO.xml\",\n        \"ref/netcore50/ja/System.IO.xml\",\n        \"ref/netcore50/ko/System.IO.xml\",\n        \"ref/netcore50/ru/System.IO.xml\",\n        \"ref/netcore50/zh-hans/System.IO.xml\",\n        \"ref/netcore50/zh-hant/System.IO.xml\",\n        \"ref/netstandard1.0/System.IO.dll\",\n        \"ref/netstandard1.0/System.IO.xml\",\n        \"ref/netstandard1.0/de/System.IO.xml\",\n        \"ref/netstandard1.0/es/System.IO.xml\",\n        \"ref/netstandard1.0/fr/System.IO.xml\",\n        \"ref/netstandard1.0/it/System.IO.xml\",\n        \"ref/netstandard1.0/ja/System.IO.xml\",\n        \"ref/netstandard1.0/ko/System.IO.xml\",\n        \"ref/netstandard1.0/ru/System.IO.xml\",\n        \"ref/netstandard1.0/zh-hans/System.IO.xml\",\n        \"ref/netstandard1.0/zh-hant/System.IO.xml\",\n        \"ref/netstandard1.3/System.IO.dll\",\n        \"ref/netstandard1.3/System.IO.xml\",\n        \"ref/netstandard1.3/de/System.IO.xml\",\n        \"ref/netstandard1.3/es/System.IO.xml\",\n        \"ref/netstandard1.3/fr/System.IO.xml\",\n        \"ref/netstandard1.3/it/System.IO.xml\",\n        \"ref/netstandard1.3/ja/System.IO.xml\",\n        \"ref/netstandard1.3/ko/System.IO.xml\",\n        \"ref/netstandard1.3/ru/System.IO.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.xml\",\n        \"ref/netstandard1.5/System.IO.dll\",\n        \"ref/netstandard1.5/System.IO.xml\",\n        \"ref/netstandard1.5/de/System.IO.xml\",\n        \"ref/netstandard1.5/es/System.IO.xml\",\n        \"ref/netstandard1.5/fr/System.IO.xml\",\n        \"ref/netstandard1.5/it/System.IO.xml\",\n        \"ref/netstandard1.5/ja/System.IO.xml\",\n        \"ref/netstandard1.5/ko/System.IO.xml\",\n        \"ref/netstandard1.5/ru/System.IO.xml\",\n        \"ref/netstandard1.5/zh-hans/System.IO.xml\",\n        \"ref/netstandard1.5/zh-hant/System.IO.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.Compression/4.1.1\": {\n      \"sha512\": \"ac/GG9DNsUr/grHGstCtWDoglgWr1OhL/yAZjXfpXtx52RmVVCpO52pShIDilQrD9dDZxw8zluiXEfezhPaYzg==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.Compression/4.1.1\",\n      \"files\": [\n        \"System.IO.Compression.4.1.1.nupkg.sha512\",\n        \"System.IO.Compression.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.IO.Compression.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.IO.Compression.dll\",\n        \"ref/netcore50/System.IO.Compression.dll\",\n        \"ref/netcore50/System.IO.Compression.xml\",\n        \"ref/netcore50/de/System.IO.Compression.xml\",\n        \"ref/netcore50/es/System.IO.Compression.xml\",\n        \"ref/netcore50/fr/System.IO.Compression.xml\",\n        \"ref/netcore50/it/System.IO.Compression.xml\",\n        \"ref/netcore50/ja/System.IO.Compression.xml\",\n        \"ref/netcore50/ko/System.IO.Compression.xml\",\n        \"ref/netcore50/ru/System.IO.Compression.xml\",\n        \"ref/netcore50/zh-hans/System.IO.Compression.xml\",\n        \"ref/netcore50/zh-hant/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/System.IO.Compression.dll\",\n        \"ref/netstandard1.1/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/de/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/es/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/fr/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/it/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/ja/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/ko/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/ru/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/zh-hans/System.IO.Compression.xml\",\n        \"ref/netstandard1.1/zh-hant/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/System.IO.Compression.dll\",\n        \"ref/netstandard1.3/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/de/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/es/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/fr/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/it/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/ja/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/ko/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/ru/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.Compression.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.Compression.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll\",\n        \"runtimes/win/lib/net46/System.IO.Compression.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.IO.Compression.dll\"\n      ]\n    },\n    \"System.IO.Compression.ZipFile/4.0.1\": {\n      \"sha512\": \"feyGeijUF0WwU0xIO+NrNdjsKpL37xiDe6vUsXvJpRnyPmLKWDhVAfZ1E3ms5BzXOIR2DPBAwJlNyYNpcHRRXg==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.Compression.ZipFile/4.0.1\",\n      \"files\": [\n        \"System.IO.Compression.ZipFile.4.0.1.nupkg.sha512\",\n        \"System.IO.Compression.ZipFile.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.Compression.ZipFile.dll\",\n        \"lib/netstandard1.3/System.IO.Compression.ZipFile.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.IO.Compression.ZipFile.dll\",\n        \"ref/netstandard1.3/System.IO.Compression.ZipFile.dll\",\n        \"ref/netstandard1.3/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.FileSystem/4.0.1\": {\n      \"sha512\": \"fPJ0jdEKZFK5D4hOewtshk9jIN32j06g1YzCapqoKlk4qEVAm4UHFm2Us0pvK3NTCub5EAS5Qz6Kh6yTbD9gPA==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.FileSystem/4.0.1\",\n      \"files\": [\n        \"System.IO.FileSystem.4.0.1.nupkg.sha512\",\n        \"System.IO.FileSystem.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.FileSystem.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.IO.FileSystem.dll\",\n        \"ref/netstandard1.3/System.IO.FileSystem.dll\",\n        \"ref/netstandard1.3/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/de/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/es/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/fr/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/it/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/ja/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/ko/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/ru/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.FileSystem.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.FileSystem.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.FileSystem.Primitives/4.0.1\": {\n      \"sha512\": \"HZnKMIk6T8kt1rqbhLpvSC4sIcBMx/kocwTHZpEOpxL7qdgQV/OglEkV7Zl8Ds++y387KOq15Nh4QQVtSXIkjQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.FileSystem.Primitives/4.0.1\",\n      \"files\": [\n        \"System.IO.FileSystem.Primitives.4.0.1.nupkg.sha512\",\n        \"System.IO.FileSystem.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.FileSystem.Primitives.dll\",\n        \"lib/netstandard1.3/System.IO.FileSystem.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.IO.FileSystem.Primitives.dll\",\n        \"ref/netstandard1.3/System.IO.FileSystem.Primitives.dll\",\n        \"ref/netstandard1.3/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/de/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/es/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/fr/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/it/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/ja/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/ko/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/ru/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.FileSystem.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.FileSystem.Primitives.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.IsolatedStorage/4.0.1\": {\n      \"sha512\": \"PuSuDi3FV84wh6RbF+Dvr0BvLJ6MCpvNIdVE3K0sSnOVKEV7mOQ0qnEvO1tWjxquMaugULTxJHHLaxkCHCz4IQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.IsolatedStorage/4.0.1\",\n      \"files\": [\n        \"System.IO.IsolatedStorage.4.0.1.nupkg.sha512\",\n        \"System.IO.IsolatedStorage.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/netcore50/System.IO.IsolatedStorage.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/netstandard1.4/System.IO.IsolatedStorage.dll\",\n        \"ref/netstandard1.4/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/de/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/es/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/fr/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/it/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/ja/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/ko/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/ru/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/zh-hans/System.IO.IsolatedStorage.xml\",\n        \"ref/netstandard1.4/zh-hant/System.IO.IsolatedStorage.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.IO.UnmanagedMemoryStream/4.0.1\": {\n      \"sha512\": \"3884Ps2yRz5RFkDtF2NVtAzYshbtKuMa1QUxgu3/5G74VMyvJ6xcDpiDAMKy+sFnDsomj+V2oMUwKrFGfCX10Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.IO.UnmanagedMemoryStream/4.0.1\",\n      \"files\": [\n        \"System.IO.UnmanagedMemoryStream.4.0.1.nupkg.sha512\",\n        \"System.IO.UnmanagedMemoryStream.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.IO.UnmanagedMemoryStream.dll\",\n        \"lib/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.IO.UnmanagedMemoryStream.dll\",\n        \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.dll\",\n        \"ref/netstandard1.3/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/de/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/es/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/fr/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/it/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/ja/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/ko/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/ru/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/zh-hans/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/netstandard1.3/zh-hant/System.IO.UnmanagedMemoryStream.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Linq/4.1.0\": {\n      \"sha512\": \"Vvarb8OTsZu8F9lsbyWPqW04HIQN04TjfP0K3NXh63GGf34Q6hQol4aupWbZkdunnVuj+sF9dF/OaZuxxPxJRg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Linq/4.1.0\",\n      \"files\": [\n        \"System.Linq.4.1.0.nupkg.sha512\",\n        \"System.Linq.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net463/System.Linq.dll\",\n        \"lib/netcore50/System.Linq.dll\",\n        \"lib/netstandard1.6/System.Linq.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net463/System.Linq.dll\",\n        \"ref/netcore50/System.Linq.dll\",\n        \"ref/netcore50/System.Linq.xml\",\n        \"ref/netcore50/de/System.Linq.xml\",\n        \"ref/netcore50/es/System.Linq.xml\",\n        \"ref/netcore50/fr/System.Linq.xml\",\n        \"ref/netcore50/it/System.Linq.xml\",\n        \"ref/netcore50/ja/System.Linq.xml\",\n        \"ref/netcore50/ko/System.Linq.xml\",\n        \"ref/netcore50/ru/System.Linq.xml\",\n        \"ref/netcore50/zh-hans/System.Linq.xml\",\n        \"ref/netcore50/zh-hant/System.Linq.xml\",\n        \"ref/netstandard1.0/System.Linq.dll\",\n        \"ref/netstandard1.0/System.Linq.xml\",\n        \"ref/netstandard1.0/de/System.Linq.xml\",\n        \"ref/netstandard1.0/es/System.Linq.xml\",\n        \"ref/netstandard1.0/fr/System.Linq.xml\",\n        \"ref/netstandard1.0/it/System.Linq.xml\",\n        \"ref/netstandard1.0/ja/System.Linq.xml\",\n        \"ref/netstandard1.0/ko/System.Linq.xml\",\n        \"ref/netstandard1.0/ru/System.Linq.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Linq.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Linq.xml\",\n        \"ref/netstandard1.6/System.Linq.dll\",\n        \"ref/netstandard1.6/System.Linq.xml\",\n        \"ref/netstandard1.6/de/System.Linq.xml\",\n        \"ref/netstandard1.6/es/System.Linq.xml\",\n        \"ref/netstandard1.6/fr/System.Linq.xml\",\n        \"ref/netstandard1.6/it/System.Linq.xml\",\n        \"ref/netstandard1.6/ja/System.Linq.xml\",\n        \"ref/netstandard1.6/ko/System.Linq.xml\",\n        \"ref/netstandard1.6/ru/System.Linq.xml\",\n        \"ref/netstandard1.6/zh-hans/System.Linq.xml\",\n        \"ref/netstandard1.6/zh-hant/System.Linq.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Linq.Expressions/4.1.0\": {\n      \"sha512\": \"zXYAAevGjqGwJBklQe2W7nidn+9EHvJPpKuLK089qHqF4z12r/sQncFPT63KGdDOFhWpibFtTa/RnNLFmvmMRA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Linq.Expressions/4.1.0\",\n      \"files\": [\n        \"System.Linq.Expressions.4.1.0.nupkg.sha512\",\n        \"System.Linq.Expressions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net463/System.Linq.Expressions.dll\",\n        \"lib/netcore50/System.Linq.Expressions.dll\",\n        \"lib/netstandard1.6/System.Linq.Expressions.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net463/System.Linq.Expressions.dll\",\n        \"ref/netcore50/System.Linq.Expressions.dll\",\n        \"ref/netcore50/System.Linq.Expressions.xml\",\n        \"ref/netcore50/de/System.Linq.Expressions.xml\",\n        \"ref/netcore50/es/System.Linq.Expressions.xml\",\n        \"ref/netcore50/fr/System.Linq.Expressions.xml\",\n        \"ref/netcore50/it/System.Linq.Expressions.xml\",\n        \"ref/netcore50/ja/System.Linq.Expressions.xml\",\n        \"ref/netcore50/ko/System.Linq.Expressions.xml\",\n        \"ref/netcore50/ru/System.Linq.Expressions.xml\",\n        \"ref/netcore50/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/netcore50/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/System.Linq.Expressions.dll\",\n        \"ref/netstandard1.0/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/de/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/es/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/fr/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/it/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/ja/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/ko/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/ru/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/System.Linq.Expressions.dll\",\n        \"ref/netstandard1.3/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/de/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/es/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/fr/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/it/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/ja/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/ko/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/ru/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/System.Linq.Expressions.dll\",\n        \"ref/netstandard1.6/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/de/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/es/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/fr/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/it/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/ja/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/ko/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/ru/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/zh-hans/System.Linq.Expressions.xml\",\n        \"ref/netstandard1.6/zh-hant/System.Linq.Expressions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Linq.Expressions.dll\"\n      ]\n    },\n    \"System.Linq.Parallel/4.0.1\": {\n      \"sha512\": \"rU0mLIfq46Q7M3CRPq6or8wdxJpWSSvoD6dMAsp4NJXPvEvXMxtwI9jcJ25TN5jrjx1h0bYdIjvqtWDz3/oi7w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Linq.Parallel/4.0.1\",\n      \"files\": [\n        \"System.Linq.Parallel.4.0.1.nupkg.sha512\",\n        \"System.Linq.Parallel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Linq.Parallel.dll\",\n        \"lib/netstandard1.3/System.Linq.Parallel.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Linq.Parallel.dll\",\n        \"ref/netcore50/System.Linq.Parallel.xml\",\n        \"ref/netcore50/de/System.Linq.Parallel.xml\",\n        \"ref/netcore50/es/System.Linq.Parallel.xml\",\n        \"ref/netcore50/fr/System.Linq.Parallel.xml\",\n        \"ref/netcore50/it/System.Linq.Parallel.xml\",\n        \"ref/netcore50/ja/System.Linq.Parallel.xml\",\n        \"ref/netcore50/ko/System.Linq.Parallel.xml\",\n        \"ref/netcore50/ru/System.Linq.Parallel.xml\",\n        \"ref/netcore50/zh-hans/System.Linq.Parallel.xml\",\n        \"ref/netcore50/zh-hant/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/System.Linq.Parallel.dll\",\n        \"ref/netstandard1.1/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/de/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/es/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/fr/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/it/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/ja/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/ko/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/ru/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Linq.Parallel.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Linq.Parallel.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Linq.Queryable/4.0.1\": {\n      \"sha512\": \"f/xa103VzDwMZzgHhs1zXlN/wIATqlDgXOfkOOHkmKy/aCB8ATR1QTGG4GWVuCjZ/BmitBVuDryUbrTRcPcHkw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Linq.Queryable/4.0.1\",\n      \"files\": [\n        \"System.Linq.Queryable.4.0.1.nupkg.sha512\",\n        \"System.Linq.Queryable.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/monoandroid10/_._\",\n        \"lib/monotouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Linq.Queryable.dll\",\n        \"lib/netstandard1.3/System.Linq.Queryable.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/monoandroid10/_._\",\n        \"ref/monotouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Linq.Queryable.dll\",\n        \"ref/netcore50/System.Linq.Queryable.xml\",\n        \"ref/netcore50/de/System.Linq.Queryable.xml\",\n        \"ref/netcore50/es/System.Linq.Queryable.xml\",\n        \"ref/netcore50/fr/System.Linq.Queryable.xml\",\n        \"ref/netcore50/it/System.Linq.Queryable.xml\",\n        \"ref/netcore50/ja/System.Linq.Queryable.xml\",\n        \"ref/netcore50/ko/System.Linq.Queryable.xml\",\n        \"ref/netcore50/ru/System.Linq.Queryable.xml\",\n        \"ref/netcore50/zh-hans/System.Linq.Queryable.xml\",\n        \"ref/netcore50/zh-hant/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/System.Linq.Queryable.dll\",\n        \"ref/netstandard1.0/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/de/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/es/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/fr/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/it/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/ja/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/ko/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/ru/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.Http/4.1.0\": {\n      \"sha512\": \"L64DHGDyGYQkprfGNcQoAZKUucEyfS+5SuYl/XlL4W37SNU9gwC2oYu5/zLymf3nDgPYL4xnyk2oyDIIF/MHOg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Http/4.1.0\",\n      \"files\": [\n        \"System.Net.Http.4.1.0.nupkg.sha512\",\n        \"System.Net.Http.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/Xamarinmac20/_._\",\n        \"lib/monoandroid10/_._\",\n        \"lib/monotouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.Net.Http.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/Xamarinmac20/_._\",\n        \"ref/monoandroid10/_._\",\n        \"ref/monotouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.Net.Http.dll\",\n        \"ref/net46/System.Net.Http.xml\",\n        \"ref/net46/de/System.Net.Http.xml\",\n        \"ref/net46/es/System.Net.Http.xml\",\n        \"ref/net46/fr/System.Net.Http.xml\",\n        \"ref/net46/it/System.Net.Http.xml\",\n        \"ref/net46/ja/System.Net.Http.xml\",\n        \"ref/net46/ko/System.Net.Http.xml\",\n        \"ref/net46/ru/System.Net.Http.xml\",\n        \"ref/net46/zh-hans/System.Net.Http.xml\",\n        \"ref/net46/zh-hant/System.Net.Http.xml\",\n        \"ref/netcore50/System.Net.Http.dll\",\n        \"ref/netcore50/System.Net.Http.xml\",\n        \"ref/netcore50/de/System.Net.Http.xml\",\n        \"ref/netcore50/es/System.Net.Http.xml\",\n        \"ref/netcore50/fr/System.Net.Http.xml\",\n        \"ref/netcore50/it/System.Net.Http.xml\",\n        \"ref/netcore50/ja/System.Net.Http.xml\",\n        \"ref/netcore50/ko/System.Net.Http.xml\",\n        \"ref/netcore50/ru/System.Net.Http.xml\",\n        \"ref/netcore50/zh-hans/System.Net.Http.xml\",\n        \"ref/netcore50/zh-hant/System.Net.Http.xml\",\n        \"ref/netstandard1.1/System.Net.Http.dll\",\n        \"ref/netstandard1.1/System.Net.Http.xml\",\n        \"ref/netstandard1.1/de/System.Net.Http.xml\",\n        \"ref/netstandard1.1/es/System.Net.Http.xml\",\n        \"ref/netstandard1.1/fr/System.Net.Http.xml\",\n        \"ref/netstandard1.1/it/System.Net.Http.xml\",\n        \"ref/netstandard1.1/ja/System.Net.Http.xml\",\n        \"ref/netstandard1.1/ko/System.Net.Http.xml\",\n        \"ref/netstandard1.1/ru/System.Net.Http.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Net.Http.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Net.Http.xml\",\n        \"ref/netstandard1.3/System.Net.Http.dll\",\n        \"ref/netstandard1.3/System.Net.Http.xml\",\n        \"ref/netstandard1.3/de/System.Net.Http.xml\",\n        \"ref/netstandard1.3/es/System.Net.Http.xml\",\n        \"ref/netstandard1.3/fr/System.Net.Http.xml\",\n        \"ref/netstandard1.3/it/System.Net.Http.xml\",\n        \"ref/netstandard1.3/ja/System.Net.Http.xml\",\n        \"ref/netstandard1.3/ko/System.Net.Http.xml\",\n        \"ref/netstandard1.3/ru/System.Net.Http.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.Http.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.Http.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.6/System.Net.Http.dll\",\n        \"runtimes/win/lib/net46/System.Net.Http.dll\",\n        \"runtimes/win/lib/netcore50/System.Net.Http.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.Http.dll\"\n      ]\n    },\n    \"System.Net.Http.Rtc/4.0.1\": {\n      \"sha512\": \"o2AlTAvlZOc0dRUpmr379G57VUjSQ+JO7X2vIduaV+zReroM7WVwvtg6q1tGBrT4aVFvqWPDavWuBgSMTwugyw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Http.Rtc/4.0.1\",\n      \"files\": [\n        \"System.Net.Http.Rtc.4.0.1.nupkg.sha512\",\n        \"System.Net.Http.Rtc.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/win8/_._\",\n        \"ref/netcore50/System.Net.Http.Rtc.dll\",\n        \"ref/netcore50/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/de/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/es/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/fr/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/it/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/ja/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/ko/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/ru/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/zh-hans/System.Net.Http.Rtc.xml\",\n        \"ref/netcore50/zh-hant/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/System.Net.Http.Rtc.dll\",\n        \"ref/netstandard1.1/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/de/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/es/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/fr/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/it/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/ja/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/ko/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/ru/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Net.Http.Rtc.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Net.Http.Rtc.xml\",\n        \"ref/win8/_._\",\n        \"runtimes/win/lib/netcore50/System.Net.Http.Rtc.dll\"\n      ]\n    },\n    \"System.Net.NameResolution/4.0.0\": {\n      \"sha512\": \"rfmciwKXK+hb+dhSiNIUhCS6se+414wzsAGe0ZljzZAEwcGHg4sY1aA0YUP8i549TAPXHHOFjFH805UYCj3+GQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.NameResolution/4.0.0\",\n      \"files\": [\n        \"System.Net.NameResolution.4.0.0.nupkg.sha512\",\n        \"System.Net.NameResolution.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.NameResolution.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Net.NameResolution.dll\",\n        \"ref/netstandard1.3/System.Net.NameResolution.dll\",\n        \"ref/netstandard1.3/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/de/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/es/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/fr/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/it/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/ja/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/ko/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/ru/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.NameResolution.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.NameResolution.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Net.NameResolution.dll\",\n        \"runtimes/win/lib/net46/System.Net.NameResolution.dll\",\n        \"runtimes/win/lib/netcore50/System.Net.NameResolution.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.NameResolution.dll\"\n      ]\n    },\n    \"System.Net.NetworkInformation/4.1.0\": {\n      \"sha512\": \"Q0rfeiW6QsiZuicGjrFA7cRr2+kXex0JIljTTxzI09GIftB8k+aNL31VsQD1sI2g31cw7UGDTgozA/FgeNSzsQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.NetworkInformation/4.1.0\",\n      \"files\": [\n        \"System.Net.NetworkInformation.4.1.0.nupkg.sha512\",\n        \"System.Net.NetworkInformation.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.Net.NetworkInformation.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.Net.NetworkInformation.dll\",\n        \"ref/netcore50/System.Net.NetworkInformation.dll\",\n        \"ref/netcore50/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/de/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/es/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/fr/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/it/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/ja/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/ko/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/ru/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/zh-hans/System.Net.NetworkInformation.xml\",\n        \"ref/netcore50/zh-hant/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/System.Net.NetworkInformation.dll\",\n        \"ref/netstandard1.0/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/de/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/es/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/fr/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/it/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/ja/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/ko/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/ru/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/System.Net.NetworkInformation.dll\",\n        \"ref/netstandard1.3/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/de/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/es/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/fr/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/it/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/ja/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/ko/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/ru/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.NetworkInformation.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.NetworkInformation.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/linux/lib/netstandard1.3/System.Net.NetworkInformation.dll\",\n        \"runtimes/osx/lib/netstandard1.3/System.Net.NetworkInformation.dll\",\n        \"runtimes/win/lib/net46/System.Net.NetworkInformation.dll\",\n        \"runtimes/win/lib/netcore50/System.Net.NetworkInformation.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.NetworkInformation.dll\"\n      ]\n    },\n    \"System.Net.Primitives/4.0.11\": {\n      \"sha512\": \"jsRO34LzQYAP3cOsi8wfq2recVB7MVa3KxXW8pRO3KT3nJ9YErSq7BcFvZUxpq0gUXoaqQS+D0McoPSkne9ODQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Primitives/4.0.11\",\n      \"files\": [\n        \"System.Net.Primitives.4.0.11.nupkg.sha512\",\n        \"System.Net.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Net.Primitives.dll\",\n        \"ref/netcore50/System.Net.Primitives.xml\",\n        \"ref/netcore50/de/System.Net.Primitives.xml\",\n        \"ref/netcore50/es/System.Net.Primitives.xml\",\n        \"ref/netcore50/fr/System.Net.Primitives.xml\",\n        \"ref/netcore50/it/System.Net.Primitives.xml\",\n        \"ref/netcore50/ja/System.Net.Primitives.xml\",\n        \"ref/netcore50/ko/System.Net.Primitives.xml\",\n        \"ref/netcore50/ru/System.Net.Primitives.xml\",\n        \"ref/netcore50/zh-hans/System.Net.Primitives.xml\",\n        \"ref/netcore50/zh-hant/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/System.Net.Primitives.dll\",\n        \"ref/netstandard1.0/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/de/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/es/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/fr/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/it/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/ja/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/ko/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/ru/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Net.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/System.Net.Primitives.dll\",\n        \"ref/netstandard1.1/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/de/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/es/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/fr/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/it/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/ja/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/ko/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/ru/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Net.Primitives.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/System.Net.Primitives.dll\",\n        \"ref/netstandard1.3/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/de/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/es/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/fr/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/it/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/ja/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/ko/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/ru/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.Primitives.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.Requests/4.0.11\": {\n      \"sha512\": \"d9cMsfzdDKOIpho6HSHOMtn3HNdTQALql+Oc4KV3EIiFd7h5iH2xsCQ5AVJIfvLMmg81RmalUfkFHCH4WHMWKw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Requests/4.0.11\",\n      \"files\": [\n        \"System.Net.Requests.4.0.11.nupkg.sha512\",\n        \"System.Net.Requests.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/_._\",\n        \"ref/netcore50/System.Net.Requests.dll\",\n        \"ref/netcore50/System.Net.Requests.xml\",\n        \"ref/netcore50/de/System.Net.Requests.xml\",\n        \"ref/netcore50/es/System.Net.Requests.xml\",\n        \"ref/netcore50/fr/System.Net.Requests.xml\",\n        \"ref/netcore50/it/System.Net.Requests.xml\",\n        \"ref/netcore50/ja/System.Net.Requests.xml\",\n        \"ref/netcore50/ko/System.Net.Requests.xml\",\n        \"ref/netcore50/ru/System.Net.Requests.xml\",\n        \"ref/netcore50/zh-hans/System.Net.Requests.xml\",\n        \"ref/netcore50/zh-hant/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/System.Net.Requests.dll\",\n        \"ref/netstandard1.0/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/de/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/es/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/fr/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/it/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/ja/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/ko/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/ru/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Net.Requests.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/System.Net.Requests.dll\",\n        \"ref/netstandard1.1/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/de/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/es/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/fr/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/it/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/ja/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/ko/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/ru/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Net.Requests.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/System.Net.Requests.dll\",\n        \"ref/netstandard1.3/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/de/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/es/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/fr/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/it/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/ja/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/ko/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/ru/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.Requests.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.Requests.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Net.Requests.dll\",\n        \"runtimes/win/lib/net46/_._\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.Requests.dll\"\n      ]\n    },\n    \"System.Net.Sockets/4.1.0\": {\n      \"sha512\": \"UyAPV214uSwvR3FmMILzc9OdWFy+ZGOGQJmCulgUkLVKvhdvWzIGqPK16PfZ1elvF0xLKTCA79ZDLlcZIlTsKg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.Sockets/4.1.0\",\n      \"files\": [\n        \"System.Net.Sockets.4.1.0.nupkg.sha512\",\n        \"System.Net.Sockets.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.Sockets.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Net.Sockets.dll\",\n        \"ref/netstandard1.3/System.Net.Sockets.dll\",\n        \"ref/netstandard1.3/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/de/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/es/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/fr/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/it/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/ja/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/ko/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/ru/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.Sockets.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.Sockets.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.WebHeaderCollection/4.0.1\": {\n      \"sha512\": \"LcbOpgkH52Rx+DpbuxhI9DYHHtP+/OzLT5NXdkrTmq4MUiaO+2fQocCiBB593+N9D2R79swiimHbxUeomQNH6A==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.WebHeaderCollection/4.0.1\",\n      \"files\": [\n        \"System.Net.WebHeaderCollection.4.0.1.nupkg.sha512\",\n        \"System.Net.WebHeaderCollection.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/netstandard1.3/System.Net.WebHeaderCollection.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/_._\",\n        \"ref/netstandard1.3/System.Net.WebHeaderCollection.dll\",\n        \"ref/netstandard1.3/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/de/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/es/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/fr/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/it/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/ja/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/ko/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/ru/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.WebHeaderCollection.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.WebHeaderCollection.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.WebSockets/4.0.0\": {\n      \"sha512\": \"2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.WebSockets/4.0.0\",\n      \"files\": [\n        \"System.Net.WebSockets.4.0.0.nupkg.sha512\",\n        \"System.Net.WebSockets.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.WebSockets.dll\",\n        \"lib/netstandard1.3/System.Net.WebSockets.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Net.WebSockets.dll\",\n        \"ref/netstandard1.3/System.Net.WebSockets.dll\",\n        \"ref/netstandard1.3/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/de/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/es/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/fr/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/it/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/ja/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/ko/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/ru/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.WebSockets.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.WebSockets.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Net.WebSockets.Client/4.0.0\": {\n      \"sha512\": \"GY5h9cn0ZVsG4ORQqMytTldrqxet2RC2CSEsgWGf4XNW5jhL5SxzcUZph03xbZsgn7K3qMr+Rq+gkbJNI+FEXg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Net.WebSockets.Client/4.0.0\",\n      \"files\": [\n        \"System.Net.WebSockets.Client.4.0.0.nupkg.sha512\",\n        \"System.Net.WebSockets.Client.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Net.WebSockets.Client.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Net.WebSockets.Client.dll\",\n        \"ref/netstandard1.3/System.Net.WebSockets.Client.dll\",\n        \"ref/netstandard1.3/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/de/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/es/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/fr/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/it/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/ja/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/ko/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/ru/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Net.WebSockets.Client.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Net.WebSockets.Client.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll\",\n        \"runtimes/win/lib/net46/System.Net.WebSockets.Client.dll\",\n        \"runtimes/win/lib/netcore50/System.Net.WebSockets.Client.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll\"\n      ]\n    },\n    \"System.Numerics.Vectors/4.1.1\": {\n      \"sha512\": \"VYujDrypAsX61KS3RRJwYf6SD+9b4Ct3FX6bGn0apvsrBiAIoMDcl6HN2zt1AkKePCybQ74+fIVIWn12C6N+TQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Numerics.Vectors/4.1.1\",\n      \"files\": [\n        \"System.Numerics.Vectors.4.1.1.nupkg.sha512\",\n        \"System.Numerics.Vectors.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Numerics.Vectors.dll\",\n        \"lib/net46/System.Numerics.Vectors.xml\",\n        \"lib/netstandard1.0/System.Numerics.Vectors.dll\",\n        \"lib/netstandard1.0/System.Numerics.Vectors.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Numerics.Vectors.xml\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Numerics.Vectors.dll\",\n        \"ref/net46/System.Numerics.Vectors.xml\",\n        \"ref/netstandard1.0/System.Numerics.Vectors.dll\",\n        \"ref/netstandard1.0/System.Numerics.Vectors.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Numerics.Vectors.WindowsRuntime/4.0.1\": {\n      \"sha512\": \"T4RJY6Z+0AuynCnMy8VMyP1g2mrB/OGubx5Og6d8ve6LkVLPrpiGtV5iMJeBv7lTDF1zhviILg+LecgKBjkWag==\",\n      \"type\": \"package\",\n      \"path\": \"System.Numerics.Vectors.WindowsRuntime/4.0.1\",\n      \"files\": [\n        \"System.Numerics.Vectors.WindowsRuntime.4.0.1.nupkg.sha512\",\n        \"System.Numerics.Vectors.WindowsRuntime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/uap10.0/System.Numerics.Vectors.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.ObjectModel/4.0.12\": {\n      \"sha512\": \"7jOMCnM279XuLEoLi/bXRG8AYM5HSZK/N/XgGuQ1K36S+0Vnk7UHMUSnUlLobQAq87SDDuBRqSvq4ejhSoxDPQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.ObjectModel/4.0.12\",\n      \"files\": [\n        \"System.ObjectModel.4.0.12.nupkg.sha512\",\n        \"System.ObjectModel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ObjectModel.dll\",\n        \"lib/netstandard1.3/System.ObjectModel.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ObjectModel.dll\",\n        \"ref/netcore50/System.ObjectModel.xml\",\n        \"ref/netcore50/de/System.ObjectModel.xml\",\n        \"ref/netcore50/es/System.ObjectModel.xml\",\n        \"ref/netcore50/fr/System.ObjectModel.xml\",\n        \"ref/netcore50/it/System.ObjectModel.xml\",\n        \"ref/netcore50/ja/System.ObjectModel.xml\",\n        \"ref/netcore50/ko/System.ObjectModel.xml\",\n        \"ref/netcore50/ru/System.ObjectModel.xml\",\n        \"ref/netcore50/zh-hans/System.ObjectModel.xml\",\n        \"ref/netcore50/zh-hant/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/System.ObjectModel.dll\",\n        \"ref/netstandard1.0/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/de/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/es/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/fr/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/it/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/ja/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/ko/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/ru/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ObjectModel.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/System.ObjectModel.dll\",\n        \"ref/netstandard1.3/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/de/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/es/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/fr/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/it/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/ja/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/ko/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/ru/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ObjectModel.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ObjectModel.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Private.DataContractSerialization/4.1.1\": {\n      \"sha512\": \"lcqFBUaCZxPiUkA4dlSOoPZGtZsAuuElH2XHgLwGLxd7ZozWetV5yiz0qGAV2AUYOqw97MtZBjbLMN16Xz4vXA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Private.DataContractSerialization/4.1.1\",\n      \"files\": [\n        \"System.Private.DataContractSerialization.4.1.1.nupkg.sha512\",\n        \"System.Private.DataContractSerialization.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.3/System.Private.DataContractSerialization.dll\",\n        \"ref/netstandard/_._\",\n        \"runtimes/aot/lib/netcore50/System.Private.DataContractSerialization.dll\"\n      ]\n    },\n    \"System.Private.ServiceModel/4.1.0\": {\n      \"sha512\": \"/QviVqIgta03ms7IDFALHCJOQCANZ1lILobf/OoLzdphHN40M3r6zqso2NsKvvSV7rJus+QLLWS/q33XGIybrQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Private.ServiceModel/4.1.0\",\n      \"files\": [\n        \"System.Private.ServiceModel.4.1.0.nupkg.sha512\",\n        \"System.Private.ServiceModel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Private.ServiceModel.dll\",\n        \"runtimes/win7/lib/netcore50/System.Private.ServiceModel.dll\",\n        \"runtimes/win7/lib/netstandard1.3/System.Private.ServiceModel.dll\"\n      ]\n    },\n    \"System.Private.Uri/4.0.1\": {\n      \"sha512\": \"OltceAn9yyNf9LZIqvf80DhdRH55iVu1fxowdR79018w1CWIRNojUZBStsiRHvADeKI5pXcM9EftOFikBQh5AA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Private.Uri/4.0.1\",\n      \"files\": [\n        \"System.Private.Uri.4.0.1.nupkg.sha512\",\n        \"System.Private.Uri.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"ref/netstandard/_._\"\n      ]\n    },\n    \"System.Reflection/4.1.0\": {\n      \"sha512\": \"IFXkYDIDLbPNUt7EApWyeEIx1HiAj63dDP74r5V/dgiEv9v97M/ttlmQzGCsyyCCUzM1ZZU9wYCGSYY0yHvU+Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection/4.1.0\",\n      \"files\": [\n        \"System.Reflection.4.1.0.nupkg.sha512\",\n        \"System.Reflection.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Reflection.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Reflection.dll\",\n        \"ref/netcore50/System.Reflection.dll\",\n        \"ref/netcore50/System.Reflection.xml\",\n        \"ref/netcore50/de/System.Reflection.xml\",\n        \"ref/netcore50/es/System.Reflection.xml\",\n        \"ref/netcore50/fr/System.Reflection.xml\",\n        \"ref/netcore50/it/System.Reflection.xml\",\n        \"ref/netcore50/ja/System.Reflection.xml\",\n        \"ref/netcore50/ko/System.Reflection.xml\",\n        \"ref/netcore50/ru/System.Reflection.xml\",\n        \"ref/netcore50/zh-hans/System.Reflection.xml\",\n        \"ref/netcore50/zh-hant/System.Reflection.xml\",\n        \"ref/netstandard1.0/System.Reflection.dll\",\n        \"ref/netstandard1.0/System.Reflection.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.xml\",\n        \"ref/netstandard1.3/System.Reflection.dll\",\n        \"ref/netstandard1.3/System.Reflection.xml\",\n        \"ref/netstandard1.3/de/System.Reflection.xml\",\n        \"ref/netstandard1.3/es/System.Reflection.xml\",\n        \"ref/netstandard1.3/fr/System.Reflection.xml\",\n        \"ref/netstandard1.3/it/System.Reflection.xml\",\n        \"ref/netstandard1.3/ja/System.Reflection.xml\",\n        \"ref/netstandard1.3/ko/System.Reflection.xml\",\n        \"ref/netstandard1.3/ru/System.Reflection.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Reflection.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Reflection.xml\",\n        \"ref/netstandard1.5/System.Reflection.dll\",\n        \"ref/netstandard1.5/System.Reflection.xml\",\n        \"ref/netstandard1.5/de/System.Reflection.xml\",\n        \"ref/netstandard1.5/es/System.Reflection.xml\",\n        \"ref/netstandard1.5/fr/System.Reflection.xml\",\n        \"ref/netstandard1.5/it/System.Reflection.xml\",\n        \"ref/netstandard1.5/ja/System.Reflection.xml\",\n        \"ref/netstandard1.5/ko/System.Reflection.xml\",\n        \"ref/netstandard1.5/ru/System.Reflection.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Reflection.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Reflection.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Reflection.Context/4.0.1\": {\n      \"sha512\": \"nU4qA/juVb7OCAqLdWAnxeyTjs5tbwQmtF6ep1gTVSa79aGF1J5orD88WHQmNhgVbgfhSGPnz4+d94o/iBXZ7g==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Context/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Context.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Context.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Context.dll\",\n        \"lib/netstandard1.1/System.Reflection.Context.dll\",\n        \"lib/portable-net45+win8/_._\",\n        \"lib/win8/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Context.dll\",\n        \"ref/netcore50/System.Reflection.Context.xml\",\n        \"ref/netcore50/de/System.Reflection.Context.xml\",\n        \"ref/netcore50/es/System.Reflection.Context.xml\",\n        \"ref/netcore50/fr/System.Reflection.Context.xml\",\n        \"ref/netcore50/it/System.Reflection.Context.xml\",\n        \"ref/netcore50/ja/System.Reflection.Context.xml\",\n        \"ref/netcore50/ko/System.Reflection.Context.xml\",\n        \"ref/netcore50/ru/System.Reflection.Context.xml\",\n        \"ref/netcore50/zh-hans/System.Reflection.Context.xml\",\n        \"ref/netcore50/zh-hant/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/System.Reflection.Context.dll\",\n        \"ref/netstandard1.1/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/de/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/es/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/fr/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/it/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/ja/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/ko/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/ru/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Reflection.Context.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Reflection.Context.xml\",\n        \"ref/portable-net45+win8/_._\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.Reflection.DispatchProxy/4.0.1\": {\n      \"sha512\": \"4efmEZM25p9AiTekmWSvwKLaEVKORi4SsL1Qa66jY9nIRBI00KRTI7mJdgKXCDjI0JmkncUakPBWfNzIo4eRkg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.DispatchProxy/4.0.1\",\n      \"files\": [\n        \"System.Reflection.DispatchProxy.4.0.1.nupkg.sha512\",\n        \"System.Reflection.DispatchProxy.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/netstandard1.3/System.Reflection.DispatchProxy.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/netstandard1.3/System.Reflection.DispatchProxy.dll\",\n        \"ref/netstandard1.3/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/de/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/es/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/fr/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/it/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/ja/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/ko/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/ru/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Reflection.DispatchProxy.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Reflection.DispatchProxy.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.DispatchProxy.dll\"\n      ]\n    },\n    \"System.Reflection.Emit/4.0.1\": {\n      \"sha512\": \"Op9FobZUg2561W/CL0TV89SLUAEzViA6QEojV26ZmW01B92GAM6AMc7uXlqMXL6ijvmzK3cB6hNQ0AT52v25wQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Emit/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Emit.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Emit.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.dll\",\n        \"lib/netstandard1.3/System.Reflection.Emit.dll\",\n        \"lib/xamarinmac20/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netstandard1.1/System.Reflection.Emit.dll\",\n        \"ref/netstandard1.1/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/de/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/es/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/fr/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/it/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/ja/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/ko/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/ru/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Reflection.Emit.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Reflection.Emit.xml\",\n        \"ref/xamarinmac20/_._\"\n      ]\n    },\n    \"System.Reflection.Emit.ILGeneration/4.0.1\": {\n      \"sha512\": \"yxiJWtM/c5r4aY7HZuWcO9IUPW/bN5QrxqUf4x62Xwtm6bj2p2HX+hcqcF/TATqmKJidlwaH6V7RbAqq/z+ACA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Emit.ILGeneration/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Emit.ILGeneration.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Emit.ILGeneration.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.ILGeneration.dll\",\n        \"lib/netstandard1.3/System.Reflection.Emit.ILGeneration.dll\",\n        \"lib/portable-net45+wp8/_._\",\n        \"lib/wp80/_._\",\n        \"ref/net45/_._\",\n        \"ref/netstandard1.0/System.Reflection.Emit.ILGeneration.dll\",\n        \"ref/netstandard1.0/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.Emit.ILGeneration.xml\",\n        \"ref/portable-net45+wp8/_._\",\n        \"ref/wp80/_._\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"System.Reflection.Emit.Lightweight/4.0.1\": {\n      \"sha512\": \"H/nqtd+zhmqKGyjgCgm4xC9XjnJtsN78JuIG1lWFcXWBe+nuo8d2gmHTgNIyV6KpUkjJ55QeQ3sFbUga49bBiQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Emit.Lightweight/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Emit.Lightweight.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Emit.Lightweight.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Reflection.Emit.Lightweight.dll\",\n        \"lib/netstandard1.3/System.Reflection.Emit.Lightweight.dll\",\n        \"lib/portable-net45+wp8/_._\",\n        \"lib/wp80/_._\",\n        \"ref/net45/_._\",\n        \"ref/netstandard1.0/System.Reflection.Emit.Lightweight.dll\",\n        \"ref/netstandard1.0/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.Emit.Lightweight.xml\",\n        \"ref/portable-net45+wp8/_._\",\n        \"ref/wp80/_._\",\n        \"runtimes/aot/lib/netcore50/_._\"\n      ]\n    },\n    \"System.Reflection.Extensions/4.0.1\": {\n      \"sha512\": \"aC0iBvp77nThKAy9RAnZoLquWovp5D0H8DK7Mjb2ON6pPaNrS6/Po+qfAdaM0q9bjLpmt1W7JQ6QlLVpWQszZg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Extensions/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Extensions.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Extensions.dll\",\n        \"ref/netcore50/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/de/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/es/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/fr/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/it/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/ja/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/ko/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/ru/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/zh-hans/System.Reflection.Extensions.xml\",\n        \"ref/netcore50/zh-hant/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/System.Reflection.Extensions.dll\",\n        \"ref/netstandard1.0/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.Extensions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Reflection.Metadata/1.3.0\": {\n      \"sha512\": \"sruaBTiGAHKrEbHRC/lkeXcjuZ1eu2hndmmhkUidqAZsG28dewEu7sq/k4dKd+v0m3Zctkm4onEHqc85InlMwQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Metadata/1.3.0\",\n      \"files\": [\n        \"System.Reflection.Metadata.1.3.0.nupkg.sha512\",\n        \"System.Reflection.Metadata.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.1/System.Reflection.Metadata.dll\",\n        \"lib/netstandard1.1/System.Reflection.Metadata.xml\",\n        \"lib/portable-net45+win8/System.Reflection.Metadata.dll\",\n        \"lib/portable-net45+win8/System.Reflection.Metadata.xml\"\n      ]\n    },\n    \"System.Reflection.Primitives/4.0.1\": {\n      \"sha512\": \"tUcC/Kjs4ZvV2G5tKTNuKHPryTXR3eAyzDXPvhaHDeb2ZZS/XFMrdWG6KY/3oWwEhMrm85WO2Q4cQq0ukR3jYg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.Primitives/4.0.1\",\n      \"files\": [\n        \"System.Reflection.Primitives.4.0.1.nupkg.sha512\",\n        \"System.Reflection.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Reflection.Primitives.dll\",\n        \"ref/netcore50/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/de/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/es/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/fr/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/it/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/ja/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/ko/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/ru/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/zh-hans/System.Reflection.Primitives.xml\",\n        \"ref/netcore50/zh-hant/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/System.Reflection.Primitives.dll\",\n        \"ref/netstandard1.0/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/de/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/es/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/fr/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/it/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/ja/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/ko/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/ru/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Reflection.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Reflection.Primitives.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Reflection.TypeExtensions/4.1.0\": {\n      \"sha512\": \"j2APlYMPkQCnJf9LK7ytYWzTxlOui9VQCnJY/TGobElEdvszhklyRbXonzf9iZgFq9douHCDSWB1IxZbfIbfPg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Reflection.TypeExtensions/4.1.0\",\n      \"files\": [\n        \"System.Reflection.TypeExtensions.4.1.0.nupkg.sha512\",\n        \"System.Reflection.TypeExtensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Reflection.TypeExtensions.dll\",\n        \"lib/net462/System.Reflection.TypeExtensions.dll\",\n        \"lib/netcore50/System.Reflection.TypeExtensions.dll\",\n        \"lib/netstandard1.5/System.Reflection.TypeExtensions.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Reflection.TypeExtensions.dll\",\n        \"ref/net462/System.Reflection.TypeExtensions.dll\",\n        \"ref/netstandard1.3/System.Reflection.TypeExtensions.dll\",\n        \"ref/netstandard1.3/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/de/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/es/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/fr/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/it/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/ja/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/ko/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/ru/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/System.Reflection.TypeExtensions.dll\",\n        \"ref/netstandard1.5/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/de/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/es/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/fr/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/it/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/ja/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/ko/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/ru/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Reflection.TypeExtensions.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Reflection.TypeExtensions.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Reflection.TypeExtensions.dll\"\n      ]\n    },\n    \"System.Resources.ResourceManager/4.0.1\": {\n      \"sha512\": \"0CcQOn4WItnjon4GNnbCEKtn6+9Pw3J8FfQN1qAY/B/wC/ym/AO/JY0cQv7plDPDziP8aAlu5gWbC9cfRYRDtg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Resources.ResourceManager/4.0.1\",\n      \"files\": [\n        \"System.Resources.ResourceManager.4.0.1.nupkg.sha512\",\n        \"System.Resources.ResourceManager.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Resources.ResourceManager.dll\",\n        \"ref/netcore50/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/de/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/es/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/fr/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/it/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/ja/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/ko/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/ru/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/zh-hans/System.Resources.ResourceManager.xml\",\n        \"ref/netcore50/zh-hant/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/System.Resources.ResourceManager.dll\",\n        \"ref/netstandard1.0/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/de/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/es/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/fr/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/it/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/ja/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/ko/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/ru/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Resources.ResourceManager.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Resources.ResourceManager.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime/4.1.0\": {\n      \"sha512\": \"dNUxQcyAFhic0cnxJtcYgYmcqgp7PUXDZK5uvqUxW6CLEBwBt4/i4/tRYBBLw5WXoUoGtBrLQ2SjbDy1xQGB5Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime/4.1.0\",\n      \"files\": [\n        \"System.Runtime.4.1.0.nupkg.sha512\",\n        \"System.Runtime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Runtime.dll\",\n        \"lib/portable-net45+win8+wp80+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Runtime.dll\",\n        \"ref/netcore50/System.Runtime.dll\",\n        \"ref/netcore50/System.Runtime.xml\",\n        \"ref/netcore50/de/System.Runtime.xml\",\n        \"ref/netcore50/es/System.Runtime.xml\",\n        \"ref/netcore50/fr/System.Runtime.xml\",\n        \"ref/netcore50/it/System.Runtime.xml\",\n        \"ref/netcore50/ja/System.Runtime.xml\",\n        \"ref/netcore50/ko/System.Runtime.xml\",\n        \"ref/netcore50/ru/System.Runtime.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.xml\",\n        \"ref/netstandard1.0/System.Runtime.dll\",\n        \"ref/netstandard1.0/System.Runtime.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.xml\",\n        \"ref/netstandard1.2/System.Runtime.dll\",\n        \"ref/netstandard1.2/System.Runtime.xml\",\n        \"ref/netstandard1.2/de/System.Runtime.xml\",\n        \"ref/netstandard1.2/es/System.Runtime.xml\",\n        \"ref/netstandard1.2/fr/System.Runtime.xml\",\n        \"ref/netstandard1.2/it/System.Runtime.xml\",\n        \"ref/netstandard1.2/ja/System.Runtime.xml\",\n        \"ref/netstandard1.2/ko/System.Runtime.xml\",\n        \"ref/netstandard1.2/ru/System.Runtime.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Runtime.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Runtime.xml\",\n        \"ref/netstandard1.3/System.Runtime.dll\",\n        \"ref/netstandard1.3/System.Runtime.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.xml\",\n        \"ref/netstandard1.5/System.Runtime.dll\",\n        \"ref/netstandard1.5/System.Runtime.xml\",\n        \"ref/netstandard1.5/de/System.Runtime.xml\",\n        \"ref/netstandard1.5/es/System.Runtime.xml\",\n        \"ref/netstandard1.5/fr/System.Runtime.xml\",\n        \"ref/netstandard1.5/it/System.Runtime.xml\",\n        \"ref/netstandard1.5/ja/System.Runtime.xml\",\n        \"ref/netstandard1.5/ko/System.Runtime.xml\",\n        \"ref/netstandard1.5/ru/System.Runtime.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Runtime.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Runtime.xml\",\n        \"ref/portable-net45+win8+wp80+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.Extensions/4.1.0\": {\n      \"sha512\": \"b2d+O5cdaAMydGoSm4pUuDyuhnBjyAYo5chDM6ROJ33Ow5SZEL4CdISfRCGs+AwdmaFUjflKtMsWsuID7XDYXw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Extensions/4.1.0\",\n      \"files\": [\n        \"System.Runtime.Extensions.4.1.0.nupkg.sha512\",\n        \"System.Runtime.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Runtime.Extensions.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Runtime.Extensions.dll\",\n        \"ref/netcore50/System.Runtime.Extensions.dll\",\n        \"ref/netcore50/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/de/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/es/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/fr/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/it/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/ja/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/ko/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/ru/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/System.Runtime.Extensions.dll\",\n        \"ref/netstandard1.0/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/System.Runtime.Extensions.dll\",\n        \"ref/netstandard1.3/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/System.Runtime.Extensions.dll\",\n        \"ref/netstandard1.5/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/de/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/es/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/fr/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/it/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/ja/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/ko/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/ru/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Runtime.Extensions.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Runtime.Extensions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.Handles/4.0.1\": {\n      \"sha512\": \"39CAK1kWvFuZV+OvwMZrYiErBzhtOBWgv9ZWTOPn5a2ECMSpR0KVAA5rdlUDra66tNm1GuLDl4KOCWl91MJ5Pw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Handles/4.0.1\",\n      \"files\": [\n        \"System.Runtime.Handles.4.0.1.nupkg.sha512\",\n        \"System.Runtime.Handles.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/_._\",\n        \"ref/netstandard1.3/System.Runtime.Handles.dll\",\n        \"ref/netstandard1.3/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.Handles.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.Handles.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.InteropServices/4.1.0\": {\n      \"sha512\": \"KmIIw0sflkqgGdp6tzb9BfNm9HFD3Ibw95MJyscumVK169nmKQaoJZA9p7gTJosuJcqNVYd/t2tbytTv6LCg0w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.InteropServices/4.1.0\",\n      \"files\": [\n        \"System.Runtime.InteropServices.4.1.0.nupkg.sha512\",\n        \"System.Runtime.InteropServices.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net462/System.Runtime.InteropServices.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net462/System.Runtime.InteropServices.dll\",\n        \"ref/netcore50/System.Runtime.InteropServices.dll\",\n        \"ref/netcore50/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/de/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/es/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/it/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/System.Runtime.InteropServices.dll\",\n        \"ref/netstandard1.1/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/de/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/es/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/it/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/System.Runtime.InteropServices.dll\",\n        \"ref/netstandard1.2/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/de/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/es/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/it/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/System.Runtime.InteropServices.dll\",\n        \"ref/netstandard1.3/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/System.Runtime.InteropServices.dll\",\n        \"ref/netstandard1.5/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/de/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/es/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/fr/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/it/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/ja/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/ko/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/ru/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/zh-hans/System.Runtime.InteropServices.xml\",\n        \"ref/netstandard1.5/zh-hant/System.Runtime.InteropServices.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\": {\n      \"sha512\": \"oIIXM4w2y3MiEZEXA+RTtfPV+SZ1ymbFdWppHlUciNdNIL0/Uo3HW9q9iN2O7T7KUmRdvjA7C2Gv4exAyW4zEQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.InteropServices.WindowsRuntime/4.0.1\",\n      \"files\": [\n        \"System.Runtime.InteropServices.WindowsRuntime.4.0.1.nupkg.sha512\",\n        \"System.Runtime.InteropServices.WindowsRuntime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"lib/netstandard1.3/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios1/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"ref/netcore50/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/de/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/es/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/fr/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/it/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/ja/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/ko/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/ru/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.dll\",\n        \"ref/netstandard1.0/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.InteropServices.WindowsRuntime.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.InteropServices.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.Runtime.Numerics/4.0.1\": {\n      \"sha512\": \"GXLieN7/+UYytbbjD8JXSAbAs8+b0Xw3gdJiqwRxdM8ObAPh6fKMVNKwV77CqY0xDPRvR3/Xq8q50EAkn5OQiA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Numerics/4.0.1\",\n      \"files\": [\n        \"System.Runtime.Numerics.4.0.1.nupkg.sha512\",\n        \"System.Runtime.Numerics.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.Numerics.dll\",\n        \"lib/netstandard1.3/System.Runtime.Numerics.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.Numerics.dll\",\n        \"ref/netcore50/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/de/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/es/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/fr/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/it/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/ja/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/ko/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/ru/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Numerics.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/System.Runtime.Numerics.dll\",\n        \"ref/netstandard1.1/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/de/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/es/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/fr/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/it/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/ja/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/ko/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/ru/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.Serialization.Json/4.0.2\": {\n      \"sha512\": \"+7DIJhnKYgCzUgcLbVTtRQb2l1M0FP549XFlFkQM5lmNiUBl44AfNbx4bz61xA8PzLtlYwfmif4JJJW7MPPnjg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Serialization.Json/4.0.2\",\n      \"files\": [\n        \"System.Runtime.Serialization.Json.4.0.2.nupkg.sha512\",\n        \"System.Runtime.Serialization.Json.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Runtime.Serialization.Json.dll\",\n        \"lib/netstandard1.3/System.Runtime.Serialization.Json.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Runtime.Serialization.Json.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/de/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/es/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/fr/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/it/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/ja/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/ko/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/ru/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Serialization.Json.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Json.dll\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Json.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Json.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.Serialization.Primitives/4.1.1\": {\n      \"sha512\": \"HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Serialization.Primitives/4.1.1\",\n      \"files\": [\n        \"System.Runtime.Serialization.Primitives.4.1.1.nupkg.sha512\",\n        \"System.Runtime.Serialization.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.Runtime.Serialization.Primitives.dll\",\n        \"lib/netcore50/System.Runtime.Serialization.Primitives.dll\",\n        \"lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/de/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/es/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/fr/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/it/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/ja/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/ko/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/ru/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/System.Runtime.Serialization.Primitives.dll\",\n        \"ref/netstandard1.3/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Primitives.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Runtime.Serialization.Primitives.dll\"\n      ]\n    },\n    \"System.Runtime.Serialization.Xml/4.1.1\": {\n      \"sha512\": \"yqfKHkWUAdI0hdDIdD9KDzluKtZ8IIqLF3O7xIZlt6UTs1bOvFRpCvRTvGQva3Ak/ZM9/nq9IHBJ1tC4Ybcrjg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.Serialization.Xml/4.1.1\",\n      \"files\": [\n        \"System.Runtime.Serialization.Xml.4.1.1.nupkg.sha512\",\n        \"System.Runtime.Serialization.Xml.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.Runtime.Serialization.Xml.dll\",\n        \"lib/netcore50/System.Runtime.Serialization.Xml.dll\",\n        \"lib/netstandard1.3/System.Runtime.Serialization.Xml.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.Runtime.Serialization.Xml.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Xml.dll\",\n        \"ref/netcore50/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/de/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/es/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/fr/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/it/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/ja/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/ko/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/ru/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Xml.dll\",\n        \"ref/netstandard1.0/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/System.Runtime.Serialization.Xml.dll\",\n        \"ref/netstandard1.3/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/de/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/es/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/fr/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/it/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/ja/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/ko/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/ru/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Runtime.Serialization.Xml.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Runtime.Serialization.Xml.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Runtime.WindowsRuntime/4.0.11\": {\n      \"sha512\": \"C7rjmukRI0zE1Upl9hhmO4ZxasFYUTadXtgikLTgWwmIwa1jAD7yhOHKX3odajlRnSt34Ih+5VZliaqfFvQOcg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.WindowsRuntime/4.0.11\",\n      \"files\": [\n        \"System.Runtime.WindowsRuntime.4.0.11.nupkg.sha512\",\n        \"System.Runtime.WindowsRuntime.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/portable-win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.dll\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/de/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/es/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/fr/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/it/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/ja/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/ko/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/ru/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/System.Runtime.WindowsRuntime.dll\",\n        \"ref/netstandard1.0/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/de/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/es/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/fr/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/it/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ja/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ko/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/ru/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/System.Runtime.WindowsRuntime.dll\",\n        \"ref/netstandard1.2/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/de/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/es/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/fr/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/it/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/ja/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/ko/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/ru/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Runtime.WindowsRuntime.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Runtime.WindowsRuntime.xml\",\n        \"ref/portable-win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8-aot/lib/netcore50/System.Runtime.WindowsRuntime.dll\",\n        \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.dll\"\n      ]\n    },\n    \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\": {\n      \"sha512\": \"ZG2uW8JYmFs1sGlhhAoW/F5WmZotkeSxzMils72qGEsJI6+JcQUa6oleSujULC4nk13F5Us9zvlvD2WfB+9Thw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Runtime.WindowsRuntime.UI.Xaml/4.0.1\",\n      \"files\": [\n        \"System.Runtime.WindowsRuntime.UI.Xaml.4.0.1.nupkg.sha512\",\n        \"System.Runtime.WindowsRuntime.UI.Xaml.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/portable-win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.dll\",\n        \"ref/netcore50/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/de/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/es/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/fr/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/it/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/ja/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/ko/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/ru/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/zh-hans/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netcore50/zh-hant/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/System.Runtime.WindowsRuntime.UI.Xaml.dll\",\n        \"ref/netstandard1.1/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/de/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/es/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/fr/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/it/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/ja/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/ko/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/ru/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Runtime.WindowsRuntime.UI.Xaml.xml\",\n        \"ref/portable-win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"runtimes/win8/lib/netstandard1.3/System.Runtime.WindowsRuntime.UI.Xaml.dll\"\n      ]\n    },\n    \"System.Security.Claims/4.0.1\": {\n      \"sha512\": \"Uc9b5DyxfFkTin13rqSr/LtrRxY0B3T/izmzDfPIXn/ak7P3VjBxb7KNVz8XWqYXF3ZDAE0rOF1CFFOfIs54iw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Claims/4.0.1\",\n      \"files\": [\n        \"System.Security.Claims.4.0.1.nupkg.sha512\",\n        \"System.Security.Claims.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Claims.dll\",\n        \"lib/netstandard1.3/System.Security.Claims.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Claims.dll\",\n        \"ref/netstandard1.3/System.Security.Claims.dll\",\n        \"ref/netstandard1.3/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/de/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/es/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/fr/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/it/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/ja/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/ko/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/ru/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Security.Claims.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Security.Claims.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Security.Cryptography.Algorithms/4.2.0\": {\n      \"sha512\": \"zWFPaCthkO5Vfl4L3S4Ooxt6q06lq/0bkNHQF7xlZgbBpBfYGGaH0R3rMt74HaaiuWmcF5A5CK3/rR4pMKIZTg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.Algorithms/4.2.0\",\n      \"files\": [\n        \"System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512\",\n        \"System.Security.Cryptography.Algorithms.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Cryptography.Algorithms.dll\",\n        \"lib/net461/System.Security.Cryptography.Algorithms.dll\",\n        \"lib/net463/System.Security.Cryptography.Algorithms.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/net461/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/net463/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll\",\n        \"runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll\"\n      ]\n    },\n    \"System.Security.Cryptography.Cng/4.2.0\": {\n      \"sha512\": \"hkFtNHKFnykH8MQQUJfI8LMO/V91+XBjwcshX1nNoX+zKB/rvL88sl9oxxLRxAnEc5oL5r4vMyr/d7N2Xdlhow==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.Cng/4.2.0\",\n      \"files\": [\n        \"System.Security.Cryptography.Cng.4.2.0.nupkg.sha512\",\n        \"System.Security.Cryptography.Cng.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net46/System.Security.Cryptography.Cng.dll\",\n        \"lib/net461/System.Security.Cryptography.Cng.dll\",\n        \"lib/net463/System.Security.Cryptography.Cng.dll\",\n        \"ref/net46/System.Security.Cryptography.Cng.dll\",\n        \"ref/net461/System.Security.Cryptography.Cng.dll\",\n        \"ref/net463/System.Security.Cryptography.Cng.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Cng.dll\",\n        \"ref/netstandard1.4/System.Security.Cryptography.Cng.dll\",\n        \"ref/netstandard1.6/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll\",\n        \"runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll\"\n      ]\n    },\n    \"System.Security.Cryptography.Encoding/4.0.0\": {\n      \"sha512\": \"+61WQgp8D8VRHr8h2oFa4dRBxHg0CGOcFhBi1J+qHMDx5hiHFFe2iaAVXyt9w9zSGJpeUWRB10u97Z3mZHDqMA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.Encoding/4.0.0\",\n      \"files\": [\n        \"System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512\",\n        \"System.Security.Cryptography.Encoding.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Cryptography.Encoding.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Cryptography.Encoding.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Encoding.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\",\n        \"runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll\"\n      ]\n    },\n    \"System.Security.Cryptography.Primitives/4.0.0\": {\n      \"sha512\": \"oqBa62dVFbIpEMw39/yjjzW1vKPaRwxhAq96BUhiP96vr8gyP/pCTOv25kGQAWwRKfhZic7p9zoIUFc1nNOMVg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.Primitives/4.0.0\",\n      \"files\": [\n        \"System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512\",\n        \"System.Security.Cryptography.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Cryptography.Primitives.dll\",\n        \"lib/netstandard1.3/System.Security.Cryptography.Primitives.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Cryptography.Primitives.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.Primitives.dll\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Security.Cryptography.X509Certificates/4.1.0\": {\n      \"sha512\": \"YOURSTUb2RNriiXC5nbOIT1n11CDHbX202CcFCRRr0Xs+crmpSNTCbzO9HJzBpEBE/Am+ogtQovPJpg5mksEAw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Cryptography.X509Certificates/4.1.0\",\n      \"files\": [\n        \"System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512\",\n        \"System.Security.Cryptography.X509Certificates.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Security.Cryptography.X509Certificates.dll\",\n        \"lib/net461/System.Security.Cryptography.X509Certificates.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Security.Cryptography.X509Certificates.dll\",\n        \"ref/net461/System.Security.Cryptography.X509Certificates.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll\",\n        \"ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll\",\n        \"ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll\",\n        \"runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll\",\n        \"runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll\",\n        \"runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll\",\n        \"runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll\"\n      ]\n    },\n    \"System.Security.Principal/4.0.1\": {\n      \"sha512\": \"tYeNk0R4Ulo5ZfZCXU3d98T/qYh0/ZfA2QbX2EX/LsQU9zYq5STaAZ9fyQMzYvb9Ug/5TFW5XbjrKxQPeqObGg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Security.Principal/4.0.1\",\n      \"files\": [\n        \"System.Security.Principal.4.0.1.nupkg.sha512\",\n        \"System.Security.Principal.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Security.Principal.dll\",\n        \"lib/netstandard1.0/System.Security.Principal.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Security.Principal.dll\",\n        \"ref/netcore50/System.Security.Principal.xml\",\n        \"ref/netcore50/de/System.Security.Principal.xml\",\n        \"ref/netcore50/es/System.Security.Principal.xml\",\n        \"ref/netcore50/fr/System.Security.Principal.xml\",\n        \"ref/netcore50/it/System.Security.Principal.xml\",\n        \"ref/netcore50/ja/System.Security.Principal.xml\",\n        \"ref/netcore50/ko/System.Security.Principal.xml\",\n        \"ref/netcore50/ru/System.Security.Principal.xml\",\n        \"ref/netcore50/zh-hans/System.Security.Principal.xml\",\n        \"ref/netcore50/zh-hant/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/System.Security.Principal.dll\",\n        \"ref/netstandard1.0/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/de/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/es/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/fr/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/it/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/ja/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/ko/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/ru/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Security.Principal.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Security.Principal.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ServiceModel.Duplex/4.0.1\": {\n      \"sha512\": \"4I6WSQP4BiT3yG5NetAyAb626e2HlsgSzkiiqGtf4LxGpO3uFQ4eGSXsgVRnxJoDYcnDCH7q215eH/jZBMmx+w==\",\n      \"type\": \"package\",\n      \"path\": \"System.ServiceModel.Duplex/4.0.1\",\n      \"files\": [\n        \"System.ServiceModel.Duplex.4.0.1.nupkg.sha512\",\n        \"System.ServiceModel.Duplex.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ServiceModel.Duplex.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.Duplex.dll\",\n        \"lib/portable-net45+win8/_._\",\n        \"lib/win8/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ServiceModel.Duplex.dll\",\n        \"ref/netcore50/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/de/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/es/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/it/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.Duplex.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.Duplex.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.Duplex.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.Duplex.xml\",\n        \"ref/portable-net45+win8/_._\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.ServiceModel.Http/4.1.0\": {\n      \"sha512\": \"sCIV+wrA4Antjnk0+fk6rxpzQkd2bReN4UTipGv5iyPNApVv/KtAfeDMg+YIajJ7VkQD60uVBTQmy3LZrRnNOw==\",\n      \"type\": \"package\",\n      \"path\": \"System.ServiceModel.Http/4.1.0\",\n      \"files\": [\n        \"System.ServiceModel.Http.4.1.0.nupkg.sha512\",\n        \"System.ServiceModel.Http.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.ServiceModel.Http.dll\",\n        \"lib/netcore50/System.ServiceModel.Http.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.Http.dll\",\n        \"lib/portable-net45+win8+wp8/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp8/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.ServiceModel.Http.dll\",\n        \"ref/netcore50/System.ServiceModel.Http.dll\",\n        \"ref/netcore50/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/de/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/es/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/it/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/System.ServiceModel.Http.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/de/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/es/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/fr/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/it/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/ja/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/ko/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/ru/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.Http.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/System.ServiceModel.Http.dll\",\n        \"ref/netstandard1.3/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/de/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/es/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/fr/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/it/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/ja/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/ko/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/ru/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ServiceModel.Http.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ServiceModel.Http.xml\",\n        \"ref/portable-net45+win8+wp8/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp8/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ServiceModel.NetTcp/4.1.0\": {\n      \"sha512\": \"n+Ir2B9SAd5XwAaXPIpLQsbaDcscSsyJH0ODpm5tpK8xXxmLhiPct5kujzeAiAhB37lVSetrSINdFb1Llg2ngg==\",\n      \"type\": \"package\",\n      \"path\": \"System.ServiceModel.NetTcp/4.1.0\",\n      \"files\": [\n        \"System.ServiceModel.NetTcp.4.1.0.nupkg.sha512\",\n        \"System.ServiceModel.NetTcp.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.ServiceModel.NetTcp.dll\",\n        \"lib/netcore50/System.ServiceModel.NetTcp.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.NetTcp.dll\",\n        \"lib/portable-net45+win8/_._\",\n        \"lib/win8/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.ServiceModel.NetTcp.dll\",\n        \"ref/netcore50/System.ServiceModel.NetTcp.dll\",\n        \"ref/netcore50/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/de/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/es/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/it/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.NetTcp.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.NetTcp.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/System.ServiceModel.NetTcp.dll\",\n        \"ref/netstandard1.3/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/de/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/es/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/fr/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/it/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/ja/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/ko/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/ru/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ServiceModel.NetTcp.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ServiceModel.NetTcp.xml\",\n        \"ref/portable-net45+win8/_._\",\n        \"ref/win8/_._\"\n      ]\n    },\n    \"System.ServiceModel.Primitives/4.1.0\": {\n      \"sha512\": \"Kd65HOn/5pL9xtCUkSL8xVqpqBUYy9tsfo0qe/MTTzApY8WQ+6i4I2ts++M+m4vbOanCoEsjjUj26P6C6ilQjQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.ServiceModel.Primitives/4.1.0\",\n      \"files\": [\n        \"System.ServiceModel.Primitives.4.1.0.nupkg.sha512\",\n        \"System.ServiceModel.Primitives.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net46/System.ServiceModel.Primitives.dll\",\n        \"lib/netcore50/System.ServiceModel.Primitives.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.Primitives.dll\",\n        \"lib/portable-net45+win8+wp8/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp8/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net46/System.ServiceModel.Primitives.dll\",\n        \"ref/netcore50/System.ServiceModel.Primitives.dll\",\n        \"ref/netcore50/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/de/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/es/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/it/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/System.ServiceModel.Primitives.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/de/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/es/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/it/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.Primitives.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/System.ServiceModel.Primitives.dll\",\n        \"ref/netstandard1.3/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/de/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/es/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/fr/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/it/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/ja/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/ko/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/ru/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hans/System.ServiceModel.Primitives.xml\",\n        \"ref/netstandard1.3/zh-hant/System.ServiceModel.Primitives.xml\",\n        \"ref/portable-net45+win8+wp8/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp8/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.ServiceModel.Security/4.0.1\": {\n      \"sha512\": \"82pkDb6LMq/NHi+DVHZ7zKHMMJ7mR6rVl9TpH+p8zJhZrVYJez9vTbdMsxQhbNOngEkJKzZFveNYpaRv/3RMsg==\",\n      \"type\": \"package\",\n      \"path\": \"System.ServiceModel.Security/4.0.1\",\n      \"files\": [\n        \"System.ServiceModel.Security.4.0.1.nupkg.sha512\",\n        \"System.ServiceModel.Security.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.ServiceModel.Security.dll\",\n        \"lib/netstandard1.3/System.ServiceModel.Security.dll\",\n        \"lib/portable-net45+win8+wp8/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp8/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.ServiceModel.Security.dll\",\n        \"ref/netcore50/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/de/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/es/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/fr/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/it/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/ja/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/ko/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/ru/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/zh-hans/System.ServiceModel.Security.xml\",\n        \"ref/netcore50/zh-hant/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/System.ServiceModel.Security.dll\",\n        \"ref/netstandard1.0/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/de/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/es/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/fr/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/it/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/ja/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/ko/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/ru/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/zh-hans/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.0/zh-hant/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/System.ServiceModel.Security.dll\",\n        \"ref/netstandard1.1/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/de/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/es/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/fr/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/it/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/ja/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/ko/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/ru/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/zh-hans/System.ServiceModel.Security.xml\",\n        \"ref/netstandard1.1/zh-hant/System.ServiceModel.Security.xml\",\n        \"ref/portable-net45+win8+wp8/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp8/_._\"\n      ]\n    },\n    \"System.Text.Encoding/4.0.11\": {\n      \"sha512\": \"XU/T53PgG9qApSiVA+GtPtLbU787krHRE9hedLcwnZgYpbNgJG0GVy/fLcH6hCpHgOMLVipqHvJtQdDNqC5U/Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Text.Encoding/4.0.11\",\n      \"files\": [\n        \"System.Text.Encoding.4.0.11.nupkg.sha512\",\n        \"System.Text.Encoding.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Text.Encoding.dll\",\n        \"ref/netcore50/System.Text.Encoding.xml\",\n        \"ref/netcore50/de/System.Text.Encoding.xml\",\n        \"ref/netcore50/es/System.Text.Encoding.xml\",\n        \"ref/netcore50/fr/System.Text.Encoding.xml\",\n        \"ref/netcore50/it/System.Text.Encoding.xml\",\n        \"ref/netcore50/ja/System.Text.Encoding.xml\",\n        \"ref/netcore50/ko/System.Text.Encoding.xml\",\n        \"ref/netcore50/ru/System.Text.Encoding.xml\",\n        \"ref/netcore50/zh-hans/System.Text.Encoding.xml\",\n        \"ref/netcore50/zh-hant/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/System.Text.Encoding.dll\",\n        \"ref/netstandard1.0/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/de/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/es/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/fr/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/it/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/ja/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/ko/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/ru/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Text.Encoding.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/System.Text.Encoding.dll\",\n        \"ref/netstandard1.3/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/de/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/es/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/fr/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/it/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/ja/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/ko/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/ru/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Text.Encoding.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Text.Encoding.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Text.Encoding.CodePages/4.0.1\": {\n      \"sha512\": \"k1jbRl6NE++AOSzxudhFfweNv/wnfI8KOBUyQD/sfX83X4XVrd285ED8b7/PEgSMqWnyIgfFQjZNGUfzboXOzA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Text.Encoding.CodePages/4.0.1\",\n      \"files\": [\n        \"System.Text.Encoding.CodePages.4.0.1.nupkg.sha512\",\n        \"System.Text.Encoding.CodePages.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Text.Encoding.CodePages.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/netstandard1.3/System.Text.Encoding.CodePages.dll\",\n        \"ref/netstandard1.3/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/de/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/es/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/fr/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/it/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/ja/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/ko/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/ru/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Text.Encoding.CodePages.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Text.Encoding.CodePages.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/unix/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Text.Encoding.CodePages.dll\"\n      ]\n    },\n    \"System.Text.Encoding.Extensions/4.0.11\": {\n      \"sha512\": \"tUmgrKNcoHx1rb8oVFXPxwvjolnQ5SxJUsCHujfYxoN0bU9ozrbk5PovItIMzcPi1fYxeZjQ6sCLqKDeLJi6nw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Text.Encoding.Extensions/4.0.11\",\n      \"files\": [\n        \"System.Text.Encoding.Extensions.4.0.11.nupkg.sha512\",\n        \"System.Text.Encoding.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Text.Encoding.Extensions.dll\",\n        \"ref/netcore50/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/de/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/es/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/fr/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/it/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/ja/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/ko/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/ru/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/zh-hans/System.Text.Encoding.Extensions.xml\",\n        \"ref/netcore50/zh-hant/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/System.Text.Encoding.Extensions.dll\",\n        \"ref/netstandard1.0/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/de/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/es/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/fr/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/it/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/ja/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/ko/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/ru/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/System.Text.Encoding.Extensions.dll\",\n        \"ref/netstandard1.3/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/de/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/es/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/fr/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/it/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/ja/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/ko/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/ru/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Text.Encoding.Extensions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Text.Encoding.Extensions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Text.RegularExpressions/4.1.0\": {\n      \"sha512\": \"s3hrq+DHOv7mO+vyziDEGAxclaJgMzkjh4SJl7elMqTRsYxCzldDTU7A0VfCImsEafMEdzTzRmlJfCFoSgMjXg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Text.RegularExpressions/4.1.0\",\n      \"files\": [\n        \"System.Text.RegularExpressions.4.1.0.nupkg.sha512\",\n        \"System.Text.RegularExpressions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/net463/System.Text.RegularExpressions.dll\",\n        \"lib/netcore50/System.Text.RegularExpressions.dll\",\n        \"lib/netstandard1.6/System.Text.RegularExpressions.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/net463/System.Text.RegularExpressions.dll\",\n        \"ref/netcore50/System.Text.RegularExpressions.dll\",\n        \"ref/netcore50/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/de/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/es/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/fr/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/it/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/ja/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/ko/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/ru/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/netcore50/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/System.Text.RegularExpressions.dll\",\n        \"ref/netstandard1.0/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/de/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/es/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/fr/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/it/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/ja/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/ko/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/ru/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/System.Text.RegularExpressions.dll\",\n        \"ref/netstandard1.3/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/de/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/es/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/fr/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/it/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/ja/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/ko/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/ru/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/System.Text.RegularExpressions.dll\",\n        \"ref/netstandard1.6/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/de/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/es/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/fr/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/it/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/ja/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/ko/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/ru/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/zh-hans/System.Text.RegularExpressions.xml\",\n        \"ref/netstandard1.6/zh-hant/System.Text.RegularExpressions.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Threading/4.0.11\": {\n      \"sha512\": \"DEyRNv35Hclmuu4xEk8pdZr0b8G4fnZClWkAb3ag77ZWcD2KUiGWSoTFICF5i8mgMLRRmDfAv0yrLI8aBmzuZw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading/4.0.11\",\n      \"files\": [\n        \"System.Threading.4.0.11.nupkg.sha512\",\n        \"System.Threading.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.dll\",\n        \"lib/netstandard1.3/System.Threading.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Threading.dll\",\n        \"ref/netcore50/System.Threading.xml\",\n        \"ref/netcore50/de/System.Threading.xml\",\n        \"ref/netcore50/es/System.Threading.xml\",\n        \"ref/netcore50/fr/System.Threading.xml\",\n        \"ref/netcore50/it/System.Threading.xml\",\n        \"ref/netcore50/ja/System.Threading.xml\",\n        \"ref/netcore50/ko/System.Threading.xml\",\n        \"ref/netcore50/ru/System.Threading.xml\",\n        \"ref/netcore50/zh-hans/System.Threading.xml\",\n        \"ref/netcore50/zh-hant/System.Threading.xml\",\n        \"ref/netstandard1.0/System.Threading.dll\",\n        \"ref/netstandard1.0/System.Threading.xml\",\n        \"ref/netstandard1.0/de/System.Threading.xml\",\n        \"ref/netstandard1.0/es/System.Threading.xml\",\n        \"ref/netstandard1.0/fr/System.Threading.xml\",\n        \"ref/netstandard1.0/it/System.Threading.xml\",\n        \"ref/netstandard1.0/ja/System.Threading.xml\",\n        \"ref/netstandard1.0/ko/System.Threading.xml\",\n        \"ref/netstandard1.0/ru/System.Threading.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Threading.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Threading.xml\",\n        \"ref/netstandard1.3/System.Threading.dll\",\n        \"ref/netstandard1.3/System.Threading.xml\",\n        \"ref/netstandard1.3/de/System.Threading.xml\",\n        \"ref/netstandard1.3/es/System.Threading.xml\",\n        \"ref/netstandard1.3/fr/System.Threading.xml\",\n        \"ref/netstandard1.3/it/System.Threading.xml\",\n        \"ref/netstandard1.3/ja/System.Threading.xml\",\n        \"ref/netstandard1.3/ko/System.Threading.xml\",\n        \"ref/netstandard1.3/ru/System.Threading.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Threading.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Threading.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Threading.dll\"\n      ]\n    },\n    \"System.Threading.Overlapped/4.0.1\": {\n      \"sha512\": \"9HrkqzI718N2lLoJmQWFL+O5zzwF991G660GjHI00NZhbBjX33mzrVVzlE7nb2n5qU7Ax3JlTpuThVvyvCUyEA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Overlapped/4.0.1\",\n      \"files\": [\n        \"System.Threading.Overlapped.4.0.1.nupkg.sha512\",\n        \"System.Threading.Overlapped.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/net46/System.Threading.Overlapped.dll\",\n        \"ref/net46/System.Threading.Overlapped.dll\",\n        \"ref/netstandard1.3/System.Threading.Overlapped.dll\",\n        \"ref/netstandard1.3/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/de/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/es/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/fr/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/it/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/ja/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/ko/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/ru/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Threading.Overlapped.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Threading.Overlapped.xml\",\n        \"runtimes/unix/lib/netstandard1.3/System.Threading.Overlapped.dll\",\n        \"runtimes/win/lib/net46/System.Threading.Overlapped.dll\",\n        \"runtimes/win/lib/netcore50/System.Threading.Overlapped.dll\",\n        \"runtimes/win/lib/netstandard1.3/System.Threading.Overlapped.dll\"\n      ]\n    },\n    \"System.Threading.Tasks/4.0.11\": {\n      \"sha512\": \"U8/8NstkRxAdWYJRe7AI3gfA1OKkfOKhwYBP/3KJH0oB3ADoMs3S1rh+CPRl5SP9WIhb+M4+oEaqYcenbOI0OQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Tasks/4.0.11\",\n      \"files\": [\n        \"System.Threading.Tasks.4.0.11.nupkg.sha512\",\n        \"System.Threading.Tasks.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Threading.Tasks.dll\",\n        \"ref/netcore50/System.Threading.Tasks.xml\",\n        \"ref/netcore50/de/System.Threading.Tasks.xml\",\n        \"ref/netcore50/es/System.Threading.Tasks.xml\",\n        \"ref/netcore50/fr/System.Threading.Tasks.xml\",\n        \"ref/netcore50/it/System.Threading.Tasks.xml\",\n        \"ref/netcore50/ja/System.Threading.Tasks.xml\",\n        \"ref/netcore50/ko/System.Threading.Tasks.xml\",\n        \"ref/netcore50/ru/System.Threading.Tasks.xml\",\n        \"ref/netcore50/zh-hans/System.Threading.Tasks.xml\",\n        \"ref/netcore50/zh-hant/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/System.Threading.Tasks.dll\",\n        \"ref/netstandard1.0/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/de/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/es/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/fr/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/it/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/ja/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/ko/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/ru/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/System.Threading.Tasks.dll\",\n        \"ref/netstandard1.3/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/de/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/es/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/fr/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/it/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/ja/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/ko/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/ru/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Threading.Tasks.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Threading.Tasks.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Threading.Tasks.Dataflow/4.6.0\": {\n      \"sha512\": \"lYqhNcIS7wrZaxQsVH9zVr9guziNKk7v5mbErxJDgBmvAu8cSYKdqBUZHsdHoUVwZK6qr+0hog7jL5mHB6ye9w==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Tasks.Dataflow/4.6.0\",\n      \"files\": [\n        \"System.Threading.Tasks.Dataflow.4.6.0.nupkg.sha512\",\n        \"System.Threading.Tasks.Dataflow.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/System.Threading.Tasks.Dataflow.XML\",\n        \"lib/netstandard1.0/System.Threading.Tasks.Dataflow.dll\",\n        \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.XML\",\n        \"lib/netstandard1.1/System.Threading.Tasks.Dataflow.dll\"\n      ]\n    },\n    \"System.Threading.Tasks.Extensions/4.0.0\": {\n      \"sha512\": \"FjsEih9scCfkGilJ6elxtF8Xb+C2gwOL17/f0lPi1RyMl4CBqyWe0IC97gIBYZ8fatME+wq9RJlZQo4pwP0BhA==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Tasks.Extensions/4.0.0\",\n      \"files\": [\n        \"System.Threading.Tasks.Extensions.4.0.0.nupkg.sha512\",\n        \"System.Threading.Tasks.Extensions.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/netstandard1.0/System.Threading.Tasks.Extensions.dll\",\n        \"lib/netstandard1.0/System.Threading.Tasks.Extensions.xml\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.xml\"\n      ]\n    },\n    \"System.Threading.Tasks.Parallel/4.0.1\": {\n      \"sha512\": \"Du9bQ5FxQCAgpjC1BL225rv263kYgk6kvi2keDWjJ0tmHv8niu6v2zAPkxWPoQlYib3l1XcAoGeO0ZLLAUkzvw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Tasks.Parallel/4.0.1\",\n      \"files\": [\n        \"System.Threading.Tasks.Parallel.4.0.1.nupkg.sha512\",\n        \"System.Threading.Tasks.Parallel.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Threading.Tasks.Parallel.dll\",\n        \"lib/netstandard1.3/System.Threading.Tasks.Parallel.dll\",\n        \"lib/portable-net45+win8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Threading.Tasks.Parallel.dll\",\n        \"ref/netcore50/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/de/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/es/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/fr/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/it/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/ja/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/ko/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/ru/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/System.Threading.Tasks.Parallel.dll\",\n        \"ref/netstandard1.1/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml\",\n        \"ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml\",\n        \"ref/portable-net45+win8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Threading.Timer/4.0.1\": {\n      \"sha512\": \"/fE2DFLL/MDW3Uu1C4yAb5ROzvdy3JxWOD+oInYi1tqMg9X6oAzvZtgHs0P6rUgRt+bI3vYnov68aSWC+5I2BQ==\",\n      \"type\": \"package\",\n      \"path\": \"System.Threading.Timer/4.0.1\",\n      \"files\": [\n        \"System.Threading.Timer.4.0.1.nupkg.sha512\",\n        \"System.Threading.Timer.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net451/_._\",\n        \"lib/portable-net451+win81+wpa81/_._\",\n        \"lib/win81/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net451/_._\",\n        \"ref/netcore50/System.Threading.Timer.dll\",\n        \"ref/netcore50/System.Threading.Timer.xml\",\n        \"ref/netcore50/de/System.Threading.Timer.xml\",\n        \"ref/netcore50/es/System.Threading.Timer.xml\",\n        \"ref/netcore50/fr/System.Threading.Timer.xml\",\n        \"ref/netcore50/it/System.Threading.Timer.xml\",\n        \"ref/netcore50/ja/System.Threading.Timer.xml\",\n        \"ref/netcore50/ko/System.Threading.Timer.xml\",\n        \"ref/netcore50/ru/System.Threading.Timer.xml\",\n        \"ref/netcore50/zh-hans/System.Threading.Timer.xml\",\n        \"ref/netcore50/zh-hant/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/System.Threading.Timer.dll\",\n        \"ref/netstandard1.2/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/de/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/es/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/fr/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/it/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/ja/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/ko/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/ru/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/zh-hans/System.Threading.Timer.xml\",\n        \"ref/netstandard1.2/zh-hant/System.Threading.Timer.xml\",\n        \"ref/portable-net451+win81+wpa81/_._\",\n        \"ref/win81/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Xml.ReaderWriter/4.0.11\": {\n      \"sha512\": \"ljLZUmQZA3R3BQs0dN9ALdDomowUoN8L8PDNFJPaZRY2VSi550G8WFZyVIcCTG3W3VJKnDE8o0HmbLOYwzrbjw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Xml.ReaderWriter/4.0.11\",\n      \"files\": [\n        \"System.Xml.ReaderWriter.4.0.11.nupkg.sha512\",\n        \"System.Xml.ReaderWriter.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Xml.ReaderWriter.dll\",\n        \"lib/netstandard1.3/System.Xml.ReaderWriter.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Xml.ReaderWriter.dll\",\n        \"ref/netcore50/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/de/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/es/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/fr/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/it/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/ja/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/ko/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/ru/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/zh-hans/System.Xml.ReaderWriter.xml\",\n        \"ref/netcore50/zh-hant/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/System.Xml.ReaderWriter.dll\",\n        \"ref/netstandard1.0/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/de/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/es/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/fr/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/it/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/ja/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/ko/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/ru/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/System.Xml.ReaderWriter.dll\",\n        \"ref/netstandard1.3/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/de/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/es/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/fr/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/it/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/ja/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/ko/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/ru/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Xml.ReaderWriter.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Xml.ReaderWriter.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Xml.XDocument/4.0.11\": {\n      \"sha512\": \"xkGSOIWppKi8/g6SpOS638guIkds9Ct7+7rXErjg95O50+rkPfspKkP5kq1tNQBrTeDjyIo8cWnFPR46xnX7Mg==\",\n      \"type\": \"package\",\n      \"path\": \"System.Xml.XDocument/4.0.11\",\n      \"files\": [\n        \"System.Xml.XDocument.4.0.11.nupkg.sha512\",\n        \"System.Xml.XDocument.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Xml.XDocument.dll\",\n        \"lib/netstandard1.3/System.Xml.XDocument.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Xml.XDocument.dll\",\n        \"ref/netcore50/System.Xml.XDocument.xml\",\n        \"ref/netcore50/de/System.Xml.XDocument.xml\",\n        \"ref/netcore50/es/System.Xml.XDocument.xml\",\n        \"ref/netcore50/fr/System.Xml.XDocument.xml\",\n        \"ref/netcore50/it/System.Xml.XDocument.xml\",\n        \"ref/netcore50/ja/System.Xml.XDocument.xml\",\n        \"ref/netcore50/ko/System.Xml.XDocument.xml\",\n        \"ref/netcore50/ru/System.Xml.XDocument.xml\",\n        \"ref/netcore50/zh-hans/System.Xml.XDocument.xml\",\n        \"ref/netcore50/zh-hant/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/System.Xml.XDocument.dll\",\n        \"ref/netstandard1.0/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/de/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/es/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/fr/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/it/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/ja/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/ko/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/ru/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/System.Xml.XDocument.dll\",\n        \"ref/netstandard1.3/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/de/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/es/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/fr/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/it/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/ja/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/ko/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/ru/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Xml.XmlDocument/4.0.1\": {\n      \"sha512\": \"Y1fE49fNxbKAf/aqoA0Xg26Ly3+MVG2NGk8GAJKSVLFUAf3EssdeImEtIuyREC7ZlygEdAfmuPwjeLoCxXnF3Q==\",\n      \"type\": \"package\",\n      \"path\": \"System.Xml.XmlDocument/4.0.1\",\n      \"files\": [\n        \"System.Xml.XmlDocument.4.0.1.nupkg.sha512\",\n        \"System.Xml.XmlDocument.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net46/System.Xml.XmlDocument.dll\",\n        \"lib/netstandard1.3/System.Xml.XmlDocument.dll\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net46/System.Xml.XmlDocument.dll\",\n        \"ref/netstandard1.3/System.Xml.XmlDocument.dll\",\n        \"ref/netstandard1.3/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/de/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/es/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/fr/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/it/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/ja/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/ko/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/ru/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Xml.XmlDocument.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Xml.XmlDocument.xml\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\"\n      ]\n    },\n    \"System.Xml.XmlSerializer/4.0.11\": {\n      \"sha512\": \"FrazwwqfIXTfq23mfv4zH+BjqkSFNaNFBtjzu3I9NRmG8EELYyrv/fJnttCIwRMFRR/YKXF1hmsMmMEnl55HGw==\",\n      \"type\": \"package\",\n      \"path\": \"System.Xml.XmlSerializer/4.0.11\",\n      \"files\": [\n        \"System.Xml.XmlSerializer.4.0.11.nupkg.sha512\",\n        \"System.Xml.XmlSerializer.nuspec\",\n        \"ThirdPartyNotices.txt\",\n        \"dotnet_library_license.txt\",\n        \"lib/MonoAndroid10/_._\",\n        \"lib/MonoTouch10/_._\",\n        \"lib/net45/_._\",\n        \"lib/netcore50/System.Xml.XmlSerializer.dll\",\n        \"lib/netstandard1.3/System.Xml.XmlSerializer.dll\",\n        \"lib/portable-net45+win8+wp8+wpa81/_._\",\n        \"lib/win8/_._\",\n        \"lib/wp80/_._\",\n        \"lib/wpa81/_._\",\n        \"lib/xamarinios10/_._\",\n        \"lib/xamarinmac20/_._\",\n        \"lib/xamarintvos10/_._\",\n        \"lib/xamarinwatchos10/_._\",\n        \"ref/MonoAndroid10/_._\",\n        \"ref/MonoTouch10/_._\",\n        \"ref/net45/_._\",\n        \"ref/netcore50/System.Xml.XmlSerializer.dll\",\n        \"ref/netcore50/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/de/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/es/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/fr/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/it/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/ja/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/ko/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/ru/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/zh-hans/System.Xml.XmlSerializer.xml\",\n        \"ref/netcore50/zh-hant/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/System.Xml.XmlSerializer.dll\",\n        \"ref/netstandard1.0/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/de/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/es/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/fr/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/it/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/ja/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/ko/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/ru/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/zh-hans/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.0/zh-hant/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/System.Xml.XmlSerializer.dll\",\n        \"ref/netstandard1.3/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/de/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/es/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/fr/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/it/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/ja/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/ko/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/ru/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/zh-hans/System.Xml.XmlSerializer.xml\",\n        \"ref/netstandard1.3/zh-hant/System.Xml.XmlSerializer.xml\",\n        \"ref/portable-net45+win8+wp8+wpa81/_._\",\n        \"ref/win8/_._\",\n        \"ref/wp80/_._\",\n        \"ref/wpa81/_._\",\n        \"ref/xamarinios10/_._\",\n        \"ref/xamarinmac20/_._\",\n        \"ref/xamarintvos10/_._\",\n        \"ref/xamarinwatchos10/_._\",\n        \"runtimes/aot/lib/netcore50/System.Xml.XmlSerializer.dll\"\n      ]\n    },\n    \"Validation/2.2.8\": {\n      \"sha512\": \"DMNc7JhPlgRwnR+NNb+ldoluObL+RBw96aMoiZae/Looa4vgaAnIysmle/bV2OKqDNW9oUBDckPyfa2+sX6JdA==\",\n      \"type\": \"package\",\n      \"path\": \"Validation/2.2.8\",\n      \"files\": [\n        \"README.md\",\n        \"Validation.2.2.8.nupkg.sha512\",\n        \"Validation.nuspec\",\n        \"lib/dotnet/Validation.dll\",\n        \"lib/dotnet/Validation.xml\",\n        \"lib/portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Validation.dll\",\n        \"lib/portable-net40+sl50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Validation.xml\",\n        \"lib/portable-net45+dnxcore50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Validation.dll\",\n        \"lib/portable-net45+dnxcore50+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10/Validation.xml\",\n        \"tools/2013/RequiresNotNull.snippet\",\n        \"tools/2013/RequiresNotNullOrEmpty.snippet\",\n        \"tools/2015/RequiresNotNull.snippet\",\n        \"tools/2015/RequiresNotNullOrEmpty.snippet\",\n        \"tools/install_snippets.cmd\",\n        \"tools/uninstall_snippets.cmd\"\n      ]\n    },\n    \"ZXing.Net.Mobile/2.1.47\": {\n      \"sha512\": \"K+7OebNXS7kv6J2edXOWf0B7cu8vE6j6d7DOcbQOHR//YJXFifVwN1m7BfycBkrwO9WClKM2ZZQNTlC6GeOOQA==\",\n      \"type\": \"package\",\n      \"path\": \"ZXing.Net.Mobile/2.1.47\",\n      \"files\": [\n        \"ZXing.Net.Mobile.2.1.47.nupkg.sha512\",\n        \"ZXing.Net.Mobile.nuspec\",\n        \"lib/MonoAndroid403/ZXing.Net.Mobile.Core.dll\",\n        \"lib/MonoAndroid403/ZXingNetMobile.dll\",\n        \"lib/MonoAndroid403/zxing.portable.dll\",\n        \"lib/UAP10/ZXing.Net.Mobile.Core.dll\",\n        \"lib/UAP10/ZXingNetMobile.dll\",\n        \"lib/UAP10/ZXingNetMobile.pri\",\n        \"lib/UAP10/ZXingNetMobile/ZXingNetMobile.xr.xml\",\n        \"lib/UAP10/zxing.portable.dll\",\n        \"lib/Xamarin.iOS10/ZXing.Net.Mobile.Core.dll\",\n        \"lib/Xamarin.iOS10/ZXingNetMobile.dll\",\n        \"lib/Xamarin.iOS10/zxing.portable.dll\",\n        \"lib/portable-net45+netcore45+wpa81+wp8/ZXing.Net.Mobile.Core.dll\",\n        \"lib/portable-net45+netcore45+wpa81+wp8/ZXingNetMobile.dll\",\n        \"lib/portable-net45+netcore45+wpa81+wp8/zxing.portable.dll\",\n        \"lib/wp8/ZXing.Net.Mobile.Core.dll\",\n        \"lib/wp8/ZXingNetMobile.dll\",\n        \"lib/wp8/zxing.portable.dll\"\n      ]\n    }\n  },\n  \"projectFileDependencyGroups\": {\n    \"\": [\n      \"Microsoft.ApplicationInsights >= 2.1.0\",\n      \"Microsoft.ApplicationInsights.PersistenceChannel >= 1.2.3\",\n      \"Microsoft.ApplicationInsights.WindowsApps >= 1.1.1\",\n      \"Microsoft.Azure.Devices.Client >= 1.1.1\",\n      \"Microsoft.Azure.Devices.Shared >= 1.0.2\",\n      \"Microsoft.NETCore.UniversalWindowsPlatform >= 5.2.2\",\n      \"Newtonsoft.Json >= 9.0.1\",\n      \"ZXing.Net.Mobile >= 2.1.47\"\n    ],\n    \"UAP,Version=v10.0\": []\n  },\n  \"tools\": {},\n  \"projectFileToolGroups\": {}\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/UWPSimulatedSensors/UWPSimulatedSensors.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.24720.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"UWPSimulatedSensors\", \"UWPSimulatedSensors\\UWPSimulatedSensors.csproj\", \"{CE0FF36D-7C6D-407A-A798-E5269E252F91}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|ARM.ActiveCfg = Debug|ARM\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|ARM.Build.0 = Debug|ARM\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|ARM.Deploy.0 = Debug|ARM\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|x64.Build.0 = Debug|x64\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|x86.Build.0 = Debug|x86\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Debug|x86.Deploy.0 = Debug|x86\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|ARM.ActiveCfg = Release|ARM\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|ARM.Build.0 = Release|ARM\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|ARM.Deploy.0 = Release|ARM\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|x64.ActiveCfg = Release|x64\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|x64.Build.0 = Release|x64\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|x64.Deploy.0 = Release|x64\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|x86.ActiveCfg = Release|x86\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|x86.Build.0 = Release|x86\n\t\t{CE0FF36D-7C6D-407A-A798-E5269E252F91}.Release|x86.Deploy.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/Helpers/Settings.cs",
    "content": "// Helpers/Settings.cs\nusing Plugin.Settings;\nusing Plugin.Settings.Abstractions;\n\nnamespace XamarinSimulatedSensors.Helpers\n{\n  /// <summary>\n  /// This is the Settings static class that can be used in your Core solution or in any\n  /// of your client applications. All settings are laid out the same exact way with getters\n  /// and setters. \n  /// </summary>\n  public static class Settings\n  {\n    private static ISettings AppSettings\n    {\n      get\n      {\n        return CrossSettings.Current;\n      }\n    }\n\n    #region Setting Constants\n\n    private const string DisplayNameKey = \"DisplayName\";\n    private static readonly string DisplayNameDefault = string.Empty;\n\n    private const string ConnectionStringKey = \"ConnectionString\";\n    private static readonly string ConnectionStringDefault = string.Empty;\n\n    #endregion\n\n    public static string DisplayName\n    {\n            get { return AppSettings.GetValueOrDefault<string>(DisplayNameKey, DisplayNameDefault); }\n            set { AppSettings.AddOrUpdateValue<string>(DisplayNameKey, value); }\n    }\n\n    public static string ConnectionString\n    {\n        get { return AppSettings.GetValueOrDefault<string>(ConnectionStringKey, ConnectionStringDefault); }\n        set { AppSettings.AddOrUpdateValue<string>(ConnectionStringKey, value); }\n    }\n\n  }\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/MyClass.cs",
    "content": "﻿using System;\nusing System.Text;\nusing System.Diagnostics;\nusing ConnectTheDotsHelper;\nusing XamarinSimulatedSensors.Helpers;\n\nnamespace XamarinSimulatedSensors\n{\n    public class MyClass:ConnectTheDots\n    {\n        public MyClass()\n        {\n            this.DisplayName = Settings.DisplayName;\n            this.ConnectionString = Settings.ConnectionString;\n            this.Organization = \"Microsoft\";\n            this.Location = \"My Location\";\n\n            this.AddSensor(\"Temperature\", \"C\");\n            this.AddSensor(\"Humidity\", \"%\");\n        }\n\n        public bool checkConfig()\n        {\n            if (((this.DisplayName != null) && (this.ConnectionString != null) &&\n                        (this.DisplayName != \"\") && (this.ConnectionString != \"\")))\n            {\n                Settings.DisplayName = this.DisplayName;\n                Settings.ConnectionString = this.ConnectionString;\n                return true;\n            }\n            else\n            {\n                return false;\n            }\n        }\n\n        public void UpdateSensorData(string SensorName, double value)\n        {\n            if (this.Sensors.ContainsKey(SensorName))\n                this.Sensors[SensorName].message.value = value;\n        }\n    }\n}\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\n\n// Information about this assembly is defined by the following attributes.\n// Change them to the values specific to your project.\n\n[assembly: AssemblyTitle(\"XamarinSimulatedSensors\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"\")]\n[assembly: AssemblyCopyright(\"joe\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// The assembly version has the format \"{Major}.{Minor}.{Build}.{Revision}\".\n// The form \"{Major}.{Minor}.*\" will automatically update the build and revision,\n// and \"{Major}.{Minor}.{Build}.*\" will update just the revision.\n\n[assembly: AssemblyVersion(\"1.0.*\")]\n\n// The following attributes are used to specify the signing key for the assembly,\n// if desired. See the Mono documentation for more information about signing.\n\n//[assembly: AssemblyDelaySign(false)]\n//[assembly: AssemblyKeyFile(\"\")]\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <ProjectGuid>{BB40B36F-BAF9-45E1-B333-352771318E9F}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <RootNamespace>XamarinSimulatedSensors</RootNamespace>\n    <AssemblyName>XamarinSimulatedSensors</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <TargetFrameworkProfile>Profile111</TargetFrameworkProfile>\n    <MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug</OutputPath>\n    <DefineConstants>DEBUG;</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <ConsolePause>false</ConsolePause>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>full</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <ConsolePause>false</ConsolePause>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"..\\..\\..\\Common\\csharp\\ConnectTheDotsHelper.cs\">\n      <Link>ConnectTheDotsHelper.cs</Link>\n    </Compile>\n    <Compile Include=\"Helpers\\Settings.cs\" />\n    <Compile Include=\"MyClass.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Devices.Client.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Azure.Devices.Client.1.1.4\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Client.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Devices.Shared.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Azure.Devices.Shared.1.0.4\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Shared.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Newtonsoft.Json.9.0.1\\lib\\portable-net45+wp80+win8+wpa81\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PCLCrypto.2.0.147\\lib\\portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.BCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.BCrypt.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.BCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Kernel32, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.Kernel32.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.Kernel32.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.NCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.NCrypt.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.NCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Windows.Core, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.Windows.Core.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.Windows.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Plugin.Settings, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xam.Plugins.Settings.2.5.1.0\\lib\\portable-net45+wp80+win8+wpa81\\Plugin.Settings.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Plugin.Settings.Abstractions, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xam.Plugins.Settings.2.5.1.0\\lib\\portable-net45+wp80+win8+wpa81\\Plugin.Settings.Abstractions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Validation, Version=2.3.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Validation.2.3.7\\lib\\portable-net45+win+wpa81+wp80+MonoAndroid10+xamarinios10+MonoTouch10\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"ZXing.Net.Mobile.Core, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\portable-net45+netcore45+wpa81+wp8\\ZXing.Net.Mobile.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"zxing.portable, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\portable-net45+netcore45+wpa81+wp8\\zxing.portable.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"ZXingNetMobile, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\portable-net45+netcore45+wpa81+wp8\\ZXingNetMobile.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildExtensionsPath32)\\Microsoft\\Portable\\$(TargetFrameworkVersion)\\Microsoft.Portable.CSharp.targets\" />\n</Project>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-9.0.0.0\" newVersion=\"9.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"PCLCrypto\" publicKeyToken=\"d4421c8a4786956c\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.0.0.0\" newVersion=\"2.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Validation\" publicKeyToken=\"2fc06f0d701809a7\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.3.0.0\" newVersion=\"2.3.0.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Azure.Devices.Client\" version=\"1.1.4\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"Microsoft.Azure.Devices.Shared\" version=\"1.0.4\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"Newtonsoft.Json\" version=\"9.0.1\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"PCLCrypto\" version=\"2.0.147\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"PInvoke.BCrypt\" version=\"0.3.152\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"PInvoke.Kernel32\" version=\"0.3.152\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"PInvoke.NCrypt\" version=\"0.3.152\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"PInvoke.Windows.Core\" version=\"0.3.152\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"Validation\" version=\"2.3.7\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"Xam.Plugins.Settings\" version=\"2.5.1.0\" targetFramework=\"portable45-net45+win8+wpa81\" />\n  <package id=\"ZXing.Net.Mobile\" version=\"2.1.47\" targetFramework=\"portable45-net45+win8+wpa81\" />\n</packages>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Assets/AboutAssets.txt",
    "content": "Any raw assets you want to be deployed with your application can be placed in\nthis directory (and child directories) and given a Build Action of \"AndroidAsset\".\n\nThese files will be deployed with your package and will be accessible using Android's\nAssetManager, like this:\n\npublic class ReadAsset : Activity\n{\n\tprotected override void OnCreate (Bundle bundle)\n\t{\n\t\tbase.OnCreate (bundle);\n\n\t\tInputStream input = Assets.Open (\"my_asset.txt\");\n\t}\n}\n\nAdditionally, some Android functions will automatically load asset files:\n\nTypeface tf = Typeface.CreateFromAsset (Context.Assets, \"fonts/samplefont.ttf\");\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Helpers/Settings.cs",
    "content": "/*\n// Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it.\nusing Plugin.Settings;\nusing Plugin.Settings.Abstractions;\n\nnamespace XamarinSimulatedSensors.Droid.Helpers\n{\n  /// <summary>\n  /// This is the Settings static class that can be used in your Core solution or in any\n  /// of your client applications. All settings are laid out the same exact way with getters\n  /// and setters. \n  /// </summary>\n  public static class Settings\n  {\n    private static ISettings AppSettings\n    {\n      get\n      {\n        return CrossSettings.Current;\n      }\n    }\n\n    #region Setting Constants\n\n    private const string SettingsKey = \"settings_key\";\n    private static readonly string SettingsDefault = string.Empty;\n\n    #endregion\n\n\n    public static string GeneralSettings\n    {\n      get\n      {\n        return AppSettings.GetValueOrDefault<string>(SettingsKey, SettingsDefault);\n      }\n      set\n      {\n        AppSettings.AddOrUpdateValue<string>(SettingsKey, value);\n      }\n    }\n\n  }\n}*/"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/MainActivity.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nusing Android.App;\nusing Android.Content;\nusing Android.Runtime;\nusing Android.Views;\nusing Android.Widget;\nusing Android.OS;\n\nusing ZXing.Mobile;\n\nnamespace XamarinSimulatedSensors.Droid\n{\n\t[Activity (Label = \"XamarinSimulatedSensors.Droid\", MainLauncher = true, Icon = \"@drawable/icon\")]\n\tpublic class MainActivity : Activity\n\t{\n        MyClass Device;\n\n        Button buttonConnect;\n        Button buttonSend;\n        Button buttonScan;\n        TextView textDeviceName;\n        TextView textConnectionString;\n\n        TextView lblTemperature;\n        TextView lblHumidity;\n\n        TextView textAlerts;\n\n        protected override void OnCreate (Bundle bundle)\n\t\t{\n\t\t\tbase.OnCreate (bundle);\n\n\t\t\t// Set our view from the \"main\" layout resource\n\t\t\tSetContentView (Resource.Layout.Main);\n\n            // Initialize IoT Hub client\n            Device = new MyClass();\n\n            // If you are developing and want to avoid having to enter the full connection string on the device,\n            // you can temporarily hard code it here. Comment this when done!\n            //Device.DisplayName = \"[DisplayName]\";\n            //Device.ConnectionString = \"[ConnectionString]\";\n\n            // Prepare UI elements\n            buttonConnect = FindViewById<Button>(Resource.Id.buttonConnect);\n            buttonConnect.Enabled = false;\n            buttonConnect.Click += ButtonConnect_Click;\n\n            buttonSend = FindViewById<Button>(Resource.Id.buttonSend);\n            buttonSend.Enabled = false;\n            buttonSend.Click += ButtonSend_Click;\n\n            buttonScan = FindViewById<Button>(Resource.Id.buttonScan);\n            buttonScan.Enabled = true;\n            buttonScan.Click += ButtonScan_Click;\n\n            textDeviceName = FindViewById<TextView>(Resource.Id.textDeviceName);\n            textDeviceName.TextChanged += TextDeviceName_TextChanged;\n            textDeviceName.Text = Device.DisplayName;\n\n            textConnectionString = FindViewById<TextView>(Resource.Id.textConnectionString);\n            textConnectionString.TextChanged += TextConnectionString_TextChanged;\n            textConnectionString.SetSingleLine(true);\n            textConnectionString.Text = Device.ConnectionString;\n\n            lblTemperature = FindViewById<TextView>(Resource.Id.lblTemperature);\n            SeekBar seekTemperature = FindViewById<SeekBar>(Resource.Id.seekBarTemperature);\n            seekTemperature.ProgressChanged += SeekTemperature_ProgressChanged;\n            seekTemperature.Progress = 50;\n\n            lblHumidity = FindViewById<TextView>(Resource.Id.lblHumidity);\n            SeekBar seekHumidity = FindViewById<SeekBar>(Resource.Id.seekBarHumidity);\n            seekHumidity.ProgressChanged += SeekHumidity_ProgressChanged;\n            seekHumidity.Progress = 50;\n\n            textAlerts = FindViewById<TextView>(Resource.Id.textAlerts);\n\n            Device.ReceivedMessage += Device_ReceivedMessage;\n            // Set focus to the connect button\n            buttonConnect.RequestFocus();\n        }\n\n        /// <summary>\n        /// ScanCode\n        /// Scan a QR Code using the ZXing library\n        /// </summary>\n        /// <returns></returns>\n        private async Task ScanCode()\n        {\n            MobileBarcodeScanner.Initialize(Application);\n\n            MobileBarcodeScanner Scanner = new MobileBarcodeScanner();\n            Scanner.UseCustomOverlay = false;\n            Scanner.TopText = \"Hold camera up to QR code\";\n            Scanner.BottomText = \"Camera will automatically scan QR code\\r\\n\\rPress the 'Back' button to cancel\";\n\n            ZXing.Result result = await Scanner.Scan().ConfigureAwait(true);\n\n            if (result == null || (string.IsNullOrEmpty(result.Text)))\n            {\n                //await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>\n                //{\n                    //MessageDialog dialog = new MessageDialog(\"An error occured while scanning the QRCode. Try again\");\n                    //await dialog.ShowAsync();\n                //});\n            }\n            else\n            {\n                //await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>\n                //{\n                    textConnectionString.Text = result.Text;\n                    textDeviceName.Text = Device.ExtractDeviceIdFromConnectionString(result.Text);\n                //});\n            }\n        }\n\n        private async void ButtonScan_Click(object sender, EventArgs e)\n        {\n            if (buttonSend.Enabled == false)\n            {\n                await ScanCode();\n            }\n        }\n\n        private void Device_ReceivedMessage(object sender, EventArgs e)\n        {\n            ConnectTheDotsHelper.C2DMessage message = ((ConnectTheDotsHelper.ConnectTheDots.ReceivedMessageEventArgs)e).Message;\n            var textToDisplay = message.timecreated + \" - Alert received:\" + message.message + \": \" + message.value + \" \" + message.unitofmeasure + \"\\r\\n\";\n\n            textAlerts.Append(textToDisplay);\n        }\n\n        private void SeekHumidity_ProgressChanged(object sender, SeekBar.ProgressChangedEventArgs e)\n        {\n            lblHumidity.Text = \"Humidity: \" + e.Progress;\n            Device.UpdateSensorData(\"Humidity\", e.Progress);\n        }\n\n        private void SeekTemperature_ProgressChanged(object sender, SeekBar.ProgressChangedEventArgs e)\n        {\n            lblTemperature.Text = \"Temperature: \" + e.Progress;\n            Device.UpdateSensorData(\"Temperature\", e.Progress);\n        }\n\n        private void ButtonSend_Click(object sender, EventArgs e)\n        {\n            if (Device.SendTelemetryData)\n            {\n                \n                Device.SendTelemetryData = false;\n                buttonSend.Text = \"Press to send telemetry data\";\n            }\n            else\n            {\n                Device.SendTelemetryData = true;\n                buttonSend.Text = \"Sending telemetry data\";\n            }\n        }\n\n        private void ButtonConnect_Click(object sender, EventArgs e)\n        {\n            if (Device.IsConnected)\n            {\n                Device.SendTelemetryData = false;\n                if (Device.Disconnect())\n                {\n                    buttonSend.Enabled = false;\n                    textDeviceName.Enabled = true;\n                    textConnectionString.Enabled = true\n                    buttonScan.Enabled = true;\n                    buttonConnect.Text = \"Press to connect the dots\";\n                }\n            }\n            else\n            {\n                if (Device.Connect())\n                {\n                    buttonSend.Enabled = true;\n                    textDeviceName.Enabled = false;\n\n                    textConnectionString.Enabled = false;\n                    buttonScan.Enabled = false;\n                    buttonConnect.Text = \"Dots connected\";\n\n                }\n            }\n\n        }\n\n        private void TextConnectionString_TextChanged(object sender, Android.Text.TextChangedEventArgs e)\n        {\n            Device.ConnectionString = e.Text.ToString();\n            buttonConnect.Enabled = Device.checkConfig();\n        }\n\n        private void TextDeviceName_TextChanged(object sender, Android.Text.TextChangedEventArgs e)\n        {\n            Device.DisplayName = e.Text.ToString();\n            buttonConnect.Enabled = Device.checkConfig();\n        }\n    }\n}\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Properties/AndroidManifest.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\t<uses-sdk android:minSdkVersion=\"15\" />\n\t<application android:label=\"XamarinSimulatedSensors.Droid\"></application>\n</manifest>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing Android.App;\n\n// Information about this assembly is defined by the following attributes.\n// Change them to the values specific to your project.\n\n[assembly: AssemblyTitle (\"XamarinSimulatedSensors.Droid\")]\n[assembly: AssemblyDescription (\"\")]\n[assembly: AssemblyConfiguration (\"\")]\n[assembly: AssemblyCompany (\"\")]\n[assembly: AssemblyProduct (\"\")]\n[assembly: AssemblyCopyright (\"joe\")]\n[assembly: AssemblyTrademark (\"\")]\n[assembly: AssemblyCulture (\"\")]\n\n// The assembly version has the format \"{Major}.{Minor}.{Build}.{Revision}\".\n// The form \"{Major}.{Minor}.*\" will automatically update the build and revision,\n// and \"{Major}.{Minor}.{Build}.*\" will update just the revision.\n\n[assembly: AssemblyVersion (\"1.0.0\")]\n\n// The following attributes are used to specify the signing key for the assembly,\n// if desired. See the Mono documentation for more information about signing.\n\n//[assembly: AssemblyDelaySign(false)]\n//[assembly: AssemblyKeyFile(\"\")]\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/AboutResources.txt",
    "content": "Images, layout descriptions, binary blobs and string dictionaries can be included \nin your application as resource files.  Various Android APIs are designed to \noperate on the resource IDs instead of dealing with images, strings or binary blobs \ndirectly.\n\nFor example, a sample Android app that contains a user interface layout (main.axml),\nan internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) \nwould keep its resources in the \"Resources\" directory of the application:\n\nResources/\n    drawable/\n        icon.png\n\n    layout/\n        main.axml\n\n    values/\n        strings.xml\n\nIn order to get the build system to recognize Android resources, set the build action to\n\"AndroidResource\".  The native Android APIs do not operate directly with filenames, but \ninstead operate on resource IDs.  When you compile an Android application that uses resources, \nthe build system will package the resources for distribution and generate a class called \"R\" \n(this is an Android convention) that contains the tokens for each one of the resources \nincluded. For example, for the above Resources layout, this is what the R class would expose:\n\npublic class R {\n    public class drawable {\n        public const int icon = 0x123;\n    }\n\n    public class layout {\n        public const int main = 0x456;\n    }\n\n    public class strings {\n        public const int first_string = 0xabc;\n        public const int second_string = 0xbcd;\n    }\n}\n\nYou would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main \nto reference the layout/main.axml file, or R.strings.first_string to reference the first \nstring in the dictionary file values/strings.xml.\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/Resource.designer.cs",
    "content": "#pragma warning disable 1591\n//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\n[assembly: global::Android.Runtime.ResourceDesignerAttribute(\"XamarinSimulatedSensors.Droid.Resource\", IsApplication=true)]\n\nnamespace XamarinSimulatedSensors.Droid\n{\n\t\n\t\n\t[System.CodeDom.Compiler.GeneratedCodeAttribute(\"Xamarin.Android.Build.Tasks\", \"1.0.0.0\")]\n\tpublic partial class Resource\n\t{\n\t\t\n\t\tstatic Resource()\n\t\t{\n\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t}\n\t\t\n\t\tpublic static void UpdateIdValues()\n\t\t{\n\t\t\tglobal::PCLCrypto.Resource.String.ApplicationName = global::XamarinSimulatedSensors.Droid.Resource.String.ApplicationName;\n\t\t\tglobal::PCLCrypto.Resource.String.Hello = global::XamarinSimulatedSensors.Droid.Resource.String.Hello;\n\t\t\tglobal::ZXing.Mobile.Resource.Id.contentFrame = global::XamarinSimulatedSensors.Droid.Resource.Id.contentFrame;\n\t\t\tglobal::ZXing.Mobile.Resource.Layout.zxingscanneractivitylayout = global::XamarinSimulatedSensors.Droid.Resource.Layout.zxingscanneractivitylayout;\n\t\t\tglobal::ZXing.Mobile.Resource.Layout.zxingscannerfragmentlayout = global::XamarinSimulatedSensors.Droid.Resource.Layout.zxingscannerfragmentlayout;\n\t\t}\n\t\t\n\t\tpublic partial class Attribute\n\t\t{\n\t\t\t\n\t\t\tstatic Attribute()\n\t\t\t{\n\t\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t\t}\n\t\t\t\n\t\t\tprivate Attribute()\n\t\t\t{\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic partial class Drawable\n\t\t{\n\t\t\t\n\t\t\t// aapt resource value: 0x7f020000\n\t\t\tpublic const int CTDLogoMedium = 2130837504;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f020001\n\t\t\tpublic const int Icon = 2130837505;\n\t\t\t\n\t\t\tstatic Drawable()\n\t\t\t{\n\t\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t\t}\n\t\t\t\n\t\t\tprivate Drawable()\n\t\t\t{\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic partial class Id\n\t\t{\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050006\n\t\t\tpublic const int buttonConnect = 2131034118;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050005\n\t\t\tpublic const int buttonScan = 2131034117;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f05000b\n\t\t\tpublic const int buttonSend = 2131034123;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f05000d\n\t\t\tpublic const int contentFrame = 2131034125;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050000\n\t\t\tpublic const int imageView1 = 2131034112;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050001\n\t\t\tpublic const int lblDisplayName = 2131034113;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050009\n\t\t\tpublic const int lblHumidity = 2131034121;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050007\n\t\t\tpublic const int lblTemperature = 2131034119;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f05000a\n\t\t\tpublic const int seekBarHumidity = 2131034122;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050008\n\t\t\tpublic const int seekBarTemperature = 2131034120;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f05000c\n\t\t\tpublic const int textAlerts = 2131034124;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050004\n\t\t\tpublic const int textConnectionString = 2131034116;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050002\n\t\t\tpublic const int textDeviceName = 2131034114;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f050003\n\t\t\tpublic const int textView3 = 2131034115;\n\t\t\t\n\t\t\tstatic Id()\n\t\t\t{\n\t\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t\t}\n\t\t\t\n\t\t\tprivate Id()\n\t\t\t{\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic partial class Layout\n\t\t{\n\t\t\t\n\t\t\t// aapt resource value: 0x7f030000\n\t\t\tpublic const int Main = 2130903040;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f030001\n\t\t\tpublic const int zxingscanneractivitylayout = 2130903041;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f030002\n\t\t\tpublic const int zxingscannerfragmentlayout = 2130903042;\n\t\t\t\n\t\t\tstatic Layout()\n\t\t\t{\n\t\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t\t}\n\t\t\t\n\t\t\tprivate Layout()\n\t\t\t{\n\t\t\t}\n\t\t}\n\t\t\n\t\tpublic partial class String\n\t\t{\n\t\t\t\n\t\t\t// aapt resource value: 0x7f040001\n\t\t\tpublic const int ApplicationName = 2130968577;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f040000\n\t\t\tpublic const int Hello = 2130968576;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f040003\n\t\t\tpublic const int app_name = 2130968579;\n\t\t\t\n\t\t\t// aapt resource value: 0x7f040002\n\t\t\tpublic const int hello = 2130968578;\n\t\t\t\n\t\t\tstatic String()\n\t\t\t{\n\t\t\t\tglobal::Android.Runtime.ResourceIdManager.UpdateIdValues();\n\t\t\t}\n\t\t\t\n\t\t\tprivate String()\n\t\t\t{\n\t\t\t}\n\t\t}\n\t}\n}\n#pragma warning restore 1591\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/layout/Main.axml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:orientation=\"vertical\"\n    android:layout_width=\"fill_parent\"\n    android:layout_height=\"fill_parent\"\n    android:minWidth=\"25px\"\n    android:minHeight=\"25px\">\n    <ImageView\n        android:src=\"@drawable/ctdlogomedium\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"105.5dp\"\n        android:id=\"@+id/imageView1\"\n        android:scaleType=\"fitCenter\" />\n    <TextView\n        android:text=\"Display Name:\"\n        android:textAppearance=\"?android:attr/textAppearanceLarge\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/lblDisplayName\" />\n    <EditText\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/textDeviceName\"\n        android:editable=\"true\" />\n    <TextView\n        android:text=\"Connection String:\"\n        android:textAppearance=\"?android:attr/textAppearanceLarge\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/textView3\" />\n    <RelativeLayout\n        android:layout_width=\"fill_parent\"\n        android:layout_height=\"wrap_content\">\n        <EditText\n            android:inputType=\"textMultiLine\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:id=\"@+id/textConnectionString\"\n            android:editable=\"true\"\n            android:layout_marginLeft=\"0.0dp\"\n            android:layout_marginRight=\"77.5dp\" />\n        <Button\n            android:text=\"Scan\"\n            android:layout_width=\"77.5dp\"\n            android:layout_height=\"wrap_content\"\n            android:id=\"@+id/buttonScan\"\n            android:layout_marginRight=\"0.0dp\"\n            android:layout_alignParentRight=\"true\" />\n    </RelativeLayout>\n    <Button\n        android:text=\"Press to Connect The Dots\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/buttonConnect\" />\n    <TextView\n        android:text=\"Temperature\"\n        android:textAppearance=\"?android:attr/textAppearanceMedium\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/lblTemperature\" />\n    <SeekBar\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/seekBarTemperature\"\n        android:layout_marginRight=\"0.0dp\" />\n    <TextView\n        android:text=\"Humidity\"\n        android:textAppearance=\"?android:attr/textAppearanceMedium\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/lblHumidity\" />\n    <SeekBar\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/seekBarHumidity\" />\n    <Button\n        android:text=\"Press to send data\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/buttonSend\" />\n    <EditText\n        android:inputType=\"textMultiLine\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id/textAlerts\"\n        android:editable=\"false\" />\n</LinearLayout>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/Resources/values/Strings.xml",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\t<string name=\"hello\">Hello World, Click Me!</string>\n\t<string name=\"app_name\">XamarinSimulatedSensors.Droid</string>\n</resources>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/XamarinSimulatedSensors.Droid.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectTypeGuids>{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <ProjectGuid>{AFFF3566-8874-4B77-8697-A8BC6F38D891}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <RootNamespace>XamarinSimulatedSensors.Droid</RootNamespace>\n    <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>\n    <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>\n    <AndroidResgenClass>Resource</AndroidResgenClass>\n    <AndroidResgenFile>Resources\\Resource.designer.cs</AndroidResgenFile>\n    <AndroidApplication>True</AndroidApplication>\n    <AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>\n    <TargetFrameworkVersion>v6.0</TargetFrameworkVersion>\n    <AssemblyName>XamarinSimulatedSensors.Droid</AssemblyName>\n    <AndroidManifest>Properties\\AndroidManifest.xml</AndroidManifest>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug</OutputPath>\n    <DefineConstants>DEBUG;</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <AndroidLinkMode>None</AndroidLinkMode>\n    <ConsolePause>false</ConsolePause>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>full</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <AndroidUseSharedRuntime>false</AndroidUseSharedRuntime>\n    <ConsolePause>false</ConsolePause>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Devices.Client.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Azure.Devices.Client.1.1.4\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Client.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PCLCrypto.2.0.147\\lib\\MonoAndroid23\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.BCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.BCrypt.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.BCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Kernel32, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.Kernel32.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.Kernel32.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.NCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.NCrypt.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.NCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Windows.Core, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.Windows.Core.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.Windows.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Plugin.Settings, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xam.Plugins.Settings.2.5.1.0\\lib\\MonoAndroid10\\Plugin.Settings.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Plugin.Settings.Abstractions, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xam.Plugins.Settings.2.5.1.0\\lib\\MonoAndroid10\\Plugin.Settings.Abstractions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"Mono.Android\" />\n    <Reference Include=\"Validation, Version=2.3.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Validation.2.3.7\\lib\\dotnet\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Xamarin.Android.Support.v4, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xamarin.Android.Support.v4.23.0.1.3\\lib\\MonoAndroid403\\Xamarin.Android.Support.v4.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"ZXing.Net.Mobile.Core, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\MonoAndroid403\\ZXing.Net.Mobile.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"zxing.portable, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\MonoAndroid403\\zxing.portable.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"ZXingNetMobile, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\MonoAndroid403\\ZXingNetMobile.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\XamarinSimulatedSensors\\XamarinSimulatedSensors.csproj\">\n      <Name>XamarinSimulatedSensors</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Helpers\\Settings.cs\" />\n    <Compile Include=\"MainActivity.cs\" />\n    <Compile Include=\"Resources\\Resource.designer.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"packages.config\" />\n    <None Include=\"Resources\\AboutResources.txt\" />\n    <None Include=\"Properties\\AndroidManifest.xml\" />\n    <None Include=\"Assets\\AboutAssets.txt\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AndroidResource Include=\"Resources\\layout\\Main.axml\" />\n    <AndroidResource Include=\"Resources\\values\\Strings.xml\" />\n    <AndroidResource Include=\"Resources\\drawable-hdpi\\Icon.png\" />\n    <AndroidResource Include=\"Resources\\drawable-mdpi\\Icon.png\" />\n    <AndroidResource Include=\"Resources\\drawable-xhdpi\\Icon.png\" />\n    <AndroidResource Include=\"Resources\\drawable-xxhdpi\\Icon.png\" />\n    <AndroidResource Include=\"Resources\\drawable-xxxhdpi\\Icon.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <AndroidResource Include=\"Resources\\drawable\\CTDLogoMedium.png\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Novell\\Novell.MonoDroid.CSharp.targets\" />\n</Project>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n\t\t\t<dependentAssembly>\n\t\t\t\t<assemblyIdentity name=\"System.Numerics\" publicKeyToken=\"B77A5C561934E089\" culture=\"neutral\" />\n\t\t\t\t<bindingRedirect oldVersion=\"0.0.0.0-4.0.0.0\" newVersion=\"4.0.0.0\" />\n\t\t\t</dependentAssembly>\n\t\t\t<dependentAssembly>\n\t\t\t\t<assemblyIdentity name=\"System.Runtime\" publicKeyToken=\"B03F5F7F11D50A3A\" culture=\"neutral\" />\n\t\t\t\t<bindingRedirect oldVersion=\"0.0.0.0-4.1.0.0\" newVersion=\"4.1.0.0\" />\n\t\t\t</dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-9.0.0.0\" newVersion=\"9.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"PCLCrypto\" publicKeyToken=\"d4421c8a4786956c\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.0.0.0\" newVersion=\"2.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Validation\" publicKeyToken=\"2fc06f0d701809a7\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.3.0.0\" newVersion=\"2.3.0.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Droid/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Azure.Devices.Client\" version=\"1.1.4\" targetFramework=\"monoandroid60\" />\n  <package id=\"PCLCrypto\" version=\"2.0.147\" targetFramework=\"monoandroid60\" />\n  <package id=\"PInvoke.BCrypt\" version=\"0.3.152\" targetFramework=\"monoandroid60\" />\n  <package id=\"PInvoke.Kernel32\" version=\"0.3.152\" targetFramework=\"monoandroid60\" />\n  <package id=\"PInvoke.NCrypt\" version=\"0.3.152\" targetFramework=\"monoandroid60\" />\n  <package id=\"PInvoke.Windows.Core\" version=\"0.3.152\" targetFramework=\"monoandroid60\" />\n  <package id=\"Validation\" version=\"2.3.7\" targetFramework=\"monoandroid60\" />\n  <package id=\"Xam.Plugins.Settings\" version=\"2.5.1.0\" targetFramework=\"monoandroid60\" />\n  <package id=\"Xamarin.Android.Support.v4\" version=\"23.0.1.3\" targetFramework=\"monoandroid60\" />\n  <package id=\"ZXing.Net.Mobile\" version=\"2.1.47\" targetFramework=\"monoandroid60\" />\n</packages>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/App.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5.2\" />\n    </startup>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"PCLCrypto\" publicKeyToken=\"d4421c8a4786956c\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.0.0.0\" newVersion=\"2.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Validation\" publicKeyToken=\"2fc06f0d701809a7\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.3.0.0\" newVersion=\"2.3.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-9.0.0.0\" newVersion=\"9.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Services.Client\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.OData\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Data.Edm\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-5.8.1.0\" newVersion=\"5.8.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.WindowsAzure.Storage\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-7.2.1.0\" newVersion=\"7.2.1.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Microsoft.Azure.KeyVault.Core\" publicKeyToken=\"31bf3856ad364e35\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.0.0.0\" newVersion=\"2.0.0.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Form1.Designer.cs",
    "content": "﻿namespace XamarinSimulatedSensors.Windows\n{\n    partial class Form1\n    {\n        /// <summary>\n        /// Required designer variable.\n        /// </summary>\n        private System.ComponentModel.IContainer components = null;\n\n        /// <summary>\n        /// Clean up any resources being used.\n        /// </summary>\n        /// <param name=\"disposing\">true if managed resources should be disposed; otherwise, false.</param>\n        protected override void Dispose(bool disposing)\n        {\n            if (disposing && (components != null))\n            {\n                components.Dispose();\n            }\n            base.Dispose(disposing);\n        }\n\n        #region Windows Form Designer generated code\n\n        /// <summary>\n        /// Required method for Designer support - do not modify\n        /// the contents of this method with the code editor.\n        /// </summary>\n        private void InitializeComponent()\n        {\n            this.textDeviceName = new System.Windows.Forms.TextBox();\n            this.textConnectionString = new System.Windows.Forms.TextBox();\n            this.pictureBox1 = new System.Windows.Forms.PictureBox();\n            this.labelDeviceName = new System.Windows.Forms.Label();\n            this.labelConnectionString = new System.Windows.Forms.Label();\n            this.buttonConnect = new System.Windows.Forms.Button();\n            this.trackBarTemperature = new System.Windows.Forms.TrackBar();\n            this.labelTemperature = new System.Windows.Forms.Label();\n            this.trackBarHumidity = new System.Windows.Forms.TrackBar();\n            this.labelHumidity = new System.Windows.Forms.Label();\n            this.buttonSend = new System.Windows.Forms.Button();\n            this.textAlerts = new System.Windows.Forms.TextBox();\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();\n            ((System.ComponentModel.ISupportInitialize)(this.trackBarTemperature)).BeginInit();\n            ((System.ComponentModel.ISupportInitialize)(this.trackBarHumidity)).BeginInit();\n            this.SuspendLayout();\n            // \n            // textDeviceName\n            // \n            this.textDeviceName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.textDeviceName.Location = new System.Drawing.Point(12, 331);\n            this.textDeviceName.Name = \"textDeviceName\";\n            this.textDeviceName.Size = new System.Drawing.Size(693, 29);\n            this.textDeviceName.TabIndex = 0;\n            // \n            // textConnectionString\n            // \n            this.textConnectionString.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.textConnectionString.Location = new System.Drawing.Point(12, 401);\n            this.textConnectionString.Multiline = true;\n            this.textConnectionString.Name = \"textConnectionString\";\n            this.textConnectionString.Size = new System.Drawing.Size(693, 98);\n            this.textConnectionString.TabIndex = 1;\n            // \n            // pictureBox1\n            // \n            this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.pictureBox1.Image = global::XamarinSimulatedSensors.Windows.Properties.Resources.CTDLogoMedium;\n            this.pictureBox1.Location = new System.Drawing.Point(12, 12);\n            this.pictureBox1.Name = \"pictureBox1\";\n            this.pictureBox1.Size = new System.Drawing.Size(693, 247);\n            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;\n            this.pictureBox1.TabIndex = 2;\n            this.pictureBox1.TabStop = false;\n            // \n            // labelDeviceName\n            // \n            this.labelDeviceName.AutoSize = true;\n            this.labelDeviceName.ForeColor = System.Drawing.Color.White;\n            this.labelDeviceName.Location = new System.Drawing.Point(12, 303);\n            this.labelDeviceName.Name = \"labelDeviceName\";\n            this.labelDeviceName.Size = new System.Drawing.Size(129, 25);\n            this.labelDeviceName.TabIndex = 3;\n            this.labelDeviceName.Text = \"Device Name\";\n            // \n            // labelConnectionString\n            // \n            this.labelConnectionString.AutoSize = true;\n            this.labelConnectionString.ForeColor = System.Drawing.Color.White;\n            this.labelConnectionString.Location = new System.Drawing.Point(12, 373);\n            this.labelConnectionString.Name = \"labelConnectionString\";\n            this.labelConnectionString.Size = new System.Drawing.Size(168, 25);\n            this.labelConnectionString.TabIndex = 4;\n            this.labelConnectionString.Text = \"Connection String\";\n            // \n            // buttonConnect\n            // \n            this.buttonConnect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.buttonConnect.Location = new System.Drawing.Point(251, 510);\n            this.buttonConnect.Name = \"buttonConnect\";\n            this.buttonConnect.Size = new System.Drawing.Size(223, 34);\n            this.buttonConnect.TabIndex = 5;\n            this.buttonConnect.Text = \"Connect The Dots\";\n            this.buttonConnect.UseVisualStyleBackColor = true;\n            // \n            // trackBarTemperature\n            // \n            this.trackBarTemperature.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.trackBarTemperature.Location = new System.Drawing.Point(12, 577);\n            this.trackBarTemperature.Maximum = 100;\n            this.trackBarTemperature.Name = \"trackBarTemperature\";\n            this.trackBarTemperature.Size = new System.Drawing.Size(693, 80);\n            this.trackBarTemperature.TabIndex = 7;\n            this.trackBarTemperature.TabStop = false;\n            this.trackBarTemperature.Value = 70;\n            // \n            // labelTemperature\n            // \n            this.labelTemperature.AutoSize = true;\n            this.labelTemperature.ForeColor = System.Drawing.Color.White;\n            this.labelTemperature.Location = new System.Drawing.Point(12, 549);\n            this.labelTemperature.Name = \"labelTemperature\";\n            this.labelTemperature.Size = new System.Drawing.Size(124, 25);\n            this.labelTemperature.TabIndex = 6;\n            this.labelTemperature.Text = \"Temperature\";\n            // \n            // trackBarHumidity\n            // \n            this.trackBarHumidity.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.trackBarHumidity.Location = new System.Drawing.Point(12, 666);\n            this.trackBarHumidity.Maximum = 100;\n            this.trackBarHumidity.Name = \"trackBarHumidity\";\n            this.trackBarHumidity.Size = new System.Drawing.Size(693, 80);\n            this.trackBarHumidity.TabIndex = 9;\n            this.trackBarHumidity.TabStop = false;\n            this.trackBarHumidity.Value = 70;\n            // \n            // labelHumidity\n            // \n            this.labelHumidity.AutoSize = true;\n            this.labelHumidity.ForeColor = System.Drawing.Color.White;\n            this.labelHumidity.Location = new System.Drawing.Point(17, 638);\n            this.labelHumidity.Name = \"labelHumidity\";\n            this.labelHumidity.Size = new System.Drawing.Size(87, 25);\n            this.labelHumidity.TabIndex = 8;\n            this.labelHumidity.Text = \"Humidity\";\n            // \n            // buttonSend\n            // \n            this.buttonSend.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.buttonSend.Location = new System.Drawing.Point(251, 732);\n            this.buttonSend.Name = \"buttonSend\";\n            this.buttonSend.Size = new System.Drawing.Size(223, 34);\n            this.buttonSend.TabIndex = 10;\n            this.buttonSend.Text = \"Send Data\";\n            this.buttonSend.UseVisualStyleBackColor = true;\n            // \n            // textAlerts\n            // \n            this.textAlerts.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) \n            | System.Windows.Forms.AnchorStyles.Left) \n            | System.Windows.Forms.AnchorStyles.Right)));\n            this.textAlerts.Location = new System.Drawing.Point(12, 788);\n            this.textAlerts.Multiline = true;\n            this.textAlerts.Name = \"textAlerts\";\n            this.textAlerts.ReadOnly = true;\n            this.textAlerts.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;\n            this.textAlerts.Size = new System.Drawing.Size(693, 192);\n            this.textAlerts.TabIndex = 11;\n            // \n            // Form1\n            // \n            this.AutoScaleDimensions = new System.Drawing.SizeF(168F, 168F);\n            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;\n            this.AutoSize = true;\n            this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));\n            this.ClientSize = new System.Drawing.Size(717, 992);\n            this.Controls.Add(this.textAlerts);\n            this.Controls.Add(this.buttonSend);\n            this.Controls.Add(this.trackBarHumidity);\n            this.Controls.Add(this.labelHumidity);\n            this.Controls.Add(this.trackBarTemperature);\n            this.Controls.Add(this.labelTemperature);\n            this.Controls.Add(this.buttonConnect);\n            this.Controls.Add(this.labelConnectionString);\n            this.Controls.Add(this.labelDeviceName);\n            this.Controls.Add(this.pictureBox1);\n            this.Controls.Add(this.textConnectionString);\n            this.Controls.Add(this.textDeviceName);\n            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;\n            this.Name = \"Form1\";\n            this.Text = \"Device Simulator\";\n            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();\n            ((System.ComponentModel.ISupportInitialize)(this.trackBarTemperature)).EndInit();\n            ((System.ComponentModel.ISupportInitialize)(this.trackBarHumidity)).EndInit();\n            this.ResumeLayout(false);\n            this.PerformLayout();\n\n        }\n\n        #endregion\n\n        private System.Windows.Forms.TextBox textDeviceName;\n        private System.Windows.Forms.TextBox textConnectionString;\n        private System.Windows.Forms.PictureBox pictureBox1;\n        private System.Windows.Forms.Label labelDeviceName;\n        private System.Windows.Forms.Label labelConnectionString;\n        private System.Windows.Forms.Button buttonConnect;\n        private System.Windows.Forms.TrackBar trackBarTemperature;\n        private System.Windows.Forms.Label labelTemperature;\n        private System.Windows.Forms.TrackBar trackBarHumidity;\n        private System.Windows.Forms.Label labelHumidity;\n        private System.Windows.Forms.Button buttonSend;\n        private System.Windows.Forms.TextBox textAlerts;\n    }\n}\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Form1.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing XamarinSimulatedSensors;\n\nnamespace XamarinSimulatedSensors.Windows\n{\n    public partial class Form1 : Form\n    {\n        MyClass Device;\n\n        private delegate void AppendAlert(string AlertText);\n\n        public Form1()\n        {\n            InitializeComponent();\n\n            // Initialize IoT Hub client\n            Device = new MyClass();\n\n            // Prepare UI elements\n            buttonConnect.Enabled = false;\n            buttonConnect.Click += ButtonConnect_Click; ;\n\n            buttonSend.Enabled = false;\n            buttonSend.Click += ButtonSend_Click; ;\n\n            textDeviceName.TextChanged += TextDeviceName_TextChanged; ;\n            textDeviceName.Text = Device.DisplayName;\n\n            textConnectionString.TextChanged += TextConnectionString_TextChanged; ;\n            textConnectionString.Text = Device.ConnectionString;\n\n            trackBarTemperature.ValueChanged += TrackBarTemperature_ValueChanged;\n\n            trackBarHumidity.ValueChanged += TrackBarHumidity_ValueChanged; ;\n\n            // Set focus to the connect button\n            buttonConnect.Focus();\n\n            // Attach receive callback for alerts\n            Device.ReceivedMessage += Device_ReceivedMessage;\n        }\n\n        private void Device_ReceivedMessage(object sender, EventArgs e)\n        {\n            ConnectTheDotsHelper.C2DMessage message = ((ConnectTheDotsHelper.ConnectTheDots.ReceivedMessageEventArgs)e).Message;\n            var textToDisplay = message.timecreated + \" - Alert received:\" + message.message + \": \" + message.value + \" \" + message.unitofmeasure + \"\\r\\n\";\n            this.BeginInvoke(new AppendAlert((string text) => textAlerts.AppendText(text)), textToDisplay);\n        }\n\n        private void TrackBarHumidity_ValueChanged(object sender, EventArgs e)\n        {\n            labelHumidity.Text = \"Humidity: \" + trackBarHumidity.Value;\n            Device.UpdateSensorData(\"Humidity\", trackBarHumidity.Value);\n        }\n\n        private void TrackBarTemperature_ValueChanged(object sender, EventArgs e)\n        {\n            labelTemperature.Text = \"Temperature: \" + trackBarTemperature.Value;\n            Device.UpdateSensorData(\"Temperature\", trackBarTemperature.Value);\n        }\n\n        private void TextConnectionString_TextChanged(object sender, EventArgs e)\n        {\n            Device.ConnectionString = textConnectionString.Text;\n            buttonConnect.Enabled = Device.checkConfig();\n        }\n\n        private void TextDeviceName_TextChanged(object sender, EventArgs e)\n        {\n            Device.DisplayName = textDeviceName.Text;\n            buttonConnect.Enabled = Device.checkConfig();\n        }\n\n        private void ButtonSend_Click(object sender, EventArgs e)\n        {\n            if (Device.SendTelemetryData)\n            {\n\n                Device.SendTelemetryData = false;\n                buttonSend.Text = \"Press to send telemetry data\";\n            }\n            else\n            {\n                Device.SendTelemetryData = true;\n                buttonSend.Text = \"Sending telemetry data\";\n            }\n        }\n\n        private void ButtonConnect_Click(object sender, EventArgs e)\n        {\n            {\n                if (Device.IsConnected)\n                {\n                    Device.SendTelemetryData = false;\n                    if (Device.Disconnect())\n                    {\n                        buttonSend.Enabled = false;\n                        textDeviceName.Enabled = true;\n                        textConnectionString.Enabled = true;\n                        buttonConnect.Text = \"Press to connect the dots\";\n                    }\n                }\n                else\n                {\n                    if (Device.Connect())\n                    {\n                        buttonSend.Enabled = true;\n                        textDeviceName.Enabled = false;\n\n                        textConnectionString.Enabled = false;\n                        buttonConnect.Text = \"Dots connected\";\n\n                    }\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Form1.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Helpers/Settings.cs",
    "content": "/*\n// Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it.\nusing Plugin.Settings;\nusing Plugin.Settings.Abstractions;\n\nnamespace XamarinSimulatedSensors.Windows.Helpers\n{\n  /// <summary>\n  /// This is the Settings static class that can be used in your Core solution or in any\n  /// of your client applications. All settings are laid out the same exact way with getters\n  /// and setters. \n  /// </summary>\n  public static class Settings\n  {\n    private static ISettings AppSettings\n    {\n      get\n      {\n        return CrossSettings.Current;\n      }\n    }\n\n    #region Setting Constants\n\n    private const string SettingsKey = \"settings_key\";\n    private static readonly string SettingsDefault = string.Empty;\n\n    #endregion\n\n\n    public static string GeneralSettings\n    {\n      get\n      {\n        return AppSettings.GetValueOrDefault<string>(SettingsKey, SettingsDefault);\n      }\n      set\n      {\n        AppSettings.AddOrUpdateValue<string>(SettingsKey, value);\n      }\n    }\n\n  }\n}*/"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Program.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\n\nnamespace XamarinSimulatedSensors.Windows\n{\n    static class Program\n    {\n        /// <summary>\n        /// The main entry point for the application.\n        /// </summary>\n        [STAThread]\n        static void Main()\n        {\n            Application.EnableVisualStyles();\n            Application.SetCompatibleTextRenderingDefault(false);\n            Application.Run(new Form1());\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"XamarinSimulatedSensors.Windows\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"XamarinSimulatedSensors.Windows\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2016\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"ba9cf85b-1d51-46d8-b6c2-7763c16f66e7\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Properties/Resources.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace XamarinSimulatedSensors.Windows.Properties {\n    using System;\n    \n    \n    /// <summary>\n    ///   A strongly-typed resource class, for looking up localized strings, etc.\n    /// </summary>\n    // This class was auto-generated by the StronglyTypedResourceBuilder\n    // class via a tool like ResGen or Visual Studio.\n    // To add or remove a member, edit your .ResX file then rerun ResGen\n    // with the /str option, or rebuild your VS project.\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"System.Resources.Tools.StronglyTypedResourceBuilder\", \"4.0.0.0\")]\n    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    internal class Resources {\n        \n        private static global::System.Resources.ResourceManager resourceMan;\n        \n        private static global::System.Globalization.CultureInfo resourceCulture;\n        \n        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute(\"Microsoft.Performance\", \"CA1811:AvoidUncalledPrivateCode\")]\n        internal Resources() {\n        }\n        \n        /// <summary>\n        ///   Returns the cached ResourceManager instance used by this class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Resources.ResourceManager ResourceManager {\n            get {\n                if (object.ReferenceEquals(resourceMan, null)) {\n                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager(\"XamarinSimulatedSensors.Windows.Properties.Resources\", typeof(Resources).Assembly);\n                    resourceMan = temp;\n                }\n                return resourceMan;\n            }\n        }\n        \n        /// <summary>\n        ///   Overrides the current thread's CurrentUICulture property for all\n        ///   resource lookups using this strongly typed resource class.\n        /// </summary>\n        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]\n        internal static global::System.Globalization.CultureInfo Culture {\n            get {\n                return resourceCulture;\n            }\n            set {\n                resourceCulture = value;\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized resource of type System.Drawing.Bitmap.\n        /// </summary>\n        internal static System.Drawing.Bitmap CTDLogoMedium {\n            get {\n                object obj = ResourceManager.GetObject(\"CTDLogoMedium\", resourceCulture);\n                return ((System.Drawing.Bitmap)(obj));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Properties/Resources.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The primary goals of this format is to allow a simple XML format \n    that is mostly human readable. The generation and parsing of the \n    various data types are done through the TypeConverter classes \n    associated with the data types.\n    \n    Example:\n    \n    ... ado.net/XML headers & schema ...\n    <resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n    <resheader name=\"version\">2.0</resheader>\n    <resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n    <resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n    <data name=\"Name1\"><value>this is my long string</value><comment>this is a comment</comment></data>\n    <data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n    <data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n        <value>[base64 mime encoded serialized .NET Framework object]</value>\n    </data>\n    <data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>\n        <comment>This is a comment</comment>\n    </data>\n                \n    There are any number of \"resheader\" rows that contain simple \n    name/value pairs.\n    \n    Each data row contains a name, and value. The row also contains a \n    type or mimetype. Type corresponds to a .NET class that support \n    text/value conversion through the TypeConverter architecture. \n    Classes that don't support this are serialized and stored with the \n    mimetype set.\n    \n    The mimetype is used for serialized objects, and tells the \n    ResXResourceReader how to depersist the object. This is currently not \n    extensible. For a given mimetype the value must be set accordingly:\n    \n    Note - application/x-microsoft.net.object.binary.base64 is the format \n    that the ResXResourceWriter will generate, however the reader can \n    read any of the formats listed below.\n    \n    mimetype: application/x-microsoft.net.object.binary.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter\n            : and then encoded with base64 encoding.\n    \n    mimetype: application/x-microsoft.net.object.soap.base64\n    value   : The object must be serialized with \n            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n            : and then encoded with base64 encoding.\n\n    mimetype: application/x-microsoft.net.object.bytearray.base64\n    value   : The object must be serialized into a byte array \n            : using a System.ComponentModel.TypeConverter\n            : and then encoded with base64 encoding.\n    -->\n  <xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n    <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\n          <xsd:element name=\"metadata\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" use=\"required\" type=\"xsd:string\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"assembly\">\n            <xsd:complexType>\n              <xsd:attribute name=\"alias\" type=\"xsd:string\" />\n              <xsd:attribute name=\"name\" type=\"xsd:string\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"data\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n                <xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" msdata:Ordinal=\"1\" />\n              <xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n              <xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n              <xsd:attribute ref=\"xml:space\" />\n            </xsd:complexType>\n          </xsd:element>\n          <xsd:element name=\"resheader\">\n            <xsd:complexType>\n              <xsd:sequence>\n                <xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n              </xsd:sequence>\n              <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n            </xsd:complexType>\n          </xsd:element>\n        </xsd:choice>\n      </xsd:complexType>\n    </xsd:element>\n  </xsd:schema>\n  <resheader name=\"resmimetype\">\n    <value>text/microsoft-resx</value>\n  </resheader>\n  <resheader name=\"version\">\n    <value>2.0</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <assembly alias=\"System.Windows.Forms\" name=\"System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" />\n  <data name=\"CTDLogoMedium\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n    <value>..\\Resources\\CTDLogoMedium.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\n  </data>\n</root>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Properties/Settings.Designer.cs",
    "content": "﻿//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code was generated by a tool.\n//     Runtime Version:4.0.30319.42000\n//\n//     Changes to this file may cause incorrect behavior and will be lost if\n//     the code is regenerated.\n// </auto-generated>\n//------------------------------------------------------------------------------\n\nnamespace XamarinSimulatedSensors.Windows.Properties\n{\n\n\n    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]\n    [global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator\", \"11.0.0.0\")]\n    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase\n    {\n\n        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));\n\n        public static Settings Default\n        {\n            get\n            {\n                return defaultInstance;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/Properties/Settings.settings",
    "content": "﻿<?xml version='1.0' encoding='utf-8'?>\n<SettingsFile xmlns=\"http://schemas.microsoft.com/VisualStudio/2004/01/settings\" CurrentProfile=\"(Default)\">\n  <Profiles>\n    <Profile Name=\"(Default)\" />\n  </Profiles>\n  <Settings />\n</SettingsFile>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/XamarinSimulatedSensors.Windows.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"14.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}</ProjectGuid>\n    <OutputType>WinExe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>XamarinSimulatedSensors.Windows</RootNamespace>\n    <AssemblyName>XamarinSimulatedSensors.Windows</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"DotNetty.Buffers, Version=0.3.2.0, Culture=neutral, PublicKeyToken=e7a0210a354f294a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\DotNetty.Buffers-signed.0.3.2\\lib\\net45\\DotNetty.Buffers.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"DotNetty.Codecs, Version=0.3.2.0, Culture=neutral, PublicKeyToken=e7a0210a354f294a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\DotNetty.Codecs-signed.0.3.2\\lib\\net45\\DotNetty.Codecs.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"DotNetty.Codecs.Mqtt, Version=0.3.2.0, Culture=neutral, PublicKeyToken=e7a0210a354f294a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\DotNetty.Codecs.Mqtt-signed.0.3.2\\lib\\net45\\DotNetty.Codecs.Mqtt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"DotNetty.Common, Version=0.3.2.0, Culture=neutral, PublicKeyToken=e7a0210a354f294a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\DotNetty.Common-signed.0.3.2\\lib\\net45\\DotNetty.Common.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"DotNetty.Handlers, Version=0.3.2.0, Culture=neutral, PublicKeyToken=e7a0210a354f294a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\DotNetty.Handlers-signed.0.3.2\\lib\\net45\\DotNetty.Handlers.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"DotNetty.Transport, Version=0.3.2.0, Culture=neutral, PublicKeyToken=e7a0210a354f294a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\DotNetty.Transport-signed.0.3.2\\lib\\net45\\DotNetty.Transport.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Amqp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Azure.Amqp.1.1.5\\lib\\net451\\Microsoft.Azure.Amqp.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Devices.Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Azure.Devices.Client.1.1.4\\lib\\net45\\Microsoft.Azure.Devices.Client.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.Devices.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Azure.Devices.Shared.1.0.4\\lib\\net45\\Microsoft.Azure.Devices.Shared.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Azure.KeyVault.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Azure.KeyVault.Core.2.0.4\\lib\\net45\\Microsoft.Azure.KeyVault.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.Edm, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Data.Edm.5.8.1\\lib\\net40\\Microsoft.Data.Edm.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.OData, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Data.OData.5.8.1\\lib\\net40\\Microsoft.Data.OData.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Data.Services.Client, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Data.Services.Client.5.8.1\\lib\\net40\\Microsoft.Data.Services.Client.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\EnterpriseLibrary.TransientFaultHandling.6.0.1304.0\\lib\\portable-net45+win+wp8\\Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Microsoft.WindowsAzure.Storage, Version=7.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\WindowsAzure.Storage.7.2.1\\lib\\net40\\Microsoft.WindowsAzure.Storage.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Mono.Security.3.2.3.0\\lib\\net45\\Mono.Security.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Newtonsoft.Json.9.0.1\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PCLCrypto.2.0.147\\lib\\net45\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.BCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.BCrypt.0.3.152\\lib\\net40\\PInvoke.BCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Kernel32, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.Kernel32.0.3.152\\lib\\net40\\PInvoke.Kernel32.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.NCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.NCrypt.0.3.152\\lib\\net40\\PInvoke.NCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Windows.Core, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.Windows.Core.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.Windows.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Plugin.Settings, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xam.Plugins.Settings.2.5.1.0\\lib\\net45\\Plugin.Settings.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Plugin.Settings.Abstractions, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xam.Plugins.Settings.2.5.1.0\\lib\\net45\\Plugin.Settings.Abstractions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.AspNet.WebApi.Client.5.2.3\\lib\\net45\\System.Net.Http.Formatting.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Spatial, Version=5.8.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\System.Spatial.5.8.1\\lib\\net40\\System.Spatial.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Deployment\" />\n    <Reference Include=\"System.Drawing\" />\n    <Reference Include=\"System.Net.Http\" />\n    <Reference Include=\"System.Windows.Forms\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"Validation, Version=2.3.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Validation.2.3.7\\lib\\dotnet\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"ZXing.Net.Mobile.Core, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\portable-net45+netcore45+wpa81+wp8\\ZXing.Net.Mobile.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"zxing.portable, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\portable-net45+netcore45+wpa81+wp8\\zxing.portable.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"ZXingNetMobile, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\portable-net45+netcore45+wpa81+wp8\\ZXingNetMobile.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Form1.cs\">\n      <SubType>Form</SubType>\n    </Compile>\n    <Compile Include=\"Form1.Designer.cs\">\n      <DependentUpon>Form1.cs</DependentUpon>\n    </Compile>\n    <Compile Include=\"Helpers\\Settings.cs\" />\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <EmbeddedResource Include=\"Form1.resx\">\n      <DependentUpon>Form1.cs</DependentUpon>\n    </EmbeddedResource>\n    <EmbeddedResource Include=\"Properties\\Resources.resx\">\n      <Generator>ResXFileCodeGenerator</Generator>\n      <LastGenOutput>Resources.Designer.cs</LastGenOutput>\n      <SubType>Designer</SubType>\n    </EmbeddedResource>\n    <Compile Include=\"Properties\\Resources.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DependentUpon>Resources.resx</DependentUpon>\n      <DesignTime>True</DesignTime>\n    </Compile>\n    <None Include=\"packages.config\" />\n    <None Include=\"Properties\\Settings.settings\">\n      <Generator>SettingsSingleFileGenerator</Generator>\n      <LastGenOutput>Settings.Designer.cs</LastGenOutput>\n    </None>\n    <Compile Include=\"Properties\\Settings.Designer.cs\">\n      <AutoGen>True</AutoGen>\n      <DependentUpon>Settings.settings</DependentUpon>\n      <DesignTimeSharedInput>True</DesignTimeSharedInput>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Resources\\CTDLogoMedium.png\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\XamarinSimulatedSensors\\XamarinSimulatedSensors.csproj\">\n      <Project>{BB40B36F-BAF9-45E1-B333-352771318E9F}</Project>\n      <Name>XamarinSimulatedSensors</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.Windows/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"DotNetty.Buffers-signed\" version=\"0.3.2\" targetFramework=\"net452\" />\n  <package id=\"DotNetty.Codecs.Mqtt-signed\" version=\"0.3.2\" targetFramework=\"net452\" />\n  <package id=\"DotNetty.Codecs-signed\" version=\"0.3.2\" targetFramework=\"net452\" />\n  <package id=\"DotNetty.Common-signed\" version=\"0.3.2\" targetFramework=\"net452\" />\n  <package id=\"DotNetty.Handlers-signed\" version=\"0.3.2\" targetFramework=\"net452\" />\n  <package id=\"DotNetty.Transport-signed\" version=\"0.3.2\" targetFramework=\"net452\" />\n  <package id=\"EnterpriseLibrary.TransientFaultHandling\" version=\"6.0.1304.0\" targetFramework=\"net452\" />\n  <package id=\"Microsoft.AspNet.WebApi.Client\" version=\"5.2.3\" targetFramework=\"net452\" />\n  <package id=\"Microsoft.Azure.Amqp\" version=\"1.1.5\" targetFramework=\"net452\" />\n  <package id=\"Microsoft.Azure.Devices.Client\" version=\"1.1.4\" targetFramework=\"net452\" />\n  <package id=\"Microsoft.Azure.Devices.Shared\" version=\"1.0.4\" targetFramework=\"net452\" />\n  <package id=\"Microsoft.Azure.KeyVault.Core\" version=\"2.0.4\" targetFramework=\"net452\" />\n  <package id=\"Microsoft.Data.Edm\" version=\"5.8.1\" targetFramework=\"net452\" />\n  <package id=\"Microsoft.Data.OData\" version=\"5.8.1\" targetFramework=\"net452\" />\n  <package id=\"Microsoft.Data.Services.Client\" version=\"5.8.1\" targetFramework=\"net452\" />\n  <package id=\"Mono.Security\" version=\"3.2.3.0\" targetFramework=\"net452\" />\n  <package id=\"Newtonsoft.Json\" version=\"9.0.1\" targetFramework=\"net452\" />\n  <package id=\"PCLCrypto\" version=\"2.0.147\" targetFramework=\"net452\" />\n  <package id=\"PInvoke.BCrypt\" version=\"0.3.152\" targetFramework=\"net452\" />\n  <package id=\"PInvoke.Kernel32\" version=\"0.3.152\" targetFramework=\"net452\" />\n  <package id=\"PInvoke.NCrypt\" version=\"0.3.152\" targetFramework=\"net452\" />\n  <package id=\"PInvoke.Windows.Core\" version=\"0.3.152\" targetFramework=\"net452\" />\n  <package id=\"System.Spatial\" version=\"5.8.1\" targetFramework=\"net452\" />\n  <package id=\"Validation\" version=\"2.3.7\" targetFramework=\"net452\" />\n  <package id=\"WindowsAzure.Storage\" version=\"7.2.1\" targetFramework=\"net452\" />\n  <package id=\"Xam.Plugins.Settings\" version=\"2.5.1.0\" targetFramework=\"net452\" />\n  <package id=\"ZXing.Net.Mobile\" version=\"2.1.47\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/AppDelegate.cs",
    "content": "﻿using Foundation;\nusing UIKit;\n\nnamespace XamarinSimulatedSensors.iOS\n{\n\t// The UIApplicationDelegate for the application. This class is responsible for launching the\n\t// User Interface of the application, as well as listening (and optionally responding) to application events from iOS.\n\t[Register (\"AppDelegate\")]\n\tpublic class AppDelegate : UIApplicationDelegate\n\t{\n\t\t// class-level declarations\n\n\t\tpublic override UIWindow Window {\n\t\t\tget;\n\t\t\tset;\n\t\t}\n\n\t\tpublic override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions)\n\t\t{\n\t\t\t// Override point for customization after application launch.\n\t\t\t// If not required for your application you can safely delete this method\n\t\t\treturn true;\n\t\t}\n\n\t\tpublic override void OnResignActivation (UIApplication application)\n\t\t{\n\t\t\t// Invoked when the application is about to move from active to inactive state.\n\t\t\t// This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) \n\t\t\t// or when the user quits the application and it begins the transition to the background state.\n\t\t\t// Games should use this method to pause the game.\n\t\t}\n\n\t\tpublic override void DidEnterBackground (UIApplication application)\n\t\t{\n\t\t\t// Use this method to release shared resources, save user data, invalidate timers and store the application state.\n\t\t\t// If your application supports background exection this method is called instead of WillTerminate when the user quits.\n\t\t}\n\n\t\tpublic override void WillEnterForeground (UIApplication application)\n\t\t{\n\t\t\t// Called as part of the transiton from background to active state.\n\t\t\t// Here you can undo many of the changes made on entering the background.\n\t\t}\n\n\t\tpublic override void OnActivated (UIApplication application)\n\t\t{\n\t\t\t// Restart any tasks that were paused (or not yet started) while the application was inactive. \n\t\t\t// If the application was previously in the background, optionally refresh the user interface.\n\t\t}\n\n\t\tpublic override void WillTerminate (UIApplication application)\n\t\t{\n\t\t\t// Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground.\n\t\t}\n\t}\n}\n\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Entitlements.plist",
    "content": "﻿<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Helpers/Settings.cs",
    "content": "/*\n// Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it.\nusing Plugin.Settings;\nusing Plugin.Settings.Abstractions;\n\nnamespace XamarinSimulatedSensors.iOS.Helpers\n{\n  /// <summary>\n  /// This is the Settings static class that can be used in your Core solution or in any\n  /// of your client applications. All settings are laid out the same exact way with getters\n  /// and setters. \n  /// </summary>\n  public static class Settings\n  {\n    private static ISettings AppSettings\n    {\n      get\n      {\n        return CrossSettings.Current;\n      }\n    }\n\n    #region Setting Constants\n\n    private const string SettingsKey = \"settings_key\";\n    private static readonly string SettingsDefault = string.Empty;\n\n    #endregion\n\n\n    public static string GeneralSettings\n    {\n      get\n      {\n        return AppSettings.GetValueOrDefault<string>(SettingsKey, SettingsDefault);\n      }\n      set\n      {\n        AppSettings.AddOrUpdateValue<string>(SettingsKey, value);\n      }\n    }\n\n  }\n}*/"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Info.plist",
    "content": "﻿<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDisplayName</key>\n\t<string>XamarinSimulatedSensors.iOS</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>com.your-company.XamarinSimulatedSensors.iOS</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1.0</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>MinimumOSVersion</key>\n\t<string>8.1</string>\n\t<key>UIDeviceFamily</key>\n\t<array>\n\t\t<integer>1</integer>\n\t\t<integer>2</integer>\n\t</array>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIMainStoryboardFile~ipad</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>XSAppIconAssets</key>\n\t<string>Resources/Images.xcassets/AppIcons.appiconset</string>\n\t<key>XSLaunchImageAssets</key>\n\t<string>Resources/Images.xcassets/LaunchImage.launchimage</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Main.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nusing Foundation;\nusing UIKit;\n\nnamespace XamarinSimulatedSensors.iOS\n{\n\tpublic class Application\n\t{\n\t\t// This is the main entry point of the application.\n\t\tstatic void Main (string[] args)\n\t\t{\n\t\t\t// if you want to use a different Application Delegate class from \"AppDelegate\"\n\t\t\t// you can specify it here.\n\t\t\tUIApplication.Main (args, null, \"AppDelegate\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"6750\" systemVersion=\"14C109\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"6735\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"ViewController\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"y3c-jy-aDJ\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"wfy-db-euE\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" id=\"3\" translatesAutoresizingMaskIntoConstraints=\"NO\" image=\"CTDLogoMedium.png\" preservesSuperviewLayoutMargins=\"YES\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"85\" y=\"41\" width=\"428\" height=\"213\"/>\n                                <constraints>\n                                    <constraint id=\"97\" firstAttribute=\"width\" secondItem=\"3\" secondAttribute=\"height\" multiplier=\"428:213\"/>\n                                </constraints>\n                            </imageView>\n                            <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"6\" translatesAutoresizingMaskIntoConstraints=\"NO\" text=\"Temperature\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"39\" y=\"418\" width=\"522\" height=\"43\"/>\n                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" cocoaTouchSystemColor=\"lightTextColor\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" text=\"Display Name\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"8\" translatesAutoresizingMaskIntoConstraints=\"NO\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"38\" y=\"256\" width=\"524\" height=\"21\"/>\n                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" cocoaTouchSystemColor=\"lightTextColor\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" minimumFontSize=\"17\" id=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"39\" y=\"285\" width=\"524\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\"/>\n                            </textField>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" minimumFontSize=\"17\" id=\"10\" translatesAutoresizingMaskIntoConstraints=\"NO\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"37\" y=\"358\" width=\"524\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\"/>\n                                <connections>\n                                    <action selector=\"TextConnectionString_ValueChanged:\" destination=\"BYZ-38-t0r\" id=\"110\" eventType=\"valueChanged\"/>\n                                </connections>\n                            </textField>\n                            <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" text=\"Connection String\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"11\" translatesAutoresizingMaskIntoConstraints=\"NO\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"39\" y=\"329\" width=\"524\" height=\"21\"/>\n                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" cocoaTouchSystemColor=\"lightTextColor\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" lineBreakMode=\"tailTruncation\" minimumFontSize=\"10\" id=\"12\" translatesAutoresizingMaskIntoConstraints=\"NO\" text=\"Humidity\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"39\" y=\"482\" width=\"522\" height=\"43\"/>\n                                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" cocoaTouchSystemColor=\"lightTextColor\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <slider opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" value=\"0.5\" minValue=\"0.0\" maxValue=\"1\" id=\"13\" translatesAutoresizingMaskIntoConstraints=\"NO\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"37\" y=\"511\" width=\"526\" height=\"31\"/>\n                            </slider>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" id=\"14\" translatesAutoresizingMaskIntoConstraints=\"NO\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"37\" y=\"399\" width=\"524\" height=\"30\"/>\n                                <state key=\"normal\" title=\"Connect The Dots\">\n                                    <color key=\"titleShadowColor\" white=\"0.5\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                </state>\n                            </button>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" id=\"33\" translatesAutoresizingMaskIntoConstraints=\"NO\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"39\" y=\"556\" width=\"523\" height=\"30\"/>\n                                <state key=\"normal\" title=\"Send telemetry data\">\n                                    <color key=\"titleShadowColor\" white=\"0.5\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                </state>\n                            </button>\n                            <slider opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" value=\"0.5\" minValue=\"0.0\" maxValue=\"1\" id=\"114\" translatesAutoresizingMaskIntoConstraints=\"NO\" misplaced=\"YES\">\n                                <rect key=\"frame\" x=\"38\" y=\"457\" width=\"523\" height=\"31\"/>\n                            </slider>\n                        </subviews>\n                        <color key=\"backgroundColor\" colorSpace=\"calibratedRGB\" red=\"0.2\" green=\"0.2\" blue=\"0.2\" alpha=\"1\"/>\n                        <constraints>\n                            <constraint id=\"65\" firstItem=\"9\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"39\"/>\n                            <constraint id=\"66\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"9\" secondAttribute=\"trailing\" constant=\"37\"/>\n                            <constraint id=\"67\" firstItem=\"8\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"38\"/>\n                            <constraint id=\"68\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"8\" secondAttribute=\"trailing\" constant=\"38\"/>\n                            <constraint id=\"69\" firstItem=\"11\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"39\"/>\n                            <constraint id=\"70\" firstItem=\"10\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"37\"/>\n                            <constraint id=\"71\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"10\" secondAttribute=\"trailing\" constant=\"39\"/>\n                            <constraint id=\"78\" firstItem=\"12\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"39\"/>\n                            <constraint id=\"79\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"12\" secondAttribute=\"trailing\" constant=\"39\"/>\n                            <constraint id=\"82\" firstItem=\"33\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"39\"/>\n                            <constraint id=\"83\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"33\" secondAttribute=\"trailing\" constant=\"38\"/>\n                            <constraint id=\"84\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"6\" secondAttribute=\"trailing\" constant=\"39\"/>\n                            <constraint id=\"85\" firstItem=\"6\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"39\"/>\n                            <constraint id=\"95\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"3\" secondAttribute=\"trailing\" constant=\"87\"/>\n                            <constraint id=\"96\" firstItem=\"3\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"85\"/>\n                            <constraint id=\"98\" firstItem=\"14\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"37\"/>\n                            <constraint id=\"99\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"14\" secondAttribute=\"trailing\" constant=\"39\"/>\n                            <constraint id=\"103\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"11\" secondAttribute=\"trailing\" constant=\"37\"/>\n                            <constraint id=\"108\" firstItem=\"13\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"38\"/>\n                            <constraint id=\"109\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"13\" secondAttribute=\"trailing\" constant=\"38\"/>\n                            <constraint id=\"115\" firstItem=\"8bC-Xf-vdC\" firstAttribute=\"trailing\" secondItem=\"114\" secondAttribute=\"trailing\" constant=\"39\"/>\n                            <constraint id=\"116\" firstItem=\"114\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" constant=\"38\"/>\n                        </constraints>\n                    </view>\n                    <connections>\n                        <outlet property=\"lblTemperature\" destination=\"6\" id=\"name-outlet-6\"/>\n                        <outlet property=\"textDisplayName\" destination=\"9\" id=\"name-outlet-9\"/>\n                        <outlet property=\"lblConnectionString\" destination=\"11\" id=\"name-outlet-11\"/>\n                        <outlet property=\"textConnectionString\" destination=\"10\" id=\"name-outlet-10\"/>\n                        <outlet property=\"buttonConnect\" destination=\"14\" id=\"name-outlet-14\"/>\n                        <outlet property=\"lblHumidity\" destination=\"12\" id=\"name-outlet-12\"/>\n                        <outlet property=\"sliderHumidity\" destination=\"13\" id=\"name-outlet-13\"/>\n                        <outlet property=\"buttonSend\" destination=\"33\" id=\"name-outlet-33\"/>\n                        <outlet property=\"sliderTemperature\" destination=\"114\" id=\"name-outlet-114\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"0.0\" y=\"0.0\"/>\n        </scene>\n    </scenes>\n    <resources>\n        <image name=\"CTDLogoMedium.png\" width=\"486\" height=\"236\"/>\n    </resources>\n</document>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/AppIcons.appiconset/Contents.json",
    "content": "{\n  \"images\": [\n    {\n      \"scale\": \"1x\",\n      \"size\": \"29x29\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Icon-Small.png\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"29x29\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Icon-Small@2x.png\"\n    },\n    {\n      \"scale\": \"3x\",\n      \"size\": \"29x29\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Icon-Small@3x.png\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"40x40\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Icon-Small-40@2x.png\"\n    },\n    {\n      \"scale\": \"3x\",\n      \"size\": \"40x40\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Icon-Small-40@3x.png\"\n    },\n    {\n      \"scale\": \"1x\",\n      \"size\": \"57x57\",\n      \"idiom\": \"iphone\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"57x57\",\n      \"idiom\": \"iphone\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"60x60\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Icon-60@2x.png\"\n    },\n    {\n      \"scale\": \"3x\",\n      \"size\": \"60x60\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Icon-60@3x.png\"\n    },\n    {\n      \"scale\": \"1x\",\n      \"size\": \"29x29\",\n      \"idiom\": \"ipad\",\n      \"filename\": \"Icon-Small.png\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"29x29\",\n      \"idiom\": \"ipad\",\n      \"filename\": \"Icon-Small@2x.png\"\n    },\n    {\n      \"scale\": \"1x\",\n      \"size\": \"40x40\",\n      \"idiom\": \"ipad\",\n      \"filename\": \"Icon-Small-40.png\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"40x40\",\n      \"idiom\": \"ipad\",\n      \"filename\": \"Icon-Small-40@2x.png\"\n    },\n    {\n      \"scale\": \"1x\",\n      \"size\": \"50x50\",\n      \"idiom\": \"ipad\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"50x50\",\n      \"idiom\": \"ipad\"\n    },\n    {\n      \"scale\": \"1x\",\n      \"size\": \"72x72\",\n      \"idiom\": \"ipad\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"72x72\",\n      \"idiom\": \"ipad\"\n    },\n    {\n      \"scale\": \"1x\",\n      \"size\": \"76x76\",\n      \"idiom\": \"ipad\",\n      \"filename\": \"Icon-76.png\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"size\": \"76x76\",\n      \"idiom\": \"ipad\",\n      \"filename\": \"Icon-76@2x.png\"\n    }\n  ],\n  \"properties\": {},\n  \"info\": {\n    \"version\": 1,\n    \"author\": \"xcode\"\n  }\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/Images.imageset/Contents.json",
    "content": "{\n  \"images\": [\n    {\n      \"scale\": \"1x\",\n      \"idiom\": \"universal\",\n      \"filename\": \"CTDLogoMedium.png\"\n    },\n    {\n      \"scale\": \"2x\",\n      \"idiom\": \"universal\"\n    },\n    {\n      \"scale\": \"3x\",\n      \"idiom\": \"universal\"\n    }\n  ],\n  \"properties\": {\n    \"template-rendering-intent\": \"\"\n  },\n  \"info\": {\n    \"version\": 1,\n    \"author\": \"\"\n  }\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json",
    "content": "{\n  \"images\": [\n    {\n      \"orientation\": \"portrait\",\n      \"extent\": \"full-screen\",\n      \"scale\": \"1x\",\n      \"size\": \"320x480\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Default.png\"\n    },\n    {\n      \"orientation\": \"portrait\",\n      \"extent\": \"full-screen\",\n      \"scale\": \"2x\",\n      \"size\": \"640x960\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Default@2x.png\"\n    },\n    {\n      \"orientation\": \"portrait\",\n      \"extent\": \"full-screen\",\n      \"subtype\": \"retina4\",\n      \"scale\": \"2x\",\n      \"size\": \"640x1136\",\n      \"idiom\": \"iphone\",\n      \"filename\": \"Default-568h@2x.png\"\n    },\n    {\n      \"orientation\": \"portrait\",\n      \"extent\": \"full-screen\",\n      \"scale\": \"1x\",\n      \"size\": \"768x1024\",\n      \"idiom\": \"ipad\",\n      \"filename\": \"Default-Portrait.png\"\n    },\n    {\n      \"orientation\": \"portrait\",\n      \"extent\": \"full-screen\",\n      \"scale\": \"2x\",\n      \"size\": \"1536x2048\",\n      \"idiom\": \"ipad\",\n      \"filename\": \"Default-Portrait@2x.png\"\n    }\n  ],\n  \"properties\": {},\n  \"info\": {\n    \"version\": 1,\n    \"author\": \"xcode\"\n  }\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/Resources/LaunchScreen.storyboard",
    "content": "﻿<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"6245\" systemVersion=\"13F34\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" initialViewController=\"X5k-f2-b5h\">\n\t<dependencies>\n\t\t<plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"6238\" />\n\t</dependencies>\n\t<scenes>\n\t\t<!--View Controller-->\n\t\t<scene sceneID=\"gAE-YM-kbH\">\n\t\t\t<objects>\n\t\t\t\t<viewController id=\"X5k-f2-b5h\" sceneMemberID=\"viewController\">\n\t\t\t\t\t<layoutGuides>\n\t\t\t\t\t\t<viewControllerLayoutGuide type=\"top\" id=\"Y8P-hJ-Z43\" />\n\t\t\t\t\t\t<viewControllerLayoutGuide type=\"bottom\" id=\"9ZL-r4-8FZ\" />\n\t\t\t\t\t</layoutGuides>\n\t\t\t\t\t<view key=\"view\" contentMode=\"scaleToFill\" id=\"yd7-JS-zBw\">\n\t\t\t\t\t\t<rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"600\" height=\"600\" />\n\t\t\t\t\t\t<autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\" />\n\t\t\t\t\t\t<subviews>\n\t\t\t\t\t\t\t<imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" misplaced=\"YES\" image=\"Icon-60.png\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"23\">\n\t\t\t\t\t\t\t\t<rect key=\"frame\" x=\"270\" y=\"270\" width=\"60\" height=\"60\" />\n\t\t\t\t\t\t\t\t<rect key=\"contentStretch\" x=\"0.0\" y=\"0.0\" width=\"0.0\" height=\"0.0\" />\n\t\t\t\t\t\t\t</imageView>\n\t\t\t\t\t\t</subviews>\n\t\t\t\t\t\t<color key=\"backgroundColor\" red=\"0.20392156862745098\" green=\"0.59607843137254901\" blue=\"0.85882352941176465\" alpha=\"1\" colorSpace=\"calibratedRGB\" />\n\t\t\t\t\t\t<constraints>\n\t\t\t\t\t\t\t<constraint firstItem=\"23\" firstAttribute=\"centerY\" secondItem=\"yd7-JS-zBw\" secondAttribute=\"centerY\" priority=\"1\" id=\"39\" />\n\t\t\t\t\t\t\t<constraint firstItem=\"23\" firstAttribute=\"centerX\" secondItem=\"yd7-JS-zBw\" secondAttribute=\"centerX\" priority=\"1\" id=\"41\" />\n\t\t\t\t\t\t</constraints>\n\t\t\t\t\t</view>\n\t\t\t\t</viewController>\n\t\t\t\t<placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"XAI-xm-WK6\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\" />\n\t\t\t</objects>\n\t\t\t<point key=\"canvasLocation\" x=\"349\" y=\"339\" />\n\t\t</scene>\n\t</scenes>\n\t<resources>\n\t\t<image name=\"Icon-60.png\" width=\"180\" height=\"180\" />\n\t</resources>\n</document>\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/ViewController.cs",
    "content": "﻿using System;\n\nusing UIKit;\n\nnamespace XamarinSimulatedSensors.iOS\n{\n\tpublic partial class ViewController : UIViewController\n\t{\n        MyClass Device;\n\n\t\tpublic ViewController (IntPtr handle) : base (handle)\n\t\t{\n\t\t}\n\n\t\tpublic override void ViewDidLoad ()\n\t\t{\n\t\t\tbase.ViewDidLoad ();\n            // Perform any additional setup after loading the view, typically from a nib.\n            Device = new MyClass();\n\n            // If you are developing and want to avoid having to enter the full connection string on the device,\n            // you can temporarily hard code it here. Comment this when done!\n            //Device.DisplayName = \"[DisplayName]\";\n            //Device.ConnectionString = \"[ConnectionString]\";\n\n            buttonConnect.Enabled = false;\n            buttonConnect.TouchUpInside += ButtonConnect_TouchUpInside;\n\n            buttonSend.Enabled = false;\n            buttonSend.TouchUpInside += ButtonSend_TouchUpInside;\n\n            textDisplayName.EditingDidEnd += TextDisplayName_EditingDidEnd;\n            textDisplayName.Text = Device.DisplayName;\n\n            textConnectionString.EditingDidEnd += TextConnectionString_EditingDidEnd;\n            textConnectionString.Text = Device.ConnectionString;\n\n            buttonConnect.Enabled = Device.checkConfig();\n\n            sliderTemperature.MinValue = 0;\n            sliderTemperature.MaxValue = 100;\n            sliderTemperature.ValueChanged += SliderTemperature_ValueChanged;\n            sliderTemperature.Value = 50;\n\n            sliderHumidity.MinValue = 0;\n            sliderHumidity.MaxValue = 100;\n            sliderHumidity.ValueChanged += SliderHumidity_ValueChanged;\n            sliderHumidity.Value = 50;         \n\n\t\t}\n\n\n        private void SliderHumidity_ValueChanged(object sender, EventArgs e)\n        {\n            lblHumidity.Text = \"Humidity: \" + sliderHumidity.Value.ToString();\n            Device.UpdateSensorData(\"Humidity\", sliderHumidity.Value);\n        }\n\n        private void SliderTemperature_ValueChanged(object sender, EventArgs e)\n        {\n            lblTemperature.Text = \"Temperature: \" + sliderTemperature.Value.ToString();\n            Device.UpdateSensorData(\"Temperature\", sliderTemperature.Value);\n        }\n\n        private void TextConnectionString_EditingDidEnd(object sender, EventArgs e)\n        {\n            Device.ConnectionString = textConnectionString.Text;\n            buttonConnect.Enabled = Device.checkConfig();\n        }\n\n        private void TextDisplayName_EditingDidEnd(object sender, EventArgs e)\n        {\n            Device.DisplayName = textDisplayName.Text;\n            buttonConnect.Enabled = Device.checkConfig();\n        }\n\n        private void ButtonSend_TouchUpInside(object sender, EventArgs e)\n        {\n            if (Device.SendTelemetryData)\n            {\n                Device.SendTelemetryData = false;\n                buttonSend.SetTitle(\"Press to send telemetry data\", UIControlState.Normal);\n            }\n            else\n            {\n                Device.SendTelemetryData = true;\n                buttonSend.SetTitle(\"Sending telemetry data\", UIControlState.Normal);\n            }\n        }\n\n        private void ButtonConnect_TouchUpInside(object sender, EventArgs e)\n        {\n            if (Device.IsConnected)\n            {\n                Device.SendTelemetryData = false;\n                if (Device.Disconnect())\n                {\n                    buttonSend.Enabled = false;\n                    textDisplayName.Enabled = true;\n                    textConnectionString.Enabled = true;\n                    buttonConnect.SetTitle(\"Press to connect the dots\", UIControlState.Normal);\n                }\n            }\n            else\n            {\n                if (Device.Connect())\n                {\n                    buttonSend.Enabled = true;\n                    textDisplayName.Enabled = false;\n                    textConnectionString.Enabled = false;\n                    buttonConnect.SetTitle(\"Dots connected\", UIControlState.Normal);\n\n                }\n            }\n\n        }\n\n        public override void DidReceiveMemoryWarning ()\n\t\t{\n\t\t\tbase.DidReceiveMemoryWarning ();\n\t\t\t// Release any cached data, images, etc that aren't in use.\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/ViewController.designer.cs",
    "content": "﻿// WARNING\n//\n// This file has been generated automatically by Xamarin Studio from the outlets and\n// actions declared in your storyboard file.\n// Manual changes to this file will not be maintained.\n//\nusing Foundation;\nusing System;\nusing System.CodeDom.Compiler;\nusing UIKit;\n\nnamespace XamarinSimulatedSensors.iOS\n{\n    [Register (\"ViewController\")]\n    partial class ViewController\n    {\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UIButton buttonConnect { get; set; }\n\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UIButton buttonSend { get; set; }\n\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UILabel lblConnectionString { get; set; }\n\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UILabel lblHumidity { get; set; }\n\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UILabel lblTemperature { get; set; }\n\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UISlider sliderHumidity { get; set; }\n\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UISlider sliderTemperature { get; set; }\n\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UITextField textConnectionString { get; set; }\n\n        [Outlet]\n        [GeneratedCode (\"iOS Designer\", \"1.0\")]\n        UIKit.UITextField textDisplayName { get; set; }\n\n        void ReleaseDesignerOutlets ()\n        {\n            if (buttonConnect != null) {\n                buttonConnect.Dispose ();\n                buttonConnect = null;\n            }\n\n            if (buttonSend != null) {\n                buttonSend.Dispose ();\n                buttonSend = null;\n            }\n\n            if (lblConnectionString != null) {\n                lblConnectionString.Dispose ();\n                lblConnectionString = null;\n            }\n\n            if (lblHumidity != null) {\n                lblHumidity.Dispose ();\n                lblHumidity = null;\n            }\n\n            if (lblTemperature != null) {\n                lblTemperature.Dispose ();\n                lblTemperature = null;\n            }\n\n            if (sliderHumidity != null) {\n                sliderHumidity.Dispose ();\n                sliderHumidity = null;\n            }\n\n            if (sliderTemperature != null) {\n                sliderTemperature.Dispose ();\n                sliderTemperature = null;\n            }\n\n            if (textConnectionString != null) {\n                textConnectionString.Dispose ();\n                textConnectionString = null;\n            }\n\n            if (textDisplayName != null) {\n                textDisplayName.Dispose ();\n                textDisplayName = null;\n            }\n        }\n    }\n}"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/XamarinSimulatedSensors.iOS.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">iPhoneSimulator</Platform>\n    <ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>\n    <ProjectGuid>{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <RootNamespace>XamarinSimulatedSensors.iOS</RootNamespace>\n    <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>\n    <AssemblyName>XamarinSimulatedSensorsiOS</AssemblyName>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\iPhoneSimulator\\Debug</OutputPath>\n    <DefineConstants>DEBUG;</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <ConsolePause>false</ConsolePause>\n    <MtouchArch>i386</MtouchArch>\n    <MtouchLink>None</MtouchLink>\n    <MtouchDebug>true</MtouchDebug>\n    <MtouchProfiling>true</MtouchProfiling>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|iPhone' \">\n    <DebugType>full</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\iPhone\\Release</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>\n    <MtouchArch>ARMv7, ARM64</MtouchArch>\n    <ConsolePause>false</ConsolePause>\n    <CodesignKey>iPhone Developer</CodesignKey>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' \">\n    <DebugType>full</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\iPhoneSimulator\\Release</OutputPath>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <MtouchArch>i386</MtouchArch>\n    <ConsolePause>false</ConsolePause>\n    <MtouchLink>None</MtouchLink>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|iPhone' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\iPhone\\Debug</OutputPath>\n    <DefineConstants>DEBUG;</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n    <ConsolePause>false</ConsolePause>\n    <MtouchArch>ARMv7, ARM64</MtouchArch>\n    <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>\n    <MtouchProfiling>true</MtouchProfiling>\n    <CodesignKey>iPhone Developer</CodesignKey>\n    <MtouchDebug>true</MtouchDebug>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Devices.Client.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Microsoft.Azure.Devices.Client.1.1.4\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Client.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=2.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PCLCrypto.2.0.147\\lib\\xamarinios10\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.BCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.BCrypt.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.BCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Kernel32, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.Kernel32.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.Kernel32.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.NCrypt, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.NCrypt.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.NCrypt.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PInvoke.Windows.Core, Version=0.3.0.0, Culture=neutral, PublicKeyToken=9e300f9f87f04a7a, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\PInvoke.Windows.Core.0.3.152\\lib\\portable-net45+win+wpa81+MonoAndroid10+xamarinios10+MonoTouch10\\PInvoke.Windows.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Plugin.Settings, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xam.Plugins.Settings.2.5.1.0\\lib\\Xamarin.iOS10\\Plugin.Settings.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Plugin.Settings.Abstractions, Version=2.5.1.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Xam.Plugins.Settings.2.5.1.0\\lib\\Xamarin.iOS10\\Plugin.Settings.Abstractions.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"Validation, Version=2.3.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Validation.2.3.7\\lib\\dotnet\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Xamarin.iOS\" />\n    <Reference Include=\"ZXing.Net.Mobile.Core, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\Xamarin.iOS10\\ZXing.Net.Mobile.Core.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"zxing.portable, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\Xamarin.iOS10\\zxing.portable.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"ZXingNetMobile, Version=2.1.47.0, Culture=neutral, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\ZXing.Net.Mobile.2.1.47\\lib\\Xamarin.iOS10\\ZXingNetMobile.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\XamarinSimulatedSensors\\XamarinSimulatedSensors.csproj\">\n      <Name>XamarinSimulatedSensors</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-60@2x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-60@3x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-76.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-76@2x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40@2x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-Small-40@3x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-Small.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@2x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/AppIcons.appiconset/Icon-Small@3x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/Images.imageset/Contents.json\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/Images.imageset/CTDLogoMedium.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/LaunchImage.launchimage/Default-Portrait.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/LaunchImage.launchimage/Default.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources/Images.xcassets/LaunchImage.launchimage/Default@2x.png\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources\\Images.xcassets\\AppIcons.appiconset\\Contents.json\">\n      <InProject>false</InProject>\n    </ImageAsset>\n    <ImageAsset Include=\"Resources\\Images.xcassets\\LaunchImage.launchimage\\Contents.json\">\n      <InProject>false</InProject>\n    </ImageAsset>\n  </ItemGroup>\n  <ItemGroup>\n    <ITunesArtwork Include=\"Resources\\ITunesArtwork\" />\n    <ITunesArtwork Include=\"Resources\\ITunesArtwork%402x\" />\n  </ItemGroup>\n  <ItemGroup>\n    <InterfaceDefinition Include=\"Resources\\LaunchScreen.storyboard\" />\n    <InterfaceDefinition Include=\"Main.storyboard\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"app.config\" />\n    <None Include=\"Info.plist\" />\n    <None Include=\"Entitlements.plist\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Helpers\\Settings.cs\" />\n    <Compile Include=\"Main.cs\" />\n    <Compile Include=\"AppDelegate.cs\" />\n    <Compile Include=\"ViewController.cs\" />\n    <Compile Include=\"ViewController.designer.cs\">\n      <DependentUpon>ViewController.cs</DependentUpon>\n    </Compile>\n  </ItemGroup>\n  <ItemGroup>\n    <BundleResource Include=\"CTDLogoMedium.png\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildExtensionsPath)\\Xamarin\\iOS\\Xamarin.iOS.CSharp.targets\" />\n</Project>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/app.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n      <dependentAssembly>\n        <assemblyIdentity name=\"Newtonsoft.Json\" publicKeyToken=\"30ad4fe6b2a6aeed\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-9.0.0.0\" newVersion=\"9.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"PCLCrypto\" publicKeyToken=\"d4421c8a4786956c\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.0.0.0\" newVersion=\"2.0.0.0\" />\n      </dependentAssembly>\n      <dependentAssembly>\n        <assemblyIdentity name=\"Validation\" publicKeyToken=\"2fc06f0d701809a7\" culture=\"neutral\" />\n        <bindingRedirect oldVersion=\"0.0.0.0-2.3.0.0\" newVersion=\"2.3.0.0\" />\n      </dependentAssembly>\n    </assemblyBinding>\n  </runtime>\n</configuration>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors/XamarinSimulatedSensors.iOS/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Azure.Devices.Client\" version=\"1.1.4\" targetFramework=\"xamarinios10\" />\n  <package id=\"PCLCrypto\" version=\"2.0.147\" targetFramework=\"xamarinios10\" />\n  <package id=\"PInvoke.BCrypt\" version=\"0.3.152\" targetFramework=\"xamarinios10\" />\n  <package id=\"PInvoke.Kernel32\" version=\"0.3.152\" targetFramework=\"xamarinios10\" />\n  <package id=\"PInvoke.NCrypt\" version=\"0.3.152\" targetFramework=\"xamarinios10\" />\n  <package id=\"PInvoke.Windows.Core\" version=\"0.3.152\" targetFramework=\"xamarinios10\" />\n  <package id=\"Validation\" version=\"2.3.7\" targetFramework=\"xamarinios10\" />\n  <package id=\"Xam.Plugins.Settings\" version=\"2.5.1.0\" targetFramework=\"xamarinios10\" />\n  <package id=\"ZXing.Net.Mobile\" version=\"2.1.47\" targetFramework=\"xamarinios10\" />\n</packages>"
  },
  {
    "path": "Devices/DirectlyConnectedDevices/XamarinSimulatedSensors/XamarinSimulatedSensors.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 14\nVisualStudioVersion = 14.0.25420.1\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"XamarinSimulatedSensors.Droid\", \"XamarinSimulatedSensors\\XamarinSimulatedSensors.Droid\\XamarinSimulatedSensors.Droid.csproj\", \"{AFFF3566-8874-4B77-8697-A8BC6F38D891}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"XamarinSimulatedSensors.iOS\", \"XamarinSimulatedSensors\\XamarinSimulatedSensors.iOS\\XamarinSimulatedSensors.iOS.csproj\", \"{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"XamarinSimulatedSensors\", \"XamarinSimulatedSensors\\XamarinSimulatedSensors\\XamarinSimulatedSensors.csproj\", \"{BB40B36F-BAF9-45E1-B333-352771318E9F}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"XamarinSimulatedSensors.Windows\", \"XamarinSimulatedSensors\\XamarinSimulatedSensors.Windows\\XamarinSimulatedSensors.Windows.csproj\", \"{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|ARM = Debug|ARM\n\t\tDebug|iPhone = Debug|iPhone\n\t\tDebug|iPhoneSimulator = Debug|iPhoneSimulator\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|ARM = Release|ARM\n\t\tRelease|iPhone = Release|iPhone\n\t\tRelease|iPhoneSimulator = Release|iPhoneSimulator\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|Any CPU.Deploy.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|ARM.ActiveCfg = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|ARM.Build.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|ARM.Deploy.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|iPhone.ActiveCfg = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|iPhone.Build.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|iPhone.Deploy.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Debug|x86.Deploy.0 = Debug|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|Any CPU.Deploy.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|ARM.ActiveCfg = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|ARM.Build.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|ARM.Deploy.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|iPhone.ActiveCfg = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|iPhone.Build.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|iPhone.Deploy.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|iPhoneSimulator.Build.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|x86.Build.0 = Release|Any CPU\n\t\t{AFFF3566-8874-4B77-8697-A8BC6F38D891}.Release|x86.Deploy.0 = Release|Any CPU\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Debug|Any CPU.ActiveCfg = Debug|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Debug|ARM.ActiveCfg = Debug|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Debug|iPhone.ActiveCfg = Debug|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Debug|iPhone.Build.0 = Debug|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Debug|x86.ActiveCfg = Debug|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Release|Any CPU.ActiveCfg = Release|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Release|ARM.ActiveCfg = Release|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Release|iPhone.ActiveCfg = Release|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Release|iPhone.Build.0 = Release|iPhone\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator\n\t\t{51B8CECA-29C8-4323-9C8F-7AA3A98E7381}.Release|x86.ActiveCfg = Release|iPhone\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|ARM.ActiveCfg = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|ARM.Build.0 = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|iPhone.ActiveCfg = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|iPhone.Build.0 = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|ARM.ActiveCfg = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|ARM.Build.0 = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|iPhone.ActiveCfg = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|iPhone.Build.0 = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|iPhoneSimulator.Build.0 = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{BB40B36F-BAF9-45E1-B333-352771318E9F}.Release|x86.Build.0 = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|ARM.ActiveCfg = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|ARM.Build.0 = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|iPhone.ActiveCfg = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|iPhone.Build.0 = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|ARM.ActiveCfg = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|ARM.Build.0 = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|iPhone.ActiveCfg = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|iPhone.Build.0 = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{BA9CF85B-1D51-46D8-B6C2-7763C16F66E7}.Release|x86.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(ExtensibilityGlobals) = postSolution\n\t\tEnterpriseLibraryConfigurationToolBinariesPathV6 = packages\\EnterpriseLibrary.TransientFaultHandling.6.0.1304.0\\lib\\portable-net45+win+wp8\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino DUE/Temperature/DS18B20/DS18B20.ino",
    "content": "/* \n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n \n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n NOTE: this is a modification specifically for the Arduino DUE.\n \n Based upon code from https://github.com/MSOpenTech/connectthedots/tree/master/Devices/GatewayConnectedDevices/Arduino%20UNO/Temperature/DS18B20 which is \n copyright (c) Neal Analytics and licensed under the MIT license, itself based upon code from Bildr.org at http://bildr.org/2011/07/ds18b20-arduino/ , \n which is copyright (c) 2010 bildr community, and licensed under the MIT license.\n \n\n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n Arduino code to read data from a DS18B20 temperature sensor, then augment and format as JSON to send via serial connection.\n Example of sending temperature data to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n*/\n#include <OneWire.h> \n#include <avr/dtostrf.h>\n\n// Constants used to add self-describing fields to the data before sending to Azure\n// Disp value will be the label for the curve on the chart\n// GUID ensures all the data from this sensor appears on the same chart\n// You can use Visual Studio to create DeviceGUID and copy it here. In VS, On the Tools menu, click Create GUID. The Create GUID\n// tool appears with a GUID in the Result box. Click Copy, and paste below.\n//\nchar GUID[] = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\nchar Org[] = \"Your organization\";\nchar Disp[] = \"Arduino DUE + DS18B20\";\nchar Locn[] = \"whereever\";\nchar Measure[] = \"Temperature\";\nchar Units[] = \"F\";\nchar buffer[300];\nchar dtostrfbuffer[15];\n\nint DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2\n\n//Temperature chip i/o\nOneWire ds(DS18S20_Pin);  // on digital pin 2\n\nvoid setup(void) {\n  Serial.begin(9600);\n}\n\nvoid loop(void) \n{\n\n  float temperature = getTemp();\n\n  // print string for temperature, separated by line for ease of reading\n  // sent as one Serial.Print to reduce risk of serial errors\n  \n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(temperature,8,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  Serial.println(buffer);\n  delay(1000); //just here to slow down the output so it is easier to read\n}\n\nfloat getTemp(){\n  //returns the temperature from one DS18S20 in DEG Fahrenheit\n\n  byte data[12];\n  byte addr[8];\n\n  if ( !ds.search(addr)) {\n      //no more sensors on chain, reset search\n      ds.reset_search();\n      return -1000;\n  }\n\n  if ( OneWire::crc8( addr, 7) != addr[7]) {\n      Serial.println(\"CRC is not valid!\");\n      return -1000;\n  }\n\n  if ( addr[0] == 0x10 ) {\n      //Sensor is a DS18S20\n  }\n  else if (addr[0] == 0x28){\n      //Sensor is a DS18BS20\n  }\n  else\n  {\n      Serial.print(\"Device is not recognized\");\n      return -1000;\n  }\n\n  ds.reset();\n  ds.select(addr);\n  ds.write(0x44,1); // start conversion, with parasite power on at the end\n\n  byte present = ds.reset();\n  ds.select(addr);    \n  ds.write(0xBE); // Read Scratchpad\n\n  \n  for (int i = 0; i < 9; i++) { // we need 9 bytes\n    data[i] = ds.read();\n  }\n  \n  ds.reset_search();\n  \n  byte MSB = data[1];\n  byte LSB = data[0];\n\n  float tempRead = ((MSB << 8) | LSB); //using two's compliment\n  float TemperatureSum = tempRead / 16;\n  float Ftemp = (TemperatureSum * 9.0)/ 5.0 + 32.0;  //convert to Fahrenheit\n  \n  \n  return Ftemp;\n  \n}\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino DUE/Temperature/DS18B20/Libraries.md",
    "content": "This example relies on the OneWire library. This is included in the standard Arduino IDE, but updates can be downloaded from the link in the Arduino playground site [here](http://playground.arduino.cc/Learning/OneWire). Import the library into your Arduino sketch before compiling."
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Accelerometer/Memsic2125Json/Libraries.md",
    "content": "This example relies on the OneWire library. This is included in the standard Arduino IDE, but updates can be downloaded from the link in the Arduino playground site [here](http://playground.arduino.cc/Learning/OneWire). Import the library into your Arduino sketch before compiling."
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Accelerometer/Memsic2125Json/Memsic2125Json.ino",
    "content": "/*\nCopyright (c) Neal Analytics, Inc.  All rights reserved.\n\nThe MIT License (MIT)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\nBased upon David A. Mellis's Memsic2125 Example, as stated below, which is in the public domain\n\nModifications by Neal Analytics and Microsoft Open Technologies, Inc include adding self-describing fields in each output string, and changing output format to JSON string. the labels on charts in the Azure website.\nFurther mods by MS Open Tech updating JSON for website rev\n\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\nOriginal header follows.\n\nMemsic2125\nRead the Memsic 2125 two‐axis accelerometer. Converts the\npulses output by the 2125 into milli‐g's (1/1000 of earth's\ngravity) and prints them over the serial connection to the\ncomputer.\nThe circuit:\n* X output of accelerometer to digital pin 2\n* Y output of accelerometer to digital pin 3\n* +V of accelerometer to +5V\n* GND of accelerometer to ground\nhttp://www.arduino.cc/en/Tutorial/Memsic2125\ncreated 6 Nov 2008\nby David A. Mellis\nmodified 30 Aug 2011\nby Tom Igoe\nThis example code is in the public domain.\n*/\n\n// Disp value will be the label for the curve on the chart\n// GUID ensures all the data from this sensor appears on the same chart\n// You can use Visual Studio to create DeviceGUID and copy it here. In VS, On the Tools menu, click Create GUID. The Create GUID\n// tool appears with a GUID in the Result box. Click Copy, and paste below.\n//\nchar GUID1[] = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\nchar GUID2[] = \"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\";\nchar Org[] = \"My organization\";\nchar Disp[] = \"Arduino + Memsic2125\";\nchar Locn[] = \"here\";\nchar Measure1[] = \"accelerationX\";\nchar Units1[] = \"ft/sec/sec\";\nchar Measure2[] = \"accelerationY\";\nchar Units2[] = \"ft/sec/sec\";\nchar buffer[300];\nchar dtostrfbuffer[15];\n\n#define MYSERIAL Serial\n\nconst int xPin = 2; // X output of the accelerometer\nconst int yPin = 3; // Y output of the accelerometer\nvoid setup() {\n  // initialize serial communications:\n  Serial.begin(9600);\n  // initialize the pins connected to the accelerometer\n  // as inputs:\n  pinMode(xPin, INPUT);\n  pinMode(yPin, INPUT);\n}\n\nvoid loop() {\n  // variables to read the pulse widths:\n  int pulseX, pulseY;\n  // variables to contain the resulting accelerations\n  int accelerationX, accelerationY;\n  // read pulse from x‐ and y‐axes:\n  pulseX = pulseIn(xPin,HIGH);\n  pulseY = pulseIn(yPin,HIGH);\n  // convert the pulse width into acceleration\n  // accelerationX and accelerationY are in milli‐g's:\n  // earth's gravity is 1000 milli‐g's, or 1g.\n  accelerationX = ((pulseX / 10) - 500) * 8;\n  accelerationY = ((pulseY / 10) - 500) * 8;\n  \n  // print string for humidity, separated by line for ease of reading\n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID1);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure1);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units1);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(accelerationX,8,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  MYSERIAL.println(buffer);\n  \n  // print string for humidity, separated by line for ease of reading\n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID2);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure2);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units2);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(accelerationY,6,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  MYSERIAL.println(buffer);\n  \n  delay(100);\n\n}\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/AnalogReadSerial/AnalogReadSerial.ino",
    "content": "/*\n  Modifications by Microsoft Open Technologies, Inc\n\n  AnalogReadSerial\n  Reads an analog input on pin 0, prints the result to the serial monitor.\n  Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.\n\n This example code is in the public domain.\n */\n\n// the setup routine runs once when you press reset:\nvoid setup() {\n  // initialize serial communication at 9600 bits per second:\n  Serial.begin(9600);\n  SerialUSB.begin(9600);\n}\n\nchar buffer[100];\n\n// the loop routine runs over and over again forever:\nvoid loop() {\n  // read the input on analog pin 0:\n  int sensorValue = analogRead(A0);\n  \n  // Turn into JSON format\n  sprintf(buffer, \"{ \\\"%s\\\" : %f }\", \"temp\", (float) sensorValue);\n  \n  // print out the value you read:\n  SerialUSB.println(buffer);\n  Serial.println(buffer);\n  delay(500);        // delay in between reads\n}\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Combo_accelerometer_and_temperature/Memsic2125_plus_DS18B20/Libraries.md",
    "content": "This example relies on the OneWire library. This is included in the standard Arduino IDE, but updates can be downloaded from the link in the Arduino playground site [here](http://playground.arduino.cc/Learning/OneWire). Import the library into your Arduino sketch before compiling."
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Combo_accelerometer_and_temperature/Memsic2125_plus_DS18B20/Memsic2125_plus_DS18B20.ino",
    "content": "/*\nCopyright (c) Neal Analytics, Inc.  All rights reserved.\n\nThe MIT License (MIT)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\nBased upon David A. Mellis's Memsic2125 Example, as stated below, which is in the public domain.\n\nModifications by Neal Analytics and Microsoft Open Technologies, Inc include adding self-describing fields in each output string, and changing output format to JSON string. \nFurther mods by MS Open Tech updating JSON for website rev\n\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\nOriginal header follows.\n\nMemsic2125\nRead the Memsic 2125 two‐axis accelerometer. Converts the\npulses output by the 2125 into milli‐g's (1/1000 of earth's\ngravity) and prints them over the serial connection to the\ncomputer.\nThe circuit:\n* X output of accelerometer to digital pin 2\n* Y output of accelerometer to digital pin 3\n* +V of accelerometer to +5V\n* GND of accelerometer to ground\nhttp://www.arduino.cc/en/Tutorial/Memsic2125\ncreated 6 Nov 2008\nby David A. Mellis\nmodified 30 Aug 2011\nby Tom Igoe\nThis example code is in the public domain.\n*/\n// these constants won't change:\n\n\n\n#include <OneWire.h> \n\nchar SensorSubject[] = \"wthr\";                                // determines how Azure website will chart the data\nchar DeviceDisplayName[] = \"Cooler Device\";                   // will be the label for the curve on the chart\nchar DeviceGUID[] = \"2150719D-0FFF-4312-B61C-75AD5219D8FF\";   // ensures all the data from this sensor appears on the same chart. You can use the Tools/Create GUID in Visual Studio to create\n\n// Disp value will be the label for the curve on the chart\n// GUID ensures all the data from this sensor appears on the same chart\n// You can use Visual Studio to create DeviceGUID and copy it here. In VS, On the Tools menu, click Create GUID. The Create GUID\n// tool appears with a GUID in the Result box. Click Copy, and paste below.\n//\nchar GUID1[] = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\nchar GUID2[] = \"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\";\nchar Org[] = \"My organization\";\nchar Disp[] = \"Arduino + Memsic2125 + DS18S20\";\nchar Locn[] = \"here\";\nchar Measure1[] = \"acceleration_Tot\";\nchar Units1[] = \"ft/sec/sec\";\nchar Measure2[] = \"temperature\";\nchar Units2[] = \"F\";\nchar buffer[300];\nchar dtostrfbuffer[15];\n\n#define MYSERIAL Serial\n\nconst int DS18S20_Pin = 4; //DS18S20 Signal pin on digital 4\nconst int xPin = 2; // X output of the accelerometer\nconst int yPin = 3; // Y output of the accelerometer\n\n//Temperature chip i/o\nOneWire ds(DS18S20_Pin);  // on digital pin 4\n\nvoid setup() {\n  // initialize serial communications:\n  Serial.begin(9600);\n  // initialize the pins connected to the accelerometer\n  // as inputs:\n  pinMode(xPin, INPUT);\n  pinMode(yPin, INPUT);\n  //pinMode(DS18S20_Pin, INPUT);\n}\n\n\nfloat getTemp(){\n  //returns the temperature from one DS18S20 in DEG Celsius\n\n  byte data[12];\n  byte addr[8];\n\n  if ( !ds.search(addr)) {\n      //no more sensors on chain, reset search\n      ds.reset_search();\n      return -1000;\n  }\n\n  if ( OneWire::crc8( addr, 7) != addr[7]) {\n      Serial.println(\"CRC is not valid!\");\n      return -1000;\n  }\n\n  if ( addr[0] != 0x10 && addr[0] != 0x28) {\n      Serial.print(\"Device is not recognized\");\n      return -1000;\n  }\n\n  ds.reset();\n  ds.select(addr);\n  ds.write(0x44,1); // start conversion, with parasite power on at the end\n\n  byte present = ds.reset();\n  ds.select(addr);    \n  ds.write(0xBE); // Read Scratchpad\n\n  \n  for (int i = 0; i < 9; i++) { // we need 9 bytes\n    data[i] = ds.read();\n  }\n  \n  ds.reset_search();\n  \n  byte MSB = data[1];\n  byte LSB = data[0];\n\n  float tempRead = ((MSB << 8) | LSB); //using two's compliment\n  float TemperatureSum = tempRead / 16;\n  \n  return TemperatureSum;\n  \n}\n\n\nvoid loop() {\n  // variables to read the pulse widths:\n  int pulseX, pulseY;\n  // variables to contain the resulting accelerations\n  float accelerationX, accelerationY, acceleration_Tot;\n  // read pulse from x‐ and y‐axes:\n  pulseX = pulseIn(xPin,HIGH);\n  pulseY = pulseIn(yPin,HIGH);\n  // convert the pulse width into acceleration\n  // accelerationX and accelerationY are in milli‐g's:\n  // earth's gravity is 1000 milli‐g's, or 1g.\n  accelerationX = ((pulseX / 10) - 500) * 8;\n  accelerationY = ((pulseY / 10) - 500) * 8;\n  acceleration_Tot = sqrt(sq(accelerationX) + sq(accelerationY));\n  \n  //acceleration_Tot = sqrt(sq(pulseX) + sq(pulseY));\n  \n  \n  // Get temperature reading.  Adjust value to match cooler\n  float temperature = getTemp();\n  \n  // print string for total acceleration, separated by line for ease of reading\n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID1);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure1);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units1);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(acceleration_Tot,8,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  MYSERIAL.println(buffer);\n  \n  // print string for temperature, separated by line for ease of reading\n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID2);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure2);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units2);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(temperature,6,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  MYSERIAL.println(buffer);\n\n\n}\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Sound/SimpleSoundSensor/SimpleSoundSensor.ino",
    "content": "/* \n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n \n Based upon code from Sunfounder Microsophone Sensor Module  http://www.sunfounder.com/index.php?c=case_in&a=detail_&id=139&name= using a different but similar analog sound sensor purchased online.\n \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Arduino code to read data from a simple sound sensor, then augment and format as JSON to send via serial connection.\n Example of sending sound level data to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n*/\n// Constants used for the ConnectTheDots project\n//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n// Constants used to add self-describing fields to the data before sending to Azure\n// Disp value will be the label for the curve on the chart\n// GUID ensures all the data from this sensor appears on the same chart\n// You can use Visual Studio to create DeviceGUID and copy it here. In VS, On the Tools menu, click Create GUID. The Create GUID\n// tool appears with a GUID in the Result box. Click Copy, and paste below.\n//\nchar GUID[] = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\nchar Org[] = \"My organization\";\nchar Disp[] = \"Arduino + Sound sensor\";\nchar Locn[] = \"here\";\nchar Measure[] = \"Sound level\";\nchar Units[] = \"units\";\nchar buffer[300];\nchar dtostrfbuffer[15];\n\nconst int SOUND_PIN = A2;\nconst int SAMPLE_FREQUENCY = 250;\nint high = 0;\nunsigned long hightime = millis();\nint sequenceNumber = 0;\n\nvoid setup() {\n  //pinMode(SOUND_PIN,INPUT);\n  Serial.begin(9600);\n}\n\nvoid loop() {\n  int value = analogRead(SOUND_PIN);\n  //int value = digitalRead(SOUND_PIN);\n  if (high < value) {\n    high = value;\n  }\n  if (millis() - hightime >= SAMPLE_FREQUENCY) {\n   \n      // print string for temperature, separated by line for ease of reading\n  // sent as one Serial.Print to reduce risk of serial errors\n  \n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(high,8,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  Serial.println(buffer);\n  delay(100); //just here to slow down the output so it is easier to read\n    \n  high = 0;\n  hightime = millis();\n  \n  }\n}\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Temperature/DS18B20/DS18B20.ino",
    "content": "/* \n Copyright (c) Neal Analytics, Inc.  All rights reserved.\n \n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n\n Based upon code from Bildr.org at http://bildr.org/2011/07/ds18b20-arduino/ , which is copyright (c) 2010 bildr community, and licensed under the MIT license.\n \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n Arduino code to read data from a DS18B20 temperature sensor, then augment and format as JSON to send via serial connection.\n Example of sending temperature data to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n*/\n#include <OneWire.h> \n\n// Constants used to add self-describing fields to the data before sending to Azure\n// Disp value will be the label for the curve on the chart\n// GUID ensures all the data from this sensor appears on the same chart\n// You can use Visual Studio to create DeviceGUID and copy it here. In VS, On the Tools menu, click Create GUID. The Create GUID\n// tool appears with a GUID in the Result box. Click Copy, and paste below.\n//\nchar GUID[] = \"tttttttt-tttt-tttt-tttt-tttttttttttt\";\nchar Org[] = \"Your organization\";\nchar Disp[] = \"Arduino DUE + DS18B20\";\nchar Locn[] = \"Here\";\nchar Measure[] = \"Temperature\";\nchar Units[] = \"F\";\nchar buffer[300];\nchar dtostrfbuffer[15];\n\nint DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2\n\n//Temperature chip i/o\nOneWire ds(DS18S20_Pin);  // on digital pin 2\n\nvoid setup(void) {\n  Serial.begin(9600);\n}\n\nvoid loop(void) \n{\n\n  float temperature = getTemp();\n\n  // print string for temperature, separated by line for ease of reading\n  // sent as one Serial.Print to reduce risk of serial errors\n  \n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(temperature,8,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  Serial.println(buffer);\n  delay(1000); //just here to slow down the output so it is easier to read\n}\n\nfloat getTemp(){\n  //returns the temperature from one DS18S20 in DEG Fahrenheit\n\n  byte data[12];\n  byte addr[8];\n\n  if ( !ds.search(addr)) {\n      //no more sensors on chain, reset search\n      ds.reset_search();\n      return -1000;\n  }\n\n  if ( OneWire::crc8( addr, 7) != addr[7]) {\n      Serial.println(\"CRC is not valid!\");\n      return -1000;\n  }\n\n  if ( addr[0] == 0x10 ) {\n      //Sensor is a DS18S20\n  }\n  else if (addr[0] == 0x28){\n      //Sensor is a DS18BS20\n  }\n  else\n  {\n      Serial.print(\"Device is not recognized\");\n      return -1000;\n  }\n\n  ds.reset();\n  ds.select(addr);\n  ds.write(0x44,1); // start conversion, with parasite power on at the end\n\n  byte present = ds.reset();\n  ds.select(addr);    \n  ds.write(0xBE); // Read Scratchpad\n\n  \n  for (int i = 0; i < 9; i++) { // we need 9 bytes\n    data[i] = ds.read();\n  }\n  \n  ds.reset_search();\n  \n  byte MSB = data[1];\n  byte LSB = data[0];\n\n  float tempRead = ((MSB << 8) | LSB); //using two's compliment\n  float TemperatureSum = tempRead / 16;\n  float Ftemp = (TemperatureSum * 9.0)/ 5.0 + 32.0;  //convert to Fahrenheit\n  \n  \n  return Ftemp;\n  \n}\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Temperature/DS18B20/Libraries.md",
    "content": "This example relies on the OneWire library. This is included in the standard Arduino IDE, but updates can be downloaded from the link in the Arduino playground site [here](http://playground.arduino.cc/Learning/OneWire). Import the library into your Arduino sketch before compiling."
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/Arduino-and-Weather-Shield-setup.md",
    "content": "# Setup Arduino and Weather Shield #\nThis document explains how to setup an Arduino Uno R3 with a Sparkfun weather shield for monitoring temperature and humidity in the Connect The Dots getting started project. It assumes that you have the right tools installed and that you have cloned or downloaded the ConnectTheDots.io project on your machine.\n\n![](ArduinoWeatherShield.jpg)\n\n##Hardware requirements ##\nSee [Hardware](Hardware.md) file in this folder for the required hardware.\n\n\n##Prepare the Arduino Uno R3 ##\n\n* Connect the Arduino Uno R3 directly to your computer with the USB cable\n* Install and run the Arduino IDE (we recommend the current official release, with the Windows Installer) which you can find on the [Arduino.cc](http://arduino.cc/en/Main/Software) website.\n* If necessary, install the Windows device drivers for the Arduino on your computer, following the instructions [here](http://arduino.cc/en/Guide/Windows#toc4).\n* Download the Weather Shield libraries from [here](https://dlnmh9ip6v2uc.cloudfront.net/assets/b/5/9/7/f/52cd8187ce395fa7158b456c.zip) (as per the instruction in the [Weather Shield Hookup guide](https://learn.sparkfun.com/tutorials/weather-shield-hookup-guide)).\n    * Extract all files from the ZIP file to a temporary location, then import the two folders (HTU21D_Humidity and MPL3115A2_Pressure) in the Arduino IDE by clicking *Sketch > Include Library > Manage Libraries...* and selecting the folder (once for each folder).\n* In the Arduino IDE open `Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/WeathershieldJson.ino`. (It is modified from the original Sparkfun sample to send data in JSON format as well as additional self-describing fields.) Edit the code to set your own values for the first four constants (GUID - Location) - for example, DisplayName will contain the label for the sensor on the website. (If you send multiple variables (e.g. temp and humidity), you need to reproduce the UnitOfMeasure and the MeasureName fields. See the  Serial print statements in WeatherShield INO file for a more detailed implementation example).\n   \n\t\tchar GUID[] = \"81E79059-A393-4797-8A7E-526C3EF9D64B\";\n\t\tchar Organization[] = \"Me\";\n\t\tchar DisplayName[] = \"Weather Shield 01\";\n\t\tchar Location[] = \"My office\";\n\t\tchar MeasureName[] = \"temperature\";\n\t\tchar UnitOfMeasure[] = \"F\";\n\t\tchar MeasureName2[] = \"humidity\";\n\t\tchar UnitOfMeasure2[] = \"%\";\n\t\tchar MeasureName3[] = \"light\";\n\t\tchar UnitOfMeasure3[] = \"lumen\";\n\n* Compile and upload the Weather Shield sketch to the Arduino: *Sketch > Upload* or Ctrl-U. \n\t* If the upload fails, make sure you have the correct board selected on the correct COM port through `Tools > Port` menu.\n* Open the serial monitor (Shift-Ctrl-M). You should now see temperature and other data on the serial monitor. Note the format of the data being sent out the serial port of the Arduino – in the next section you’ll see the same data being read from the serial port of the Raspberry Pi:\n\n![](ArduinoCOMCapture.jpg)\n\n* Disconnect the Arduino from your computer\n\n##Connect the Arduino board to the gateway ##\n\n* Plug Arduino’s USB cable into one of the Raspberry Pi USB ports:\n\n![](PiAndArduinoPhoto.jpg)\n\nNow you're ready to get your [Raspberry Pi setup](../../../../Gateways/GatewayService/RaspberryPi-Gateway-setup.md)."
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/Hardware.md",
    "content": "To set up an Arduino UNO with a weather shield to monitor temperature, humidity, and a host of other things you will need to procure:\n\n1. [Arduino Uno R3](http://arduino.cc/en/Main/ArduinoBoardUno)\n1. [Sparkfun Weather Shield](https://www.sparkfun.com/products/12081) for Arduino \n1. 4 stackable headers for the Arduino UNO R3 (1 @ 10 pin, 2 @ 8 pin, 1 @ 6 pin), as specified on the Arduino or Sparkfun sites. \n1. USB A to B cable to connect the Arduino to the Raspberry Pi. Make sure it is USB 2.0 not 3.0, as the 3.0 connector does not fit the Arduino.\n\nYou will need to solder the headers to the Weather Shield (or have someone do that for you - 10 minute job, max.)\n\nNote: Only the models above have been tested. The Weather Shield sample code from Sparkfun, for example, may need to be modified before it will work reliably on Arduino Due or Arduino Uno R2."
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/Libraries.md",
    "content": "The Weather Shield example relies on the HTU21D and MPL3115A2 libraries. Download the libraries from the link in the Weather Shield Hookup Guide on Sparkfun.com [here](https://learn.sparkfun.com/tutorials/weather-shield-hookup-guide), and then install them into your Documents/Arduino folder. Import the libraries into your Arduino sketch before compiling."
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/SCPRPI.cmd",
    "content": "@echo off\nset puttydir=\"C:\\Software\\PuTTY\\\"\nset prjdir=..\\\nrem set rpi_ip=raspberrypi\nset rpi_ip=10.121.204.248\nset rpi_usr=pi\nset rpi_pw=raspberry\n\n\necho Copying Gateway and logging files\nrem %puttydir%pscp -pw %rpi_pw% %prjdir%WensnPiVS01\\WensnPiVS01.py %rpi_usr%@%rpi_ip%:RaspberryPiGateway/\n%puttydir%pscp -pw %rpi_pw% WeatherShieldJson.ino %rpi_usr%@%rpi_ip%:GatewayService/\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/WeatherShieldJson.ino",
    "content": "/* \n Weather Shield code for http://connectthedots.msopentech.com end-to-end example of sending data to Microsoft Azure\n By: Microsoft Open Technologies, Inc.\n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n \n Based upon Nathan Seidle's Weather Shield Example, itself based upon MIke Grusin's USB Weather Board code, as stated below.\n\n Modifications by Microsoft Open Technologies, Inc include adding self-describing fields in each output string, and changing \n output format to JSON string as expected by the CTD website.\n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n Original header follows.\n\n Weather Shield Example\n By: Nathan Seidle\n SparkFun Electronics\n Date: November 16th, 2013\n License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).\n \n Much of this is based on Mike Grusin's USB Weather Board code: https://www.sparkfun.com/products/10586\n \n This code reads all the various sensors (wind speed, direction, rain gauge, humidty, pressure, light, batt_lvl)\n and reports it over the serial comm port. This can be easily routed to an datalogger (such as OpenLog) or\n a wireless transmitter (such as Electric Imp).\n \n Measurements are reported once a second but windspeed and rain gauge are tied to interrupts that are\n calcualted at each report.\n \n This example code assumes the GPS module is not used.\n \n */\n#include <Wire.h> //I2C needed for sensors\n#include \"MPL3115A2.h\" //Pressure sensor\n#include \"HTU21D.h\" //Humidity sensor\n\n#define MYSERIAL Serial\n// For Arduino Due Native Port:\n//#define MYSERIAL SerialUSB\n\nMPL3115A2 myPressure; //Create an instance of the pressure sensor\nHTU21D myHumidity; //Create an instance of the humidity sensor\n\n// Constants used for the ConnectTheDots project\n// Disp value will be the label for the curve on the chart\n// GUID ensures all the data from this sensor appears on the same chart\n// You can use Visual Studio to create DeviceGUID and copy it here. In VS, On the Tools menu, click Create GUID. The Create GUID\n// tool appears with a GUID in the Result box. Click Copy, and paste below.\n//\nchar GUID1[] = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\nchar GUID2[] = \"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\";\nchar GUID3[] = \"zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz\";\nchar Org[] = \"My organization\";\nchar Disp[] = \"Arduino + WS dev 01\";\nchar Locn[] = \"here\";\nchar Measure1[] = \"temperature\";\nchar Units1[] = \"F\";\nchar Measure2[] = \"humidity\";\nchar Units2[] = \"%\";\nchar Measure3[] = \"light\";\nchar Units3[] = \"lumen\";\nchar buffer[300];\nchar dtostrfbuffer[15];\n\n\n//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n//Hardware pin definitions\n//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n// digital I/O pins\nconst byte WSPEED = 3;\nconst byte RAIN = 2;\nconst byte STAT1 = 7;\nconst byte STAT2 = 8;\n\n// analog I/O pins\nconst byte REFERENCE_3V3 = A3;\nconst byte LIGHT = A1;\nconst byte BATT = A2;\nconst byte WDIR = A0;\n//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n//Global Variables\n//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\nlong lastSecond; //The millis counter to see when a second rolls by\nbyte seconds; //When it hits 60, increase the current minute\nbyte seconds_2m; //Keeps track of the \"wind speed/dir avg\" over last 2 minutes array of data\nbyte minutes; //Keeps track of where we are in various arrays of data\nbyte minutes_10m; //Keeps track of where we are in wind gust/dir over last 10 minutes array of data\n\nlong lastWindCheck = 0;\nvolatile long lastWindIRQ = 0;\nvolatile byte windClicks = 0;\n\n//We need to keep track of the following variables:\n//Wind speed/dir each update (no storage)\n//Wind gust/dir over the day (no storage)\n//Wind speed/dir, avg over 2 minutes (store 1 per second)\n//Wind gust/dir over last 10 minutes (store 1 per minute)\n//Rain over the past hour (store 1 per minute)\n//Total rain over date (store one per day)\n\nbyte windspdavg[120]; //120 bytes to keep track of 2 minute average\nint winddiravg[120]; //120 ints to keep track of 2 minute average\nfloat windgust_10m[10]; //10 floats to keep track of 10 minute max\nint windgustdirection_10m[10]; //10 ints to keep track of 10 minute max\nvolatile float rainHour[60]; //60 floating numbers to keep track of 60 minutes of rain\n\n//These are all the weather values that wunderground expects:\nint winddir = 0; // [0-360 instantaneous wind direction]\nfloat windspeedmph = 0; // [mph instantaneous wind speed]\nfloat windgustmph = 0; // [mph current wind gust, using software specific time period]\nint windgustdir = 0; // [0-360 using software specific time period]\nfloat windspdmph_avg2m = 0; // [mph 2 minute average wind speed mph]\nint winddir_avg2m = 0; // [0-360 2 minute average wind direction]\nfloat windgustmph_10m = 0; // [mph past 10 minutes wind gust mph ]\nint windgustdir_10m = 0; // [0-360 past 10 minutes wind gust direction]\nfloat humidity = 0; // [%]\nfloat tempf = 0; // [temperature F]\nfloat temp_h = 0; // [temperature from humidity sensor, in Celsius ]\nfloat rainin = 0; // [rain inches over the past hour)] -- the accumulated rainfall in the past 60 min\nvolatile float dailyrainin = 0; // [rain inches so far today in local time]\n//float baromin = 30.03;// [barom in] - It's hard to calculate baromin locally, do this in the agent\nfloat pressure = 0;\n//float dewptf; // [dewpoint F] - It's hard to calculate dewpoint locally, do this in the agent\n\nfloat batt_lvl = 11.8; //[analog value from 0 to 1023]\nfloat light_lvl = 455; //[analog value from 0 to 1023]\n\n// volatiles are subject to modification by IRQs\nvolatile unsigned long raintime, rainlast, raininterval, rain;\n\n//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n//Interrupt routines (these are called by the hardware interrupts, not by the main code)\n//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\nvoid rainIRQ()\n// Count rain gauge bucket tips as they occur\n// Activated by the magnet and reed switch in the rain gauge, attached to input D2\n{\n  raintime = millis(); // grab current time\n  raininterval = raintime - rainlast; // calculate interval between this and last event\n\n    if (raininterval > 10) // ignore switch-bounce glitches less than 10mS after initial edge\n  {\n    dailyrainin += 0.011; //Each dump is 0.011\" of water\n    rainHour[minutes] += 0.011; //Increase this minute's amount of rain\n\n    rainlast = raintime; // set up for next event\n  }\n}\n\nvoid wspeedIRQ()\n// Activated by the magnet in the anemometer (2 ticks per rotation), attached to input D3\n{\n  if (millis() - lastWindIRQ > 10) // Ignore switch-bounce glitches less than 10ms (142MPH max reading) after the reed switch closes\n  {\n    lastWindIRQ = millis(); //Grab the current time\n    windClicks++; //There is 1.492MPH for each click per second.\n  }\n}\n\n\nvoid setup()\n{\n  MYSERIAL.begin(9600);\n  //Serial.println(\"Weather Shield Example\");\n\n  pinMode(STAT1, OUTPUT); //Status LED Blue\n  pinMode(STAT2, OUTPUT); //Status LED Green\n  \n  pinMode(WSPEED, INPUT_PULLUP); // input from wind meters windspeed sensor\n  pinMode(RAIN, INPUT_PULLUP); // input from wind meters rain gauge sensor\n  \n  pinMode(REFERENCE_3V3, INPUT);\n  pinMode(LIGHT, INPUT);\n\n  //Configure the pressure sensor\n  myPressure.begin(); // Get sensor online\n  myPressure.setModeBarometer(); // Measure pressure in Pascals from 20 to 110 kPa\n  myPressure.setOversampleRate(7); // Set Oversample to the recommended 128\n  myPressure.enableEventFlags(); // Enable all three pressure and temp event flags \n\n  //Configure the humidity sensor\n  myHumidity.begin();\n\n  seconds = 0;\n  lastSecond = millis();\n\n  // attach external interrupt pins to IRQ functions\n  attachInterrupt(0, rainIRQ, FALLING);\n  attachInterrupt(1, wspeedIRQ, FALLING);\n\n  // turn on interrupts\n  interrupts();\n\n  //Serial.println(\"Weather Shield online!\");\n\n}\n\nvoid loop()\n{\n  //Keep track of which minute it is\n  if(millis() - lastSecond >= 1000)\n  {\n    digitalWrite(STAT1, HIGH); //Blink stat LED\n    \n    lastSecond += 1000;\n\n    //Take a speed and direction reading every second for 2 minute average\n    if(++seconds_2m > 119) seconds_2m = 0;\n\n    //Calc the wind speed and direction every second for 120 second to get 2 minute average\n    float currentSpeed = get_wind_speed();\n    //float currentSpeed = random(5); //For testing\n    int currentDirection = get_wind_direction();\n    windspdavg[seconds_2m] = (int)currentSpeed;\n    winddiravg[seconds_2m] = currentDirection;\n    //if(seconds_2m % 10 == 0) displayArrays(); //For testing\n\n    //Check to see if this is a gust for the minute\n    if(currentSpeed > windgust_10m[minutes_10m])\n    {\n      windgust_10m[minutes_10m] = currentSpeed;\n      windgustdirection_10m[minutes_10m] = currentDirection;\n    }\n\n    //Check to see if this is a gust for the day\n    if(currentSpeed > windgustmph)\n    {\n      windgustmph = currentSpeed;\n      windgustdir = currentDirection;\n    }\n\n    if(++seconds > 59)\n    {\n      seconds = 0;\n\n      if(++minutes > 59) minutes = 0;\n      if(++minutes_10m > 9) minutes_10m = 0;\n\n      rainHour[minutes] = 0; //Zero out this minute's rainfall amount\n      windgust_10m[minutes_10m] = 0; //Zero out this minute's gust\n    }\n\n    //Report all readings every second\n    printWeather();\n\n    digitalWrite(STAT1, LOW); //Turn off stat LED\n  }\n\n  delay(100);\n}\n\n//Calculates each of the variables that wunderground is expecting\nvoid calcWeather()\n{\n  //Calc winddir\n  winddir = get_wind_direction();\n\n  //Calc windspeed\n  windspeedmph = get_wind_speed();\n\n  //Calc windgustmph\n  //Calc windgustdir\n  //Report the largest windgust today\n  windgustmph = 0;\n  windgustdir = 0;\n\n  //Calc windspdmph_avg2m\n  float temp = 0;\n  for(int i = 0 ; i < 120 ; i++)\n    temp += windspdavg[i];\n  temp /= 120.0;\n  windspdmph_avg2m = temp;\n\n  //Calc winddir_avg2m\n  temp = 0; //Can't use winddir_avg2m because it's an int\n  for(int i = 0 ; i < 120 ; i++)\n    temp += winddiravg[i];\n  temp /= 120;\n  winddir_avg2m = temp;\n\n  //Calc windgustmph_10m\n  //Calc windgustdir_10m\n  //Find the largest windgust in the last 10 minutes\n  windgustmph_10m = 0;\n  windgustdir_10m = 0;\n  //Step through the 10 minutes  \n  for(int i = 0; i < 10 ; i++)\n  {\n    if(windgust_10m[i] > windgustmph_10m)\n    {\n      windgustmph_10m = windgust_10m[i];\n      windgustdir_10m = windgustdirection_10m[i];\n    }\n  }\n\n  //Calc humidity\n  humidity = myHumidity.readHumidity();\n  temp_h = myHumidity.readTemperature();\n  //Serial.print(\" TempH:\");\n  //Serial.print(temp_h, 2);\n\n  //Calc tempf from pressure sensor\n  tempf = myPressure.readTempF();\n  //Serial.print(\" TempP:\");\n  //Serial.print(tempf, 2);\n\n  //Total rainfall for the day is calculated within the interrupt\n  //Calculate amount of rainfall for the last 60 minutes\n  rainin = 0;  \n  for(int i = 0 ; i < 60 ; i++)\n    rainin += rainHour[i];\n\n  //Calc pressure\n  pressure = myPressure.readPressure();\n\n  //Calc dewptf\n\n  //Calc light level\n  light_lvl = get_light_level();\n\n  //Calc battery level\n  batt_lvl = get_battery_level();\n}\n\n//Returns the voltage of the light sensor based on the 3.3V rail\n//This allows us to ignore what VCC might be (an Arduino plugged into USB has VCC of 4.5 to 5.2V)\nfloat get_light_level()\n{\n  float operatingVoltage = analogRead(REFERENCE_3V3);\n\n  float lightSensor = analogRead(LIGHT);\n  \n  operatingVoltage = 3.3 / operatingVoltage; //The reference voltage is 3.3V\n  \n  lightSensor = operatingVoltage * lightSensor;\n  \n  return(lightSensor);\n}\n\n//Returns the voltage of the raw pin based on the 3.3V rail\n//This allows us to ignore what VCC might be (an Arduino plugged into USB has VCC of 4.5 to 5.2V)\n//Battery level is connected to the RAW pin on Arduino and is fed through two 5% resistors:\n//3.9K on the high side (R1), and 1K on the low side (R2)\nfloat get_battery_level()\n{\n  float operatingVoltage = analogRead(REFERENCE_3V3);\n\n  float rawVoltage = analogRead(BATT);\n  \n  operatingVoltage = 3.30 / operatingVoltage; //The reference voltage is 3.3V\n  \n  rawVoltage = operatingVoltage * rawVoltage; //Convert the 0 to 1023 int to actual voltage on BATT pin\n  \n  rawVoltage *= 4.90; //(3.9k+1k)/1k - multiple BATT voltage by the voltage divider to get actual system voltage\n  \n  return(rawVoltage);\n}\n\n//Returns the instataneous wind speed\nfloat get_wind_speed()\n{\n  float deltaTime = millis() - lastWindCheck; //750ms\n\n  deltaTime /= 1000.0; //Covert to seconds\n\n  float windSpeed = (float)windClicks / deltaTime; //3 / 0.750s = 4\n\n  windClicks = 0; //Reset and start watching for new wind\n  lastWindCheck = millis();\n\n  windSpeed *= 1.492; //4 * 1.492 = 5.968MPH\n\n  /* Serial.println();\n   Serial.print(\"Windspeed:\");\n   Serial.println(windSpeed);*/\n\n  return(windSpeed);\n}\n\n//Read the wind direction sensor, return heading in degrees\nint get_wind_direction() \n{\n  unsigned int adc;\n\n  adc = analogRead(WDIR); // get the current reading from the sensor\n\n  // The following table is ADC readings for the wind direction sensor output, sorted from low to high.\n  // Each threshold is the midpoint between adjacent headings. The output is degrees for that ADC reading.\n  // Note that these are not in compass degree order! See Weather Meters datasheet for more information.\n\n  if (adc < 380) return (113);\n  if (adc < 393) return (68);\n  if (adc < 414) return (90);\n  if (adc < 456) return (158);\n  if (adc < 508) return (135);\n  if (adc < 551) return (203);\n  if (adc < 615) return (180);\n  if (adc < 680) return (23);\n  if (adc < 746) return (45);\n  if (adc < 801) return (248);\n  if (adc < 833) return (225);\n  if (adc < 878) return (338);\n  if (adc < 913) return (0);\n  if (adc < 940) return (293);\n  if (adc < 967) return (315);\n  if (adc < 990) return (270);\n  return (-1); // error, disconnected?\n}\n\n\n//Prints the various variables directly to the port\n//I don't like the way this function is written but Arduino doesn't support floats under sprintf\nint sequenceNumber =0;\n\nvoid printWeather()\n{\n  calcWeather(); //Go calc all the various sensors\n\n  // print string for temperature, separated by line for ease of reading\n  // sent as one Serial.Print to reduce risk of serial errors\n  \n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID1);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure1);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units1);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(tempf,8,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  MYSERIAL.println(buffer);\n\n  // print string for humidity, separated by line for ease of reading\n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID2);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure2);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units2);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(humidity,6,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  MYSERIAL.println(buffer);\n\n  // print string for light, separated by line for ease of reading\n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID3);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure3);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units3);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  strcat(buffer,dtostrf(light_lvl,6,2,dtostrfbuffer));\n  strcat(buffer,\"}\");\n  MYSERIAL.println(buffer);\n\n\n /* \n\n  MYSERIAL.print(\"{\");\n  MYSERIAL.print(\"\\\"guid\\\":\");\n   MYSERIAL.print(\"\\\"\");\n   MYSERIAL.print(GUID1);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"organization\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Org);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"displayname\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Disp);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"location\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Locn);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"measurename\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Measure1);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"unitofmeasure\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Units1);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"value\\\":\");\n  MYSERIAL.print(tempf, 1);\n  MYSERIAL.println(\"}\");\n  \n  \n  // print string for humidity\n  MYSERIAL.print(\"{\");\n  MYSERIAL.print(\"\\\"guid\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(GUID2);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"organization\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Org);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"displayname\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Disp);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"location\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Locn);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"measurename\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Measure2);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"unitofmeasure\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Units2);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"value\\\":\");\n  MYSERIAL.print(humidity, 1);\n  MYSERIAL.println(\"}\");\n\n  // print string for light\n  MYSERIAL.print(\"{\");\n  MYSERIAL.print(\"\\\"guid\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(GUID3);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"organization\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Org);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"displayname\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Disp);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"location\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Locn);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"measurename\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Measure3);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"unitofmeasure\\\":\");\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(Units3);\n  MYSERIAL.print(\"\\\"\");\n  MYSERIAL.print(\",\\\"value\\\":\");\n  MYSERIAL.print(light_lvl, 2);\n  MYSERIAL.println(\"}\");\n*/\n}\n\n\n\n\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino Zero/Weather/SeeedGroveJson/SeeedGroveJson.ino",
    "content": "/* \n Arduino code using Seeed Grove Shield for http://connectthedots.io end-to-end example of sending data to Microsoft Azure\n By: Microsoft.\n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n Copyright (c) Microsoft.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n Based upon Tony DiCola and Adafruit's DHT_Unified_Sensor example\n\n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n\n Original header follows\n*/\n\n// DHT Temperature & Humidity Sensor\n// Unified Sensor Library Example\n// Written by Tony DiCola for Adafruit Industries\n// Released under an MIT license.\n\n// Depends on the following Arduino libraries:\n// - Adafruit Unified Sensor Library: https://github.com/adafruit/Adafruit_Sensor\n// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library\n\n#include <Adafruit_Sensor.h>\n#include <DHT.h>\n#include <DHT_U.h>\n\n#define DHTPIN            A0         // Pin which is connected to the DHT sensor.\n#define LIGHTPIN          A1         // Pin which is connected to the lumen sensor.\n\n// Uncomment the type of sensor in use:\n#define DHTTYPE           DHT11     // DHT 11 \n//#define DHTTYPE           DHT22     // DHT 22 (AM2302)\n//#define DHTTYPE           DHT21     // DHT 21 (AM2301)\n\nDHT_Unified dht(DHTPIN, DHTTYPE);\n\nuint32_t delayMS;\n\n// Constants used for the ConnectTheDots project\n// Disp value will be the label for the curve on the chart\n// GUID ensures all the data from this sensor appears on the same chart\n// You can use Visual Studio to create DeviceGUID and copy it here. In VS, On the Tools menu, click Create GUID. The Create GUID\n// tool appears with a GUID in the Result box. Click Copy, and paste below.\n//\nchar GUID1[] = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\";\nchar GUID2[] = \"yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy\";\nchar GUID3[] = \"zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz\";\nchar Org[] = \"My organization\";\nchar Disp[] = \"Arduino + Seeed Grove 01\";\nchar Locn[] = \"here\";\nchar Measure1[] = \"temperature\";\nchar Units1[] = \"F\";\nchar Measure2[] = \"humidity\";\nchar Units2[] = \"%\";\nchar Measure3[] = \"light\";\nchar Units3[] = \"lumen\";\nchar buffer[300];\nchar convbuffer[15];\n\n// Variables for values from sensors\nint humidity = 0; // [%]\nint tempf = 0; // [temperature F]\nint tempc = 0; // [temperature in Celsius ]\n// Using int above on Zero, to use float see this post to implement dtostrf: http://forum.arduino.cc/index.php?topic=368720.0\n\nint light_lvl = 0; //[analog value from 0 to 1023]\n\nvoid setup() {\n  Serial.begin(9600); \n  // Initialize device.\n  dht.begin();\n  sensor_t sensor;\n  dht.temperature().getSensor(&sensor);\n  dht.humidity().getSensor(&sensor);\n\n  // Set delay between sensor readings based on sensor details.\n  delayMS = sensor.min_delay / 1000;\n}\n\nvoid loop() {\n  // Delay between measurements.\n  delay(delayMS);\n  \n  // Get temperature event and save its value.\n  sensors_event_t event;  \n  dht.temperature().getEvent(&event);\n  if (isnan(event.temperature)) {\n    Serial.println(\"Error reading temperature!\");\n  }\n  else {\n    tempc = event.temperature;\n    tempf = tempc * 9 / 5 + 32;\n  }\n  // Get humidity event and save its value.\n  dht.humidity().getEvent(&event);\n  if (isnan(event.relative_humidity)) {\n    Serial.println(\"Error reading humidity!\");\n  }\n  else {\n    humidity = event.relative_humidity;\n  }\n\n  // Get light level\n  light_lvl = analogRead(LIGHTPIN);\n  \n  //Format to JSON\n  printWeather();\n}\n\nvoid printWeather()\n{\n  // print string for temperature, separated by line for ease of reading\n  // sent as one Serial.Print to reduce risk of serial errors\n  \n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID1);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure1);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units1);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  sprintf(convbuffer, \"%d\", tempf);\n  strcat(buffer,convbuffer);\n  // On AVRs like the Uno the above can be done as: \n  //strcat(buffer,dtostrf(tempf,8,2,convbuffer));\n  strcat(buffer,\"}\");\n  Serial.println(buffer);\n\n  // print string for humidity, separated by line for ease of reading\n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID2);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure2);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units2);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  sprintf(convbuffer, \"%d\", humidity);\n  strcat(buffer,convbuffer);\n  strcat(buffer,\"}\");\n  Serial.println(buffer);\n\n  // print string for light, separated by line for ease of reading\n  memset(buffer,'\\0',sizeof(buffer));\n  strcat(buffer,\"{\");\n  strcat(buffer,\"\\\"guid\\\":\\\"\");\n  strcat(buffer,GUID3);\n  strcat(buffer,\"\\\",\\\"organization\\\":\\\"\");\n  strcat(buffer,Org);\n  strcat(buffer,\"\\\",\\\"displayname\\\":\\\"\");\n  strcat(buffer,Disp);\n  strcat(buffer,\"\\\",\\\"location\\\":\\\"\");\n  strcat(buffer,Locn);  \n  strcat(buffer,\"\\\",\\\"measurename\\\":\\\"\");\n  strcat(buffer,Measure3);\n  strcat(buffer,\"\\\",\\\"unitofmeasure\\\":\\\"\");\n  strcat(buffer,Units3);\n  strcat(buffer,\"\\\",\\\"value\\\":\");\n  sprintf(convbuffer, \"%d\", light_lvl);\n  strcat(buffer,convbuffer);\n  strcat(buffer,\"}\");\n  Serial.println(buffer);\n}\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Arduino Zero/Weather/SeeedGroveJson/readme.md",
    "content": "# Setup Arduino and Weather Shield #\nThis document explains how to setup an Arduino Zero with a Seeed Gove shield for monitoring temperature, humidity and light level in the Connect The Dots getting started project. It assumes that you have the right tools installed and that you have cloned or downloaded the ConnectTheDots.io project on your machine.\n\n![](ArduinoGroveShield.jpg)\n\n##Hardware requirements ##\nYou need an [Arduino Zero](https://www.arduino.cc/en/Main/ArduinoBoardZero), a [Seeed Grove shield](http://www.seeedstudio.com/wiki/Grove_-_Base_Shield), a [Grove Light Sensor](http://www.seeedstudio.com/wiki/Grove_-_Light_Sensor), and a [Grove Temperature sensor](http://www.seeedstudio.com/wiki/Grove_-_Temperature_and_Humidity_Sensor).\n\nThis sample should work unmodified with an [Arduino Uno](https://www.arduino.cc/en/Main/ArduinoBoardUno). There are comments in the code showing some changes you can make to use floating point rather than int with the Uno owing to some library differences.\n\n\n##Prepare the Arduino Uno R3 ##\n\n* Connect the Arduino Zero directly to your computer with the USB cable\n* Install and run the Arduino IDE (we recommend the current official release, with the Windows Installer) which you can find on the [Arduino.cc](http://arduino.cc/en/Main/Software) website.\n* If necessary, install the Windows device drivers for the Arduino on your computer, following the instructions [here](http://arduino.cc/en/Guide/Windows#toc4).\n* Get the necessary libraries, in the Arduino IDE go to the menu Sketch, Libraries, Manage Libraries. Search for and install the Adafruit libraries: DHT sensor library, DHT Unified, and Unified Sensor.\n* In the Arduino IDE open `Devices/GatewayConnectedDevices/Arduino Zero/Weather/SeeedGroveJson/SeeedGroveJson.ino`. (It is modified from the original Adafruit sample to send data in JSON format as well as additional self-describing fields.) Edit the code to set your own values for the first four constants (GUID - Location) - for example, DisplayName will contain the label for the sensor on the website. (If you send multiple variables (e.g. temp and humidity), you need to reproduce the UnitOfMeasure and the MeasureName fields.\n   \n\t\tchar GUID[] = \"81E79059-A393-4797-8A7E-526C3EF9D64B\";\n\t\tchar Organization[] = \"Me\";\n\t\tchar DisplayName[] = \"Arduino + Seeed Grove 01\";\n\t\tchar Location[] = \"My office\";\n\t\tchar MeasureName[] = \"temperature\";\n\t\tchar UnitOfMeasure[] = \"F\";\n\t\tchar MeasureName2[] = \"humidity\";\n\t\tchar UnitOfMeasure2[] = \"%\";\n\t\tchar MeasureName3[] = \"light\";\n\t\tchar UnitOfMeasure3[] = \"lumen\";\n\n* Compile and upload the sketch to the Arduino: *Sketch > Upload* or Ctrl-U. \n\t* If the upload fails, make sure you have the correct board selected on the correct COM port through `Tools > Port` menu.\n* Open the serial monitor (Shift-Ctrl-M). You should now see temperature and other data on the serial monitor. Note the format of the data being sent out the serial port of the Arduino – in the next section you’ll see the same data being read from the serial port of the Raspberry Pi:\n\n![](ArduinoCOMCapture.jpg)\n\n* Disconnect the Arduino from your computer\n\n##Connect the Arduino board to the gateway ##\n\n* Plug Arduino’s USB cable into one of the Raspberry Pi USB ports.\n\nNow you're ready to get your [Raspberry Pi setup](../../../../Gateways/GatewayService/RaspberryPi-Gateway-setup.md)."
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/BLEMoistureSensor.py",
    "content": "﻿'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read data from a Decagon 10HS moisture sensor connected to a RedBear BLE Nano micro controller, then augment and format as JSON to send via \n socket connection to a gateway. Example of sending moisture to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n Real time output viewable at http://connectthedots.msopentech.com .\n'''\n\n# code based on https://github.com/switchdoclabs/iBeacon-Scanner-\n\nDEBUG = False\n\nimport os\nimport sys\nimport struct\nimport bluetooth._bluetooth as bluez\n\nLE_META_EVENT = 0x3e\nLE_PUBLIC_ADDRESS=0x00\nLE_RANDOM_ADDRESS=0x01\nLE_SET_SCAN_PARAMETERS_CP_SIZE=7\nOGF_LE_CTL=0x08\nOCF_LE_SET_SCAN_PARAMETERS=0x000B\nOCF_LE_SET_SCAN_ENABLE=0x000C\nOCF_LE_CREATE_CONN=0x000D\n\nLE_ROLE_MASTER = 0x00\nLE_ROLE_SLAVE = 0x01\n\n# these are actually sub-events of LE_META_EVENT\nEVT_LE_CONN_COMPLETE=0x01\nEVT_LE_ADVERTISING_REPORT=0x02\nEVT_LE_CONN_UPDATE_COMPLETE=0x03\nEVT_LE_READ_REMOTE_USED_FEATURES_COMPLETE=0x04\n\n# Advertisement event types\nADV_IND=0x00\nADV_DIRECT_IND=0x01\nADV_SCAN_IND=0x02\nADV_NONCONN_IND=0x03\nADV_SCAN_RSP=0x04\n\ndef eventHandler(macAddress, value):\n    f(macAddress,value)\n\nclass BLEMoistureSensor:\n\n    sock = None\n    callback = None\n    dev_id = 0\n    \n    def __init__(self) :\n        try:\n            self.sock = bluez.hci_open_dev(self.dev_id)\n            old_filter = self.sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14)\n            enable = 1\n            cmd_pkt = struct.pack(\"<BB\", enable, 0x00)\n            bluez.hci_send_cmd(self.sock, OGF_LE_CTL, OCF_LE_SET_SCAN_ENABLE, cmd_pkt)\n            \n        except:\n            print \"error accessing blue tooth device...\"\n            sys.exit(1)\n    \n    def printpacket(self, pkt):\n        print \"in printpacket\"\n        for c in pkt:\n            sys.stdout.write(\"%02x \" % struct.unpack(\"B\",c)[0])\n\n    def packed_bdaddr_to_string(self, bdaddr_packed):\n        return ''.join('%02x'%i for i in struct.unpack(\"<BBBBBB\", bdaddr_packed[::-1]))\n\n    # func( macAddress, value )\n    def setSensorDataAvailableEvent(self, func):\n        self.callback = func\n        \n    def Listen(self):\n        try:\n            old_filter = self.sock.getsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, 14)\n\n            # perform a device inquiry on blue tooth device #0\n            # The inquiry should last 8 * 1.28 = 10.24 seconds\n            # before the inquiry is performed, bluez should flush its cache of\n            # previously discovered devices\n            flt = bluez.hci_filter_new()\n            bluez.hci_filter_all_events(flt)\n            bluez.hci_filter_set_ptype(flt, bluez.HCI_EVENT_PKT)\n            self.sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, flt )\n            while True:\n                pkt = self.sock.recv(255)\n                ptype, event, plen = struct.unpack(\"BBB\", pkt[:3])\n\n                if event == bluez.EVT_INQUIRY_RESULT_WITH_RSSI:\n                    i =0\n                elif event == bluez.EVT_NUM_COMP_PKTS:\n                        i =0 \n                elif event == bluez.EVT_DISCONN_COMPLETE:\n                        i =0 \n                elif event == LE_META_EVENT:\n                    subevent, = struct.unpack(\"B\", pkt[3])\n                    pkt = pkt[4:]\n                    if subevent == EVT_LE_CONN_COMPLETE:\n                        le_handle_connection_complete(pkt)\n                    elif subevent == EVT_LE_ADVERTISING_REPORT:\n                        #print \"advertising report\"\n                        num_reports = struct.unpack(\"B\", pkt[0])[0]\n                        report_pkt_offset = 0\n                        for i in range(0, num_reports):\n                            if (DEBUG == True):\n                                print \"-------------\"\n                                print \"\\t\", \"full packet: \", self.printpacket(pkt)\n                                print \"\\t\", \"MAC address: \", self.packed_bdaddr_to_string(pkt[report_pkt_offset + 3:report_pkt_offset + 9])\n                            # build the return string\n                            id = pkt[report_pkt_offset +12: report_pkt_offset +26] \n                            if (DEBUG == True):\n                                print \"\\t\", \"id: \", id\n                            if (id == 'MSOT_BLE_Demo:'):\n                                # MAC address\n                                macAddress = self.packed_bdaddr_to_string(pkt[report_pkt_offset + 3:report_pkt_offset + 9])\n                                # string representation of Water Volume Content (unit-less) floating point value\n                                value = pkt[report_pkt_offset + 26: report_pkt_offset + 36] \n                                if (DEBUG == True):\n                                    print \"\\t\", \"address=\", macAddress, \" value=\", value\n                                if( self.callback != None ):\n                                    print \"calling event handler\"\n                                    self.callback( macAddress, value )\n        except:\n            self.sock.setsockopt( bluez.SOL_HCI, bluez.HCI_FILTER, old_filter )\n            print \"error in BLE Listen loop\"\n            sys.exit(1)\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/DeviceConfig.csv",
    "content": "MACAddress,DisplayName,Organization,Location,MeasureName,UnitsOfMeasure\n1,test,now,here,unknown,improbable\n2,foo,bar,what,that,impossible\n*,none,none,none,none,none"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/RedBear_BLE_nano/Configure.md",
    "content": "RedBear BLE Nano with Decagon 10HS Moisture Sensor \n===================================================\n\nHardware Configuration\n----------------------\n\n1.  10HS sensor input connected to P0\\_4\n\n2.  10HS power tied to P0\\_9, P0\\_10 and P0\\_11 (this will be switched on for 20ms every 5 seconds to extend battery life)\n\n3.  3xAA lithium cells connected to VIN. Batteries should last 4+ years with continuous use.\n\nCode Compilation\n----------------\n\n1.  Create a project at <https://developer.mbed.org/>\n\n2.  Import the code in main.cpp\n\n3.  Import the BLE\\_API and nRF51822 libraries\n\n4.  Ensure device target is set to BLE nano\n\n5.  Compile and download the generated .hex file to the BLE nano device\n\nDevice Usage\n------------\n\nSince the data is sent over the advertising packet, no device paring is required. Simply turn the device on.\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/RedBear_BLE_nano/main.cpp",
    "content": "/* mbed Microcontroller Library\n * Copyright (c) 2006-2013 ARM Limited\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n#include \"mbed.h\"\n#include \"iBeaconService.h\"\n\n/**\n * For this demo application, populate the beacon advertisement payload\n * with 2 AD structures: FLAG and MSD (manufacturer specific data).\n *\n * Reference:\n *  Bluetooth Core Specification 4.0 (Vol. 3), Part C, Section 11, 18\n */\n\nconst float  cAdvertisingIntervalSec = 5.0;\nconst float  cLEDStatusDurationSec = .010;\nconst float  cMoistureSensorPowerDurationSec = .020; \n\nconst char cShortDeviceName[] = \"MSOT_BLE_Demo:\";\n\nBLEDevice ble;\nDigitalOut led1(LED1);\nDigitalOut moistureSensorPower[] = { DigitalOut(P0_9), DigitalOut(P0_10), DigitalOut(P0_11) };\nAnalogIn moistureSensorInput(P0_4);\n\n// attempt to get more current by tying 3 outputs together and setting high output drive/low disable (GPIO_PIN_CNF_DRIVE_D0H1)\nvoid nrf_gpio_cfg__high_current_output(uint32_t pin_number)\n{\n    NRF_GPIO->PIN_CNF[pin_number] = (GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos)\n                                            | (GPIO_PIN_CNF_DRIVE_D0H1 << GPIO_PIN_CNF_DRIVE_Pos)\n                                            | (GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos)\n                                            | (GPIO_PIN_CNF_INPUT_Disconnect << GPIO_PIN_CNF_INPUT_Pos)\n                                            | (GPIO_PIN_CNF_DIR_Output << GPIO_PIN_CNF_DIR_Pos);\n}\n\n\n\nvoid MeasureMoisture()\n{\n    // board LED is active low\n    led1 = 0; \n    wait(cLEDStatusDurationSec);\n    led1 = 1; \n\n    // turn on moisture sensor and wait for sensor reading to stabilize\n    for( int index = 0; index < 3; index ++)\n    {\n        moistureSensorPower[index] =  1;\n    }\n    wait(cMoistureSensorPowerDurationSec);\n    \n    // read inputs\n    float moisture = moistureSensorInput;\n    \n    // turn off moisture sensor\n    for( int index = 0; index < 3; index ++)\n    {\n        moistureSensorPower[index] =  0;\n    }\n\n    // ADC range of 0-1 = 0-3.3V\n    float mV = moisture * 3.3 * 1000.0;                                                             \n\n    // convert ADC value into water volume content as documented at http://manuals.decagon.com/Manuals/13508_10HS_Web.pdf\n    float WVC = (2.97e-9 * pow(mV,3)) - (7.37e-6 * pow(mV, 2)) + (6.69e-3 * mV) -1.92;\n\n    // build advertising data\n    ble.clearAdvertisingPayload();\n    char buffer[32];\n    sprintf(buffer, \"%s%0.8f\", cShortDeviceName, WVC );\n    ble.accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, (const uint8_t*)buffer, strlen(buffer));\n}\n\nvoid Advertise()\n{\n    ble.startAdvertising();\n}\n\nvoid periodicCallback(void)\n{\n    MeasureMoisture();\n    Advertise();\n}\n\nint main(void)\n{  \n    nrf_gpio_cfg__high_current_output( P0_9 );\n    nrf_gpio_cfg__high_current_output( P0_10 );\n    nrf_gpio_cfg__high_current_output( P0_11 );\n\n    Ticker ticker;\n    ticker.attach(periodicCallback, cAdvertisingIntervalSec);\n\n\n    ble.init();\n    ble.setDeviceName((uint8_t*)cShortDeviceName);\n    ble.setAdvertisingInterval(cAdvertisingIntervalSec * 1000);\n    \n//    AnnounceDevice();\n//    Advertise();\n\n    while(1)\n    {\n        ble.waitForEvent(); // allows or low power operation\n    }\n}\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/SensorAgent.py",
    "content": "﻿'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read a moisture sensor attached to a RedBear BLE Nano, then augment and format as JSON to send via socket connection to a gateway.\n Example of sending hydrology data to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n \n'''\nimport sys\nimport socket\nimport time\nimport datetime\nimport re\nimport csv\nimport sys\n\nDebug = False\n\nIronPythonPlatform = 'cli'\n\nif sys.platform != IronPythonPlatform:\n    from BLEMoistureSensor import BLEMoistureSensor\n\nCONNECT_RETRY_INTERVAL = 2\nEXCEPTION_THRESHOLD = 3\nSEND_INTERVAL = 5\n\ns = None\ndeviceConfig = {}\nsensorAgentConfig = None\n\ndef processSensorData(macAddress, value) :\n    global s\n    global deviceConfig\n    global sensorAgentConfig\n    timeStr = datetime.datetime.utcnow().isoformat()\n\n    macAddressRecognized = False\n\n    # replace last group of digits with mac address of BLE sensor board\n    deviceID = sensorAgentConfig[\"GUID\"]\n    deviceID = deviceID[:24] + macAddress\n    JSONString = \"{\"\n    JSONString += \"\\\"value\\\": %s\" % value\n    JSONString += \",\\\"guid\\\":\\\"\" + deviceID\n\n    macAddressKey = macAddress\n    displayName = \"\"\n    if macAddress in deviceConfig:\n        macAddressRecognized = True\n        displayName = deviceConfig[macAddressKey][\"DisplayName\"]\n    elif '*' in deviceConfig:\n        macAddressKey = '*'\n        macAddressRecognized = True\n        displayName = macAddress\n\n    if macAddressRecognized == True:\n        JSONString += \"\\\",\\\"organization\\\":\\\"\" + deviceConfig[macAddressKey][\"Organization\"]\n        JSONString += \"\\\",\\\"displayname\\\":\\\"\" + displayName\n        JSONString += \"\\\",\\\"unitofmeasure\\\":\\\"\" + deviceConfig[macAddressKey][\"UnitsOfMeasure\"]\n        JSONString += \"\\\",\\\"measurename\\\":\\\"\" + deviceConfig[macAddressKey][\"MeasureName\"]\n        JSONString += \"\\\",\\\"location\\\":\\\"\" + deviceConfig[macAddressKey][\"Location\"]\n        JSONString += \"\\\",\\\"timecreated\\\":\\\"\" + timeStr + \"\\\"\"\n        JSONString += \"}\"\n\n        if Debug == True:\n            print \"JSONString=\", JSONString\n        if s != None :\n            # send JSON string to gateway over socket interface\n            s.send(\"<\" + JSONString + \">\")\n\ndef main() :\n    global s\n    global deviceConfig\n    global sensorAgentConfig\n\n    # parse SensorAgent configuration CSV file\n    try:\n        with open('SensorAgentConfig.csv') as sensorAgentConfigFile:\n            sensorAgentConfigSource = csv.DictReader(sensorAgentConfigFile) \n            for row in sensorAgentConfigSource :\n                sensorAgentConfig = row\n                # we only care about first row in config file\n                break;\n    except:\n        print \"Error reading config file. Please correct before continuing.\"\n        sys.exit()\n\n\n    # parse device configuration (BLE device) CSV file\n    try:\n        with open('DeviceConfig.csv') as deviceConfigFile:\n            deviceConfigSource = csv.DictReader(deviceConfigFile) \n            for row in deviceConfigSource:\n                deviceConfig[row[\"MACAddress\"]] = row\n    except:\n        print \"Error reading config file. Please correct before continuing.\"\n        sys.exit()\n\n    try:\n        # setup moisture sensor\n        if sys.platform != 'cli':\n            moistureSensor = BLEMoistureSensor()\n            moistureSensor.setSensorDataAvailableEvent(processSensorData)\n\n        # setup server socket\n        if Debug == False :\n            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n            print \"Socket created.\"\n            while True:\n                try:\n                    s.connect((sensorAgentConfig[\"Host\"], int(sensorAgentConfig[\"Port\"])))\n                    break\n                except socket.error as msg:\n                    print \"Socket connection failed. Error Code : \" + str(msg[0]) + \" Message \" + msg[1]\n                    time.sleep(CONNECT_RETRY_INTERVAL)\n                    print \"Socket connection succeeded.\"\n\n        # this will listen forever for advertising events and call\n        # processSensorData() when data arrives\n        if sys.platform != IronPythonPlatform:\n            moistureSensor.Listen()\n\n    except KeyboardInterrupt: \n        print \"Continuous polling stopped\"\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/SensorAgentConfig.csv",
    "content": "GUID,Host,Port\nxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,127.0.0.1,5002\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/autorun2.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n#\nexport GW_HOME=/home/pi/ctdgtwy\necho \"$(date) => autorun2.sh: started\" >> $GW_HOME/boot_sequence.log\necho \"Starting secondary script\"\ncd $GW_HOME\nsudo python $GW_HOME/SensorAgent.py &\necho \"$(date) => autorun2.sh: finished\" >> $GW_HOME/boot_sequence.log\n\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/configuration.md",
    "content": "Get the Bluetooth stack on Raspbian:\n\nsudo apt-get install bluetooth bluez-utils blueman\nsudo apt-get install python-bluez\n\nEnable the Bluetooth device\n\nsudo hciconfig hci0 up\n\nIf the device ever gets disconnected try:\n\nsudo hciconfig hci0 down\n\nfollowed by:\n\nsudo hciconfig hci0 up\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BLEMoisture/deploy_next.cmd",
    "content": "@echo off\nREM //  ---------------------------------------------------------------------------------\nREM //  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\nREM // \nREM //  The MIT License (MIT)\nREM // \nREM //  Permission is hereby granted, free of charge, to any person obtaining a copy\nREM //  of this software and associated documentation files (the \"Software\"), to deal\nREM //  in the Software without restriction, including without limitation the rights\nREM //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\nREM //  copies of the Software, and to permit persons to whom the Software is\nREM //  furnished to do so, subject to the following conditions:\nREM // \nREM //  The above copyright notice and this permission notice shall be included in\nREM //  all copies or substantial portions of the Software.\nREM // \nREM //  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nREM //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nREM //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nREM //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nREM //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nREM //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nREM //  THE SOFTWARE.\nREM //  ---------------------------------------------------------------------------------\n\nset puttydir=\"C:\\software\\putty\\\"\nset prjdir=..\\..\\Gateways\\GatewayService\\\nset scdir=%prjdir%Scripts\\ScriptConverter\\bin\\\nset rpi_ip=10.121.204.139\nset rpi_usr=pi\nset rpi_pw=raspberry\nset Configuration=Release\nset GW_Home=ctdgtwy\nset Staging=%GW_Home%/staging\nset PUTTY_CMD=%puttydir%putty %rpi_usr%@%rpi_ip% -pw %rpi_pw% \nset PSCP_CMD=%puttydir%pscp -pw %rpi_pw% \n\necho editing line endings for Pi\n%scdir%%Configuration%\\ScriptConverter.exe \"autorun2.sh\" \n\necho Copying file that starts up python script to read hydrology sensors and format as JSON\n%PSCP_CMD% SensorAgent.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% BLEMoistureSensor.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% SensorAgentConfig.csv  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% DeviceConfig.csv  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% Modified\\autorun2.sh  %rpi_usr%@%rpi_ip%:%Staging%/\n\necho Marking autorun2.sh as executable\ndel /f %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/autorun2.sh    \t>> %temp%\\rpigatewayautorunx.tmp\n%PUTTY_CMD% -m                                    %temp%\\rpigatewayautorunx.tmp"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BluetoothUARTExample/BluetoothUARTExample.py",
    "content": "'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read data from a Wensn 1361 Digital Sound Level Meter, then augment and format as JSON to send via socket connection to a gateway.\n Example of sending sound level data to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n Real time output viewable at http://connectthedots.msopentech.com .\n'''\nimport serial\nimport sys\nimport socket\nimport time\nimport datetime\n\n#SensorSubject = \"sound\"                           # determines how Azure website will chart the data\nOrg      = \"My organization\";\nDisp     = \"Bluetooth example\"                     # will be the label for the curve on the chart\nGUID     = \"nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn\"  # ensures all the data from this sensor appears on the same chart. You can use the Tools/Create GUID in Visual Studio to create\nLocn     = \"here\";\nMeasure  = \"measure\";\nUnits    = \"units\";\n\nHOST = '127.0.0.1'   \nPORT = 5000\n\nSERIAL_PORT  = '/dev/ttyAMA0'\nBAUD_RATE    = 9600\n\nCONNECT_RETRY_INTERVAL = 2\nEXCEPTION_THRESHOLD    = 3\nSEND_INTERVAL          = 1\n\nwhile True:\n    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n    print(\"Socket created\")\n\n    while True:\n        try:\n            s.connect((HOST, PORT));\n            break;\n        except socket.error as msg:\n            print(\"Socket connection failed. Error Code : \" + str(msg[0]) + \" Message \" + msg[1])\n            time.sleep(CONNECT_RETRY_INTERVAL)\n    print (\"Socket connection succeeded.\")\n    \n    exceptions_count = 0\n    serial_port = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=.1)\n    while True:\n        timeStr = datetime.datetime.utcnow().isoformat()\n        try:\n            serialData = serial_port.readline()[:-2]\n            if len(serialData) > 0:\n                JSONdata=\"{\\\"value\\\":\"+serialData+\",\\\"guid\\\":\\\"\"+GUID+\"\\\",\\\"organization\\\":\\\"\"+Org+\"\\\",\\\"displayname\\\":\\\"\"+Disp +\"\\\",\\\"unitofmeasure\\\":\\\"\"+Units+\"\\\",\\\"measurename\\\":\\\"\"+Measure+\"\\\",\\\"location\\\":\\\"\"+Locn+\"\\\",\\\"timecreated\\\":\\\"\"+timeStr+\"\\\"}\"\n                s.send(\"<\" + JSONdata + \">\");                  # sends to gateway over socket interface\n                print(JSONdata)                                # print only for debugging purposes\n        except Exception as msg:\n            exceptions_count += 1\n            print(msg[0])\n            # if we get too many exceptions, we assume the server is dead\n            # we will ignore the casual exception\n            if exceptions_count > EXCEPTION_THRESHOLD:\n                break \n            else:\n                continue\n                    \n        time.sleep(1)\n        \n    # will never get here, unless server dies         \n    try: \n        s.close()\n    except Exception as msg:\n        # eat all exception and go back to connect loop \n        print(msg[0])\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BluetoothUARTExample/SetupSerialBaudRate.py",
    "content": "'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \nThis script is used for setting up raspberry's uart.\nIt corrects some config files.\nUser can set baudrate as argument.\n'''\n\nimport os\nimport sys\n\ndef fixEtcInittab(baudrate):\n    lines = []\n    inittabFilename = '/etc/inittab'\n    inittabTrueLine = '#T0:23:respawn:/sbin/getty -L ttyAMA0 %d vt100\\n' % baudrate\n\n    with open(inittabFilename, 'r') as fd:\n        for line in fd:\n            lines.append(line)\n    fd.close()\n\n    for i, line in enumerate(lines):\n        if line.startswith('T0:23:respawn') and line.endswith('vt100\\n'):\n            lines[i] = inittabTrueLine\n            os.remove(inittabFilename)\n            \n    fd = open(inittabFilename, 'w') \n    for i, line in enumerate(lines):\n        fd.write(lines[i])\n        \n    fd.close()  \n    #print lines\n    \n    \ndef fixBootCmdLine(baudrate):\n    lines = []\n    bootcmdlineFilename = '/boot/cmdline.txt'\n    bootcmdlineTrueLine = 'dwc_otg.lpm_enable=0 console=ttyAMA0,%d ' % baudrate \\\n                            + 'kgdboc=ttyAMA0,%d console=tty1 root=/dev/mmcblk0p2 ' % baudrate \\\n                            + 'rootfstype=ext4 rootwait\\n'\n        \n    with open(bootcmdlineFilename, 'r') as fd:\n        for line in fd:\n            lines.append(line)\n    fd.close()\n    \n    for i, line in enumerate(lines):\n        if line.startswith('dwc_otg.lpm_enable=0') and line.endswith('rootwait\\n'):\n            lines[i] = bootcmdlineTrueLine\n            os.remove(bootcmdlineFilename)\n            \n    fd = open(bootcmdlineFilename, 'w') \n    for i, line in enumerate(lines):\n        fd.write(lines[i])\n        \n    fd.close()  \n    #print lines\n    \ndef main(arguments):\n    baudrate = int(arguments[1])\n    #print baudrate\n    fixEtcInittab(baudrate)\n    fixBootCmdLine(baudrate)\n    \n\nif __name__ == '__main__':\n    main(sys.argv)\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BluetoothUARTExample/readme",
    "content": "BT example UART setup instruction:\n\n0) Install raspbian wheezy on you raspberry, just follow instructions on raspbian official site.\n1) Call SetupSerialBaudRate.py with need baudrate as argument - it will set up uart.\n2) Reboot RPI\n3) Install prerequisites:\n\ta. sudo apt-get install python-pip\n\tb. sudo pip install pySerial\n4) Disable Raspberry: sudo shutdown -h now, unplug micro-usb after 10-15 seconds\n5) Do the wiring. Raspberry PI pinout depends on Raspberry version. You need to find RX and TX lines on your.\n\ta. Connect TX on bluetooth module to RX on raspberry\n\tb. Connect RX on bluetooth module to TX on raspberry\n\tc. Connect Ground on bluetooth module to Ground on RPI\n\td. Checkout what voltage your BT module uses. RPI has 5V or 3.3V. \n\t\tHC-06 module uses 3.3V, so if you have HC-06 BT module connect it's VCC to 3.3V on RPI.\n\te. Power up raspberry.\n6) Pair your device (cellphone, sensor or etc) with bluetooth module.\n7) To start reading UART and sending data to gateway: python BluetoothUARTExample.py on your Raspberry\n\nNotes:\n\n1)\tTo check UART and wiring without bluetooth you can build test device using arduino and RPI. \n\tYou can find instructions in UartSetup.pdf (same folder)\n2) Clearly this instruction should work for any bluetooth module that supports UART. \n\tUser just need to know uart baudrate and set it via script."
  },
  {
    "path": "Devices/GatewayConnectedDevices/BtUSB_2_BtUART_Example/ArduinoSensorMock/ArduinoSensorMock.ino",
    "content": "#include <SoftwareSerial.h>\n\nSoftwareSerial bt(4,5);\n\nvoid setup() \n{\n    Serial.begin(9600);  \n    bt.begin(9600);  \n    randomSeed(analogRead(A1));\n}\n \nvoid loop() \n{\n    // init array with random bytes from my head\n    static uint8_t bytes[2] = { 0x02, 0x1A };\n    while (bt.available() > 0) \n    {\n        char incomingByte = bt.read();\n        Serial.println(incomingByte);\n    }\n    bytes[0] = random(0xFF);\n    bytes[1] = random(0xFF);\n    uint16_t number = bytes[0] << 8 + bytes[1];\n    Serial.print(\"Sending to BT:\");\n    Serial.println(number, DEC);\n    bt.write(bytes, 2);\n    delay(500);\n}"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BtUSB_2_BtUART_Example/BtUSB_2_BtUART_Example.py",
    "content": "'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read data from a sensor which uses Bluetooth to transmit data, then augment and format as JSON to send via socket connection to a gateway.\n Example of sending data to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n Real time output viewable at http://connectthedots.msopentech.com .\n'''\nimport bluetooth\nimport sys\nimport socket\nimport time\nimport datetime\n\n#SensorSubject = \"distanceMeasurer\"                           # determines how Azure website will chart the data\nOrg      = \"My organization\";\nDisp     = \"Bluetooth example\"                     # will be the label for the curve on the chart\nGUID     = \"nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn\"  # ensures all the data from this sensor appears on the same chart. You can use the Tools/Create GUID in Visual Studio to create\nLocn     = \"here\";\nMeasure  = \"measure\";\nUnits    = \"units\";\n\nHOST = '127.0.0.1'   \nPORT = 5000\n\nBT_PORT = 1\nBT_PACKET_LEN = 2\nBT_DEV_ADDR = \"20:14:10:10:14:17\"\t# Please set needed MAC address\nBT_SOCK_TIMEOUT = 10\n\nCONNECT_RETRY_INTERVAL = 2\n\ndef connectSockets(bt, gatewaySock):\n    # Connect BT first\n    while bt == None:\n        print \"Connection RFCOMM\"\n        try:\n            bt = bluetooth.BluetoothSocket(bluetooth.RFCOMM)\n            bt.connect((BT_DEV_ADDR, BT_PORT));\n            print (\"BT connection succeded\")\n        except socket.error as msg:\n            bt = None\n            print(\"Socket connection failed. Error Code : \" + str(msg[0]) + \" Message \" + msg[1])\n            time.sleep(CONNECT_RETRY_INTERVAL)\n        \n    while gatewaySock == None:\n        print \"Connecting TCP\"\n        try:\n            gatewaySock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n            gatewaySock.connect((HOST, PORT));\n            print (\"Connection to gateway succeded\")\n        except socket.error as msg:\n            gatewaySock = None\n            print(\"Socket connection failed. Error Code : \" + str(msg[0]) + \" Message \" + msg[1])\n            time.sleep(CONNECT_RETRY_INTERVAL)\n    return bt, gatewaySock\n\ndef recvDataFromBT(bt, packetLen):\n    btData = 0\n    i = 0\n    while(i < packetLen):\n        byteAsStr = bt.recv(1)\n        if (byteAsStr == ''):\n            break\n        byte = ord(byteAsStr)\n        btData = (btData << 8) + byte\n        i = i + 1\n    return str(btData)\n    \nbt = None\ns = None\nwhile True:\n    bt, s = connectSockets(bt, s)\n\n    btData = None\n    # btData != \"\" means remote host is down\n    while btData == None:\n        wasExceptionOccured = 0\n        try:\n            btData = recvDataFromBT(bt, BT_PACKET_LEN);\n        except socket.error as sockErr:\n            print(sockErr)\n            try: \n                s.close()\n            except Exception as msg:\n                print(msg[0])\n            wasExceptionOccured = 1\n        if (wasExceptionOccured == 1 or btData == ''):\n            # something went wrong, reconnect bluetooth socket\n            btData = None\n            bt = None\n            bt = connectSockets(bt,s)\n\n        timeStr = datetime.datetime.utcnow().isoformat()\n        JSONdata = \"{\\\"value\\\":\"+btData+\",\\\"guid\\\":\\\"\"+GUID+\"\\\",\\\"organization\\\":\\\"\"+Org+\"\\\",\\\"displayname\\\":\\\"\"+Disp +\"\\\",\\\"unitofmeasure\\\":\\\"\"+Units+\"\\\",\\\"measurename\\\":\\\"\"+Measure+\"\\\",\\\"location\\\":\\\"\"+Locn+\"\\\",\\\"timecreated\\\":\\\"\"+timeStr+\"\\\"}\"\n        print(JSONdata) \n        wasExceptionOccured = 0\n        try:\n            # send to gateway over socket interface\n            bytesNeedToBeSent = len(JSONdata)\n            bytesSent = 0\n            while(bytesSent < bytesNeedToBeSent):\n                bytesSent = bytesSent + s.send(\"<\" + JSONdata + \">\")\n                \n            # TODO check if all bytes sent. Sent again if necessary.\n        except Exception as msg:\n            print(msg[0])\n            try: \n                s.close()\n            except Exception as msg:\n                print(msg[0])\n            wasExceptionOccured = 1\n            \n        if (wasExceptionOccured == 1):\n            # something went wrong, reconnect gateway socket\n            s = None\n            print \"gateway socket exception occured\"\n            bt,s = connectSockets(bt,s)\n                    \n        time.sleep(1)\n        \n# will never get here, unless server dies         \ntry: \n    s.close()\nexcept Exception as msg:\n# eat all exception and go back to connect loop \n    print(msg[0])\ntry: \n    bt.close()\nexcept Exception as msg:\n    # eat all exception and go back to connect loop \n    print(msg[0])\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BtUSB_2_BtUART_Example/TestServer.py",
    "content": "'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \nThis is tiny tcp server for testing python scripts that translate sensor data to gateway.\nInstead of setting up all gateway one can use this tiny sensor just to check if device works and transmits data to the network. \n'''\n\nimport sys\nimport socket\n\nHOST = '127.0.0.1'\nPORT = 5000\ns = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\ntry:\n    s.bind((HOST, PORT))\nexcept socket.error as msg:\n    print(\"Bind failed. Error Code : \" + str(msg[0]) + \" Message \" + msg[1])\n    sys.exit()\nprint (\"Socket bind complete\")\ns.listen(10)\nconn, addr = s.accept()\nwhile True:\n    data = conn.recv(256)\n    if len(data) > 0:\n        strData = data.decode('utf-8')\n        print strData\n    else:\n        break\ns.close()\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/BtUSB_2_BtUART_Example/readme",
    "content": "USB BT + Raspberry example setup instruction:\n\n0) Install raspbian wheezy on you raspberry, just follow instructions on raspbian official site.\n1) Please follow instructions from BluetoothSetup.pdf(same folder as readme)\n2) During executing instruction you will obtain other side Bluetooth module's MAC(sensor MAC, cellphone MAC)\n\tOpen the script and set BT_DEV_ADDR equal to obtained MAC.\n\tAlso you can set some meta information about your organization and etc\n3) Do the wiring. Construct/power up your bluetooth device on the other side.\n\tWe tested on Arduino + HC-06 UART module on other side and ACORP USB BT module + Raspberry.\n\nNotes:\n\n1) This method should work with USB Bluetooth modules from here http://elinux.org/RPi_USB_Bluetooth_adapters.\n\tThis list is not complete, code was tested on ACORP BT module, but if you use device from the list,\n\tyou most probably will succeed.\n2) Sensor mock is implemented on arduino, you can find it's sketch in ArduinoSensorMock folder.\n\tUpload it to arduino, connect uart bluetooth to arduino, set MAC in python script and you are ready to go.\n\tSketch was tested on HC-06 UART bluetooth module, but should work on any UART BT module. Just set correct baudrate in the sketch."
  },
  {
    "path": "Devices/GatewayConnectedDevices/Hydrology/DO2Sensor.py",
    "content": "﻿'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read data from an Atlas Scientific Dissolved Oxygen Sensor Board.\n'''\n\nimport serial\nimport re\n\nclass DO2Sensor(object):\n    default_device = '/dev/ttyAMA0'\n    port = serial.Serial()\n\n    def __init__(self, device = default_device):\n        # DO2 sensor is on UART because we have the legacy version of the DO2 board\n        self.port = serial.Serial( device,38400,timeout=1, bytesize=8, parity='N', stopbits=1, xonxoff=0, rtscts=0)\n\n    def GetDataSample(self) :\n        # get data command for DO2 sensor board\n        self.port.write('R\\r')\n        line = self.port.readline()\n        # occasionally no data is returned\n        while len(line) < 3:\n            self.port.write('R\\r')\n            line = self.port.readline()\n        return line;\n\ndef main() :\n    device = DO2Sensor()\n    try:\n        while True:\n            DO2Sample = device.GetDataSample()\n            DO2Parsed = re.findall(r\"([0-9]+\\.[0-9]+)\",DO2Sample)\n            if DO2Parsed:\n                print \"Dissolved O2 = {0} % ({1} mg/L)\".format( DO2Parsed[0], DO2Parsed[1] )\n            else:\n                print \"failed to parse:\" + DO2Sample\n    except KeyboardInterrupt: # catches the ctrl-c command, which breaks the loop above\n        print(\"Continuous polling stopped\")\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Hydrology/Documentation/DeviceSetup.md",
    "content": "Hardware Description\n====================\n\nThis project uses 3 hydrology sensors:\n\n-   A Dissolved Oxygen Sensor Board (<https://www.atlas-scientific.com/_files/_datasheets/_circuit/DO_Circuit_5.0.pdf>) with an appropriate probe (<https://www.atlas-scientific.com/product_pages/probes/do_probe.html>)\n\n-   An Electrical Conductivity Sensor Board (<https://www.atlas-scientific.com/_files/_datasheets/_circuit/EC_EZO_Datasheet.pdf>) with an appropriate probe (<https://www.atlas-scientific.com/product_pages/probes/ec_k1-0.html>)\n\n-   A Soil Moisture Sensor (<http://manuals.decagon.com/Manuals/13508_10HS_Web.pdf>) with an Analog-To-Digital converter (<https://www.adafruit.com/products/1085>)\n\nThe Raspberry PI 2 was chosen to both host the Device Gateway and support communication with the sensors.\n\nThe Dissolved Oxygen sensor board available only supported UART communication. Thus it was connected to the UART of the PI.\n\nThe soil moisture sensor has an analog output that needed to be converted to digital for the host computer. In order to do this an ADS1115 breakout board from Adafruit was added. This board uses the I2C bus to connect to the host system.\n\nThe Electrical Conductivity board supports both UART and I2C communication. I2C was chosen in this implementation in order to avoid having to add a UART multiplexer to the circuit configuration.\n\nThe schematic and image of the breadboard may be found in the Hydrology\\\\Documentation folder.\n\nRaspberry PI Configuration\n==========================\n\nThe I2C port needs to be enabled on the PI, and the login shell over serial needs to be disabled. This can be done with:\n\n\tsudo raspi-config\n\nChoose AdvancedI2C Configuration enable, then choose AdvancesSerial Configurationdisable\n\nPython Setup\n============\n\nYou will need several packages installed for the python scripts to run:\n\n    apt-get install I2C\\_Tools python-serial python-smbbus\n\nRunning the Code\n================\n\nIndividual sensors can be tested out by running the python script for that sensor (ECSensor.py, DO2Sensor.py, or MoistureSensor.py). Output will be sent to stdout.\n\nSensorAgent.py gathers the data from each of the sensors and make it available via local host socket for consumption by the gateway service.\n\nThe deploy\\_next.cmd script in the Hydrology folder can be used to deploy these scripts to the device after the Gateway service has been deployed. This will also install the SensorAgent.py script so that it runs at device startup.\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Hydrology/ECSensor.py",
    "content": "﻿'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read data from an Atlas Scientific Electrical Conductivity Sensor Board.\n'''\n\n# Much of code in the ECSensor class is taken from http://www.atlas-scientific.com/_files/code/pi_i2c_sample_code.pdf\n\n#!/usr/bin/python\nimport io\t \t# used to create file streams\nimport fcntl \t# used to access I2C parameters like addresses\n\nimport time \t# used for sleep delay and timestamps\nimport string \t# helps parse strings\n\nclass ECSensor:\n    long_timeout =      1.5\t\t# the timeout needed to query readings and calibrations\n    short_timeout =     .3 \t\t# timeout for regular commands\n    default_bus =       1 \t\t# the default bus for I2C on the newer Raspberry Pis, certain older boards use bus 0\n    default_address =   100 \t# the default address for the EC sensor\n\n    def __init__(self, address = default_address, bus = default_bus):\n        # open two file streams, one for reading and one for writing\n        # the specific I2C channel is selected with bus\n        # it is usually 1, except for older revisions where its 0\n        # wb and rb indicate binary read and write\n        self.file_read = io.open(\"/dev/i2c-\"+str(bus), \"rb\", buffering = 0)\n        self.file_write = io.open(\"/dev/i2c-\"+str(bus), \"wb\", buffering = 0)\n        \n        # initializes I2C to either a user specified or default address\n        self.set_i2c_address(address)\n\n    def set_i2c_address(self, addr):\n        # set the I2C communications to the slave specified by the address\n        # The commands for I2C dev using the ioctl functions are specified in\n        # the i2c-dev.h file from i2c-tools\n        I2C_SLAVE = 0x703\n        fcntl.ioctl(self.file_read, I2C_SLAVE, addr)\n        fcntl.ioctl(self.file_write, I2C_SLAVE, addr)\n\n    def write(self, string):\n        # appends the null character and sends the string over I2C\n        string += \"\\00\"\n        self.file_write.write(string)\n        \n    def read(self, num_of_bytes = 31):\n        # reads a specified number of bytes from I2C, then parses and displays the result\n        res = self.file_read.read(num_of_bytes)         # read from the board\n        response = filter(lambda x: x != '\\x00', res)   # remove the null characters to get the response\n        if(ord(response[0]) == 1):                      # if the response isnt an error\n            char_list = map(lambda x: chr(ord(x) & ~0x80), list(response[1:])) # change MSB to 0 for all received characters except the first and get a list of characters \n            # NOTE: having to change the MSB to 0 is a glitch in the raspberry pi, and you shouldn't have to do this!\n            return \"Command success:\" + ''.join(char_list) # convert the char list to a string and returns it\n        else:\n            return \"Error \" + str(ord(response[0]))\n\n    def query(self, string):\n        # write a command to the board, wait the correct timeout, and read the response\n        self.write(string)\n        \n        # the read and calibration commands require a longer timeout\n        if((string.upper().startswith(\"R\")) or \n           (string.upper().startswith(\"CAL\"))):\n            time.sleep(self.long_timeout)\n        else:\n            time.sleep(self.short_timeout)\n            \n        return self.read()\n            \n    def close(self):\n        self.file_read.close()\n        self.file_write.close()\n\ndef main () :\n    device = ECSensor()\n    try:\n        while True:\n            print(device.query(\"R\"))\n    except KeyboardInterrupt: # catches the ctrl-c command, which breaks the loop above\n        print(\"Continuous polling stopped\")\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Hydrology/MoistureSensor.py",
    "content": "'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read data from a Decagon 10HS moisture sensor over the adafruit ADS1115 ADC breakout board.\n'''\n\n#!/usr/bin/python\n\nimport math\nimport re\nimport time\nimport smbus\n\n# Adafruit_I2C Class taken from https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/tree/master/Adafruit_ADS1x15\n\n# ===========================================================================\n# Adafruit_I2C Class\n# ===========================================================================\n\nclass Adafruit_I2C:\n\n  @staticmethod\n  def getPiRevision():\n    \"Gets the version number of the Raspberry Pi board\"\n    # Revision list available at: http://elinux.org/RPi_HardwareHistory#Board_Revision_History\n    try:\n      with open('/proc/cpuinfo', 'r') as infile:\n        for line in infile:\n          # Match a line of the form \"Revision : 0002\" while ignoring extra\n          # info in front of the revsion (like 1000 when the Pi was over-volted).\n          match = re.match('Revision\\s+:\\s+.*(\\w{4})$', line)\n          if match and match.group(1) in ['0000', '0002', '0003']:\n            # Return revision 1 if revision ends with 0000, 0002 or 0003.\n            return 1\n          elif match:\n            # Assume revision 2 if revision ends with any other 4 chars.\n            return 2\n        # Couldn't find the revision, assume revision 0 like older code for compatibility.\n        return 0\n    except:\n      return 0\n\n  @staticmethod\n  def getPiI2CBusNumber():\n    # Gets the I2C bus number /dev/i2c#\n    return 1 if Adafruit_I2C.getPiRevision() > 1 else 0\n\n  def __init__(self, address, busnum=-1, debug=False):\n    self.address = address\n    # By default, the correct I2C bus is auto-detected using /proc/cpuinfo\n    # Alternatively, you can hard-code the bus version below:\n    # self.bus = smbus.SMBus(0); # Force I2C0 (early 256MB Pi's)\n    # self.bus = smbus.SMBus(1); # Force I2C1 (512MB Pi's)\n    self.bus = smbus.SMBus(busnum if busnum >= 0 else Adafruit_I2C.getPiI2CBusNumber())\n    self.debug = debug\n\n  def reverseByteOrder(self, data):\n    \"Reverses the byte order of an int (16-bit) or long (32-bit) value\"\n    # Courtesy Vishal Sapre\n    byteCount = len(hex(data)[2:].replace('L','')[::2])\n    val       = 0\n    for i in range(byteCount):\n      val    = (val << 8) | (data & 0xff)\n      data >>= 8\n    return val\n\n  def errMsg(self):\n    print \"Error accessing 0x%02X: Check your I2C address\" % self.address\n    return -1\n\n  def write8(self, reg, value):\n    \"Writes an 8-bit value to the specified register/address\"\n    try:\n      self.bus.write_byte_data(self.address, reg, value)\n      if self.debug:\n        print \"I2C: Wrote 0x%02X to register 0x%02X\" % (value, reg)\n    except IOError, err:\n      return self.errMsg()\n\n  def write16(self, reg, value):\n    \"Writes a 16-bit value to the specified register/address pair\"\n    try:\n      self.bus.write_word_data(self.address, reg, value)\n      if self.debug:\n        print (\"I2C: Wrote 0x%02X to register pair 0x%02X,0x%02X\" %\n         (value, reg, reg+1))\n    except IOError, err:\n      return self.errMsg()\n\n  def writeRaw8(self, value):\n    \"Writes an 8-bit value on the bus\"\n    try:\n      self.bus.write_byte(self.address, value)\n      if self.debug:\n        print \"I2C: Wrote 0x%02X\" % value\n    except IOError, err:\n      return self.errMsg()\n\n  def writeList(self, reg, list):\n    \"Writes an array of bytes using I2C format\"\n    try:\n      if self.debug:\n        print \"I2C: Writing list to register 0x%02X:\" % reg\n        print list\n      self.bus.write_i2c_block_data(self.address, reg, list)\n    except IOError, err:\n      return self.errMsg()\n\n  def readList(self, reg, length):\n    \"Read a list of bytes from the I2C device\"\n    try:\n      results = self.bus.read_i2c_block_data(self.address, reg, length)\n      if self.debug:\n        print (\"I2C: Device 0x%02X returned the following from reg 0x%02X\" %\n         (self.address, reg))\n        print results\n      return results\n    except IOError, err:\n      return self.errMsg()\n\n  def readU8(self, reg):\n    \"Read an unsigned byte from the I2C device\"\n    try:\n      result = self.bus.read_byte_data(self.address, reg)\n      if self.debug:\n        print (\"I2C: Device 0x%02X returned 0x%02X from reg 0x%02X\" %\n         (self.address, result & 0xFF, reg))\n      return result\n    except IOError, err:\n      return self.errMsg()\n\n  def readS8(self, reg):\n    \"Reads a signed byte from the I2C device\"\n    try:\n      result = self.bus.read_byte_data(self.address, reg)\n      if result > 127: result -= 256\n      if self.debug:\n        print (\"I2C: Device 0x%02X returned 0x%02X from reg 0x%02X\" %\n         (self.address, result & 0xFF, reg))\n      return result\n    except IOError, err:\n      return self.errMsg()\n\n  def readU16(self, reg, little_endian=True):\n    \"Reads an unsigned 16-bit value from the I2C device\"\n    try:\n      result = self.bus.read_word_data(self.address,reg)\n      # Swap bytes if using big endian because read_word_data assumes little \n      # endian on ARM (little endian) systems.\n      if not little_endian:\n        result = ((result << 8) & 0xFF00) + (result >> 8)\n      if (self.debug):\n        print \"I2C: Device 0x%02X returned 0x%04X from reg 0x%02X\" % (self.address, result & 0xFFFF, reg)\n      return result\n    except IOError, err:\n      return self.errMsg()\n\n  def readS16(self, reg, little_endian=True):\n    \"Reads a signed 16-bit value from the I2C device\"\n    try:\n      result = self.readU16(reg,little_endian)\n      if result > 32767: result -= 65536\n      return result\n    except IOError, err:\n      return self.errMsg()\n\nif __name__ == '__main__':\n  try:\n    bus = Adafruit_I2C(address=0)\n    print \"Default I2C bus is accessible\"\n  except:\n    print \"Error accessing default I2C bus\"\n\n\n# ===========================================================================\n# ADS1x15 Class\n#\n# Originally written by K. Townsend, Adafruit (https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/tree/master/Adafruit_ADS1x15)\n# Updates and new functions implementation by Pedro Villanueva, 03/2013.\n# The only error in the original code was in line 57:\n#              __ADS1015_REG_CONFIG_DR_920SPS    = 0x0050\n# should be \n#              __ADS1015_REG_CONFIG_DR_920SPS    = 0x0060     \n#\n# NOT IMPLEMENTED: Conversion ready pin, page 15 datasheet.\n# ===========================================================================\n\nclass ADS1x15:\n  i2c = None\n\n  # IC Identifiers\n  __IC_ADS1015                      = 0x00\n  __IC_ADS1115                      = 0x01\n\n  # Pointer Register\n  __ADS1015_REG_POINTER_MASK        = 0x03\n  __ADS1015_REG_POINTER_CONVERT     = 0x00\n  __ADS1015_REG_POINTER_CONFIG      = 0x01\n  __ADS1015_REG_POINTER_LOWTHRESH   = 0x02\n  __ADS1015_REG_POINTER_HITHRESH    = 0x03\n\n  # Config Register\n  __ADS1015_REG_CONFIG_OS_MASK      = 0x8000\n  __ADS1015_REG_CONFIG_OS_SINGLE    = 0x8000  # Write: Set to start a single-conversion\n  __ADS1015_REG_CONFIG_OS_BUSY      = 0x0000  # Read: Bit = 0 when conversion is in progress\n  __ADS1015_REG_CONFIG_OS_NOTBUSY   = 0x8000  # Read: Bit = 1 when device is not performing a conversion\n\n  __ADS1015_REG_CONFIG_MUX_MASK     = 0x7000\n  __ADS1015_REG_CONFIG_MUX_DIFF_0_1 = 0x0000  # Differential P = AIN0, N = AIN1 (default)\n  __ADS1015_REG_CONFIG_MUX_DIFF_0_3 = 0x1000  # Differential P = AIN0, N = AIN3\n  __ADS1015_REG_CONFIG_MUX_DIFF_1_3 = 0x2000  # Differential P = AIN1, N = AIN3\n  __ADS1015_REG_CONFIG_MUX_DIFF_2_3 = 0x3000  # Differential P = AIN2, N = AIN3\n  __ADS1015_REG_CONFIG_MUX_SINGLE_0 = 0x4000  # Single-ended AIN0\n  __ADS1015_REG_CONFIG_MUX_SINGLE_1 = 0x5000  # Single-ended AIN1\n  __ADS1015_REG_CONFIG_MUX_SINGLE_2 = 0x6000  # Single-ended AIN2\n  __ADS1015_REG_CONFIG_MUX_SINGLE_3 = 0x7000  # Single-ended AIN3\n\n  __ADS1015_REG_CONFIG_PGA_MASK     = 0x0E00\n  __ADS1015_REG_CONFIG_PGA_6_144V   = 0x0000  # +/-6.144V range\n  __ADS1015_REG_CONFIG_PGA_4_096V   = 0x0200  # +/-4.096V range\n  __ADS1015_REG_CONFIG_PGA_2_048V   = 0x0400  # +/-2.048V range (default)\n  __ADS1015_REG_CONFIG_PGA_1_024V   = 0x0600  # +/-1.024V range\n  __ADS1015_REG_CONFIG_PGA_0_512V   = 0x0800  # +/-0.512V range\n  __ADS1015_REG_CONFIG_PGA_0_256V   = 0x0A00  # +/-0.256V range\n\n  __ADS1015_REG_CONFIG_MODE_MASK    = 0x0100\n  __ADS1015_REG_CONFIG_MODE_CONTIN  = 0x0000  # Continuous conversion mode\n  __ADS1015_REG_CONFIG_MODE_SINGLE  = 0x0100  # Power-down single-shot mode (default)\n\n  __ADS1015_REG_CONFIG_DR_MASK      = 0x00E0  \n  __ADS1015_REG_CONFIG_DR_128SPS    = 0x0000  # 128 samples per second\n  __ADS1015_REG_CONFIG_DR_250SPS    = 0x0020  # 250 samples per second\n  __ADS1015_REG_CONFIG_DR_490SPS    = 0x0040  # 490 samples per second\n  __ADS1015_REG_CONFIG_DR_920SPS    = 0x0060  # 920 samples per second\n  __ADS1015_REG_CONFIG_DR_1600SPS   = 0x0080  # 1600 samples per second (default)\n  __ADS1015_REG_CONFIG_DR_2400SPS   = 0x00A0  # 2400 samples per second\n  __ADS1015_REG_CONFIG_DR_3300SPS   = 0x00C0  # 3300 samples per second (also 0x00E0)\n\n  __ADS1115_REG_CONFIG_DR_8SPS      = 0x0000  # 8 samples per second\n  __ADS1115_REG_CONFIG_DR_16SPS     = 0x0020  # 16 samples per second\n  __ADS1115_REG_CONFIG_DR_32SPS     = 0x0040  # 32 samples per second\n  __ADS1115_REG_CONFIG_DR_64SPS     = 0x0060  # 64 samples per second\n  __ADS1115_REG_CONFIG_DR_128SPS    = 0x0080  # 128 samples per second\n  __ADS1115_REG_CONFIG_DR_250SPS    = 0x00A0  # 250 samples per second (default)\n  __ADS1115_REG_CONFIG_DR_475SPS    = 0x00C0  # 475 samples per second\n  __ADS1115_REG_CONFIG_DR_860SPS    = 0x00E0  # 860 samples per second\n\n  __ADS1015_REG_CONFIG_CMODE_MASK   = 0x0010\n  __ADS1015_REG_CONFIG_CMODE_TRAD   = 0x0000  # Traditional comparator with hysteresis (default)\n  __ADS1015_REG_CONFIG_CMODE_WINDOW = 0x0010  # Window comparator\n\n  __ADS1015_REG_CONFIG_CPOL_MASK    = 0x0008\n  __ADS1015_REG_CONFIG_CPOL_ACTVLOW = 0x0000  # ALERT/RDY pin is low when active (default)\n  __ADS1015_REG_CONFIG_CPOL_ACTVHI  = 0x0008  # ALERT/RDY pin is high when active\n\n  __ADS1015_REG_CONFIG_CLAT_MASK    = 0x0004  # Determines if ALERT/RDY pin latches once asserted\n  __ADS1015_REG_CONFIG_CLAT_NONLAT  = 0x0000  # Non-latching comparator (default)\n  __ADS1015_REG_CONFIG_CLAT_LATCH   = 0x0004  # Latching comparator\n\n  __ADS1015_REG_CONFIG_CQUE_MASK    = 0x0003\n  __ADS1015_REG_CONFIG_CQUE_1CONV   = 0x0000  # Assert ALERT/RDY after one conversions\n  __ADS1015_REG_CONFIG_CQUE_2CONV   = 0x0001  # Assert ALERT/RDY after two conversions\n  __ADS1015_REG_CONFIG_CQUE_4CONV   = 0x0002  # Assert ALERT/RDY after four conversions\n  __ADS1015_REG_CONFIG_CQUE_NONE    = 0x0003  # Disable the comparator and put ALERT/RDY in high state (default)\n  \n  \n  # Dictionaries with the sampling speed values\n  # These simplify and clean the code (avoid the abuse of if/elif/else clauses)\n  spsADS1115 = {\n    8:__ADS1115_REG_CONFIG_DR_8SPS,\n    16:__ADS1115_REG_CONFIG_DR_16SPS,\n    32:__ADS1115_REG_CONFIG_DR_32SPS,\n    64:__ADS1115_REG_CONFIG_DR_64SPS,\n    128:__ADS1115_REG_CONFIG_DR_128SPS,\n    250:__ADS1115_REG_CONFIG_DR_250SPS,\n    475:__ADS1115_REG_CONFIG_DR_475SPS,\n    860:__ADS1115_REG_CONFIG_DR_860SPS\n  }    \n  spsADS1015 = {\n    128:__ADS1015_REG_CONFIG_DR_128SPS,\n    250:__ADS1015_REG_CONFIG_DR_250SPS,\n    490:__ADS1015_REG_CONFIG_DR_490SPS,\n    920:__ADS1015_REG_CONFIG_DR_920SPS,\n    1600:__ADS1015_REG_CONFIG_DR_1600SPS,\n    2400:__ADS1015_REG_CONFIG_DR_2400SPS,\n    3300:__ADS1015_REG_CONFIG_DR_3300SPS\n  }\n  # Dictionariy with the programable gains\n  pgaADS1x15 = {\n    6144:__ADS1015_REG_CONFIG_PGA_6_144V,\n    4096:__ADS1015_REG_CONFIG_PGA_4_096V,\n    2048:__ADS1015_REG_CONFIG_PGA_2_048V,\n    1024:__ADS1015_REG_CONFIG_PGA_1_024V,\n    512:__ADS1015_REG_CONFIG_PGA_0_512V,\n    256:__ADS1015_REG_CONFIG_PGA_0_256V\n  }    \n  \n\n  # Constructor\n  def __init__(self, address=0x48, ic=__IC_ADS1015, debug=False):\n    # Depending on if you have an old or a new Raspberry Pi, you\n    # may need to change the I2C bus.  Older Pis use SMBus 0,\n    # whereas new Pis use SMBus 1.  If you see an error like:\n    # 'Error accessing 0x48: Check your I2C address '\n    # change the SMBus number in the initializer below!\n    self.i2c = Adafruit_I2C(address)\n    self.address = address\n    self.debug = debug\n\n    # Make sure the IC specified is valid\n    if ((ic < self.__IC_ADS1015) | (ic > self.__IC_ADS1115)):\n      if (self.debug):\n        print \"ADS1x15: Invalid IC specfied: %h\" % ic\n      return -1\n    else:\n      self.ic = ic\n        \n    # Set pga value, so that getLastConversionResult() can use it,\n    # any function that accepts a pga value must update this.\n    self.pga = 6144    \n  \n    \n  def readADCSingleEnded(self, channel=0, pga=6144, sps=250):\n    \"Gets a single-ended ADC reading from the specified channel in mV. \\\n    The sample rate for this mode (single-shot) can be used to lower the noise \\\n    (low sps) or to lower the power consumption (high sps) by duty cycling, \\\n    see datasheet page 14 for more info. \\\n    The pga must be given in mV, see page 13 for the supported values.\"\n    \n    # With invalid channel return -1\n    if (channel > 3):\n      if (self.debug):\n        print \"ADS1x15: Invalid channel specified: %d\" % channel\n      return -1\n    \n    # Disable comparator, Non-latching, Alert/Rdy active low\n    # traditional comparator, single-shot mode\n    config = self.__ADS1015_REG_CONFIG_CQUE_NONE    | \\\n             self.__ADS1015_REG_CONFIG_CLAT_NONLAT  | \\\n             self.__ADS1015_REG_CONFIG_CPOL_ACTVLOW | \\\n             self.__ADS1015_REG_CONFIG_CMODE_TRAD   | \\\n             self.__ADS1015_REG_CONFIG_MODE_SINGLE    \n\n    # Set sample per seconds, defaults to 250sps\n    # If sps is in the dictionary (defined in init) it returns the value of the constant\n    # othewise it returns the value for 250sps. This saves a lot of if/elif/else code!\n    if (self.ic == self.__IC_ADS1015):\n      config |= self.spsADS1015.setdefault(sps, self.__ADS1015_REG_CONFIG_DR_1600SPS)\n    else:\n      if ( (sps not in self.spsADS1115) & self.debug):\t  \n\tprint \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % sps     \n      config |= self.spsADS1115.setdefault(sps, self.__ADS1115_REG_CONFIG_DR_250SPS)\n\n    # Set PGA/voltage range, defaults to +-6.144V\n    if ( (pga not in self.pgaADS1x15) & self.debug):\t  \n      print \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % sps     \n    config |= self.pgaADS1x15.setdefault(pga, self.__ADS1015_REG_CONFIG_PGA_6_144V)\n    self.pga = pga\n\n    # Set the channel to be converted\n    if channel == 3:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_3\n    elif channel == 2:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_2\n    elif channel == 1:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_1\n    else:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_0\n\n    # Set 'start single-conversion' bit\n    config |= self.__ADS1015_REG_CONFIG_OS_SINGLE\n\n    # Write config register to the ADC\n    bytes = [(config >> 8) & 0xFF, config & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_CONFIG, bytes)\n\n    # Wait for the ADC conversion to complete\n    # The minimum delay depends on the sps: delay >= 1/sps\n    # We add 0.1ms to be sure\n    delay = 1.0/sps+0.0001\n    time.sleep(delay)\n\n    # Read the conversion results\n    result = self.i2c.readList(self.__ADS1015_REG_POINTER_CONVERT, 2)\n    if (self.ic == self.__IC_ADS1015):\n    \t# Shift right 4 bits for the 12-bit ADS1015 and convert to mV\n    \treturn ( ((result[0] << 8) | (result[1] & 0xFF)) >> 4 )*pga/2048.0\n    else:\n\t# Return a mV value for the ADS1115\n\t# (Take signed values into account as well)\n\tval = (result[0] << 8) | (result[1])\n\tif val > 0x7FFF:\n\t  return (val - 0xFFFF)*pga/32768.0\n\telse:\n\t  return ( (result[0] << 8) | (result[1]) )*pga/32768.0\n\t\n\n  def readADCDifferential(self, chP=0, chN=1, pga=6144, sps=250):\n    \"Gets a differential ADC reading from channels chP and chN in mV. \\\n    The sample rate for this mode (single-shot) can be used to lower the noise \\\n    (low sps) or to lower the power consumption (high sps) by duty cycling, \\\n    see data sheet page 14 for more info. \\\n    The pga must be given in mV, see page 13 for the supported values.\"\n    \n    # Disable comparator, Non-latching, Alert/Rdy active low\n    # traditional comparator, single-shot mode    \n    config = self.__ADS1015_REG_CONFIG_CQUE_NONE    | \\\n             self.__ADS1015_REG_CONFIG_CLAT_NONLAT  | \\\n             self.__ADS1015_REG_CONFIG_CPOL_ACTVLOW | \\\n             self.__ADS1015_REG_CONFIG_CMODE_TRAD   | \\\n             self.__ADS1015_REG_CONFIG_MODE_SINGLE  \n    \n    # Set channels\n    if ( (chP == 0) & (chN == 1) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_0_1\n    elif ( (chP == 0) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_0_3\n    elif ( (chP == 2) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_2_3\n    elif ( (chP == 1) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_1_3  \n    else:\n      if (self.debug):\n\tprint \"ADS1x15: Invalid channels specified: %d, %d\" % (chP, chN)\n\treturn -1\n         \n    # Set sample per seconds, defaults to 250sps\n    # If sps is in the dictionary (defined in init()) it returns the value of the constant\n    # othewise it returns the value for 250sps. This saves a lot of if/elif/else code!\n    if (self.ic == self.__IC_ADS1015):\n      config |= self.spsADS1015.setdefault(sps, self.__ADS1015_REG_CONFIG_DR_1600SPS)\n    else:\n      if ( (sps not in self.spsADS1115) & self.debug):\t  \n\tprint \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % sps     \n      config |= self.spsADS1115.setdefault(sps, self.__ADS1115_REG_CONFIG_DR_250SPS)\n  \n    # Set PGA/voltage range, defaults to +-6.144V\n    if ( (pga not in self.pgaADS1x15) & self.debug):\t  \n      print \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % sps     \n    config |= self.pgaADS1x15.setdefault(pga, self.__ADS1015_REG_CONFIG_PGA_6_144V)\n    self.pga = pga\n\n    # Set 'start single-conversion' bit\n    config |= self.__ADS1015_REG_CONFIG_OS_SINGLE\n\n    # Write config register to the ADC\n    bytes = [(config >> 8) & 0xFF, config & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_CONFIG, bytes)\n\n    # Wait for the ADC conversion to complete\n    # The minimum delay depends on the sps: delay >= 1/sps\n    # We add 0.1ms to be sure\n    delay = 1.0/sps+0.0001\n    time.sleep(delay)\n\n    # Read the conversion results\n    result = self.i2c.readList(self.__ADS1015_REG_POINTER_CONVERT, 2)\n    if (self.ic == self.__IC_ADS1015):\n    \t# Shift right 4 bits for the 12-bit ADS1015 and convert to mV\n\tval = ((result[0] << 8) | (result[1] & 0xFF)) >> 4\n\t# (Take signed values into account as well)\n\tif val >> 11:\n\t\tval = val - 0xfff\n    \treturn val*pga/2048.0\n    else:\n\t# Return a mV value for the ADS1115\n\t# (Take signed values into account as well)\n\tval = (result[0] << 8) | (result[1])\n\tif val > 0x7FFF:\n\t  return (val - 0xFFFF)*pga/32768.0\n\telse:\n\t  return ( (result[0] << 8) | (result[1]) )*pga/32768.0\n\n\n  def readADCDifferential01(self, pga=6144, sps=250):\n    \"Gets a differential ADC reading from channels 0 and 1 in mV\\\n    The sample rate for this mode (single-shot) can be used to lower the noise \\\n    (low sps) or to lower the power consumption (high sps) by duty cycling, \\\n    see data sheet page 14 for more info. \\\n    The pga must be given in mV, see page 13 for the supported values.\"\n    return self.readADCDifferential(0, 1, pga, sps)\n   \n  \n  def readADCDifferential03(self, pga=6144, sps=250):\n    \"Gets a differential ADC reading from channels 0 and 3 in mV \\\n    The sample rate for this mode (single-shot) can be used to lower the noise \\\n    (low sps) or to lower the power consumption (high sps) by duty cycling, \\\n    see data sheet page 14 for more info. \\\n    The pga must be given in mV, see page 13 for the supported values.\"\n    return self.readADCDifferential(0, 3, pga, sps)\n     \n  \n  def readADCDifferential13(self, pga=6144, sps=250):\n    \"Gets a differential ADC reading from channels 1 and 3 in mV \\\n    The sample rate for this mode (single-shot) can be used to lower the noise \\\n    (low sps) or to lower the power consumption (high sps) by duty cycling, \\\n    see data sheet page 14 for more info. \\\n    The pga must be given in mV, see page 13 for the supported values.\"\n    return self.__readADCDifferential(1, 3, pga, sps)  \n\n\n  def readADCDifferential23(self, pga=6144, sps=250):\n    \"Gets a differential ADC reading from channels 2 and 3 in mV \\\n    The sample rate for this mode (single-shot) can be used to lower the noise \\\n    (low sps) or to lower the power consumption (high sps) by duty cycling, \\\n    see data sheet page 14 for more info. \\\n    The pga must be given in mV, see page 13 for the supported values.\"\n    return self.readADCDifferential(2, 3, pga, sps)   \n  \n  \n  def startContinuousConversion(self, channel=0, pga=6144, sps=250): \n    \"Starts the continuous conversion mode and returns the first ADC reading \\\n    in mV from the specified channel. \\\n    The sps controls the sample rate. \\\n    The pga must be given in mV, see datasheet page 13 for the supported values. \\\n    Use getLastConversionResults() to read the next values and \\\n    stopContinuousConversion() to stop converting.\"\n    \n    # Default to channel 0 with invalid channel, or return -1?\n    if (channel > 3):\n      if (self.debug):\n\tprint \"ADS1x15: Invalid channel specified: %d\" % channel\n      return -1\n    \n    # Disable comparator, Non-latching, Alert/Rdy active low\n    # traditional comparator, continuous mode\n    # The last flag is the only change we need, page 11 datasheet\n    config = self.__ADS1015_REG_CONFIG_CQUE_NONE    | \\\n             self.__ADS1015_REG_CONFIG_CLAT_NONLAT  | \\\n             self.__ADS1015_REG_CONFIG_CPOL_ACTVLOW | \\\n             self.__ADS1015_REG_CONFIG_CMODE_TRAD   | \\\n             self.__ADS1015_REG_CONFIG_MODE_CONTIN    \n\n    # Set sample per seconds, defaults to 250sps\n    # If sps is in the dictionary (defined in init()) it returns the value of the constant\n    # othewise it returns the value for 250sps. This saves a lot of if/elif/else code!\n    if (self.ic == self.__IC_ADS1015):\n      config |= self.spsADS1015.setdefault(sps, self.__ADS1015_REG_CONFIG_DR_1600SPS)\n    else:\n      if ( (sps not in self.spsADS1115) & self.debug):\t  \n\tprint \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % sps     \n      config |= self.spsADS1115.setdefault(sps, self.__ADS1115_REG_CONFIG_DR_250SPS)\n  \n    # Set PGA/voltage range, defaults to +-6.144V\n    if ( (pga not in self.pgaADS1x15) & self.debug):\t  \n      print \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % sps     \n    config |= self.pgaADS1x15.setdefault(pga, self.__ADS1015_REG_CONFIG_PGA_6_144V)\n    self.pga = pga \n    \n    # Set the channel to be converted\n    if channel == 3:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_3\n    elif channel == 2:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_2\n    elif channel == 1:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_1\n    else:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_0    \n  \n    # Set 'start single-conversion' bit to begin conversions\n    # No need to change this for continuous mode!\n    config |= self.__ADS1015_REG_CONFIG_OS_SINGLE\n\n    # Write config register to the ADC\n    # Once we write the ADC will convert continously\n    # we can read the next values using getLastConversionResult\n    bytes = [(config >> 8) & 0xFF, config & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_CONFIG, bytes)\n\n    # Wait for the ADC conversion to complete\n    # The minimum delay depends on the sps: delay >= 1/sps\n    # We add 0.5ms to be sure\n    delay = 1.0/sps+0.0005\n    time.sleep(delay)\n  \n    # Read the conversion results\n    result = self.i2c.readList(self.__ADS1015_REG_POINTER_CONVERT, 2)\n    if (self.ic == self.__IC_ADS1015):\n    \t# Shift right 4 bits for the 12-bit ADS1015 and convert to mV\n    \treturn ( ((result[0] << 8) | (result[1] & 0xFF)) >> 4 )*pga/2048.0\n    else:\n\t# Return a mV value for the ADS1115\n\t# (Take signed values into account as well)\n\tval = (result[0] << 8) | (result[1])\n\tif val > 0x7FFF:\n\t  return (val - 0xFFFF)*pga/32768.0\n\telse:\n\t  return ( (result[0] << 8) | (result[1]) )*pga/32768.0  \n\n  def startContinuousDifferentialConversion(self, chP=0, chN=1, pga=6144, sps=250): \n    \"Starts the continuous differential conversion mode and returns the first ADC reading \\\n    in mV as the difference from the specified channels. \\\n    The sps controls the sample rate. \\\n    The pga must be given in mV, see datasheet page 13 for the supported values. \\\n    Use getLastConversionResults() to read the next values and \\\n    stopContinuousConversion() to stop converting.\"\n    \n    # Disable comparator, Non-latching, Alert/Rdy active low\n    # traditional comparator, continuous mode\n    # The last flag is the only change we need, page 11 datasheet\n    config = self.__ADS1015_REG_CONFIG_CQUE_NONE    | \\\n             self.__ADS1015_REG_CONFIG_CLAT_NONLAT  | \\\n             self.__ADS1015_REG_CONFIG_CPOL_ACTVLOW | \\\n             self.__ADS1015_REG_CONFIG_CMODE_TRAD   | \\\n             self.__ADS1015_REG_CONFIG_MODE_CONTIN    \n  \n    # Set sample per seconds, defaults to 250sps\n    # If sps is in the dictionary (defined in init()) it returns the value of the constant\n    # othewise it returns the value for 250sps. This saves a lot of if/elif/else code!\n    if (self.ic == self.__IC_ADS1015):\n      config |= self.spsADS1015.setdefault(sps, self.__ADS1015_REG_CONFIG_DR_1600SPS)\n    else:\n      if ( (sps not in self.spsADS1115) & self.debug):\t  \n\tprint \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % sps     \n      config |= self.spsADS1115.setdefault(sps, self.__ADS1115_REG_CONFIG_DR_250SPS)\n  \n    # Set PGA/voltage range, defaults to +-6.144V\n    if ( (pga not in self.pgaADS1x15) & self.debug):\t  \n      print \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % sps     \n    config |= self.pgaADS1x15.setdefault(pga, self.__ADS1015_REG_CONFIG_PGA_6_144V)\n    self.pga = pga \n    \n    # Set channels\n    if ( (chP == 0) & (chN == 1) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_0_1\n    elif ( (chP == 0) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_0_3\n    elif ( (chP == 2) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_2_3\n    elif ( (chP == 1) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_1_3  \n    else:\n      if (self.debug):\n\tprint \"ADS1x15: Invalid channels specified: %d, %d\" % (chP, chN)\n\treturn -1  \n    \n    # Set 'start single-conversion' bit to begin conversions\n    # No need to change this for continuous mode!\n    config |= self.__ADS1015_REG_CONFIG_OS_SINGLE\n  \n    # Write config register to the ADC\n    # Once we write the ADC will convert continously\n    # we can read the next values using getLastConversionResult\n    bytes = [(config >> 8) & 0xFF, config & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_CONFIG, bytes)\n  \n    # Wait for the ADC conversion to complete\n    # The minimum delay depends on the sps: delay >= 1/sps\n    # We add 0.5ms to be sure\n    delay = 1.0/sps+0.0005\n    time.sleep(delay)\n  \n    # Read the conversion results\n    result = self.i2c.readList(self.__ADS1015_REG_POINTER_CONVERT, 2)\n    if (self.ic == self.__IC_ADS1015):\n\t# Shift right 4 bits for the 12-bit ADS1015 and convert to mV\n\treturn ( ((result[0] << 8) | (result[1] & 0xFF)) >> 4 )*pga/2048.0\n    else:\n\t# Return a mV value for the ADS1115\n\t# (Take signed values into account as well)\n\tval = (result[0] << 8) | (result[1])\n\tif val > 0x7FFF:\n\t  return (val - 0xFFFF)*pga/32768.0\n\telse:\n\t  return ( (result[0] << 8) | (result[1]) )*pga/32768.0  \n\n\t  \n  def stopContinuousConversion(self):\n    \"Stops the ADC's conversions when in continuous mode \\\n    and resets the configuration to its default value.\"\n    # Write the default config register to the ADC\n    # Once we write, the ADC will do a single conversion and \n    # enter power-off mode.\n    config = 0x8583 # Page 18 datasheet.\n    bytes = [(config >> 8) & 0xFF, config & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_CONFIG, bytes)    \n    return True\n\n  def getLastConversionResults(self):\n    \"Returns the last ADC conversion result in mV\"\n    # Read the conversion results\n    result = self.i2c.readList(self.__ADS1015_REG_POINTER_CONVERT, 2)\n    if (self.ic == self.__IC_ADS1015):\n    \t# Shift right 4 bits for the 12-bit ADS1015 and convert to mV\n    \treturn ( ((result[0] << 8) | (result[1] & 0xFF)) >> 4 )*self.pga/2048.0\n    else:\n\t# Return a mV value for the ADS1115\n\t# (Take signed values into account as well)\n\tval = (result[0] << 8) | (result[1])\n\tif val > 0x7FFF:\n\t  return (val - 0xFFFF)*self.pga/32768.0\n\telse:\n\t  return ( (result[0] << 8) | (result[1]) )*self.pga/32768.0  \n\t\n\t\n  def startSingleEndedComparator(self, channel, thresholdHigh, thresholdLow, \\\n                                 pga=6144, sps=250, \\\n                                 activeLow=True, traditionalMode=True, latching=False, \\\n                                 numReadings=1):\n    \"Starts the comparator mode on the specified channel, see datasheet pg. 15. \\\n    In traditional mode it alerts (ALERT pin will go low)  when voltage exceeds  \\\n    thresholdHigh until it falls below thresholdLow (both given in mV). \\\n    In window mode (traditionalMode=False) it alerts when voltage doesn't lie\\\n    between both thresholds.\\\n    In latching mode the alert will continue until the conversion value is read. \\\n    numReadings controls how many readings are necessary to trigger an alert: 1, 2 or 4.\\\n    Use getLastConversionResults() to read the current value  (which may differ \\\n    from the one that triggered the alert) and clear the alert pin in latching mode. \\\n    This function starts the continuous conversion mode.  The sps controls \\\n    the sample rate and the pga the gain, see datasheet page 13. \"\n    \n    # With invalid channel return -1\n    if (channel > 3):\n      if (self.debug):\n\tprint \"ADS1x15: Invalid channel specified: %d\" % channel\n      return -1\n    \n    # Continuous mode\n    config = self.__ADS1015_REG_CONFIG_MODE_CONTIN     \n    \n    if (activeLow==False):\n      config |= self.__ADS1015_REG_CONFIG_CPOL_ACTVHI\n    else:\n      config |= self.__ADS1015_REG_CONFIG_CPOL_ACTVLOW\n      \n    if (traditionalMode==False):\n      config |= self.__ADS1015_REG_CONFIG_CMODE_WINDOW\n    else:\n      config |= self.__ADS1015_REG_CONFIG_CMODE_TRAD\n      \n    if (latching==True):\n      config |= self.__ADS1015_REG_CONFIG_CLAT_LATCH\n    else:\n      config |= self.__ADS1015_REG_CONFIG_CLAT_NONLAT\n      \n    if (numReadings==4):\n      config |= self.__ADS1015_REG_CONFIG_CQUE_4CONV\n    elif (numReadings==2):\n      config |= self.__ADS1015_REG_CONFIG_CQUE_2CONV\n    else:\n      config |= self.__ADS1015_REG_CONFIG_CQUE_1CONV\n    \n    # Set sample per seconds, defaults to 250sps\n    # If sps is in the dictionary (defined in init()) it returns the value of the constant\n    # othewise it returns the value for 250sps. This saves a lot of if/elif/else code!\n    if (self.ic == self.__IC_ADS1015):\n      if ( (sps not in self.spsADS1015) & self.debug):\t  \n\tprint \"ADS1x15: Invalid sps specified: %d, using 1600sps\" % sps       \n      config |= self.spsADS1015.setdefault(sps, self.__ADS1015_REG_CONFIG_DR_1600SPS)\n    else:\n      if ( (sps not in self.spsADS1115) & self.debug):\t  \n\tprint \"ADS1x15: Invalid sps specified: %d, using 250sps\" % sps     \n      config |= self.spsADS1115.setdefault(sps, self.__ADS1115_REG_CONFIG_DR_250SPS)\n\n    # Set PGA/voltage range, defaults to +-6.144V\n    if ( (pga not in self.pgaADS1x15) & self.debug):\t  \n      print \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % pga     \n    config |= self.pgaADS1x15.setdefault(pga, self.__ADS1015_REG_CONFIG_PGA_6_144V)\n    self.pga = pga\n    \n    # Set the channel to be converted\n    if channel == 3:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_3\n    elif channel == 2:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_2\n    elif channel == 1:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_1\n    else:\n      config |= self.__ADS1015_REG_CONFIG_MUX_SINGLE_0\n\n    # Set 'start single-conversion' bit to begin conversions\n    config |= self.__ADS1015_REG_CONFIG_OS_SINGLE\n    \n    # Write threshold high and low registers to the ADC\n    # V_digital = (2^(n-1)-1)/pga*V_analog\n    if (self.ic == self.__IC_ADS1015):\n      thresholdHighWORD = int(thresholdHigh*(2048.0/pga))\n    else:\n      thresholdHighWORD = int(thresholdHigh*(32767.0/pga))\n    bytes = [(thresholdHighWORD >> 8) & 0xFF, thresholdHighWORD & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_HITHRESH, bytes) \n  \n    if (self.ic == self.__IC_ADS1015):\n      thresholdLowWORD = int(thresholdLow*(2048.0/pga))\n    else:\n      thresholdLowWORD = int(thresholdLow*(32767.0/pga))    \n    bytes = [(thresholdLowWORD >> 8) & 0xFF, thresholdLowWORD & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_LOWTHRESH, bytes)     \n\n    # Write config register to the ADC\n    # Once we write the ADC will convert continously and alert when things happen,\n    # we can read the converted values using getLastConversionResult\n    bytes = [(config >> 8) & 0xFF, config & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_CONFIG, bytes)    \n\n\n  def startDifferentialComparator(self, chP, chN, thresholdHigh, thresholdLow, \\\n                                 pga=6144, sps=250, \\\n                                 activeLow=True, traditionalMode=True, latching=False, \\\n                                 numReadings=1):\n    \"Starts the comparator mode on the specified channel, see datasheet pg. 15. \\\n    In traditional mode it alerts (ALERT pin will go low)  when voltage exceeds  \\\n    thresholdHigh until it falls below thresholdLow (both given in mV). \\\n    In window mode (traditionalMode=False) it alerts when voltage doesn't lie\\\n    between both thresholds.\\\n    In latching mode the alert will continue until the conversion value is read. \\\n    numReadings controls how many readings are necessary to trigger an alert: 1, 2 or 4.\\\n    Use getLastConversionResults() to read the current value  (which may differ \\\n    from the one that triggered the alert) and clear the alert pin in latching mode. \\\n    This function starts the continuous conversion mode.  The sps controls \\\n    the sample rate and the pga the gain, see datasheet page 13. \"\n\n    # Continuous mode\n    config = self.__ADS1015_REG_CONFIG_MODE_CONTIN     \n    \n    if (activeLow==False):\n      config |= self.__ADS1015_REG_CONFIG_CPOL_ACTVHI\n    else:\n      config |= self.__ADS1015_REG_CONFIG_CPOL_ACTVLOW\n      \n    if (traditionalMode==False):\n      config |= self.__ADS1015_REG_CONFIG_CMODE_WINDOW\n    else:\n      config |= self.__ADS1015_REG_CONFIG_CMODE_TRAD\n      \n    if (latching==True):\n      config |= self.__ADS1015_REG_CONFIG_CLAT_LATCH\n    else:\n      config |= self.__ADS1015_REG_CONFIG_CLAT_NONLAT\n      \n    if (numReadings==4):\n      config |= self.__ADS1015_REG_CONFIG_CQUE_4CONV\n    elif (numReadings==2):\n      config |= self.__ADS1015_REG_CONFIG_CQUE_2CONV\n    else:\n      config |= self.__ADS1015_REG_CONFIG_CQUE_1CONV\n    \n    # Set sample per seconds, defaults to 250sps\n    # If sps is in the dictionary (defined in init()) it returns the value of the constant\n    # othewise it returns the value for 250sps. This saves a lot of if/elif/else code!\n    if (self.ic == self.__IC_ADS1015):\n      if ( (sps not in self.spsADS1015) & self.debug):\t  \n\tprint \"ADS1x15: Invalid sps specified: %d, using 1600sps\" % sps       \n      config |= self.spsADS1015.setdefault(sps, self.__ADS1015_REG_CONFIG_DR_1600SPS)\n    else:\n      if ( (sps not in self.spsADS1115) & self.debug):\t  \n\tprint \"ADS1x15: Invalid sps specified: %d, using 250sps\" % sps     \n      config |= self.spsADS1115.setdefault(sps, self.__ADS1115_REG_CONFIG_DR_250SPS)\n\n    # Set PGA/voltage range, defaults to +-6.144V\n    if ( (pga not in self.pgaADS1x15) & self.debug):\t  \n      print \"ADS1x15: Invalid pga specified: %d, using 6144mV\" % pga     \n    config |= self.pgaADS1x15.setdefault(pga, self.__ADS1015_REG_CONFIG_PGA_6_144V)\n    self.pga = pga\n    \n    # Set channels\n    if ( (chP == 0) & (chN == 1) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_0_1\n    elif ( (chP == 0) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_0_3\n    elif ( (chP == 2) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_2_3\n    elif ( (chP == 1) & (chN == 3) ):\n      config |= self.__ADS1015_REG_CONFIG_MUX_DIFF_1_3  \n    else:\n      if (self.debug):\n\tprint \"ADS1x15: Invalid channels specified: %d, %d\" % (chP, chN)\n\treturn -1\n\n    # Set 'start single-conversion' bit to begin conversions\n    config |= self.__ADS1015_REG_CONFIG_OS_SINGLE\n    \n    # Write threshold high and low registers to the ADC\n    # V_digital = (2^(n-1)-1)/pga*V_analog\n    if (self.ic == self.__IC_ADS1015):\n      thresholdHighWORD = int(thresholdHigh*(2048.0/pga))\n    else:\n      thresholdHighWORD = int(thresholdHigh*(32767.0/pga))\n    bytes = [(thresholdHighWORD >> 8) & 0xFF, thresholdHighWORD & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_HITHRESH, bytes) \n  \n    if (self.ic == self.__IC_ADS1015):\n      thresholdLowWORD = int(thresholdLow*(2048.0/pga))\n    else:\n      thresholdLowWORD = int(thresholdLow*(32767.0/pga))    \n    bytes = [(thresholdLowWORD >> 8) & 0xFF, thresholdLowWORD & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_LOWTHRESH, bytes)     \n\n    # Write config register to the ADC\n    # Once we write the ADC will convert continously and alert when things happen,\n    # we can read the converted values using getLastConversionResult\n    bytes = [(config >> 8) & 0xFF, config & 0xFF]\n    self.i2c.writeList(self.__ADS1015_REG_POINTER_CONFIG, bytes)    \n\n\n# ===========================================================================\n# MoistureSensor Class\n# Implements interfacing with the Decagon 10HS moisture sensor over the \n# adafruit ADS1115 ADC breakout board.\n# ===========================================================================\n\nclass MoistureSensor:\n\tadc = None\n\n\tdef __init__(self) :\n\t\tself.adc = ADS1x15(ic=1)\n\n\tdef GetDataSample(self) :\n\t\t# 10HS sensor has an output of 300-1250mv, setting pga so that full scale is 2.048v inorder to maximize resolution\n\t\tmV = self.adc.readADCSingleEnded(channel = 0, pga=2048)\n\n\t\t# Water volume content measured as m^3/m^3. It looks like a percentage.\n\t\tWVC = (2.97e-9 * math.pow(mV,3)) - (7.37e-6 * math.pow(mV, 2)) + (6.69e-3 * mV) -1.92\n\t\treturn WVC\n\t\t\ndef main() :\n\tdevice = MoistureSensor()\n\ttry:\n\t\twhile True:\n\t\t\tmoisture = device.GetDataSample()\n\t\t\tprint moisture \n\t\t\ttime.sleep(1);\n\t\t\t\t\t\n\texcept KeyboardInterrupt: # catches the ctrl-c command, which breaks the loop above\n\t\tprint(\"Continuous polling stopped\")\n\nif __name__ == '__main__':\n    main()\n\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Hydrology/SensorAgent.py",
    "content": "﻿'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read several Hydrology sensors, then augment and format as JSON to send via socket connection to a gateway.\n Example of sending hydrology data to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n Real time output viewable at http://connectthedots.msopentech.com .\n'''\nimport sys\nimport socket\nimport time\nimport datetime\nimport re\n\nfrom DO2Sensor import DO2Sensor\nfrom ECSensor import ECSensor\nfrom MoistureSensor import MoistureSensor\n\nOrg =       \"MSOpenTech\"\nDisp =      \"Hydrology Sensors\"                     # will be the label for the curve on the chart\nGUID =      \"nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn\"  # ensures all the data from this sensor appears on the same chart.  You can\n                                                    # use the Tools/Create GUID in Visual Studio to create\nLocn =      \"here\"\nUnitsMap =  {'Moisture':'unitless', 'Conductivity':'uS/cm', 'TDS':'ppm', 'Salinity':'unitless', 'SpecificGravity':'unitless', 'DissolvedOxygen':'ml/l' }\n\nVendor =    0xfffe                                   # Vendor ID for our custom device\nProduct =   0xfffe                                   # Product ID for our custom device\nHOST =      '127.0.0.1'\nPORT =      5001\n\nCONNECT_RETRY_INTERVAL = 2\nEXCEPTION_THRESHOLD = 3\nSEND_INTERVAL = 5\n\nclass SensorAgent:\n\n    s = None\n    do2Sensor = None\n    ecSensor = None\n    moistureSensor = None\n\n    def __init__(self) :\n        self.do2Sensor = DO2Sensor()\n        self.ecSensor = ECSensor()\n        self.moistureSensor = MoistureSensor()\n\n    def connectToServer(self) :\n        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n        print(\"Socket created.\")\n\n        while True:\n            try:\n                self.s.connect((HOST, PORT))\n                break\n            except socket.error as msg:\n                print(\"Socket connection failed. Error Code : \" + str(msg[0]) + \" Message \" + msg[1])\n                time.sleep(CONNECT_RETRY_INTERVAL)\n\n        print (\"Socket connection succeeded.\")\n\n    def close(self) :\n        self.s.close()\n\n    def sendMessage(self, measureName, value) :\n        timeStr = datetime.datetime.utcnow().isoformat()\n        JSONdB = \"{\\\"value\\\":\" + value + \",\\\"guid\\\":\\\"\" + GUID + \"\\\",\\\"organization\\\":\\\"\" + Org + \"\\\",\\\"displayname\\\":\\\"\" + Disp + \"\\\",\\\"unitofmeasure\\\":\\\"\" + UnitsMap[measureName] + \"\\\",\\\"measurename\\\":\\\"\" + measureName + \"\\\",\\\"location\\\":\\\"\" + Locn + \"\\\",\\\"timecreated\\\":\\\"\" + timeStr + \"\\\"}\"\n        if self.s != None :\n            self.s.send(\"<\" + JSONdB + \">\")         # sends to gateway over socket interface\n        print(JSONdB)                               # print only for debugging purposes\n\n    def processSensorData(self) :\n        DO2Sample = self.do2Sensor.GetDataSample()\n        DO2Parsed = re.findall(r\"([0-9]+\\.[0-9]+)\",DO2Sample)\n        if DO2Parsed:\n            self.sendMessage('Dissolved Oxygen', DO2Parsed[1])\n\n        ECSample = self.ecSensor.query(\"R\")\n        print(ECSample)\n        ECParsed = re.match(\"Command success:([0-9]+\\.*[0-9]*),([0-9]+\\.*[0-9]*),([0-9]+\\.*[0-9]*),([0-9]+\\.*[0-9]*)\",ECSample)\n        if ECParsed :\n            self.sendMessage('Conductivity',    ECParsed.group(1))\n            self.sendMessage('TDS',             ECParsed.group(2))\n            self.sendMessage('Salinity',        ECParsed.group(3))\n            self.sendMessage('Specific Gravity',ECParsed.group(4))\n\n        MoistureSample = self.moistureSensor.GetDataSample()\n        self.sendMessage('Moisture', str(MoistureSample))\n\ndef main() :\n    agent = SensorAgent()\n\n    while True:\n        exceptions_count = 0\n        agent.connectToServer()\n\n        while True:\n            try:\n                start = time.time()\n                agent.processSensorData()\n                end = time.time()\n                if end - start < SEND_INTERVAL :\n                    time.sleep(SEND_INTERVAL - (end - start))\n\n            except Exception as msg:\n                exceptions_count += 1\n                print(msg[0])\n                # if we get too many exceptions, we assume the server is dead\n                # we will ignore the casual exception\n                if exceptions_count > EXCEPTION_THRESHOLD:\n                    break \n                else:\n                    continue\n\n        # will never get here, unless server dies         \n        try: \n            agent.close()\n        except KeyboardInterrupt: \n            print(\"Continuous polling stopped\")\n        except Exception as msg:\n            # eat all exception and go back to connect loop \n            print(msg[0])\n\nif __name__ == '__main__':\n    main()\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Hydrology/autorun2.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n#\nexport GW_HOME=/home/pi/ctdgtwy\necho \"$(date) => autorun2.sh: started\" >> $GW_HOME/boot_sequence.log\necho \"Starting secondary script\"\ncd $GW_HOME\nsudo python $GW_HOME/SensorAgent.py &\necho \"$(date) => autorun2.sh: finished\" >> $GW_HOME/boot_sequence.log\n\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/Hydrology/deploy_next.cmd",
    "content": "@echo off\nREM //  ---------------------------------------------------------------------------------\nREM //  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\nREM // \nREM //  The MIT License (MIT)\nREM // \nREM //  Permission is hereby granted, free of charge, to any person obtaining a copy\nREM //  of this software and associated documentation files (the \"Software\"), to deal\nREM //  in the Software without restriction, including without limitation the rights\nREM //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\nREM //  copies of the Software, and to permit persons to whom the Software is\nREM //  furnished to do so, subject to the following conditions:\nREM // \nREM //  The above copyright notice and this permission notice shall be included in\nREM //  all copies or substantial portions of the Software.\nREM // \nREM //  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nREM //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nREM //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nREM //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nREM //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nREM //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nREM //  THE SOFTWARE.\nREM //  ---------------------------------------------------------------------------------\n\nset puttydir=\"C:\\software\\putty\\\"\nset prjdir=..\\..\\Gateways\\GatewayService\\\nset scdir=%prjdir%Scripts\\ScriptConverter\\bin\\\nset rpi_ip=xxx.xxx.xxx.xxx\nset rpi_usr=pi\nset rpi_pw=raspberry\nset Configuration=Release\nset GW_Home=ctdgtwy\nset Staging=%GW_Home%/staging\nset PUTTY_CMD=%puttydir%putty %rpi_usr%@%rpi_ip% -pw %rpi_pw% \nset PSCP_CMD=%puttydir%pscp -pw %rpi_pw% \n\necho editing line endings for Pi\n%scdir%%Configuration%\\ScriptConverter.exe \"autorun2.sh\" \n\necho Copying file that starts up python script to read hydrology sensors and format as JSON\n%PSCP_CMD% SensorAgent.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% Modified\\autorun2.sh  %rpi_usr%@%rpi_ip%:%Staging%/\n\necho Marking autorun2.sh as executable\ndel /f %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/autorun2.sh    \t>> %temp%\\rpigatewayautorunx.tmp\n%PUTTY_CMD% -m                                    %temp%\\rpigatewayautorunx.tmp"
  },
  {
    "path": "Devices/GatewayConnectedDevices/WensnSoundLevelMeter/WensnPiVS01/WensnPiVS01.py",
    "content": "'''\n Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n\n The MIT License (MIT)\n\n Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n \n The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n \n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n  \n -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= \n Code to read data from a Wensn 1361 Digital Sound Level Meter, then augment and format as JSON to send via socket connection to a gateway.\n Example of sending sound level data to Microsoft Azure and analyzing with Azure Stream Analytics or Azure Machine Learning.\n Real time output viewable at http://connectthedots.msopentech.com .\n'''\nimport sys\nimport usb.core\nimport socket\nimport time\nimport datetime\n\n#SensorSubject = \"sound\"                           # determines how Azure website will chart the data\nOrg      = \"My organization\";\nDisp     = \"Wensn SLM 01\"                          # will be the label for the curve on the chart\nGUID     = \"nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn\"  # ensures all the data from this sensor appears on the same chart. You can use the Tools/Create GUID in Visual Studio to create\nLocn     = \"here\";\nMeasure  = \"sound\";\nUnits    = \"decibels\";\n\nVendor   = 0x16c0                                  # Vendor ID for Wensn\nProduct  = 0x5dc                                   # Product ID for Wensn 1361\n\nHOST     = '127.0.0.1'   \nPORT     = 5000\n\nCONNECT_RETRY_INTERVAL = 2\nEXCEPTION_THRESHOLD    = 3\nSEND_INTERVAL          = 1\n\nwhile 1:\n    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)\n    print(\"Socket created.\")\n\n    while 1:\n        try:\n            s.connect((HOST, PORT));\n            break;\n        except socket.error as msg:\n            print(\"Socket connection failed. Error Code : \" + str(msg[0]) + \" Message \" + msg[1])\n            time.sleep(CONNECT_RETRY_INTERVAL)\n     \n    print (\"Socket connection succeeded.\")\n\n    print (\"Looking for an usb device...\")\n    while 1:\n        dev = usb.core.find(idVendor=Vendor, idProduct=Product)\n        if dev is not None:\n            break;\n        print (\"Please plug usb device in. Waiting...\")\n        time.sleep(CONNECT_RETRY_INTERVAL)\n\n    print(dev)\n    print(hex(dev.idVendor) + \", \" + hex(dev.idProduct))\n\n    exceptions_count = 0\n    while 1:\n        ret = dev.ctrl_transfer(0xC0, 4, 0, 0, 200)\n        dB = (ret[0] + ((ret[1] & 3) * 256)) * 0.1 + 30\n        timeStr = datetime.datetime.utcnow().isoformat()\n        try:\n            JSONdB=\"{\\\"value\\\":\"+str(dB)+\",\\\"guid\\\":\\\"\"+GUID+\"\\\",\\\"organization\\\":\\\"\"+Org+\"\\\",\\\"displayname\\\":\\\"\"+Disp +\"\\\",\\\"unitofmeasure\\\":\\\"\"+Units+\"\\\",\\\"measurename\\\":\\\"\"+Measure+\"\\\",\\\"location\\\":\\\"\"+Locn+\"\\\",\\\"timecreated\\\":\\\"\"+timeStr+\"\\\"}\"\n            s.send(\"<\" + JSONdB + \">\");                  # sends to gateway over socket interface\n            print(JSONdB)                                # print only for debugging purposes\n        except Exception as msg:\n            exceptions_count += 1\n            print(msg[0])\n            # if we get too many exceptions, we assume the server is dead\n            # we will ignore the casual exception\n            if exceptions_count > EXCEPTION_THRESHOLD:\n                break \n            else:\n                continue\n\n        time.sleep(SEND_INTERVAL)\n    \n    # will never get here, unless server dies         \n    try: \n        s.close()\n    except Exception as msg:\n        # eat all exception and go back to connect loop \n        print(msg[0])"
  },
  {
    "path": "Devices/GatewayConnectedDevices/WensnSoundLevelMeter/WensnPiVS01/autorun2.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n#\nexport GW_HOME=/home/pi/ctdgtwy\necho \"$(date) => autorun2.sh: started\" >> $GW_HOME/boot_sequence.log\necho \"Starting secondary script\"\ncd $GW_HOME\nsudo python $GW_HOME/WensnPiVS01.py &\necho \"$(date) => autorun2.sh: finished\" >> $GW_HOME/boot_sequence.log\n\n"
  },
  {
    "path": "Devices/GatewayConnectedDevices/WensnSoundLevelMeter/WensnPiVS01/deploy_next.cmd",
    "content": "@echo off\nREM //  ---------------------------------------------------------------------------------\nREM //  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\nREM // \nREM //  The MIT License (MIT)\nREM // \nREM //  Permission is hereby granted, free of charge, to any person obtaining a copy\nREM //  of this software and associated documentation files (the \"Software\"), to deal\nREM //  in the Software without restriction, including without limitation the rights\nREM //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\nREM //  copies of the Software, and to permit persons to whom the Software is\nREM //  furnished to do so, subject to the following conditions:\nREM // \nREM //  The above copyright notice and this permission notice shall be included in\nREM //  all copies or substantial portions of the Software.\nREM // \nREM //  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nREM //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nREM //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nREM //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nREM //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nREM //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nREM //  THE SOFTWARE.\nREM //  ---------------------------------------------------------------------------------\n\nset puttydir=\"C:\\software\\putty\\\"\nset prjdir=..\\..\\..\\Gateways\\GatewayService\\\nset scdir=%prjdir%Scripts\\ScriptConverter\\bin\\\nset rpi_ip=xxx.xxx.xxx.xxx\nset rpi_usr=pi\nset rpi_pw=raspberry\nset Configuration=Release\nset GW_Home=ctdgtwy\nset Staging=%GW_Home%/staging\nset PUTTY_CMD=%puttydir%putty %rpi_usr%@%rpi_ip% -pw %rpi_pw% \nset PSCP_CMD=%puttydir%pscp -pw %rpi_pw% \n\necho editing line endings for Pi\n%scdir%%Configuration%\\ScriptConverter.exe \"autorun2.sh\" \n\necho Copying file that starts up python script to read USB port connected to Wensn and format as JSON\n%PSCP_CMD% WensnPiVS01.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% Modified\\autorun2.sh  %rpi_usr%@%rpi_ip%:%Staging%/\n\necho Marking autorun2.sh as executable\ndel /f %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/autorun2.sh    \t>> %temp%\\rpigatewayautorunx.tmp\n%PUTTY_CMD% -m                                    %temp%\\rpigatewayautorunx.tmp"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Adapter/SensorEndpoint.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    //--//\n\n    public class SensorEndpoint\n    {\n        public string Name { get; set; }\n\n        public string Host { get; set; }\n\n        public int Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/ILogger.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    public interface ILogger\n    {\n        void Flush( );\n\n        void LogError( string logMessage );\n\n        void LogInfo( string logMessage );\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/IPAddressHelper.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Linq;\n    using System.Net;\n    using System.Net.NetworkInformation;\n    using System.Net.Sockets;\n\n    public static class IPAddressHelper\n    {\n        public static void GetIPAddressString( ref string IPString )\n        {\n            const int PING_TIMEOUT = 5000;\n            const int PING_RETRIES_COUNT = 100;\n\n            IPString = string.Empty;\n            string result = string.Empty;\n\n            IEnumerable<IPAddress> localList = GetLocalIPAddressList( );\n            if( localList != null && localList.Any( ) )\n            {\n                result += \"Gateway local IP: \" + localList.First( ) + '\\n';\n            }\n\n            for( int step = 0; step < PING_RETRIES_COUNT; ++step )\n            {\n                IPAddress replyAddress;\n\n                replyAddress = GetIPAddressByPing( \"corp.microsoft.com\", PING_TIMEOUT );\n                if( replyAddress != null )\n                {\n                    result += \"Gateway public IP: \" + replyAddress + '\\n';\n                    break;\n                }\n\n                replyAddress = GetIPAddressByPing( \"www.microsoft.com\", PING_TIMEOUT );\n                if( replyAddress != null )\n                {\n                    result += \"Gateway public IP: \" + replyAddress + '\\n';\n                    break;\n                }\n            }\n\n            if( !string.IsNullOrEmpty( result ) )\n            {\n                IPString = result;\n            }\n        }\n\n        public static IEnumerable<IPAddress> GetLocalIPAddressList( )\n        {\n            IPHostEntry ipHostEntry = Dns.GetHostEntry( string.Empty );\n            if( ipHostEntry != null )\n            {\n                var selected = ipHostEntry.AddressList.Where( a => a.AddressFamily == AddressFamily.InterNetwork );\n                return selected;\n            }\n            return null;\n        }\n\n        public static IPAddress GetIPAddressByPing( string hostName, int timeout )\n        {\n            try\n            {\n                Ping ping = new Ping( );\n                PingReply replay = ping.Send( hostName, timeout );\n                if( replay != null && replay.Status == IPStatus.Success )\n                {\n                    return replay.Address;\n                }\n            }\n            catch( Exception )\n            {\n            }\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Logger/NLogEventLogger.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    using NLog;\n\n    public class NLogEventLogger : ILogger\n    {\n        #region Singleton implementation\n\n        private static readonly object  _syncRoot = new object( );\n\n        //--//\n\n        private static ILogger          _NLogEventLoggerInstance;\n        private static NLog.Logger      _NLog;\n\n        //--//\n\n        public static ILogger Instance\n        {\n            get\n            {\n                if( _NLogEventLoggerInstance == null )\n                {\n                    lock( _syncRoot )\n                    {\n                        if( _NLogEventLoggerInstance == null )\n                        {\n                            _NLogEventLoggerInstance = new NLogEventLogger( );\n                        }\n                    }\n                }\n\n                return _NLogEventLoggerInstance;\n            }\n        }\n\n        private NLogEventLogger( )\n        {\n            _NLog = LogManager.GetCurrentClassLogger( );\n        }\n\n        #endregion\n\n        public void Flush( )\n        {\n            LogManager.Flush( );\n        }\n\n        public void LogError( string logMessage )\n        {\n            _NLog.Error( logMessage );\n        }\n\n        public void LogInfo( string logMessage )\n        {\n            _NLog.Info( logMessage );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Logger/SafeLogger.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n\n    public class SafeLogger : ILogger\n    {\n        protected readonly ILogger _logger;\n\n        //--//\n\n        protected SafeLogger( ILogger logger )\n        {\n            _logger = logger;\n        }\n\n        static public SafeLogger FromLogger( ILogger logger )\n        {\n            if( logger is SafeLogger )\n            {\n                return ( SafeLogger )logger;\n            }\n\n            return new SafeLogger( logger );\n        }\n\n        public void Flush( )\n        {\n            if( _logger != null )\n            {\n                _logger.Flush( );\n            }\n        }\n\n        public void LogError( string logMessage )\n        {\n            if( _logger != null )\n            {\n                _logger.LogError( logMessage );\n            }\n        }\n\n        public void LogInfo( string logMessage )\n        {\n            if( _logger != null )\n            {\n                _logger.LogInfo( logMessage );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Logger/TunableLogger.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    using System;\n\n    //--//\n\n    public class TunableLogger : ILogger\n    {\n        public enum LoggingLevel\n        {\n            Disabled = 0,\n            Errors = 1,\n            Verbose = 2,\n            Undefined = 3,\n        }\n\n        //--//\n\n        private LoggingLevel _level;\n\n        //--//\n\n        protected readonly ILogger _Logger;\n\n        //--//\n\n        protected TunableLogger( ILogger logger )\n        {\n            _Logger = logger;\n            _level = LoggingLevel.Errors;\n        }\n\n        //--//\n\n        public static LoggingLevel LevelFromString( string value )\n        {\n            if( !String.IsNullOrEmpty( value ) )\n            {\n                if( value == LoggingLevel.Disabled.ToString( ) )\n                {\n                    return LoggingLevel.Disabled;\n                }\n                if( value == LoggingLevel.Errors.ToString( ) )\n                {\n                    return LoggingLevel.Errors;\n                }\n                if( value == LoggingLevel.Verbose.ToString( ) )\n                {\n                    return LoggingLevel.Verbose;\n                }\n            }\n\n            return LoggingLevel.Undefined;\n        }\n\n        public static TunableLogger FromLogger( ILogger logger )\n        {\n            if( logger is TunableLogger )\n            {\n                return ( TunableLogger )logger;\n            }\n\n            return new TunableLogger( logger );\n        }\n\n        //--//\n\n        public void Flush( )\n        {\n            if (_Logger != null)\n            {\n                _Logger.Flush( );\n            }\n        }\n\n        public void LogError( string logMessage )\n        {\n            if( _level >= LoggingLevel.Errors )\n            {\n                _Logger.LogError( logMessage );\n            }\n        }\n\n        public void LogInfo( string logMessage )\n        {\n            if( _level >= LoggingLevel.Verbose )\n            {\n                _Logger.LogInfo( logMessage );\n            }\n        }\n\n        public LoggingLevel Level\n        {\n            get\n            {\n                return _level;\n            }\n            set\n            {\n                _level = value;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Microsoft.ConnectTheDots.Common.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.Common</RootNamespace>\n    <AssemblyName>Microsoft.ConnectTheDots.Common</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Devices.Client.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.Devices.Client.PCL.1.0.5\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Client.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Mono.Security.3.2.3.0\\lib\\net45\\Mono.Security.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.8\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"NLog, Version=3.2.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\NLog.3.2.0.0\\lib\\net45\\NLog.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PCLCrypto.1.0.86\\lib\\net40-Client\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"Validation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Validation.2.0.6.15003\\lib\\portable-net40+sl50+win+wpa81+wp80+Xamarin.iOS10+MonoAndroid10+MonoTouch10\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Adapter\\SensorEndpoint.cs\" />\n    <Compile Include=\"ILogger.cs\" />\n    <Compile Include=\"IPAddressHelper.cs\" />\n    <Compile Include=\"Logger\\NLogEventLogger.cs\" />\n    <Compile Include=\"Logger\\SafeLogger.cs\" />\n    <Compile Include=\"Logger\\TunableLogger.cs\" />\n    <Compile Include=\"Platform.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"SafeAction.cs\" />\n    <Compile Include=\"SafeFunction.cs\" />\n    <Compile Include=\"Threading\\TaskWrapper.cs\" />\n    <Compile Include=\"Utils\\Loader.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Platform.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    using System;\n\n    public static class Platform\n    {\n        public static bool IsMono\n        {\n            get\n            {\n                return Type.GetType( \"Mono.Runtime\" ) != null;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SharedInterfaces\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SharedInterfaces\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"8acb289d-dbd9-4700-b444-2e8b1de47e8c\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/SafeAction.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    using System;\n\n    //--//\n\n    public class SafeAction<TParam>\n    {\n        private readonly Action<TParam> _action;\n        private readonly ILogger        _logger;\n\n        //--//\n\n        public SafeAction( Action<TParam> action, ILogger logger )\n        {\n            _action = action;\n            _logger = SafeLogger.FromLogger( logger );\n        }\n\n        public void SafeInvoke( TParam obj )\n        {\n            try\n            {\n                _action( obj );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError(\"Exception in task: \" + ex.StackTrace);\n                _logger.LogError(\"Message in task: \" + ex.Message);\n            }\n        }\n    }\n\n    public class SafeAction\n    {\n        private readonly Action         _action;\n        private readonly ILogger        _logger;\n\n        //--//\n\n        public SafeAction( Action action, ILogger logger )\n        {\n            _action = action;\n            _logger = SafeLogger.FromLogger( logger );\n        }\n\n        public void SafeInvoke( )\n        {\n            try\n            {\n                _action( );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError(\"Exception in task: \" + ex.StackTrace);\n                _logger.LogError(\"Message in task: \" + ex.Message);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/SafeFunction.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    using System;\n\n    //--//\n\n    public class SafeFunc<TResult>\n    {\n        private readonly Func<TResult>  _function;\n        private readonly ILogger        _logger;\n\n        //--//\n\n        public SafeFunc( Func<TResult> function, ILogger logger )\n        {\n            _function = function;\n            _logger = SafeLogger.FromLogger( logger );\n        }\n\n        public TResult SafeInvoke( )\n        {\n            try\n            {\n                return _function( );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"Exception in task: \" + ex.StackTrace );\n            }\n\n            return default( TResult );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Threading/TaskWrapper.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n//#define USE_TASKS\n\nnamespace Microsoft.ConnectTheDots.Common.Threading\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Diagnostics;\n    using System.Linq;\n    using System.Text;\n    using System.Threading;\n    //--//\n    using _THREADING = System.Threading.Tasks;\n\n    //--//\n\n#if USE_TASKS\n    public class TaskWrapper\n    {\n        private _THREADING.Task _t;\n\n        //--//\n\n        public static TaskWrapper Run( Action action )\n        {\n            var t = new TaskWrapper( action );\n\n            t.Start();\n\n            return t;\n        }\n\n        public static void WaitAll( params TaskWrapper[] tasks )\n        {\n            _THREADING.Task[] ts = new _THREADING.Task[ tasks.Length ];\n            \n            for( int i = 0; i < tasks.Length; ++i )\n            {\n                ts[ i ] = tasks[ i ].InnerTask;\n            }\n\n            _THREADING.Task.WaitAll( ts );\n        }\n\n        public static void BatchWaitAll( params TaskWrapper[] tasks )\n        {\n            // we can wait on 64 handles at the most            \n            const int maxHandles = 64;\n\n            int remainder = tasks.Length % maxHandles;\n            int loops     = tasks.Length / maxHandles;\n\n            _THREADING.Task[] wh = null;\n            if( tasks.Length > maxHandles )\n            {\n\n                wh = new _THREADING.Task[ maxHandles ];\n\n                for( int i = 0; i < loops; ++i )\n                {\n                    for( int j = 0; j < maxHandles; ++j )\n                    {\n                        wh[ j ] = tasks[ ( i * maxHandles ) + j ].InnerTask;\n                    }\n\n                    _THREADING.Task.WaitAll( wh, Timeout.Infinite );\n                }\n            }\n\n            if( remainder > 0 )\n            {\n                wh = new _THREADING.Task[ remainder ];\n\n                for( int j = 0; j < remainder; ++j )\n                {\n                    wh[ j ] = tasks[ ( loops * maxHandles ) + j ].InnerTask;\n                }\n\n                _THREADING.Task.WaitAll( wh, Timeout.Infinite );\n            }\n        }\n\n        //--//\n\n        protected TaskWrapper( )\n        {\n        }\n\n        protected TaskWrapper( Action action )\n        {\n            _t = new _THREADING.Task( action );\n        }\n\n        protected TaskWrapper( _THREADING.Task t )\n        {\n            Debug.Assert( t != null );\n            _t = t;\n        }\n\n        public void Start()\n        {\n            _t.Start( );\n        }\n\n        public void Wait()\n        {\n            _t.Wait( );\n        }\n\n        public int Id\n        {\n            get\n            {\n                return _t.Id;\n            }\n        }\n\n        public _THREADING.TaskStatus Status\n        {\n            get\n            {\n                return (_THREADING.TaskStatus)_t.Status;\n            }\n        }\n\n        protected _THREADING.Task InnerTask\n        {\n            get\n            {\n                return _t;\n            }\n            set\n            {\n                _t = value;\n            }\n        }\n    }\n\n    public class TaskWrapper<TResult> : TaskWrapper\n    {\n        private readonly _THREADING.Task<TResult> _t;\n\n        //--//\n\n        public static TaskWrapper<TResult> Run( Func<TResult> function )\n        {\n            var t = new TaskWrapper<TResult>( function );\n\n            t.Start();\n\n            return t;\n        }\n\n        //--//\n\n        private static Action MakeDefault<T>( Func<T> function )\n        {\n            return () => { function(); };\n        }\n\n        public TaskWrapper( Func<TResult> function )\n            : base( )\n        {\n            _t = new _THREADING.Task<TResult>( function );\n\n            InnerTask = _t;\n        }\n\n        private TaskWrapper( _THREADING.Task<TResult> t )\n            : base ( t )\n        {\n        }\n            \n        public TaskWrapper<TNewResult> ContinueWith<TNewResult>( Func<_THREADING.Task<TResult>, TNewResult> continuationFunction )\n        {\n            return new TaskWrapper<TNewResult>( _t.ContinueWith<TNewResult>( continuationFunction ) );\n        }\n\n        public TResult Result\n        {\n            get\n            {\n                return _t.Result;\n            }\n        }\n    }\n#else\n\n    public class TaskWrapper\n    {\n        private static int _unique_id = 0;\n\n        //--//\n\n        private readonly int                    _id;\n        private          _THREADING.TaskStatus  _status;\n        private          ManualResetEvent       _completed;\n\n        //--//\n\n        protected readonly Action        _action;\n\n        //--//\n\n        public static TaskWrapper Run( Action action )\n        {\n            var t = new TaskWrapper( action );\n\n            t.Start( );\n\n            return t;\n        }\n\n        public static void BatchWaitAll( params TaskWrapper[] tasks )\n        {\n            // we can wait on 64 handles at the most            \n            const int maxHandles = 64;\n\n            int remainder = tasks.Length % maxHandles;\n            int loops     = tasks.Length / maxHandles;\n\n            WaitHandle[] wh = null;\n            if( tasks.Length > maxHandles )\n            {\n\n                wh = new WaitHandle[ maxHandles ];\n\n                for( int i = 0; i < loops; ++i )\n                {\n                    for( int j = 0; j < maxHandles; ++j )\n                    {\n                        wh[ j ] = tasks[ ( i * maxHandles ) + j ]._completed;\n                    }\n\n                    AutoResetEvent.WaitAll( wh, Timeout.Infinite );\n                }\n            }\n\n            if( remainder > 0 )\n            {\n                wh = new WaitHandle[ remainder ];\n\n                for( int j = 0; j < remainder; ++j )\n                {\n                    wh[ j ] = tasks[ ( loops * maxHandles ) + j ]._completed;\n                }\n\n                AutoResetEvent.WaitAll( wh, Timeout.Infinite );\n            }\n        }\n\n        //--//\n\n        protected TaskWrapper( )\n        {\n            _id = Interlocked.Increment( ref _unique_id );\n            _status = _THREADING.TaskStatus.Created;\n            _completed = new ManualResetEvent( false );\n        }\n\n        protected TaskWrapper( Action action )\n            : this( )\n        {\n            _action = action;\n        }\n\n        public virtual void Start( )\n        {\n            ThreadPool.QueueUserWorkItem( Execute );\n        }\n\n        public void Wait( )\n        {\n            _completed.WaitOne( );\n        }\n\n        public int Id\n        {\n            get\n            {\n                return _id;\n            }\n        }\n\n        public _THREADING.TaskStatus Status\n        {\n            get\n            {\n                return _status;\n            }\n        }\n\n        protected void SetStatus( _THREADING.TaskStatus status )\n        {\n            _status = status;\n        }\n\n        protected bool IsRunningOrDone( )\n        {\n            return _status == _THREADING.TaskStatus.WaitingToRun ||\n                   _status == _THREADING.TaskStatus.Running ||\n                   _status == _THREADING.TaskStatus.Faulted ||\n                   _status == _THREADING.TaskStatus.RanToCompletion;\n        }\n\n        protected void SetCompleted( )\n        {\n            _completed.Set( );\n        }\n\n        protected void WaitCompleted( )\n        {\n            _completed.WaitOne( );\n        }\n\n        private void Execute( object state )\n        {\n            _status = _THREADING.TaskStatus.Running;\n\n            try\n            {\n                _action( );\n            }\n            catch\n            {\n                _status = _THREADING.TaskStatus.Faulted;\n            }\n\n            _status = _THREADING.TaskStatus.RanToCompletion;\n\n            _completed.Set( );\n        }\n    }\n\n    public class TaskWrapper<TResult> : TaskWrapper\n    {\n        private          Func<TResult> _func;\n        private          object        _cont;\n        private          TResult       _result   = default( TResult );\n        private readonly object        _syncRoot = new object( );\n\n        //--//\n\n        public static TaskWrapper<TResult> Run( Func<TResult> function )\n        {\n            var t = new TaskWrapper<TResult>( function );\n\n            t.Start( );\n\n            return t;\n        }\n\n        //--//\n\n        private TaskWrapper( Func<TResult> func )\n            : base( )\n        {\n            _func = func;\n        }\n\n        public override void Start( )\n        {\n            ThreadPool.QueueUserWorkItem( Execute );\n        }\n\n        private TaskWrapper<TOutput> MakeTask<TInput, TOutput>( Func<TaskWrapper<TResult>, TOutput> continuationFunction )\n        {\n            return new TaskWrapper<TOutput>( ( ) =>\n            {\n                return continuationFunction( this );\n            } );\n        }\n\n        public TaskWrapper<TNewResult> ContinueWith<TNewResult>( Func<TaskWrapper<TResult>, TNewResult> continuationFunction )\n        {\n            _cont = MakeTask<TaskWrapper<TResult>, TNewResult>( continuationFunction );\n\n            lock( _syncRoot )\n            {\n                if( IsRunningOrDone( ) )\n                {\n                    // Task is executing or done, schedule againto \n                    // make sure continuation will be served\n                    Start( );\n                }\n            }\n\n            return ( TaskWrapper<TNewResult> )_cont;\n        }\n\n        public TResult Result\n        {\n            get\n            {\n                return _result;\n            }\n        }\n\n        private void Execute( object state )\n        {\n            //\n            // we want to execute _func only once \n            //\n            Func<TResult> f = null;\n            lock( _syncRoot )\n            {\n                if( _func != null )\n                {\n                    f = _func;\n\n                    _func = null;\n\n                    SetStatus( _THREADING.TaskStatus.WaitingToRun );\n                }\n            }\n\n            if( f != null )\n            {\n                try\n                {\n                    SetStatus( _THREADING.TaskStatus.Running );\n\n                    _result = f( );\n                }\n                catch\n                {\n                    SetStatus( _THREADING.TaskStatus.Faulted );\n                }\n\n                SetStatus( _THREADING.TaskStatus.RanToCompletion );\n\n                SetCompleted( );\n            }\n\n            //\n            // we want to execute _cont only once \n            //\n            TaskWrapper cont = null;\n            lock( _syncRoot )\n            {\n                if( _cont != null )\n                {\n                    cont = ( TaskWrapper )_cont;\n\n                    _cont = null;\n                }\n            }\n\n            if( cont != null )\n            {\n                // do not start the continuation before the task is completed\n                WaitCompleted( );\n\n                ( ( TaskWrapper )cont ).Start( );\n            }\n        }\n    }\n#endif\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/Utils/Loader.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Common\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Configuration;\n\n    //--//\n\n    public class IotHubConfig\n    {\n        public string IotHubConnectionString;\n    }\n\n\n    public class DataTransformsConfig\n    {\n        public bool AttachTime;\n        public bool AttachIP;\n    };\n\n    public static class Loader\n    {\n        public static IList<String> GetSources( )\n        {\n            var dataIntakes = new List<String>( );\n\n            DeviceAdapterConfigSection config = ConfigurationManager.GetSection( \"dataIntakes\" ) as DeviceAdapterConfigSection;\n\n            if( config != null )\n            {\n                foreach( DeviceAdapterConfigInstanceElement e in config.Instances )\n                {\n                    dataIntakes.Add( e.AssemblyPath );\n                }\n            }\n\n            return dataIntakes;\n        }\n\n        public static IList<SensorEndpoint> GetEndpoints( )\n        {\n            var sensorEndpoints = new List<SensorEndpoint>( );\n\n            SensorEndpointConfigSection sensorEndpointItems = ConfigurationManager.GetSection( \"sensorEndpoints\" ) as SensorEndpointConfigSection;\n\n            if( sensorEndpointItems != null )\n            {\n                foreach( SensorEndpointConfigInstanceElement sensorEndpointItem in sensorEndpointItems.Instances )\n                {\n                    sensorEndpoints.Add( new SensorEndpoint\n                    {\n                        Name = sensorEndpointItem.Name,\n                        Host = sensorEndpointItem.Host,\n                        Port = sensorEndpointItem.Port,\n                    } );\n                }\n            }\n\n            return sensorEndpoints;\n        }\n\n        public static IotHubConfig GetIotHubConfig( )\n        {\n            IotHubConfigSection section = ConfigurationManager.GetSection(\"IotHubConfig\") as IotHubConfigSection;\n            IotHubConfig configData = null;\n\n            if( section != null )\n            {\n                configData = new IotHubConfig\n                {\n                    IotHubConnectionString = section.IotHubConnectionString\n                };\n            }\n\n            return configData;\n        }\n\n        public static DataTransformsConfig GetDataTransformsConfig( )\n        {\n            DataTransformsConfigSection section = ConfigurationManager.GetSection( \"dataTransformsConfig\" ) as DataTransformsConfigSection;\n            DataTransformsConfig configData;\n\n            if (section != null)\n            {\n                configData = new DataTransformsConfig\n                {\n                    AttachTime = section.AttachTime,\n                    AttachIP = section.AttachIP\n                };\n            }\n            else\n            {\n                configData = new DataTransformsConfig\n                {\n                    AttachTime = true,\n                    AttachIP = false\n                };\n            }\n\n            return configData;\n        }\n    }\n\n    internal class IotHubConfigSection : ConfigurationSection\n    {\n        [ConfigurationProperty(\"IotHubConnectionString\", DefaultValue = \"IotHubConnectionString\", IsRequired = true)]\n        public string IotHubConnectionString\n        {\n            get\n            {\n                return (string)this[\"IotHubConnectionString\"];\n            }\n            set\n            {\n                this[\"IotHubConnectionString\"] = value;\n            }\n        }\n    }\n\n    internal class DataTransformsConfigSection : ConfigurationSection\n    {\n        [ConfigurationProperty( \"AttachTime\", DefaultValue = \"false\", IsRequired = true )]\n        public bool AttachTime\n        {\n            get\n            {\n                return ( bool )this[ \"AttachTime\" ];\n            }\n            set\n            {\n                this[ \"AttachTime\" ] = value;\n            }\n        }\n\n        [ConfigurationProperty(\"AttachIP\", DefaultValue = \"false\", IsRequired = true)]\n        public bool AttachIP\n        {\n            get\n            {\n                return ( bool )this[ \"AttachIP\" ];\n            }\n            set\n            {\n                this[ \"AttachIP\" ] = value;\n            }\n        }\n    }\n\n    public class DeviceAdapterConfigSection : ConfigurationSection\n    {\n        [ConfigurationProperty( \"\", IsRequired = true, IsDefaultCollection = true )]\n        public DeviceAdapterConfigInstanceCollection Instances\n        {\n            get { return ( DeviceAdapterConfigInstanceCollection )this[ \"\" ]; }\n            set { this[ \"\" ] = value; }\n        }\n    }\n\n    public class DeviceAdapterConfigInstanceCollection : ConfigurationElementCollection\n    {\n        protected override ConfigurationElement CreateNewElement( )\n        {\n            return new DeviceAdapterConfigInstanceElement( );\n        }\n\n        protected override object GetElementKey( ConfigurationElement element )\n        {\n            return ( ( DeviceAdapterConfigInstanceElement )element ).Name;\n        }\n    }\n\n    public class DeviceAdapterConfigInstanceElement : ConfigurationElement\n    {\n        [ConfigurationProperty( \"name\", IsKey = true, IsRequired = true )]\n        public string Name\n        {\n            get\n            {\n                return ( string )base[ \"name\" ];\n            }\n        }\n\n        [ConfigurationProperty( \"type\", IsRequired = true )]\n        public string TypeName\n        {\n            get\n            {\n                return ( string )base[ \"type\" ];\n            }\n        }\n\n        [ConfigurationProperty( \"assemblyPath\", IsRequired = true )]\n        public string AssemblyPath\n        {\n            get\n            {\n                return ( string )base[ \"assemblyPath\" ];\n            }\n        }\n    }\n\n    public class SensorEndpointConfigSection : ConfigurationSection\n    {\n        [ConfigurationProperty( \"\", IsRequired = true, IsDefaultCollection = true )]\n        public SensorEndpointConfigInstanceCollection Instances\n        {\n            get { return ( SensorEndpointConfigInstanceCollection )this[ \"\" ]; }\n            set { this[ \"\" ] = value; }\n        }\n    }\n\n    public class SensorEndpointConfigInstanceCollection : ConfigurationElementCollection\n    {\n        protected override ConfigurationElement CreateNewElement( )\n        {\n            return new SensorEndpointConfigInstanceElement( );\n        }\n\n        protected override object GetElementKey( ConfigurationElement element )\n        {\n            return ( ( SensorEndpointConfigInstanceElement )element ).Name;\n        }\n    }\n\n    public class SensorEndpointConfigInstanceElement : ConfigurationElement\n    {\n        [ConfigurationProperty( \"name\", IsKey = true, IsRequired = true )]\n        public string Name\n        {\n            get\n            {\n                return ( string )base[ \"name\" ];\n            }\n        }\n\n        [ConfigurationProperty( \"port\", IsRequired = true )]\n        public int Port\n        {\n            get\n            {\n                return ( int )base[ \"port\" ];\n            }\n        }\n\n        [ConfigurationProperty( \"host\", IsRequired = true )]\n        public string Host\n        {\n            get\n            {\n                return ( string )base[ \"host\" ];\n            }\n        }\n    }\n}"
  },
  {
    "path": "Devices/Gateways/GatewayService/Common/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Azure.Devices.Client.PCL\" version=\"1.0.5\" targetFramework=\"net452\" />\n  <package id=\"Mono.Security\" version=\"3.2.3.0\" targetFramework=\"net452\" />\n  <package id=\"Newtonsoft.Json\" version=\"6.0.8\" targetFramework=\"net452\" />\n  <package id=\"NLog\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"PCLCrypto\" version=\"1.0.86\" targetFramework=\"net452\" />\n  <package id=\"Validation\" version=\"2.0.6.15003\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/Bluetooth/BluetoothUARTAdapter.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Adapters\n{\n    using System;\n    using System.IO.Ports;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n\n    //--//\n\n    public class BluetoothUARTAdapter : DeviceAdapterAbstract\n    {\n        private Func<string, int>    _enqueue;\n        private bool                 _doWorkSwitch;\n\n        //--//\n\n        private const string         PORT           = \"/dev/ttyAMA0\";\n        private const int            BAUD_RATE      = 9600;\n\n        //--//\n\n        public BluetoothUARTAdapter( ILogger logger )\n            : base( logger )\n        {\n            _doWorkSwitch = true;\n        }\n\n        public override bool Start( Func<string, int> enqueue )\n        {\n            _enqueue = enqueue;\n\n            _doWorkSwitch = true;\n\n            var sh = new SafeAction( ( ) => Listen( PORT, BAUD_RATE ), _logger );\n\n            TaskWrapper.Run( sh.SafeInvoke );\n\n            return true;\n        }\n\n        public override bool Stop( )\n        {\n            _doWorkSwitch = false;\n\n            return true;\n        }\n\n        public override bool SetEndpoint( SensorEndpoint endpoint = null )\n        {\n            //we don't need any endpoints for this Data Intake\n            if( endpoint == null )\n                return true;\n\n            return false;\n        }\n\n        private void Listen( string port, int baudRate )\n        {\n            string serialPortName = port;\n            SerialPort serialPort = null;\n            bool serialPortAlive = true;\n            \n            // We want the thread to restart listening on the serial port if it crashed\n            while( _doWorkSwitch )\n            {\n                try\n                {\n#if !SIMULATEDATA\n                    serialPort = new SerialPort( serialPortName, baudRate, Parity.None, 8, StopBits.One );\n                    serialPort.DtrEnable = true;\n                    serialPort.Open( );\n#endif\n                    do\n                    {\n                        // When simulating data, we will generate random data\n                        // when not simulating, we read the serial port\n                        string valuesJson = \"\";\n#if !SIMULATEDATA\n                        try\n                        {\n                            valuesJson = serialPort.ReadLine( );\n                            \n                            // Send JSON message to the Cloud\n                            _enqueue( valuesJson );\n                        }\n                        catch( Exception e )\n                        {\n                            _logger.LogError( \"Error Reading from Serial Portand sending data from serial port \" + serialPortName + \":\" + e.Message );\n                            serialPort.Close( );\n                            serialPortAlive = false;\n                        }\n#endif\n                    } while( serialPortAlive );\n\n                }\n                catch( Exception e )\n                {\n                    _logger.LogError( \"Error processing data from serial port: \" + e.Message );\n                }\n\n                // When we are reaching this point, that means whether the COM port reading failed or the sensors has been disconnected\n                // we will try to close the port properly, but if the device has been disconnected, this will trigger an exception\n                try\n                {\n                    if( serialPort != null )\n                    {\n                        if( serialPort.IsOpen )\n                        {\n                            serialPort.Close( );\n                        }\n\n                        serialPort = null;\n                    }\n                }\n                catch( Exception e )\n                {\n                    _logger.LogError( \"Error when trying to close the serial port: \" + e.Message );\n                }\n                // We restart the thread if there has been some failure when reading from serial port\n                Thread.Sleep( 800 );\n            }\n        }\n    }\n}"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/Bluetooth/BluetoothUARTAdapter.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{A49E31A1-79DC-4B05-AE48-2B594E168EB9}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.Adapters</RootNamespace>\n    <AssemblyName>Microsoft.ConnectTheDots.BluetoothUARTAdapter</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json\">\n      <HintPath>..\\..\\packages\\Newtonsoft.Json.6.0.8\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"NLog\">\n      <HintPath>..\\..\\packages\\NLog.3.2.0.0\\lib\\net45\\NLog.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"BluetoothUARTAdapter.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{E14D1C61-1979-452E-BE8B-0303A95EF764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/Bluetooth/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"BluetoothAdapter\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"BluetoothAdapter\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"121fa2b8-a21e-445d-9a72-135e372b46a0\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/SerialPort/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SerialPortAdapter\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SerialPortAdapter\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"a7f28ec8-2b75-449d-adae-29dd1d2f3c7a\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/SerialPort/SerialPortAdapter.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n//#define SIMULATEDATA\n//#define DEBUG_LOG\n\nnamespace Microsoft.ConnectTheDots.Adapters\n{\n    using System;\n    using System.Collections.Generic;\n    using System.IO.Ports;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n\n    //--//\n\n    public class SerialPortAdapter : DeviceAdapterAbstract\n    {\n        private class SerialPortListeningThread\n        {\n            public SerialPortListeningThread( string name, Thread thread )\n            {\n                portName = name;\n                listeningThread = thread;\n            }\n            public string portName { get; set; }\n            public Thread listeningThread { get; set; }\n        }\n\n        //--//\n\n        private const    int SLEEP_TIME_BETWEEN_SCAN = 5000; // 5 sec\n\n        //--//\n\n        private readonly List<SerialPortListeningThread> _listeningThreads;\n        private          Func<string, int>               _enqueue;\n        private          bool                            _doWorkSwitch;\n\n        //--//\n\n        public SerialPortAdapter( ILogger logger )\n            : base( logger )\n        {\n            _listeningThreads = new List<SerialPortListeningThread>( );\n        }\n\n        public override bool Start( Func<string, int> enqueue )\n        {\n            _enqueue = enqueue;\n\n            _doWorkSwitch = true;\n\n            var sh = new SafeAction<int>( ( t ) => RunForSerial( t ), _logger );\n\n            TaskWrapper.Run( ( ) => sh.SafeInvoke( SLEEP_TIME_BETWEEN_SCAN ) );\n\n            return true;\n        }\n\n        public override bool Stop( )\n        {\n            _doWorkSwitch = false;\n\n            return true;\n        }\n\n        public override bool SetEndpoint( SensorEndpoint endpoint = null )\n        {\n            //we don't need any endpoints for this Data Intake\n            if( endpoint == null )\n                return true;\n\n            return false;\n        }\n\n        public int RunForSerial( int scanPeriod )\n        {\n#if LOG_MESSAGE_RATE\n            var stopWatch = Stopwatch.StartNew();\n#endif\n            do\n            {\n#if DEBUG_LOG\n                _logger.LogInfo( \"RunForSerial loop for Serial Ports scan.\" );\n#endif\n\n                // We will monitor available COM ports and create listening thread for each new valid port\n#if !SIMULATEDATA\n                // Identify which serial ports are connected to sensors\n                var ports = GetPortNames( );\n\n                // First we make sure we kill listening threads for COM port that are no longer available\n                var threadsKilled = new List<SerialPortListeningThread>( );\n                foreach( SerialPortListeningThread serialPortThread in _listeningThreads )\n                {\n                    if( Array.IndexOf( ports, serialPortThread.portName ) == -1 )\n                    {\n                        // Serial port is no longer valid. Abort the listening process\n#if DEBUG_LOG\n                        _logger.LogInfo( \"Killed serial port: \" + serialPortThread.portName );\n#endif\n                        serialPortThread.listeningThread.Abort( );\n                        threadsKilled.Add( serialPortThread );\n                    }\n                }\n\n                // we cannot remove a list item in a foreach loop\n                foreach( SerialPortListeningThread threadKilled in threadsKilled )\n                {\n                    _listeningThreads.Remove( threadKilled );\n                }\n\n                // For each of the valid serial ports, start a new listening thread if not already created\n                foreach( string serialPortName in ports )\n                {\n                    if( !_listeningThreads.Exists( x => x.portName.Equals( serialPortName ) ) )\n                    {\n#if DEBUG_LOG\n                        _logger.LogInfo( \"Found serial port with Normal attribute: \" + serialPortName );\n#endif\n                        // Start a listening thread for each serial port\n                        string name = serialPortName;\n                        var listeningThread = new Thread( ( ) => ListeningForSensors( name ) );\n                        listeningThread.Start( );\n                        _listeningThreads.Add( new SerialPortListeningThread( serialPortName, listeningThread ) );\n                    }\n                }\n\n                // If we have no serial port connect, log it\n                if( _listeningThreads.Count == 0 )\n                {\n                    _logger.LogError( \"No connected serial ports\" );\n                }\n#else\n                if(_listeningThreads.Count == 0)\n                {\n                    // Start a unique thread simulating data\n                    var listeningThread = new Thread(() => ListeningForSensors(\"Simulated\"));\n                    listeningThread.Start();\n                    _listeningThreads.Add(new SerialPortListeningThread(\"Simulated\", listeningThread));\n                }\n#endif\n                // Every 5 seconds we scan Serial COM ports\n                Thread.Sleep( scanPeriod );\n            } while( _doWorkSwitch );\n            return 0;\n        }\n\n        public void ListeningForSensors( string port )\n        {\n#if DEBUG_LOG\n            _logger.LogInfo( \"ListeningForSensors: \" + port );\n#endif\n            string serialPortName = port;\n            SerialPort serialPort = null;\n            bool serialPortAlive = true;\n            // We want the thread to restart listening on the serial port if it crashed\n            while( _doWorkSwitch )\n            {\n#if DEBUG_LOG\n                _logger.LogInfo( \"Starting listening loop for serial port \" + serialPortName );\n#endif\n                try\n                {\n#if !SIMULATEDATA\n                    serialPort = new SerialPort( serialPortName, 9600 );\n                    serialPort.DtrEnable = true;\n                    serialPort.Open( );\n#if DEBUG_LOG\n                    _logger.LogInfo( \"Opened Serial Port \" + serialPortName );\n#endif\n#endif\n                    do\n                    {\n                        // When simulating data, we will generate random data\n                        // when not simulating, we read the serial port\n                        string valuesJson = \"\";\n#if !SIMULATEDATA\n                        try\n                        {\n                            valuesJson = serialPort.ReadLine( );\n                        }\n                        catch( Exception e )\n                        {\n                            _logger.LogError( \"Error Reading from Serial Portand sending data from serial port \" + serialPortName + \":\" + e.Message );\n\n                            serialPort.Close( );\n                            serialPortAlive = false;\n                        }\n#else\n                        Random r = new Random ();\n                        valuesJson = String.Format(\"{{ \\\"temp\\\" : {0}, \\\"hmdt\\\" : {1}, \\\"lght\\\" : {2}}}\", \n                            (r.NextDouble() * 120) - 10,\n                            (r.NextDouble() * 100),\n                            (r.NextDouble() * 100));\n#endif\n\n                        if( serialPortAlive )\n                        {\n                            try\n                            {\n                                // Show serialPort string that will be sent via IoT Hub\n                                //_Logger.Info(valuesJson);\n\n                                // Send JSON message to the Cloud\n                                _enqueue( valuesJson );\n                            }\n                            catch( Exception e )\n                            {\n                                _logger.LogError( \"Error sending message: \" + e.Message );\n                            }\n                        }\n                    } while( serialPortAlive );\n\n                }\n                catch( Exception e )\n                {\n                    _logger.LogError( \"Error processing data from serial port: \" + e.Message );\n                }\n\n                // When we are reaching this point, that means whether the COM port reading failled or the sensors has been disconnected\n                // we will try to close the port properly, but if the device has been disconnected, this will trigger an exception\n                try\n                {\n                    if( serialPort != null )\n                    {\n                        if( serialPort.IsOpen )\n                        {\n                            serialPort.Close( );\n                        }\n\n                        serialPort = null;\n                    }\n                }\n                catch( Exception e )\n                {\n                    _logger.LogError( \"Error when trying to close the serial port: \" + e.Message );\n                }\n                // We restart the thread if there has been some failure when reading from serial port\n                Thread.Sleep( 800 );\n            }\n        }\n\n        private static string[] GetPortNames( )\n        {\n            int p = ( int )Environment.OSVersion.Platform;\n            List<string> serial_ports = new List<string>( );\n\n            // Are we on Unix?\n            if( p == 4 || p == 128 || p == 6 )\n            {\n                string[] ttys = System.IO.Directory.GetFiles( \"/dev/\", \"tty*\" );\n                foreach( string dev in ttys )\n                {\n                    //Arduino MEGAs show up as ttyACM due to their different USB<->RS232 chips\n                    if( dev.StartsWith( \"/dev/ttyS\" ) || dev.StartsWith( \"/dev/ttyUSB\" ) || dev.StartsWith( \"/dev/ttyACM\" ) )\n                    {\n                        serial_ports.Add( dev );\n                    }\n                }\n            }\n            else\n            {\n                serial_ports.AddRange( SerialPort.GetPortNames( ) );\n            }\n\n            return serial_ports.ToArray( );\n        }\n    }\n\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/SerialPort/SerialPortAdapter.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{A7B77408-0DBA-4384-A31A-404187CAEC89}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.Adapters</RootNamespace>\n    <AssemblyName>Microsoft.ConnectTheDots.SerialPortAdapter</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"SerialPortAdapter.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{E14D1C61-1979-452E-BE8B-0303A95EF764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <PropertyGroup>\n    <PostBuildEvent>copy $(TargetPath) $(SolutionDir)Tests\\CoreTest\\$(OutDir)\ncopy $(TargetPath) $(SolutionDir)WindowsEXE\\$(OutDir)</PostBuildEvent>\n  </PropertyGroup>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/Socket/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SocketAdapter\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct( \"SocketAdapter\" )]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"d50c8039-9bcd-41a6-ba1e-24a403574ac9\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/Socket/SocketAdapter.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n\nnamespace Microsoft.ConnectTheDots.Adapters\n{\n    using System;\n    using System.IO;\n    using System.Net;\n    using System.Net.Sockets;\n    using System.Text;\n    using System.Text.RegularExpressions;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n\n    //--//\n\n    public class SocketAdapter : DeviceAdapterAbstract\n    {\n        private const int CONNECTION_RETRIES         = 20000;\n        private const int SLEEP_TIME_BETWEEN_RETRIES = 1000; // 1 sec\n\n        //--//\n\n        private static TcpListener  _serverSocket;\n\n        //--//\n\n        private Func<string, int>   _enqueue;\n        private bool                _doWorkSwitch;\n        private Thread              _listeningThread;\n        private SensorEndpoint      _endpoint;\n\n        //--//\n\n        public SocketAdapter( ILogger logger )\n            : base( logger )\n        {\n        }\n\n        public override bool Start( Func<string, int> enqueue )\n        {\n            _enqueue = enqueue;\n\n            _doWorkSwitch = true;\n\n            //var sh = new SafeAction<int>( ( t ) => RunSocketAsClient( t ), _logger );\n            var sh = new SafeAction( ( ) => RunSocketServer( ), _logger );\n\n            TaskWrapper.Run( ( ) => sh.SafeInvoke( ) );\n\n            return true;\n        }\n\n        public override bool Stop( )\n        {\n            _doWorkSwitch = false;\n            \n            try\n            {\n                _serverSocket.Stop( );\n            }\n            catch( Exception )\n            {\n            }\n\n            return true;\n        }\n\n        public override bool SetEndpoint( SensorEndpoint endpoint = null )\n        {\n            if( endpoint == null )\n            {\n                //we need to know endpoint\n                return false;\n            }\n\n            _endpoint = endpoint;\n\n            return true;\n        }\n\n        \n        private void RunSocketServer( )\n        {\n            try\n            {\n                IPAddress ipAddress;\n                if( !IPAddress.TryParse( _endpoint.Host, out ipAddress ) )\n                    return;\n\n                _serverSocket = new TcpListener( ipAddress, _endpoint.Port );\n                _serverSocket.Start( );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"Exception on creating listener: \" + ex.StackTrace + ex.Message );\n            }\n\n            for( ; _doWorkSwitch; )\n            {\n                try\n                {\n                    TcpClient clientSocket = _serverSocket.AcceptTcpClient( );\n                    TaskWrapper.Run( ( ) => ProcessClient( clientSocket ) );\n                }\n                catch ( Exception ex )\n                {\n                    _logger.LogError( \"Exception on trying to accept connection: \" + ex.StackTrace );\n                }\n            }\n        }\n\n        private void ProcessClient( TcpClient clientSocket )\n        {\n            try\n            {\n                StringBuilder jsonBuilder = new StringBuilder( );\n                Regex dataExtractor = new Regex( \"<([\\\\w\\\\s\\\\d:\\\",-{}.][^<>]+)>\" );\n                NetworkStream networkStream = clientSocket.GetStream( );\n\n                //ReceiveBufferSize could change during execution\n                int receiveBufferSize = clientSocket.ReceiveBufferSize;\n\n                byte[ ] buffer = new byte[ receiveBufferSize + 1 ];\n                string data = string.Empty;\n\n                for( ;; )\n                {\n                    int partSize = networkStream.Read( buffer, 0, receiveBufferSize );\n                    string dataPart = Encoding.ASCII.GetString( buffer, 0, partSize );\n                    data += dataPart;\n\n                    // Read string from buffer\n                    if( data.Length > 0 )\n                    {\n                        // Parse string into angle bracket surrounded JSON strings\n                        var matches = dataExtractor.Matches( data );\n                        \n                        if( matches.Count >= 1 )\n                        {\n                            foreach( Match m in matches )\n                            {\n                                jsonBuilder.Clear( );\n                                jsonBuilder.Append( m.Captures[0].Value.Trim( ).Substring( 1, m.Captures[ 0 ].Value.Trim( ).Length - 2 ) );\n\n                                string jsonString = jsonBuilder.ToString( );\n                                _enqueue(jsonString);\n                            }\n                            //remove matched substrings from buffer\n                            data = dataExtractor.Replace( data, \"\" );\n                        }\n                    }\n                }\n            }\n            catch( StackOverflowException ex )\n            {\n                _logger.LogError( \"Stack Overflow while processing data from socket: \" + ex.StackTrace );\n\n                throw;\n            }\n            catch( OutOfMemoryException ex )\n            {\n                _logger.LogError( \"Out of memory while processing data from socket: \" + ex.StackTrace );\n\n                throw;\n            }\n            catch( SocketException ex )\n            {\n                _logger.LogError( \"Socket exception processing data from socket: \" + ex.StackTrace + ex.Message );\n                _logger.LogError( \"Continuing...\" );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( ex.ToString( ) );\n            }\n        }\n\n        private int RunSocketAsClient( int retries )\n        {\n            int step = retries;\n\n            while( --step > 0 && _doWorkSwitch )\n            {\n                try\n                {\n#if DEBUG_LOG\n                    _logger.LogInfo( \"Try connecting to device - step: \" + ( CONNECTION_RETRIES - step ) );\n#endif\n                    Socket client = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Unspecified );\n\n                    client.Connect( _endpoint.Host, _endpoint.Port );\n\n                    if( client.Connected )\n                    {\n#if DEBUG_LOG\n                        _logger.LogInfo( string.Format( \"Socket connected to {0}\", client.RemoteEndPoint.ToString() ) );\n#endif\n                        _listeningThread = new Thread( ( ) => SensorDataClient( client ) );\n                        _listeningThread.Start( );\n\n                        _listeningThread.Join( );\n\n                        //reset number of retries to connect\n                        step = retries;\n                    }\n                }\n                catch( Exception ex )\n                {\n                    _logger.LogError( \"Exception when opening socket:\" + ex.StackTrace );\n                    _logger.LogError( \"Will retry in 1 second\" );\n                }\n\n                // wait and try again\n                Thread.Sleep( SLEEP_TIME_BETWEEN_RETRIES );\n            }\n\n            return 0;\n        }\n\n        private void SensorDataClient( Socket client )\n        {\n            try\n            {\n                StringBuilder jsonBuilder = new StringBuilder( );\n                byte[] buffer = new Byte[ 1024 ];\n                // Use Regular Expressions (Regex) to parse incoming data, which may contain multiple JSON strings \n                // USBSPLSOCKET.PY uses \"<\" and \">\" to terminate JSON string at each end, so built Regex to find strings surrounded by angle brackets\n                // You can test Regex extractor against a known string using a variety of online tools, such as http://regexhero.net/tester/ for C#.\n                //Regex dataExtractor = new Regex(@\"<(\\d+.?\\d*)>\");\n                Regex dataExtractor = new Regex( \"<([\\\\w\\\\s\\\\d:\\\",-{}.]+)>\" );\n\n                while( _doWorkSwitch )\n                {\n                    try\n                    {\n                        if( !client.Connected )\n                        {\n                            client.Close( );\n                            break;\n                        }\n                        int bytesRec = client.Receive( buffer );\n                        int matchCount = 1;\n                        // Read string from buffer\n                        string data = Encoding.ASCII.GetString( buffer, 0, bytesRec );\n                        //logger.Info(\"Read string: \" + data);\n                        if( data.Length > 0 )\n                        {\n                            // Parse string into angle bracket surrounded JSON strings\n                            var matches = dataExtractor.Matches( data );\n                            if( matches.Count >= 1 )\n                            {\n                                foreach( Match m in matches )\n                                {\n                                    jsonBuilder.Clear( );\n                                    // Remove angle brackets\n                                    //jsonBuilder.Append(\"{\\\"dspl\\\":\\\"Wensn Digital Sound Level Meter\\\",\\\"Subject\\\":\\\"sound\\\",\\\"DeviceGUID\\\":\\\"81E79059-A393-4797-8A7E-526C3EF9D64B\\\",\\\"decibels\\\":\");\n                                    jsonBuilder.Append( m.Captures[ 0 ].Value.Trim( ).Substring( 1, m.Captures[ 0 ].Value.Trim( ).Length - 2 ) );\n                                    //jsonBuilder.Append(\"}\");\n                                    string jsonString = jsonBuilder.ToString( );\n                                    //logger.Info(\"About to send message with JSON string: \" + jsonString);\n                                    _enqueue( jsonString );\n\n                                    matchCount++;\n                                }\n                            }\n                        }\n                    }\n                    catch( Exception ex )\n                    {\n                        _logger.LogError( \"Exception processing data from socket: \" + ex.StackTrace );\n                        _logger.LogError( \"Continuing...\" );\n                    }\n                }\n            }\n            catch( StackOverflowException ex )\n            {\n                _logger.LogError( \"Stack Overflow while processing data from socket: \" + ex.StackTrace );\n                _logger.LogError( \"Closing program...\" );\n\n                throw;\n            }\n            catch( OutOfMemoryException ex )\n            {\n                _logger.LogError( \"Stack Overflow while processing data from socket: \" + ex.StackTrace );\n                _logger.LogError( \"Closing program...\" );\n\n                throw;\n            }\n            catch( SocketException ex )\n            {\n                _logger.LogError( \"Socket exception processing data from socket: \" + ex.StackTrace + ex.Message );\n                _logger.LogError( \"Continuing...\" );\n\n                // Dinar: this will raise every time when sensor stopped connection\n                // wont throw to not stop service\n                //throw;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/DeviceAdapters/Socket/SocketAdapter.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.Adapters</RootNamespace>\n    <AssemblyName>Microsoft.ConnectTheDots.SocketAdapter</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"SocketAdapter.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{e14d1c61-1979-452e-be8b-0303a95ef764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <PropertyGroup>\n    <PostBuildEvent>copy $(TargetPath) $(SolutionDir)Tests\\CoreTest\\$(OutDir)\ncopy $(TargetPath) $(SolutionDir)WindowsEXE\\$(OutDir)</PostBuildEvent>\n  </PropertyGroup>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Adapter/DeviceAdapter.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public delegate void DataArrivalEventHandler( string data );\n\n    public abstract class DeviceAdapterAbstract : IDeviceAdapter\n    {\n        protected ILogger _logger;\n\n        //--//\n\n        protected DeviceAdapterAbstract( ILogger logger )\n        {\n            _logger = SafeLogger.FromLogger( logger );\n        }\n\n        public abstract bool Start( Func<string, int> enqueue );\n\n        public abstract bool Stop( );\n\n        public abstract bool SetEndpoint( SensorEndpoint endpoint = null );\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Adapter/IDeviceAdapter.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public interface IDeviceAdapter\n    {\n        bool Start( Func<string, int> enqueue );\n\n        bool Stop( );\n\n        //leave endpoint null for Data Intakes that don't expect any endpoints\n        bool SetEndpoint( SensorEndpoint endpoint = null );\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup>\n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5.2\"/>\n    </startup>\n</configuration>\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Constants.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    public static class Constants\n    {\n        public const string WindowsServiceName = \"GatewayService\";\n\n        public static class ResponseStatusCodes\n        {\n            public const int EnqueueSuccessStatusCode = 0;\n            public const int EnqueueFailStatusCode = 1;\n        }\n\n        public const int ConcurrentConnections = 4;\n        public const int MessagesLoggingThreshold = 10000;\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/DeviceAdapter/DeviceAdapter.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public delegate void DataArrivalEventHandler( string data );\n\n    public abstract class DeviceAdapterAbstract : IDeviceAdapter\n    {\n        protected ILogger _logger;\n\n        //--//\n\n        protected DeviceAdapterAbstract( ILogger logger )\n        {\n            _logger = SafeLogger.FromLogger( logger );\n        }\n\n        public abstract bool Start( Func<string, int> enqueue );\n\n        public abstract bool Stop( );\n\n        public abstract bool SetEndpoint( SensorEndpoint endpoint = null );\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/DeviceAdapter/IDeviceAdapter.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n\n    //--//\n\n    public interface IDeviceAdapter\n    {\n        bool Start( Func<string, int> enqueue );\n\n        bool Stop( );\n\n        //leave endpoint null for Data Intakes that don't expect any endpoints\n        bool SetEndpoint( SensorEndpoint endpoint = null );\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/DeviceAdapter/SensorEndpoint.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n\n    //--//\n\n    public class SensorEndpoint\n    {\n        public string Name { get; set; }\n\n        public string Host { get; set; }\n\n        public int Port { get; set; }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/EventProcessor.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System.Collections.Generic;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public abstract class EventProcessor\n    {\n        protected readonly ILogger _logger;\n\n        //--//\n\n        protected EventProcessor( ILogger logger )\n        {\n            _logger = logger;\n        }\n\n        public delegate void EventBatchProcessedEventHandler( List<TaskWrapper> messages );\n\n        public abstract bool Start( );\n\n        public abstract bool Stop( int timeout );\n\n        public abstract void Process( );\n\n        protected ILogger Logger \n        {\n            get\n            {\n                return _logger;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/GatewayService.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n//#define DEBUG_LOG \n\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public class GatewayService : IGatewayService\n    {\n        public delegate void DataInQueueEventHandler( QueuedItem data );\n\n        //--//\n\n        private readonly IAsyncQueue<QueuedItem>    _queue;\n        private readonly EventProcessor             _eventProcessor;\n        private readonly Func<string, QueuedItem>   _dataTransform;\n\n        //--//\n\n        public GatewayService( IAsyncQueue<QueuedItem> queue, EventProcessor processor, Func<string, QueuedItem> dataTransform = null )\n        {\n            if( queue == null || processor == null )\n            {\n                throw new ArgumentException( \"task queue and event processor cannot be null\" );\n            }\n\n            if( dataTransform != null )\n            {\n                _dataTransform = dataTransform;\n            }\n            else\n            {\n                _dataTransform = m => new QueuedItem\n                    {\n                        JsonData = m\n                    };\n            }\n\n            _queue = queue;\n            _eventProcessor = processor;\n        }\n\n        public ILogger Logger { get; set; }\n\n        public int Enqueue( string jsonData )\n        {\n            if( jsonData != null )//not filling a queue by empty items\n            {\n                QueuedItem sensorData = _dataTransform( jsonData );\n\n                if( sensorData != null )\n                {\n                    //TODO: we can check status of BatchSender and indicate error on request if needed\n                    _queue.Push( sensorData );\n\n                    DataInQueue( sensorData );\n                }\n            }\n\n            return _queue.Count;\n        }\n\n        public event DataInQueueEventHandler OnDataInQueue;\n\n        protected virtual void DataInQueue( QueuedItem data )\n        {\n            DataInQueueEventHandler newData = OnDataInQueue;\n\n            if( newData != null )\n            {\n                var sh = new SafeAction<QueuedItem>( d => newData( d ), Logger );\n\n                TaskWrapper.Run( ( ) => sh.SafeInvoke( data ) );\n            }\n\n            //\n            // NO logging on production code, enable for diagnostic purposes for debugging \n            //\n#if DEBUG_LOG\n            LogMessageReceived( );\n#endif\n        }\n\n#if DEBUG_LOG\n        int _receivedMessages = 0;\n        DateTime _start;\n        private void LogMessageReceived( )\n        {\n            int sent = Interlocked.Increment( ref _receivedMessages );\n\n            if( sent == 1 )\n            {\n                _start = DateTime.Now;\n            }\n\n            if( Interlocked.CompareExchange( ref _receivedMessages, 0, Constants.MessagesLoggingThreshold ) == Constants.MessagesLoggingThreshold )\n            {\n                DateTime now = DateTime.Now;\n\n                TimeSpan elapsed = ( now - _start );\n\n                _start = now;\n\n                var sh = new SafeAction<String>( s => Logger.LogInfo( s ), Logger );\n\n                TaskWrapper.Run( ( ) => sh.SafeInvoke(\n                    String.Format( \"GatewayService received {0} events succesfully in {1} ms \", Constants.MessagesLoggingThreshold, elapsed.TotalMilliseconds.ToString( ) ) ) );\n            }\n        }\n#endif\n    }\n}"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/GatewayService.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{38A27FC0-2864-49A8-BDA3-D7E22D276B29}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>GatewayService</RootNamespace>\n    <AssemblyName>GatewayService</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Amqp.Net, Version=0.1.0.0, Culture=neutral, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>Amqp.Net\\Amqp.Net.dll</HintPath>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Configuration.Install\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.ServiceModel.Web\" />\n    <Reference Include=\"System.ServiceProcess\" />\n    <Reference Include=\"System.Web.Services\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"IEventProcessor.cs\" />\n    <Compile Include=\"Models\\EnqueueResultContract.cs\" />\n    <Compile Include=\"ServiceInstantiation\\IService.cs\" />\n    <Compile Include=\"ServiceInstantiation\\ServiceBehavior.cs\" />\n    <Compile Include=\"ServiceInstantiation\\ServiceInstanceProvider.cs\" />\n    <Compile Include=\"Utils\\Logger\\EventLogger.cs\" />\n    <Compile Include=\"Utils\\Logger\\ILogger.cs\" />\n    <Compile Include=\"Utils\\MessageSender\\AMQPSender.cs\" />\n    <Compile Include=\"Constants.cs\" />\n    <Compile Include=\"Utils\\MessageSender\\IMessageSender.cs\" />\n    <Compile Include=\"Utils\\Queue\\BatchSenderThread.cs\" />\n    <Compile Include=\"Utils\\OperationStatus\\ErrorCode.cs\" />\n    <Compile Include=\"Utils\\OperationStatus\\OperationStatus.cs\" />\n    <Compile Include=\"Utils\\OperationStatus\\OperationStatusFactory.cs\" />\n    <Compile Include=\"Utils\\Queue\\GatewayQueue.cs\" />\n    <Compile Include=\"GatewayService.cs\" />\n    <Compile Include=\"WindowsService.cs\">\n      <SubType>Component</SubType>\n    </Compile>\n    <Compile Include=\"Utils\\Queue\\IAsyncQueue.cs\" />\n    <Compile Include=\"IGatewayService.cs\" />\n    <Compile Include=\"Models\\SensorDataContract.cs\" />\n    <Compile Include=\"ProjectInstaller.cs\">\n      <SubType>Component</SubType>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/IGatewayService.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System.ServiceModel;\n    using System.ServiceModel.Web;\n\n    //--//\n\n    [ServiceContract( Namespace = \"GatewayService\" )]\n    public interface IGatewayService : IService\n    {\n        [WebGet( )]\n        [OperationContract]\n        int Enqueue( string jsonData );\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Microsoft.ConnectTheDots.Gateway.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{E14D1C61-1979-452E-BE8B-0303A95EF764}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.Gateway</RootNamespace>\n    <AssemblyName>Microsoft.ConnectTheDots.Gateway</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup>\n    <StartupObject />\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Devices.Client.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.Devices.Client.PCL.1.0.5\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Client.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Mono.Security.3.2.3.0\\lib\\net45\\Mono.Security.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <SpecificVersion>False</SpecificVersion>\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PCLCrypto.1.0.86\\lib\\net40-Client\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Configuration.Install\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.ServiceModel.Web\" />\n    <Reference Include=\"System.ServiceProcess\" />\n    <Reference Include=\"System.Web.Services\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"Validation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Validation.2.0.6.15003\\lib\\portable-net40+sl50+win+wpa81+wp80+Xamarin.iOS10+MonoAndroid10+MonoTouch10\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Constants.cs\" />\n    <Compile Include=\"Adapter\\DeviceAdapter.cs\" />\n    <Compile Include=\"GatewayService.cs\" />\n    <Compile Include=\"EventProcessor.cs\" />\n    <Compile Include=\"Adapter\\IDeviceAdapter.cs\" />\n    <Compile Include=\"IGatewayService.cs\" />\n    <Compile Include=\"Models\\QueuedItem.cs\" />\n    <Compile Include=\"Models\\SensorDataContract.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"ServiceInstantiation\\IService.cs\" />\n    <Compile Include=\"ServiceInstantiation\\ServiceBehavior.cs\" />\n    <Compile Include=\"ServiceInstantiation\\ServiceInstanceProvider.cs\" />\n    <Compile Include=\"Utils\\Loader\\DataIntakeLoader.cs\" />\n    <Compile Include=\"Utils\\MessageSender\\MessageSender.cs\" />\n    <Compile Include=\"Utils\\MessageSender\\IMessageSender.cs\" />\n    <Compile Include=\"Utils\\OperationStatus\\ErrorCode.cs\" />\n    <Compile Include=\"Utils\\OperationStatus\\OperationStatus.cs\" />\n    <Compile Include=\"Utils\\OperationStatus\\OperationStatusFactory.cs\" />\n    <Compile Include=\"Utils\\Queue\\BatchSenderThread.cs\" />\n    <Compile Include=\"Utils\\Queue\\GatewayQueue.cs\" />\n    <Compile Include=\"Utils\\Queue\\IAsyncQueue.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup />\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Models/QueuedItem.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.Runtime.Serialization;\n    using Newtonsoft.Json;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    [DataContract]\n    public class QueuedItem\n    {\n        [DataMember( Name = \"serializedData\" )]\n        public string JsonData { get; set; }\n    }\n\n    public static class DataTransforms\n    {\n        public static QueuedItem QueuedItemFromSensorDataContract( SensorDataContract sensorData, ILogger logger = null )\n        {\n            if( sensorData == null )\n            {\n                return null;\n            }\n\n            QueuedItem result = null;\n            try\n            {\n                result = new QueuedItem\n                {\n                    JsonData = JsonConvert.SerializeObject( sensorData )\n                };\n            }\n            catch( Exception ex )\n            {\n                if( logger != null )\n                {\n                    logger.LogError( \"Error on serialize item: \" + ex.Message );\n                }\n            }\n\n            return result;\n        }\n        public static SensorDataContract SensorDataContractFromString( string data, ILogger logger = null )\n        {\n            SensorDataContract result;\n            try\n            {\n                result =\n                    JsonConvert.DeserializeObject<SensorDataContract>( data );\n            }\n            catch( Exception ex )\n            {\n                result = null;\n                //TODO: maybe better to add some metrics instead\n                if( logger != null )\n                {\n                    logger.LogError( \"Error on deserialize item: \" + ex.Message );\n                }\n            }\n\n            return result;\n        }\n        public static SensorDataContract SensorDataContractFromQueuedItem( QueuedItem data, ILogger logger = null )\n        {\n            if( data == null )\n            {\n                return null;\n            }\n\n            SensorDataContract result = SensorDataContractFromString( data.JsonData );\n            return result;\n        }\n\n        public static SensorDataContract AddTimeCreated( SensorDataContract data )\n        {\n            if( data == null )\n            {\n                return null;\n            }\n\n            SensorDataContract result = data;\n            if( result.TimeCreated == default( DateTime ) )\n            {\n                var creationTime = DateTime.UtcNow;\n                result.TimeCreated = creationTime;\n            }\n\n            return result;\n        }\n\n        public static SensorDataContract AddIPToLocation( SensorDataContract data, string gatewayIPAddressString )\n        {\n            if( data == null )\n            {\n                return null;\n            }\n\n            SensorDataContract result = data;\n            if( result.Location == null )\n            {\n                result.Location = \"Unknown\" + '\\n';\n            }\n            else\n            {\n                result.Location = result.Location + '\\n';\n            }\n\n            if( gatewayIPAddressString != null )\n            {\n                result.Location += gatewayIPAddressString;\n            }\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Models/SensorDataContract.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.Runtime.Serialization;\n\n    //--//\n\n    [DataContract]\n    public class SensorDataContract\n    {\n        [DataMember( Name = \"value\" )]\n        public double Value { get; set; }\n\n        [DataMember( Name = \"guid\" )]\n        public string Guid { get; set; }\n\n        [DataMember( Name = \"organization\" )]\n        public string Organization { get; set; }\n\n        [DataMember( Name = \"displayname\" )]\n        public string DisplayName { get; set; }\n\n        [DataMember( Name = \"unitofmeasure\" )]\n        public string UnitOfMeasure { get; set; }\n\n        [DataMember( Name = \"measurename\" )]\n        public string MeasureName { get; set; }\n\n        [DataMember( Name = \"location\" )]\n        public string Location { get; set; }\n\n        [DataMember( Name = \"timecreated\" )]\n        public DateTime TimeCreated { get; set; }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Gateway\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"Gateway\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"48ea7c1b-a4df-4493-8daf-07bb55dbaacd\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/ServiceInstantiation/IService.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    public interface IService\n    {\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/ServiceInstantiation/ServiceBehavior.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.Collections.ObjectModel;\n    using System.ServiceModel;\n    using System.ServiceModel.Channels;\n    using System.ServiceModel.Description;\n    using System.ServiceModel.Dispatcher;\n\n    //--//\n\n    public class ServiceBehavior : IServiceBehavior\n    {\n        private readonly Func<IService> _serviceCreator;\n\n        //--//\n\n        public ServiceBehavior( Func<IService> serviceCreator )\n        {\n            this._serviceCreator = serviceCreator;\n        }\n\n        public void AddBindingParameters( ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters )\n        {\n        }\n\n        public void ApplyDispatchBehavior( ServiceDescription serviceDescription, ServiceHostBase serviceHostBase )\n        {\n            foreach( ChannelDispatcher cd in serviceHostBase.ChannelDispatchers )\n            {\n                foreach( EndpointDispatcher ed in cd.Endpoints )\n                {\n                    ed.DispatchRuntime.InstanceProvider = new ServiceInstanceProvider( this._serviceCreator );\n                }\n            }\n        }\n\n        public void Validate( ServiceDescription serviceDescription, ServiceHostBase serviceHostBase )\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/ServiceInstantiation/ServiceInstanceProvider.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.ServiceModel;\n    using System.ServiceModel.Channels;\n    using System.ServiceModel.Dispatcher;\n\n    //--//\n\n    class ServiceInstanceProvider : IInstanceProvider\n    {\n        private readonly Func<IService> _serviceCreator;\n\n        //--//\n\n        public ServiceInstanceProvider( Func<IService> serviceCreator )\n        {\n            this._serviceCreator = serviceCreator;\n        }\n\n        public object GetInstance( InstanceContext instanceContext, Message message )\n        {\n            return _serviceCreator( );\n        }\n\n        public object GetInstance( InstanceContext instanceContext )\n        {\n            return _serviceCreator( );\n        }\n\n        public void ReleaseInstance( InstanceContext instanceContext, object instance )\n        {\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/Loader/DataIntakeLoader.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n//#define DEBUG_LOG\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Diagnostics;\n    using System.IO;\n    using System.Linq;\n    using System.Reflection;\n    \n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public class DeviceAdapterLoader\n    {\n        private static HashSet<SensorEndpoint> _SensorEndpoints = new HashSet<SensorEndpoint>( );\n\n        //--//\n\n        private readonly IList<DeviceAdapterAbstract> _dataIntakes;\n        private readonly ILogger                   _logger;\n\n        //--//\n\n        protected Func<string, int> OnDataToEnqueue;\n\n        //--//\n\n        public DeviceAdapterLoader( IList<String> sources, IList<SensorEndpoint> endpoints, ILogger logger )\n        {\n            _logger = SafeLogger.FromLogger( logger );\n\n#if DEBUG_LOG\n            _logger.LogInfo( \"Starting loading Data Intakes\" );\n#endif\n\n            _dataIntakes = new List<DeviceAdapterAbstract>( );\n\n\n            if( endpoints != null )\n            {\n                foreach( SensorEndpoint endpoint in endpoints )\n                {\n                    _SensorEndpoints.Add( endpoint );\n                }\n            }\n\n#if DEBUG_LOG\n            else\n            {\n                _logger.LogInfo( \"No list of SensorEndpoints in configuration file, continuing...\" );\n            }\n#endif\n\n            //\n            // enumerate all types with a IDeviceAdapter interface look in the current directory, in the \n            // running assembly directory and in the entry and executing assembly\n            //\n            var directories = new List<String>( );\n            directories.Add( Directory.GetCurrentDirectory( ) );\n            var di1 = Path.GetDirectoryName( Assembly.GetEntryAssembly( ).Location );\n            var di2 = Path.GetDirectoryName( Assembly.GetCallingAssembly( ).Location );\n            var di3 = Path.GetDirectoryName( Assembly.GetExecutingAssembly( ).Location );\n\n            // do not duplicate search paths \n            if( !directories.Contains( di1 ) )\n            {\n                directories.Add( di1 );\n            }\n            if( !directories.Contains( di2 ) )\n            {\n                directories.Add( di2 );\n            }\n            if( !directories.Contains( di3 ) )\n            {\n                directories.Add( di3 );\n            }\n\n            //for each filename will store a flag - whether it was specified at config or not\n            Dictionary<String, bool> sourcesToLoad = new Dictionary<string, bool>( );\n            if( sources != null && sources.Any( ) )\n            {\n                foreach( var filename in sources )\n                {\n                    sourcesToLoad.Add( filename, true );\n                }\n            }\n            else\n            {\n#if DEBUG_LOG\n                _logger.LogInfo( \"No list of DeviceAdapters in configuration file, continuing...\" );\n#endif\n                foreach( string directory in directories )\n                {\n                    //Dinar: dont want to try all windows/system32 directory for now\n                    if( !directory.ToLowerInvariant( ).Contains( \"system32\" ) )\n                    {\n                        foreach( string filename in Directory.GetFiles( directory ) )\n                        {\n                            //false flag - file was not specified at config\n                            sourcesToLoad.Add( filename, false );\n                        }\n                    }\n                }\n            }\n\n            // try and load assemblies from path \n            var nameTypeDict = new Dictionary<string, Type>( );\n            string notLoadedSpecifiedSources = \"\";\n            string notLoadedNotSpecifiedSources = \"\";\n\n            foreach( KeyValuePair<string, bool> source in sourcesToLoad )\n            {\n                string fileName = source.Key;\n                try\n                {\n                    Assembly assm = null;\n                    // try path from config first\n                    if( File.Exists( fileName ) )\n                    {\n                        assm = Assembly.LoadFrom( fileName );\n\n                        // remember this directory as a potential source\n                        var lastDir = Path.GetDirectoryName( fileName );\n                        if( !directories.Contains( lastDir ) )\n                        {\n                            directories.Add( lastDir );\n                        }\n                    }\n                    else\n                    {\n                        // try the other directories\n                        foreach( var d in directories )\n                        {\n                            var assmName = Path.GetFileName( fileName );\n\n                            // try again\n                            string assmPath = Path.Combine( d, assmName );\n                            if( File.Exists( assmPath ) )\n                            {\n                                assm = Assembly.LoadFrom( assmPath );\n                            }\n                        }\n\n                        if( assm == null )\n                        {\n                            // Log that we did not load our data sources correctly\n                            if( source.Value )\n                            {\n                                notLoadedSpecifiedSources += fileName;\n                            }\n                            else\n                            {\n                                notLoadedNotSpecifiedSources += fileName;\n                            }\n                            notLoadedSpecifiedSources += \"; \";\n                            continue;\n                        }\n                    }\n\n                    Debug.Assert( assm != null );\n\n                    foreach( Type t in assm.GetExportedTypes( ) )\n                    {\n                        //Get all classes that implement the required interface\n                        if( t.GetInterface( \"IDeviceAdapter\", false ) != null )\n                        {\n#if DEBUG_LOG\n                            _logger.LogInfo( \"IDeviceAdapter assembly loaded: \" + t.Name );\n#endif\n\n                            nameTypeDict.Add( t.Name, t ); //Add to Dictonary\n                        }\n                    }\n                }\n                catch( Exception )\n                {\n                    //dont want to stop loading another modules if one fails\n                    if( source.Value )\n                    {\n                        notLoadedSpecifiedSources += fileName;\n                    }\n                    else\n                    {\n                        notLoadedNotSpecifiedSources += fileName;\n                    }\n                    notLoadedNotSpecifiedSources += \"; \";\n                }\n            }\n\n            if( notLoadedSpecifiedSources.Length > 0 )\n            {\n                _logger.LogError( String.Format( \"Following Data Intakes were specificied, but could not be loaded: {0}\", notLoadedSpecifiedSources ) );\n            }\n            if( notLoadedNotSpecifiedSources.Length > 0 )\n            {\n                _logger.LogError( String.Format( \"Following files are not specificied, and could not be loaded as Data Intakes: {0}\", notLoadedNotSpecifiedSources ) );\n            }\n\n            foreach( KeyValuePair<string, Type> t in nameTypeDict )\n            {\n                try\n                {\n                    DeviceAdapterAbstract di = ( DeviceAdapterAbstract )Activator.CreateInstance( t.Value, new object[] { _logger } );\n\n                    if( di != null )\n                    {\n#if DEBUG_LOG\n                        _logger.LogInfo( \"IDeviceAdapter instance created: \" + t.Key );\n#endif\n\n                        //adding instance without endpoint if acceptable\n                        if( di.SetEndpoint( ) )\n                        {\n                            _dataIntakes.Add( di );\n                        }\n\n                        foreach( SensorEndpoint sensorEndpoint in _SensorEndpoints )\n                        {\n                            DeviceAdapterAbstract diWithEndpoint = ( DeviceAdapterAbstract )Activator.CreateInstance( t.Value, new object[] { _logger } );\n                            if( diWithEndpoint.SetEndpoint( sensorEndpoint ) )\n                            {\n                                _dataIntakes.Add( diWithEndpoint );\n                            }\n                        }\n                    }\n                }\n                catch( Exception ex )\n                {\n                    // dont want to stop creating another instances if one fails\n                    _logger.LogError( String.Format( \"Exception on Creating DeviceAdapter Instance \\\"{0}\\\": {1}\", t.Key, ex.Message ) );\n                }\n            }\n        }\n\n        public IList<IDeviceAdapter> Intakes\n        {\n            get\n            {\n                return ( IList<IDeviceAdapter> )_dataIntakes;\n            }\n        }\n\n        public void StartAll( Func<string, int> enqueue, DataArrivalEventHandler onDataArrival = null )\n        {\n            foreach( DeviceAdapterAbstract dataIntake in _dataIntakes )\n            {\n                try\n                {\n                    if( onDataArrival != null )\n                    {\n                        OnDataToEnqueue =\n                            data =>\n                            {\n                                onDataArrival( data );\n\n                                return enqueue( data );\n                            };\n                    }\n                    else\n                    {\n                        OnDataToEnqueue = enqueue;\n                    }\n\n                    dataIntake.Start( OnDataToEnqueue );\n                }\n                catch( Exception ex )\n                {\n                    _logger.LogError( \"Exception on Starting DeviceAdapter: \" + ex.StackTrace );\n\n                    // catch all other exceptions\n                }\n            }\n        }\n\n        public void StopAll( )\n        {\n            foreach( DeviceAdapterAbstract dataIntake in _dataIntakes )\n            {\n                try\n                {\n                    dataIntake.Stop( );\n                }\n                catch( Exception ex )\n                {\n                    _logger.LogError( ex.StackTrace );\n\n                    // catch all exceptions\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/MessageSender/IMessageSender.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public interface IMessageSender<in T>\n    {\n        TaskWrapper SendMessage( T data );\n        TaskWrapper SendSerialized( string jsonData );\n\n        void Close( );\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/MessageSender/MessageSender.cs",
    "content": "//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n//#define DEBUG_LOG\n\n\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.Text;\n    using Newtonsoft.Json;\n    using Common;\n    using Common.Threading;\n    using Microsoft.Azure.Devices.Client;\n\n    //--//\n\n    public class MessageSender<T> : IMessageSender<T>\n    {\n        private DeviceClient deviceClient;\n\n        private static readonly string _logMesagePrefix = \"MessageSender error. \";\n\n        //--//\n\n        private readonly string         _defaultSubject;\n        private readonly string         _defaultDeviceId;\n        private readonly string         _defaultDeviceDisplayName;\n\n        public ILogger Logger\n        {\n            private get;\n            set;\n        }\n\n        public MessageSender( string gatewayIotHubConnectionString, ILogger logger )\n        {\n            Logger = SafeLogger.FromLogger( logger );\n\n#if DEBUG_LOG\n            Logger.LogInfo( \"Connecting to IotHub\" );\n#endif\n            deviceClient = DeviceClient.CreateFromConnectionString(gatewayIotHubConnectionString);\n            deviceClient.OpenAsync();\n        }\n\n        public TaskWrapper SendMessage( T data )\n        {\n            TaskWrapper result = null;\n\n            try\n            {\n                if( data == null )\n                {\n                    return default( TaskWrapper );\n                }\n\n                string jsonData = JsonConvert.SerializeObject( data );\n\n                result = PrepareAndSend( jsonData );\n            }\n            catch( Exception ex )\n            {\n                Logger.LogError( _logMesagePrefix + ex.Message );\n            }\n\n            return result;\n        }\n\n        public TaskWrapper SendSerialized( string jsonData )\n        {\n            TaskWrapper result = null;\n\n            try\n            {\n                if( String.IsNullOrEmpty( jsonData ) )\n                {\n                    return default( TaskWrapper );\n                }\n\n                result = PrepareAndSend( jsonData );\n            }\n            catch( Exception ex )\n            {\n                Logger.LogError( _logMesagePrefix + ex.Message );\n            }\n\n            return result;\n        }\n\n        public void Close()\n        {\n            deviceClient = null;\n        }\n\n        private TaskWrapper PrepareAndSend( string jsonData )\n        {\n            var msg = PrepareMessage( jsonData );\n\n            var sh = new SafeAction<Message>( m => deviceClient.SendEventAsync(msg), Logger );\n\n            return TaskWrapper.Run( ( ) => sh.SafeInvoke( msg ) );\n        }\n        \n        protected Message PrepareMessage( string serializedData, string subject = default(string), string deviceId = default(string), string deviceDisplayName = default(string) )\n        {\n            if( subject == default( string ) )\n                subject = _defaultSubject;\n\n            if( deviceId == default( string ) )\n                deviceId = _defaultDeviceId;\n\n            if( deviceDisplayName == default( string ) )\n                deviceDisplayName = _defaultDeviceDisplayName;\n\n            var creationTime = DateTime.UtcNow;\n\n            Message message = null;\n\n\n            if( !String.IsNullOrEmpty( serializedData ) )\n            {\n                message = new Message(Encoding.UTF8.GetBytes(serializedData));\n                message.Properties.Add(\"Subject\", subject);\n                message.Properties.Add(\"CreationTime\", JsonConvert.SerializeObject(creationTime));\n            }\n\n            return message;\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/OperationStatus/ErrorCode.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    public enum ErrorCode\n    {\n        Success         = 0,\n        Fail            = 1,\n        InternalError   = 2,\n        NoDataReceived  = 200,\n    }\n}"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/OperationStatus/OperationStatus.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System.Diagnostics;\n\n    //--//\n\n    [DebuggerDisplay( \"OperationCode = {OperationCode}\" )]\n    public sealed class OperationStatus\n    {\n        internal OperationStatus( ) { }\n\n        public ErrorCode OperationCode { get; set; }\n\n        public string ErrorMessage { get; set; }\n\n        public bool IsSuccess\n        {\n            get { return OperationCode == ErrorCode.Success; }\n        }\n    }\n\n    [DebuggerDisplay( \"OperationCode = {OperationCode}, Result = {Result}\" )]\n    public sealed class OperationStatus<T>\n    {\n        internal OperationStatus( ) { }\n\n        public T Result { get; set; }\n\n        public ErrorCode OperationCode { get; set; }\n\n        public string ErrorMessage { get; set; }\n\n        public bool IsSuccess\n        {\n            get { return OperationCode == ErrorCode.Success; }\n        }\n    }\n}"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/OperationStatus/OperationStatusFactory.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n\n    //--//\n\n    public static class OperationStatusFactory\n    {\n        private static readonly OperationStatus _successConst = new OperationStatus { OperationCode = ErrorCode.Success };\n\n        //--//\n\n        public static OperationStatus CreateSuccess( )\n        {\n            return _successConst;\n        }\n\n        public static OperationStatus<T> CreateSuccess<T>( T result )\n        {\n            return new OperationStatus<T> { OperationCode = ErrorCode.Success, Result = result };\n        }\n\n        public static OperationStatus CreateError( ErrorCode errorCode )\n        {\n            return new OperationStatus { OperationCode = errorCode };\n        }\n        \n        public static OperationStatus CreateError( ErrorCode errorCode, string errorMessage )\n        {\n            return new OperationStatus { OperationCode = errorCode, ErrorMessage = errorMessage };\n        }\n\n        public static OperationStatus CreateError( ErrorCode errorCode, Exception exception )\n        {\n            return new OperationStatus { OperationCode = errorCode, ErrorMessage = exception.Message + exception.StackTrace };\n        }\n\n        public static OperationStatus<T> CreateError<T>( ErrorCode errorCode )\n        {\n            return new OperationStatus<T> { OperationCode = errorCode, Result = default( T ) };\n        }\n\n        public static OperationStatus<T> CreateError<T>( ErrorCode errorCode, Exception exception )\n        {\n            return new OperationStatus<T> { OperationCode = errorCode, ErrorMessage = exception.Message + exception.StackTrace, Result = default( T ) };\n        }\n\n        public static OperationStatus<T> CreateError<T>( ErrorCode errorCode, string errorMessage, T result = default (T) )\n        {\n            return new OperationStatus<T> { OperationCode = errorCode, ErrorMessage = errorMessage, Result = result };\n        }\n\n        public static OperationStatus<T> CreateError<T>( ErrorCode errorCode, string errorMessage, Exception exception )\n        {\n            return new OperationStatus<T> { OperationCode = errorCode, ErrorMessage = errorMessage + exception.Message + exception.StackTrace, Result = default( T ) };\n        }\n\n        public static OperationStatus CopyFrom( OperationStatus source )\n        {\n            return new OperationStatus { OperationCode = source.OperationCode, ErrorMessage = source.ErrorMessage };\n        }\n\n        public static OperationStatus CopyFrom<T>( OperationStatus<T> source )\n        {\n            return new OperationStatus { OperationCode = source.OperationCode, ErrorMessage = source.ErrorMessage };\n        }\n\n        public static OperationStatus<TOut> CopyFrom<TOut>( OperationStatus source )\n        {\n            return new OperationStatus<TOut> { OperationCode = source.OperationCode, ErrorMessage = source.ErrorMessage, Result = default( TOut ) };\n        }\n\n        public static OperationStatus<TOut> CopyFrom<TIn, TOut>( OperationStatus<TIn> source, TOut result = default (TOut) )\n        {\n            return new OperationStatus<TOut> { OperationCode = source.OperationCode, ErrorMessage = source.ErrorMessage, Result = result };\n        }\n    }\n}"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/Queue/BatchSenderThread.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Threading;\n    using System.Diagnostics;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public class BatchSenderThread<TQueueItem, TMessage> : EventProcessor\n    {\n        private static readonly string _logMessagePrefix = \"BatchSenderThread error. \";\n        private        readonly object _syncRoot         = new object( );\n\n        //--//\n\n        private readonly IAsyncQueue<TQueueItem>    _dataSource;\n        private readonly IMessageSender<TMessage>   _dataTarget;\n        private readonly Func<TQueueItem, TMessage> _dataTransform;\n        private readonly Func<TQueueItem, string>   _serializedData;\n        private          Thread                     _worker;\n        private          AutoResetEvent             _operational;\n        private          AutoResetEvent             _doWork;\n        private          bool                       _running;\n        private          int                        _outstandingTasks;\n\n        public BatchSenderThread( IAsyncQueue<TQueueItem> dataSource, IMessageSender<TMessage> dataTarget, Func<TQueueItem, TMessage> dataTransform, Func<TQueueItem, string> serializedData, ILogger logger ) \n            : base( SafeLogger.FromLogger( logger ) )\n        {\n\n            if( dataSource == null || dataTarget == null )\n            {\n                throw new ArgumentException( \"data source and data target cannot be null\" );\n            }\n\n            _operational = new AutoResetEvent( false );\n            _doWork = new AutoResetEvent( false );\n            _running = false;\n            _dataSource = dataSource;\n            _dataTarget = dataTarget;\n            _dataTransform = dataTransform;\n            _serializedData = serializedData;\n            _outstandingTasks = 0;\n        }\n\n        public override bool Start( )\n        {\n            bool start = false;\n\n            lock( _syncRoot )\n            {\n                if( _running == false )\n                {\n                    start = true;\n                }\n            }\n\n            if( start )\n            {\n                _worker = new Thread( ThreadJob );\n                _running = true;\n                _worker.Start( );\n                return _operational.WaitOne( );\n            }\n\n            return false;\n        }\n\n        public override bool Stop( int timeout )\n        {\n            bool stop = false;\n\n            lock( _syncRoot )\n            {\n                if( _running == true )\n                {\n                    // There must exist a worker thread\n                    System.Diagnostics.Debug.Assert( _worker != null );\n\n                    // signal the worker thread that exit is impending\n                    _running = false;\n                    _doWork.Set( );\n\n                    stop = true;\n                }\n            }\n\n            if( stop )\n            {\n                if( _operational.WaitOne( timeout ) == false )\n                {\n                    // no other choice than forcing a stop\n                    _worker.Abort( );\n                }\n\n                _worker.Join( );\n\n                return true;\n            }\n\n            return false;\n        }\n\n        public override void Process( )\n        {\n            _doWork.Set( );\n        }\n\n        public event EventBatchProcessedEventHandler OnEventsBatchProcessed;\n\n        private void ThreadJob( )\n        {\n            // signal that the worker thread has actually started processing the events\n            _operational.Set( );\n\n            try\n            {\n                const int WAIT_TIMEOUT = 50; // millisecods\n\n                // run until Stop() is called\n                while( _running == true )\n                {\n                    try\n                    {\n                        // If there are no tasks to be served, wait for some events to process\n                        // Use a timeout to prevent race conditions on the outstanding tasks count\n                        // and the actual queue count\n                        _doWork.WaitOne( WAIT_TIMEOUT );\n\n                        _logger.Flush( );\n\n                        // Fish from the queue and accumulate, keep track of outstanding tasks to \n                        // avoid accumulating too many competing tasks. Note that we are going to schedule\n                        // one more tasks than strictly needed, so that we prevent tasks to sit in the queue\n                        // because of the race condition on the outstanding task count (_outstandingTasks) \n                        // and the tasks actually sitting in the queue.  (*)\n                        // To prevent this race condition, we will wait with a timeout\n                        int count = _dataSource.Count - _outstandingTasks;\n\n                        if( count == 0 )\n                        {\n                            continue;\n                        }\n\n                        // check if we have been woken up to actually stop processing \n                        EventBatchProcessedEventHandler eventBatchProcessed = null;\n\n                        lock( _syncRoot )\n                        {\n                            if( _running == false )\n                            {\n                                return;\n                            }\n\n                            // take a snapshot of event handlers to invoke\n                            eventBatchProcessed = OnEventsBatchProcessed;\n                        }\n\n                        // allocate a container to keep track of tasks for events in the queue\n                        var tasks = new List<TaskWrapper>( );\n\n                        // process all messages that have not been processed yet \n                        while( --count >= 0 )\n                        {\n                            TaskWrapper<OperationStatus<TQueueItem>> t = null;\n\n                            try\n                            {\n                                t = _dataSource.TryPop( );\n                            }\n                            catch\n                            {\n                                Interlocked.Decrement( ref _outstandingTasks ); \n                                \n                                continue;\n                            }\n\n                            // increment outstanding task count \n                            Interlocked.Increment( ref _outstandingTasks );\n\n                            t.ContinueWith<TaskWrapper>( popped =>\n                            {\n                                // Decrement the numbers of outstanding tasks. \n                                // (*) Note that there is a race  condition because at this point in time the tasks \n                                // is already out of the queue but we did not decrement the outstanding task count \n                                // yet. This race condition may cause tasks to be left sitting in the queue. \n                                // To deal with this race condition, we will wait with a timeout\n                                Interlocked.Decrement( ref _outstandingTasks );\n\n                                // because the outstanding task counter is incremented before \n                                // adding, we should never incur a negative count \n                                Debug.Assert( _outstandingTasks >= 0 );\n\n                                if ( popped?.Result != null && popped.Result.IsSuccess )\n                                {\n                                    if( _dataTransform != null )\n                                    {\n                                        return _dataTarget.SendMessage( _dataTransform( popped.Result.Result ) );\n                                    }\n                                    if( _serializedData != null )\n                                    {\n                                        return _dataTarget.SendSerialized( _serializedData( popped.Result.Result ) );\n                                    }\n                                }\n\n                                return null;\n                            } );\n\n                            AddToProcessed( tasks, t );\n                        }\n\n                        // alert any client about outstanding message tasks\n                        if( eventBatchProcessed != null )\n                        {\n                            var sh = new SafeAction<List<TaskWrapper>>( allScheduledTasks => eventBatchProcessed( allScheduledTasks ), Logger );\n\n                            TaskWrapper.Run( ( ) => sh.SafeInvoke( tasks ) );\n                        }\n                    }\n                    catch( StackOverflowException ex )\n                    {\n                        Logger.LogError( _logMessagePrefix + ex.Message );\n\n                        // do not hide stack overflow exceptions\n                        throw;\n                    }\n                    catch( OutOfMemoryException ex )\n                    {\n                        Logger.LogError( _logMessagePrefix + ex.Message );\n\n                        // do not hide memory exceptions\n                        throw;\n                    }\n                    catch( Exception ex )\n                    {\n                        Logger.LogError( _logMessagePrefix + ex.Message );\n\n                        // catch all other exceptions\n                    }\n\n                    // go and check for more events\n                }\n            }\n            finally\n            {\n                // signal stop\n                _operational.Set( );\n            }\n        }\n\n        private void AddToProcessed( List<TaskWrapper> tasks, TaskWrapper<OperationStatus<TQueueItem>> t )\n        {\n            try\n            {\n                tasks.Add( t );\n            }\n            catch( StackOverflowException /*ex*/)\n            {\n                // do not hide stack overflow exceptions\n                throw;\n            }\n            catch( OutOfMemoryException /*ex*/)\n            {\n                // do not hide memory exceptions\n                throw;\n            }\n            catch( Exception ex )\n            {\n                Logger.LogError( \"Exception on adding task: \" + ex.Message );\n\n                // catch all other exceptions\n\n                //\n                // TODO\n                // If we are here, the task that has been popped could not be added to the list\n                // of tasks that the client will be notifed about\n                // This does not mean that the task has not been processed though\n                //\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/Queue/GatewayQueue.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using System;\n    using System.Collections.Concurrent;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public class GatewayQueue<T> : IAsyncQueue<T>\n    {\n        private readonly ConcurrentQueue<T> _Queue = new ConcurrentQueue<T>( );\n\n        //--//\n\n        async public void Push( T item )\n        {\n            _Queue.Enqueue( item );\n        }\n\n        public TaskWrapper<OperationStatus<T>> TryPop( )\n        {\n            Func<OperationStatus<T>> deque = ( ) =>\n            {\n                T returnedItem;\n\n                bool isReturned = _Queue.TryDequeue( out returnedItem );\n\n                if( isReturned )\n                {\n                    return OperationStatusFactory.CreateSuccess<T>( returnedItem );\n                }\n\n                return OperationStatusFactory.CreateError<T>( ErrorCode.NoDataReceived );\n            };\n\n            var sf = new SafeFunc<OperationStatus<T>>( deque, null );\n\n            return TaskWrapper<OperationStatus<T>>.Run( () => sf.SafeInvoke() );\n        }\n\n        public int Count\n        {\n            get\n            {\n                return _Queue.Count;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/Utils/Queue/IAsyncQueue.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Gateway\n{\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public interface IAsyncQueue<T>\n    {\n        void Push( T item );\n\n        TaskWrapper<OperationStatus<T>> TryPop( );\n\n        int Count { get; }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Gateway/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Azure.Devices.Client.PCL\" version=\"1.0.5\" targetFramework=\"net452\" />\n  <package id=\"Mono.Security\" version=\"3.2.3.0\" targetFramework=\"net452\" />\n  <package id=\"PCLCrypto\" version=\"1.0.86\" targetFramework=\"net452\" />\n  <package id=\"Validation\" version=\"2.0.6.15003\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/Gateways/GatewayService/GatewayService.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2013\nVisualStudioVersion = 12.0.30723.0\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Microsoft.ConnectTheDots.GatewayService\", \"WindowsService\\Microsoft.ConnectTheDots.GatewayService.csproj\", \"{38A27FC0-2864-49A8-BDA3-D7E22D276B29}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"CoreTest\", \"Tests\\CoreTest\\CoreTest.csproj\", \"{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Tests\", \"Tests\", \"{74BF7EFF-11AD-4587-9C35-9419831D1116}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Microsoft.ConnectTheDots.Gateway\", \"Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\", \"{E14D1C61-1979-452E-BE8B-0303A95EF764}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"BatchSenderThreadTest\", \"Tests\\BatchSenderThreadTest\\BatchSenderThreadTest.csproj\", \"{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"DeviceAdapters\", \"DeviceAdapters\", \"{5094CC44-E8F8-4472-8042-BE7E78899225}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SocketServiceDeviceMock\", \"Tests\\SocketServiceDeviceMock\\SocketServiceDeviceMock.csproj\", \"{91C31E86-7DDB-4C29-8A65-56596478013C}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Scripts\", \"Scripts\", \"{A5D7B51F-689A-4BB1-AE4C-7C12F4B443FA}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Microsoft.ConnectTheDots.ServiceMonitor\", \"ServiceMonitor\\Microsoft.ConnectTheDots.ServiceMonitor.csproj\", \"{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Gateway\", \"Gateway\", \"{048641FD-5970-4D79-9DA2-07CDCD9FAC43}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"RaspberryPi\", \"RaspberryPi\", \"{86E795DC-E649-4739-BB0D-4D8EC7D49E12}\"\n\tProjectSection(SolutionItems) = preProject\n\t\tScripts\\RaspberryPi\\autorun_install.sh = Scripts\\RaspberryPi\\autorun_install.sh\n\t\tScripts\\RaspberryPi\\certificate_update.sh = Scripts\\RaspberryPi\\certificate_update.sh\n\t\tScripts\\RaspberryPi\\deploy.cmd = Scripts\\RaspberryPi\\deploy.cmd\n\t\tScripts\\RaspberryPi\\deploy_and_start_ctd_on_boot.sh = Scripts\\RaspberryPi\\deploy_and_start_ctd_on_boot.sh\n\t\tScripts\\RaspberryPi\\kill_all.sh = Scripts\\RaspberryPi\\kill_all.sh\n\tEndProjectSection\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SerialPortAdapter\", \"DeviceAdapters\\SerialPort\\SerialPortAdapter.csproj\", \"{A7B77408-0DBA-4384-A31A-404187CAEC89}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"SocketAdapter\", \"DeviceAdapters\\Socket\\SocketAdapter.csproj\", \"{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"BluetoothUARTAdapter\", \"DeviceAdapters\\Bluetooth\\BluetoothUARTAdapter.csproj\", \"{A49E31A1-79DC-4B05-AE48-2B594E168EB9}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Microsoft.ConnectTheDots.Common\", \"Common\\Microsoft.ConnectTheDots.Common.csproj\", \"{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"DeviceAdapterTestMock\", \"Tests\\DeviceAdapterTestMock\\DeviceAdapterTestMock.csproj\", \"{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"ScriptConverter\", \"Scripts\\ScriptConverter\\ScriptConverter.csproj\", \"{8D4BB859-6779-4D53-86C6-79712956A772}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Microsoft.ConnectTheDots.GatewayExe\", \"WindowsEXE\\Microsoft.ConnectTheDots.GatewayExe.csproj\", \"{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Setup\", \"Setup\", \"{406E3AC9-A86B-4857-B6FF-C6033EDF8EF3}\"\nEndProject\nProject(\"{930C7802-8A8C-48F9-8165-68863BCCD9DD}\") = \"WindowsExeSetup\", \"Setup\\WindowsExeSetup\\WindowsExeSetup.wixproj\", \"{CD583705-1033-4D51-B613-07295C56DF57}\"\nEndProject\nProject(\"{930C7802-8A8C-48F9-8165-68863BCCD9DD}\") = \"WindowsServiceSetup\", \"Setup\\WindowsServiceSetup\\WindowsServiceSetup.wixproj\", \"{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|Mixed Platforms = Debug|Mixed Platforms\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|Mixed Platforms = Release|Mixed Platforms\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Release|Mixed Platforms.Build.0 = Release|Any CPU\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Debug|Any CPU.ActiveCfg = Debug|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Debug|Mixed Platforms.ActiveCfg = Debug|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Debug|Mixed Platforms.Build.0 = Debug|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Debug|x86.Build.0 = Debug|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Release|Any CPU.ActiveCfg = Release|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Release|Mixed Platforms.ActiveCfg = Release|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Release|Mixed Platforms.Build.0 = Release|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Release|x86.ActiveCfg = Release|x86\n\t\t{CD583705-1033-4D51-B613-07295C56DF57}.Release|x86.Build.0 = Release|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Debug|Any CPU.ActiveCfg = Debug|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Debug|Mixed Platforms.ActiveCfg = Debug|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Debug|Mixed Platforms.Build.0 = Debug|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Debug|x86.ActiveCfg = Debug|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Debug|x86.Build.0 = Debug|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Release|Any CPU.ActiveCfg = Release|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Release|Mixed Platforms.ActiveCfg = Release|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Release|Mixed Platforms.Build.0 = Release|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Release|x86.ActiveCfg = Release|x86\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38}.Release|x86.Build.0 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(NestedProjects) = preSolution\n\t\t{38A27FC0-2864-49A8-BDA3-D7E22D276B29} = {048641FD-5970-4D79-9DA2-07CDCD9FAC43}\n\t\t{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0} = {74BF7EFF-11AD-4587-9C35-9419831D1116}\n\t\t{E14D1C61-1979-452E-BE8B-0303A95EF764} = {048641FD-5970-4D79-9DA2-07CDCD9FAC43}\n\t\t{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D} = {74BF7EFF-11AD-4587-9C35-9419831D1116}\n\t\t{91C31E86-7DDB-4C29-8A65-56596478013C} = {74BF7EFF-11AD-4587-9C35-9419831D1116}\n\t\t{7DB057F5-2B79-4822-9A3F-1B7F30EB552F} = {048641FD-5970-4D79-9DA2-07CDCD9FAC43}\n\t\t{86E795DC-E649-4739-BB0D-4D8EC7D49E12} = {A5D7B51F-689A-4BB1-AE4C-7C12F4B443FA}\n\t\t{A7B77408-0DBA-4384-A31A-404187CAEC89} = {5094CC44-E8F8-4472-8042-BE7E78899225}\n\t\t{9D9DA1EB-90DA-4FC0-A97F-C650201DD994} = {5094CC44-E8F8-4472-8042-BE7E78899225}\n\t\t{A49E31A1-79DC-4B05-AE48-2B594E168EB9} = {5094CC44-E8F8-4472-8042-BE7E78899225}\n\t\t{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D} = {048641FD-5970-4D79-9DA2-07CDCD9FAC43}\n\t\t{756AB4B0-BC00-4297-A4F0-3DB40B7E2181} = {74BF7EFF-11AD-4587-9C35-9419831D1116}\n\t\t{8D4BB859-6779-4D53-86C6-79712956A772} = {A5D7B51F-689A-4BB1-AE4C-7C12F4B443FA}\n\t\t{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC} = {048641FD-5970-4D79-9DA2-07CDCD9FAC43}\n\t\t{406E3AC9-A86B-4857-B6FF-C6033EDF8EF3} = {048641FD-5970-4D79-9DA2-07CDCD9FAC43}\n\t\t{CD583705-1033-4D51-B613-07295C56DF57} = {406E3AC9-A86B-4857-B6FF-C6033EDF8EF3}\n\t\t{F7630E5C-40A9-44F4-A6D4-49AE731F4A38} = {406E3AC9-A86B-4857-B6FF-C6033EDF8EF3}\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Hardware.md",
    "content": "To set up a Raspberry Pi as a simple gateway for connecting Arduino or other sensors to Azure you will need to procure:\n\n1. [Raspberry Pi B/B+](http://www.raspberrypi.org/products/model-b-plus/)\n2. Power supply\n3. Case (optional)\n\n**Note**: Only the model above has been tested. "
  },
  {
    "path": "Devices/Gateways/GatewayService/RaspberryPi-Gateway-setup.md",
    "content": "# Setup Raspberry Pi Gateway #\nThis document explains how to set up a Raspberry Pi as a very simple gateway to read data from sensors connected over Serial, USB, or REST interfaces, and to send that data without change over AMQP to Azure. \nIt assumes that you have the right tools installed and that you have cloned or downloaded the ConnectTheDots.io project on your machine.\n\nThis configuration creates is very basic - it does not provide any functions such as device management, authentication, or access control. As such, it should be viewed as part of a Proof of Concept for building an IoT solution, not an integral part of a secure enterprise infrastructure. A recommended configuration will be published shortly.\n\n![](PiBoard.png)\n\n##Hardware requirements ##\nSee [Hardware](Hardware.md) file in this folder for hardware requirements.\n\n\n##Prerequisites ##\n\nTo build the project you will need Visual Studio 2013 [Community Edition](http://www.visualstudio.com/downloads/download-visual-studio-vs) or above. You will also need wired Internet access for the device. (Configuration details for wireless connectivity provided below, however wired internet is preferred for ease.)\n\n## Configure the Raspberry Pi ##\n\n* Connect the Raspberry Pi to a power supply, keyboard, mouse, monitor, and Ethernet cable (or Wi-Fi dongle) with an Internet connection.\n* Get a Raspbian NOOBS SD Card or download a NOOBS image as per the instructions on [http://www.raspberrypi.org/downloads/](http://www.raspberrypi.org/downloads/)\n* Boot the NOOBS SD Card and choose Raspbian (see [http://www.raspberrypi.org/help/noobs-setup/](http://www.raspberrypi.org/help/noobs-setup/) for more information).\n* Connect to the Raspberry Pi from your laptop, either via a USB-Serial adapter or via the network via SSH (enable once as per these instructions while booting via a monitor on HDMI and a USB keyboard). To connect using SSH:\n    * For Windows, download PuTTY and PSCP from [here](http://www.putty.org/).\n    * Connect to the Pi using the IP address of the Pi.\n* Once you have connected to the Pi, install on it the Mono runtime (which allows use of .NET) and root certs required for a secure SSL connection to Azure:\n    * Run the following from a shell (i.e. via SSH)\n    \n\n                  sudo apt-get update \n\t\t\t\t  sudo apt-get upgrade \n                  sudo apt-get install mono-complete\n                  sudo mozroots --import --ask-remove\n\t\t\t\t  sudo mozroots --import --machine --ask-remove\n\t\t\t\t  sudo apt-get -y install python libusb-1.0\n\t\t\t\t  sudo apt-get -y install python-pip\n\t\t\t\t  sudo pip install --pre pyusb\n\n\n* Create a device ID and retreive a connection string for the gateway following the instructions in the [Device Setup](../../readme.md) guide.\n* Open the `Devices\\Gateways\\GatewayService\\GatewayService.sln` solution in Visual Studio\n* In Visual Studio, update `\\GatewayService\\Gateway\\Microsoft.ConnectTheDots.GatewayService\\App.config` pasting your device connection string:\n\n\tBefore:\n    \n\t\t<IotHubConfig IotHubConnectionString=\"[IoTHubConnectionString]\"/>\n\n\n\tAfter:\n \n\t\t<IotHubConfig IotHubConnectionString=\"HostName=connectthedotsiothub.azure-devices.net;DeviceId=MyDevice;SharedAccessKey=mykeyblablabla\"/>\n\n* Build the solution (F5)\n\n* Use  the file `\\Scripts\\RaspberryPi\\deploy.cmd` to copy all requisite files from your computer to the Pi. To use the .CMD file, you will need to \n        \n    * Update the IP address\n    * Change the Putty and Project directories in the .CMD file as necessary\n\t    * Do not put your project directory in quotations(\") as it will cause the PuTTY calls to fail.  You should see the following:\n    * Change Configuration to Release or Debug to reflect whether you built the solution to Debug or Release. \n\n\tOnce you had edited the above items, run `deploy.cmd` from the command line while in that directory.\n\n\tIf it ran correctly, you should see the following:\n\n\t\tediting line endings for Pi\n\t\tProcessing dos2unix for certificate_update.sh\n\t\tProcessing dos2unix for autorun_install.sh\n\t\tProcessing dos2unix for kill_all.sh\n\t\tProcessing dos2unix for deploy_and_start_ctd_on_boot.sh\n\t\tCreating GatewayService directory\n\t\tCopying Gateway files\n\t\tAmqp.Net.dll              | 188 kB | 188.5 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 17 kB |  17.5 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 59 kB |  59.5 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 32 kB |  32.0 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 81 kB |  81.5 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 13 kB |  13.0 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 3 kB |   3.7 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 25 kB |  25.5 kB/s | ETA: 00:00:00 | 100%\n\t\tNewtonsoft.Json.dll       | 495 kB | 495.5 kB/s | ETA: 00:00:00 | 100%\n\t\tNewtonsoft.Json.xml       | 471 kB | 471.9 kB/s | ETA: 00:00:00 | 100%\n\t\tNLog.config               | 0 kB |   0.9 kB/s | ETA: 00:00:00 | 100%\n\t\tNLog.dll                  | 410 kB | 410.5 kB/s | ETA: 00:00:00 | 100%\n\t\tNLog.xml                  | 786 kB | 786.5 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 9 kB |   9.0 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 9 kB |   9.5 kB/s | ETA: 00:00:00 | 100%\n\t\tMicrosoft.ConnectTheDots. | 6 kB |   6.5 kB/s | ETA: 00:00:00 | 100%\n\t\tcopying scripts\n\t\tcertificate_update.sh     | 1 kB |   1.5 kB/s | ETA: 00:00:00 | 100%\n\t\tautorun_install.sh        | 3 kB |   3.5 kB/s | ETA: 00:00:00 | 100%\n\t\tkill_all.sh               | 1 kB |   1.7 kB/s | ETA: 00:00:00 | 100%\n\t\tdeploy_and_start_ctd_on_b | 3 kB |   3.9 kB/s | ETA: 00:00:00 | 100%\n\t\tMarking autorun_once.sh and autorun_install.sh as executable\n\t\tRun deploy_next.sh for any supplementary sensor files\n    \n* On the Raspberry Pi, modify /etc/rc.local with nano:\n    \n\t\tsudo nano /etc/rc.local\n \n* When you are in the nano editor, edit rc.local to the following:\n    \n\t\t# Print the IP address\n\t\t_IP=$(hostname -I) || true\n\t\tif [ \"$_IP\" ]; then\n\t\t  printf \"My IP address is %s\\n\" \"$_IP\"\n\t\tfi\n\n\t\texport GW_ACCOUNT_HOME=/home/pi\n\t\texport GW_HOME=$GW_ACCOUNT_HOME/ctdgtwy\n\t\tif [ ! -d $GW_HOME/logs ]\n\t\t  then\n\t\t   sudo mkdir $GW_HOME/logs\n\t\tfi\n\t\tsudo echo \"$(date) booting...\" >> $GW_HOME/logs/booting.log\n\t\t$(cd $GW_HOME/ ; sh deploy_and_start_ctd_on_boot.sh) &\n\t\texit 0\n\n\n* To exit the nano editor use Ctrl-X, and press Y to save the changes. To have the new settings take effect, reboot the Raspberry Pi by cycling the power or by issuing the command \n    \n\t\tSudo reboot\n\n\n* At this point your Raspberry Pi is ready to be used as a Gateway for sensor devices connected over USB to send their data to Azure Event Hubs.\n\nIf you're following the getting started solution, next step is the [Sample website deployment](../../../Azure/WebSite/WebsitePublish.md).\n\n## Wifi ##\n\nIf you want to use Wifi instead of Ethernet in your configuration, you can follow [these instructions](WiFi-Configuration.md)\n\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/GetLogFile.cmd",
    "content": "﻿@echo off\nREM //  ---------------------------------------------------------------------------------\nREM //  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\nREM // \nREM //  The MIT License (MIT)\nREM // \nREM //  Permission is hereby granted, free of charge, to any person obtaining a copy\nREM //  of this software and associated documentation files (the \"Software\"), to deal\nREM //  in the Software without restriction, including without limitation the rights\nREM //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\nREM //  copies of the Software, and to permit persons to whom the Software is\nREM //  furnished to do so, subject to the following conditions:\nREM // \nREM //  The above copyright notice and this permission notice shall be included in\nREM //  all copies or substantial portions of the Software.\nREM // \nREM //  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nREM //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nREM //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nREM //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nREM //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nREM //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nREM //  THE SOFTWARE.\nREM //  ---------------------------------------------------------------------------------\n\nset puttydir=\"C:\\software\\PuTTY\\\"\nset prjdir=..\\\nset rpi_ip=10.121.204.204\nset rpi_usr=pi\nset rpi_pw=raspberry\n\necho Copying log files\n%puttydir%pscp %rpi_usr%@%rpi_ip%:/var/lib/mono/eventlog/Application/*.log ..\\bin\\release\\logs\\\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/Modified/autorun_install.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n\n\n#\n# the standard account for a Raspberry pi board is 'pi'\n# please change as needed across code base\n#\nexport GW_ACCOUNT_HOME=/home/pi\nexport GW_HOME=$GW_ACCOUNT_HOME/ctdgtwy\nexport LOGS=$GW_HOME/logs\n\necho \"$(date) => autorun.sh: starting autorun.sh\" >> $GW_HOME/boot_sequence.log\n#\n\necho \"Starting supplementary sensor script if present\"\necho \"$(date) => autorun.sh: calling supplementary startup script autorunWensnSoundSensor.sh if necessary\" >> $GW_HOME/boot_sequence.log\n$GW_HOME/autorunWensnSoundSensor.sh &\necho \"$(date) => autorun.sh: calling supplementary startup script autorunUartBT.sh if necessary\" >> $GW_HOME/boot_sequence.log\n$GW_HOME/autorunUartBT.sh &\necho \"$(date) => autorun.sh: calling supplementary startup script autorunUart2UsbBt.sh if necessary\" >> $GW_HOME/boot_sequence.log\n$GW_HOME/autorunUart2UsbBt.sh &\necho \"$(date) => autorun.sh: calling supplementary startup script autorun2.sh if necessary\" >> $GW_HOME/boot_sequence.log\n$GW_HOME/autorun2.sh &\n#\n\n#\n# Start monitoring gateway process\n# Event log entries will be written to /var/lib/mono/EventLog/Application\n#\necho \"Setting MONO_EVENTLOG_TYPE to local\"\nexport MONO_EVENTLOG_TYPE=local\necho \"Monitoring Gateway\"\nLOG=monitor_$(date +\"%m-%d-%Y-%T\").log\nMONITORED=\"GatewayService\"\nPERIOD=5\nDELETE_LOCK=\"sudo rm -f /tmp/Microsoft.ConnectTheDots.GatewayService.exe.lock\"\t\nRESTART=\"sudo /usr/bin/mono-service $GW_HOME/Microsoft.ConnectTheDots.GatewayService.exe\"\n\n\n#\n# Consider using debug mode for mono \n#\n#\t\texport MONO_LOG_LEVEL=debug \n#\t\t/usr/bin/mono-service $GW_HOME/Microsoft.ConnectTheDots.GatewayService.exe --debug > monoOutput.txt &\n#\n\necho Starting gateway from directory $(pwd)\nexport MONO_PATH=$GW_HOME\necho MONO_PATH is $MONO_PATH\n\necho \"$(date) => autorun.sh: starting permanent while loop\" >> $GW_HOME/boot_sequence.log\nwhile :\ndo\n\t test `ps ax | grep $MONITORED | awk '{ print $1;}' | wc | awk '{ print $1;}'` -gt 1 && RUNNING=1 || RUNNING=0\n\t test $RUNNING -eq 0 && echo \"$(date) => Restarting $MONITORED...\" >> $LOGS/$LOG && $DELETE_LOCK && $RESTART || echo \"$(date) => $MONITORED is running...\" >> $LOGS/$LOG\n\t sleep $PERIOD\ndone\n\necho \"$(date) => autorun.sh: finished autorun.sh\" >> $GW_HOME/boot_sequence.log"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/Modified/certificate_update.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to dea\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n\n# stuff that should be done once on a device\n\n# import root certificates into the mono trust store (IoT Hub connection will fail with a certificate trust error if this is not done)\nmozroots --import --ask-remove\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/Modified/deploy_and_start_ctd_on_boot.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n\n#\n# the standard account for a Raspberry pi board is 'pi'\n# please change as needed across code base\n#\nexport GW_ACCOUNT_HOME=/home/pi\nexport GW_HOME=$GW_ACCOUNT_HOME/ctdgtwy\nexport LOGS=$GW_HOME/logs\nexport STAGING=$GW_HOME/staging\n\necho \"$(date) => deploy_and_start_ctd_on_boot.sh: started\" >> $GW_HOME/boot_sequence.log\n#\n#if [ -f $GW_HOME/booting.log ];\n#then\n#\techo \"$(date) => deploy_and_start_ctd_on_boot.sh: called from rc.local in boot sequence\" >> $GW_HOME/boot_sequence.log\n#    # deploy_and_start_ctd_on_boot.sh run from rc.local in boot sequence, nothing should need to be killed\n#    # need to delete file so subsequent runs from prompt ok.\n#    rm -f $GW_HOME/booting.log\n#else\n#\techo \"$(date) => deploy_and_start_ctd_on_boot.sh: called from command line, not boot sequence\" >> $GW_HOME/boot_sequence.log\n    # autorun_once.sh run from command prompt, need to kill any pre-running services\n\t# Kill all mono processes and GatewayService as well, kill the monitoring process that is performing a sleep\n\techo \"Trying to kill all mono processes...\"\n\tfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'mono'           | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done\n\tfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'gatewayservice' | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done\n\tfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'sleep'          | awk '{ print $2;}'`; do sudo kill -9 $KILLPID; done\n#fi\n\necho \"Trying to delete lock file if there is any...\"\nsudo rm -f /tmp/Microsoft.ConnectTheDots.GatewayService.exe.lock\n\necho updating files...\nfind $GW_HOME/ -maxdepth 1 \\! -name 'deploy_and_start_ctd_on_boot.sh' -type f -delete\n\ncp $STAGING/* $GW_HOME/\necho \"$(date) => deploy_and_start_ctd_on_boot: creating autorun.sh from template\" >> $GW_HOME/boot_sequence.log\nrm $GW_HOME/autorun.sh\nmv $GW_HOME/autorun_install.sh $GW_HOME/autorun.sh\n\necho \"$(date) => deploy_and_start_ctd_on_boot: calling autorun.sh\" >> $GW_HOME/boot_sequence.log\necho \"Starting host processes...\"\nsudo $GW_HOME/autorun.sh\n\necho \"$(date) => deploy_and_start_ctd_on_boot: finished\" >> $GW_HOME/boot_sequence.log\n#\n# Add the below line to /etc/rc.local\n#\n# the standard account for a Raspberry pi board is 'pi'\n# please change as needed across code base\n#\n#   export GW_ACCOUNT_HOME=/home/pi\n#   export GW_HOME=$GW_ACCOUNT_HOME/ctdgtwy\n#   if [ ! -d $GW_HOME/logs ] \n#     then\n#       sudo mkdir $GW_HOME/logs \n#   fi\n#   sudo echo \"$(date) booting...\" >> $GW_HOME/logs/booting.log \n#   $(cd $GW_HOME/ ; sh deploy_and_start_ctd_on_boot.sh) &\n#\n# and don't forget to make autorun.sh executable (sudo chmod 755 autorun.sh)\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/Modified/kill_all.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n\n#\n# to kill the monitor we need to kill the proces that is sleeping, and python, mono as well\n#\nfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'sleep' | awk '{ print $2;}'`; do sudo kill -9 $KILLPID; done\nfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'mono'  | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done\nfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'python'  | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/autorunUart2UsbBt.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n#\nexport GW_HOME=/home/pi/ctdgtwy\necho \"$(date) => autorunUartBT.sh: started\" >> $GW_HOME/boot_sequence.log\necho \"Starting secondary script\"\ncd $GW_HOME\nsudo python $GW_HOME/BtUSB_2_BtUART_Example.py &\necho \"$(date) => autorunUartBT.sh: finished\" >> $GW_HOME/boot_sequence.log\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/autorunUartBT.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n#\nexport GW_HOME=/home/pi/ctdgtwy\necho \"$(date) => autorunUartBT.sh: started\" >> $GW_HOME/boot_sequence.log\necho \"Starting secondary script\"\ncd $GW_HOME\nsudo python $GW_HOME/BluetoothUARTExample.py &\necho \"$(date) => autorunUartBT.sh: finished\" >> $GW_HOME/boot_sequence.log\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/autorunWensnSoundSensor.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n#\nexport GW_HOME=/home/pi/ctdgtwy\necho \"$(date) => autorunWensnSoundSensor.sh: started\" >> $GW_HOME/boot_sequence.log\necho \"Starting secondary script\"\ncd $GW_HOME\nsudo python $GW_HOME/WensnPiVS01.py &\necho \"$(date) => autorunWensnSoundSensor.sh: finished\" >> $GW_HOME/boot_sequence.log\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/autorun_install.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n\n\n#\n# the standard account for a Raspberry pi board is 'pi'\n# please change as needed across code base\n#\nexport GW_ACCOUNT_HOME=/home/pi\nexport GW_HOME=$GW_ACCOUNT_HOME/ctdgtwy\nexport LOGS=$GW_HOME/logs\n\necho \"$(date) => autorun.sh: starting autorun.sh\" >> $GW_HOME/boot_sequence.log\n#\n\necho \"Starting supplementary sensor script if present\"\necho \"$(date) => autorun.sh: calling supplementary startup script autorunWensnSoundSensor.sh if necessary\" >> $GW_HOME/boot_sequence.log\n$GW_HOME/autorunWensnSoundSensor.sh &\necho \"$(date) => autorun.sh: calling supplementary startup script autorunUartBT.sh if necessary\" >> $GW_HOME/boot_sequence.log\n$GW_HOME/autorunUartBT.sh &\necho \"$(date) => autorun.sh: calling supplementary startup script autorunUart2UsbBt.sh if necessary\" >> $GW_HOME/boot_sequence.log\n$GW_HOME/autorunUart2UsbBt.sh &\necho \"$(date) => autorun.sh: calling supplementary startup script autorun2.sh if necessary\" >> $GW_HOME/boot_sequence.log\n$GW_HOME/autorun2.sh &\n#\n\n#\n# Start monitoring gateway process\n# Event log entries will be written to /var/lib/mono/EventLog/Application\n#\necho \"Setting MONO_EVENTLOG_TYPE to local\"\nexport MONO_EVENTLOG_TYPE=local\necho \"Monitoring Gateway\"\nLOG=monitor_$(date +\"%m-%d-%Y-%T\").log\nMONITORED=\"GatewayService\"\nPERIOD=5\nDELETE_LOCK=\"sudo rm -f /tmp/Microsoft.ConnectTheDots.GatewayService.exe.lock\"\t\nRESTART=\"sudo /usr/bin/mono-service $GW_HOME/Microsoft.ConnectTheDots.GatewayService.exe\"\n\n\n#\n# Consider using debug mode for mono \n#\n#\t\texport MONO_LOG_LEVEL=debug \n#\t\t/usr/bin/mono-service $GW_HOME/Microsoft.ConnectTheDots.GatewayService.exe --debug > monoOutput.txt &\n#\n\necho Starting gateway from directory $(pwd)\nexport MONO_PATH=$GW_HOME\necho MONO_PATH is $MONO_PATH\n\necho \"$(date) => autorun.sh: starting permanent while loop\" >> $GW_HOME/boot_sequence.log\nwhile :\ndo\n\t test `ps ax | grep $MONITORED | awk '{ print $1;}' | wc | awk '{ print $1;}'` -gt 1 && RUNNING=1 || RUNNING=0\n\t test $RUNNING -eq 0 && echo \"$(date) => Restarting $MONITORED...\" >> $LOGS/$LOG && $DELETE_LOCK && $RESTART || echo \"$(date) => $MONITORED is running...\" >> $LOGS/$LOG\n\t sleep $PERIOD\ndone\n\necho \"$(date) => autorun.sh: finished autorun.sh\" >> $GW_HOME/boot_sequence.log"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/certificate_update.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to dea\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n\n# stuff that should be done once on a device\n\n# import root certificates into the mono trust store (IoT Hub connection will fail with a certificate trust error if this is not done)\nmozroots --import --ask-remove\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/deploy.cmd",
    "content": "@echo off\nREM //  ---------------------------------------------------------------------------------\nREM //  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\nREM // \nREM //  The MIT License (MIT)\nREM // \nREM //  Permission is hereby granted, free of charge, to any person obtaining a copy\nREM //  of this software and associated documentation files (the \"Software\"), to deal\nREM //  in the Software without restriction, including without limitation the rights\nREM //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\nREM //  copies of the Software, and to permit persons to whom the Software is\nREM //  furnished to do so, subject to the following conditions:\nREM // \nREM //  The above copyright notice and this permission notice shall be included in\nREM //  all copies or substantial portions of the Software.\nREM // \nREM //  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nREM //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nREM //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nREM //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nREM //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nREM //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nREM //  THE SOFTWARE.\nREM //  ---------------------------------------------------------------------------------\n\nset puttydir=\"C:\\Program Files (x86)\\PuTTY\\\"\nset prjdir=..\\..\\\nset rpi_ip=10.91.138.120\nset rpi_usr=pi\nset rpi_pw=raspberry\nset Configuration=Debug\nset GW_Home=ctdgtwy\nset Staging=%GW_Home%/staging\nset PUTTY_CMD=%puttydir%putty -ssh %rpi_usr%@%rpi_ip% -pw %rpi_pw% \nset PSCP_CMD=%puttydir%pscp -pw %rpi_pw% \n\necho editing line endings for Pi\n%prjdir%Scripts\\ScriptConverter\\bin\\%Configuration%\\ScriptConverter.exe \"..\\RaspberryPi\\certificate_update.sh\" \"..\\RaspberryPi\\autorun_install.sh\" \"..\\RaspberryPi\\kill_all.sh\" \"..\\RaspberryPi\\deploy_and_start_ctd_on_boot.sh\"\n\necho Creating GatewayService directory\ndel /f %temp%\\gatewayservicemkdir.tmp\necho rm -rf %Staging%  >> %temp%\\gatewayservicemkdir.tmp\necho rm -rf %GW_Home%  >> %temp%\\gatewayservicemkdir.tmp\necho mkdir  %GW_Home%  >> %temp%\\gatewayservicemkdir.tmp\necho mkdir  %Staging%  >> %temp%\\gatewayservicemkdir.tmp\n%PUTTY_CMD% -m %temp%\\gatewayservicemkdir.tmp\n\necho Copying Gateway files\n%PSCP_CMD% %prjdir%WindowsService\\bin\\%Configuration%\\*.*                                                       %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% %prjdir%DeviceAdapters\\SerialPort\\bin\\%Configuration%\\Microsoft.ConnectTheDots.SerialPortAdapter.dll %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% %prjdir%DeviceAdapters\\Socket\\bin\\%Configuration%\\Microsoft.ConnectTheDots.SocketAdapter.dll         %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% %prjdir%DeviceAdapters\\Bluetooth\\bin\\%Configuration%\\Microsoft.ConnectTheDots.BluetoothUARTAdapter.dll   %rpi_usr%@%rpi_ip%:%Staging%/\nREM %PSCP_CMD% %prjdir%Tests\\SocketServiceDeviceMock\\bin\\%Configuration%\\SocketDeviceMock.exe                       %rpi_usr%@%rpi_ip%:%Staging%/\nREM %PSCP_CMD% %prjdir%Tests\\DeviceAdapterTestMock\\bin\\%Configuration%\\DataAdapterTestMock.dll                      %rpi_usr%@%rpi_ip%:%Staging%/\nREM %PSCP_CMD% %prjdir%Tests\\CoreTest\\bin\\%Configuration%\\CoreTest.exe                                              %rpi_usr%@%rpi_ip%:%Staging%/\n\necho copying scripts\n%PSCP_CMD% %prjdir%Scripts\\RaspberryPi\\Modified\\certificate_update.sh\t\t\t%rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% %prjdir%Scripts\\RaspberryPi\\Modified\\autorun_install.sh\t\t\t\t%rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% %prjdir%Scripts\\RaspberryPi\\Modified\\kill_all.sh\t\t\t\t\t    %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% %prjdir%Scripts\\RaspberryPi\\Modified\\deploy_and_start_ctd_on_boot.sh\t%rpi_usr%@%rpi_ip%:%GW_Home%/\n\necho Marking autorun_once.sh and autorun_install.sh as executable\ndel /f %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/certificate_update.sh\t\t\t\t\t>> %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/autorun_install.sh\t\t\t\t\t\t>> %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/kill_all.sh\t\t\t\t\t\t\t>> %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %GW_Home%/deploy_and_start_ctd_on_boot.sh\t\t>> %temp%\\rpigatewayautorunx.tmp\n%PUTTY_CMD% -m\t\t\t\t\t\t\t\t\t\t\t\t\t   %temp%\\rpigatewayautorunx.tmp\n\necho Run deploy_next.sh for any supplementary sensor files\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/deploy_and_start_ctd_on_boot.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n\n#\n# the standard account for a Raspberry pi board is 'pi'\n# please change as needed across code base\n#\nexport GW_ACCOUNT_HOME=/home/pi\nexport GW_HOME=$GW_ACCOUNT_HOME/ctdgtwy\nexport LOGS=$GW_HOME/logs\nexport STAGING=$GW_HOME/staging\n\necho \"$(date) => deploy_and_start_ctd_on_boot.sh: started\" >> $GW_HOME/boot_sequence.log\n#\n#if [ -f $GW_HOME/booting.log ];\n#then\n#\techo \"$(date) => deploy_and_start_ctd_on_boot.sh: called from rc.local in boot sequence\" >> $GW_HOME/boot_sequence.log\n#    # deploy_and_start_ctd_on_boot.sh run from rc.local in boot sequence, nothing should need to be killed\n#    # need to delete file so subsequent runs from prompt ok.\n#    rm -f $GW_HOME/booting.log\n#else\n#\techo \"$(date) => deploy_and_start_ctd_on_boot.sh: called from command line, not boot sequence\" >> $GW_HOME/boot_sequence.log\n    # autorun_once.sh run from command prompt, need to kill any pre-running services\n\t# Kill all mono processes and GatewayService as well, kill the monitoring process that is performing a sleep\n\techo \"Trying to kill all mono processes...\"\n\tfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'mono'           | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done\n\tfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'gatewayservice' | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done\n\tfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'sleep'          | awk '{ print $2;}'`; do sudo kill -9 $KILLPID; done\n#fi\n\necho \"Trying to delete lock file if there is any...\"\nsudo rm -f /tmp/Microsoft.ConnectTheDots.GatewayService.exe.lock\n\necho updating files...\nfind $GW_HOME/ -maxdepth 1 \\! -name 'deploy_and_start_ctd_on_boot.sh' -type f -delete\n\ncp $STAGING/* $GW_HOME/\necho \"$(date) => deploy_and_start_ctd_on_boot: creating autorun.sh from template\" >> $GW_HOME/boot_sequence.log\nrm $GW_HOME/autorun.sh\nmv $GW_HOME/autorun_install.sh $GW_HOME/autorun.sh\n\necho \"$(date) => deploy_and_start_ctd_on_boot: calling autorun.sh\" >> $GW_HOME/boot_sequence.log\necho \"Starting host processes...\"\nsudo $GW_HOME/autorun.sh\n\necho \"$(date) => deploy_and_start_ctd_on_boot: finished\" >> $GW_HOME/boot_sequence.log\n#\n# Add the below line to /etc/rc.local\n#\n# the standard account for a Raspberry pi board is 'pi'\n# please change as needed across code base\n#\n#   export GW_ACCOUNT_HOME=/home/pi\n#   export GW_HOME=$GW_ACCOUNT_HOME/ctdgtwy\n#   if [ ! -d $GW_HOME/logs ] \n#     then\n#       sudo mkdir $GW_HOME/logs \n#   fi\n#   sudo echo \"$(date) booting...\" >> $GW_HOME/logs/booting.log \n#   $(cd $GW_HOME/ ; sh deploy_and_start_ctd_on_boot.sh) &\n#\n# and don't forget to make autorun.sh executable (sudo chmod 755 autorun.sh)\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/deploy_next.cmd",
    "content": "@echo off\nREM //  ---------------------------------------------------------------------------------\nREM //  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\nREM // \nREM //  The MIT License (MIT)\nREM // \nREM //  Permission is hereby granted, free of charge, to any person obtaining a copy\nREM //  of this software and associated documentation files (the \"Software\"), to deal\nREM //  in the Software without restriction, including without limitation the rights\nREM //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\nREM //  copies of the Software, and to permit persons to whom the Software is\nREM //  furnished to do so, subject to the following conditions:\nREM // \nREM //  The above copyright notice and this permission notice shall be included in\nREM //  all copies or substantial portions of the Software.\nREM // \nREM //  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nREM //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nREM //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nREM //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nREM //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nREM //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nREM //  THE SOFTWARE.\nREM //  ---------------------------------------------------------------------------------\n\nset puttydir=\"C:\\Program Files (x86)\\PuTTY\\\"\nset prjdir=..\\..\\\nset scdir=%prjdir%Scripts\\ScriptConverter\\bin\\\nset rpi_ip=192.168.1.213\nset rpi_usr=pi\nset rpi_pw=raspberry\nset Configuration=Debug\nset GW_Home=ctdgtwy\nset Staging=%GW_Home%/staging\nset PUTTY_CMD=%puttydir%putty %rpi_usr%@%rpi_ip% -pw %rpi_pw% \nset PSCP_CMD=%puttydir%pscp -pw %rpi_pw% \nset PYTHON_SCRIPTS_DIR=..\\..\\..\\..\\GatewayConnectedDevices\\\nset BT_PYTHON_SCRIPT_DIR=%PYTHON_SCRIPTS_DIR%BluetoothUARTExample\\\nset BT_USB_PYTHON_SCRIPT_DIR=%PYTHON_SCRIPTS_DIR%BtUSB_2_BtUART_Example\\\nset WENSN_PYTHON_SCRIPT_DIR=%PYTHON_SCRIPTS_DIR%WensnSoundLevelMeter\\WensnPiVS01\\\necho editing line endings for Pi\n\n%scdir%%Configuration%\\ScriptConverter.exe \"autorunWensnSoundSensor.sh\" \n%scdir%%Configuration%\\ScriptConverter.exe \"autorunUartBT.sh\" \n%scdir%%Configuration%\\ScriptConverter.exe \"autorunUart2UsbBt.sh\" \n%scdir%%Configuration%\\ScriptConverter.exe \"setup_autostart.sh\" \n%scdir%%Configuration%\\ScriptConverter.exe \"setupWifi.py\" \n\necho Copying file that starts up python script to read USB port connected to Wensn and format as JSON\n%PSCP_CMD% %WENSN_PYTHON_SCRIPT_DIR%WensnPiVS01.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% Modified\\autorunWensnSoundSensor.sh  %rpi_usr%@%rpi_ip%:%Staging%/\n\necho Copying file that starts up python script to read UART port connected to BT and format as JSON\n%PSCP_CMD% %BT_PYTHON_SCRIPT_DIR%BluetoothUARTExample.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% %BT_PYTHON_SCRIPT_DIR%SetupSerialBaudRate.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% Modified\\autorunUartBT.sh  %rpi_usr%@%rpi_ip%:%Staging%/\n\necho Copying file that starts up python script to read USB BT module and format as JSON\n%PSCP_CMD% %BT_USB_PYTHON_SCRIPT_DIR%BtUSB_2_BtUART_Example.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% %BT_USB_PYTHON_SCRIPT_DIR%TestServer.py  %rpi_usr%@%rpi_ip%:%Staging%/\n%PSCP_CMD% Modified\\autorunUart2UsbBt.sh  %rpi_usr%@%rpi_ip%:%Staging%/\n\necho Copying file that sets up gateway on start up when launched\n%PSCP_CMD% Modified\\setup_autostart.sh  %rpi_usr%@%rpi_ip%:%Staging%/\n\necho Copying file that sets up wi fi when launched\n%PSCP_CMD% Modified\\setupWifi.py  %rpi_usr%@%rpi_ip%:%Staging%/\n\necho Marking autorunWensnSoundSensor.sh and autorunUartBT.sh as executables\ndel /f %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/autorunWensnSoundSensor.sh     >> %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/autorunUartBT.sh               >> %temp%\\rpigatewayautorunx.tmp\necho chmod 755 %Staging%/autorunUart2UsbBt.sh           >> %temp%\\rpigatewayautorunx.tmp\n%PUTTY_CMD% -m                                    %temp%\\rpigatewayautorunx.tmp"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/kill_all.sh",
    "content": "#  ---------------------------------------------------------------------------------\n#  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n# \n#  The MIT License (MIT)\n# \n#  Permission is hereby granted, free of charge, to any person obtaining a copy\n#  of this software and associated documentation files (the \"Software\"), to deal\n#  in the Software without restriction, including without limitation the rights\n#  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n#  copies of the Software, and to permit persons to whom the Software is\n#  furnished to do so, subject to the following conditions:\n# \n#  The above copyright notice and this permission notice shall be included in\n#  all copies or substantial portions of the Software.\n# \n#  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n#  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n#  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n#  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n#  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n#  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n#  THE SOFTWARE.\n#  ---------------------------------------------------------------------------------\n#!/bin/bash\n\n#\n# to kill the monitor we need to kill the proces that is sleeping, and python, mono as well\n#\nfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'sleep' | awk '{ print $2;}'`; do sudo kill -9 $KILLPID; done\nfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'mono'  | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done\nfor KILLPID in `ps axo pid,ppid,cmd | grep -i 'python'  | awk '{ print $1;}'`; do sudo kill -9 $KILLPID; done"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/setupWifi.py",
    "content": "# https://learn.adafruit.com/adafruits-raspberry-pi-lesson-3-network-setup/setting-up-wifi-with-occidentalis\nimport sys\n\ninterfacesFile = '/etc/network/interfaces'\nallowHotPlug = 'allow-hotplug wlan0\\n'\nautoWlan = 'auto wlan0\\n'\nwlanDhcp = 'iface wlan0 inet dhcp\\n'\n\ndef main(argv):\n    print 'Please run this script with sudo!'\n    if (len(argv) < 3):\n        print 'Not enough args, please provide ssid and password for wifi'\n        return\n    \n    ssid = argv[1]\n    psk = argv[2]\n    wpaSsidStr = '\\twpa-ssid ' + '\\\"' + ssid + '\\\"' + '\\n'\n    wpaPskStr = '\\twpa-psk ' + '\\\"' + psk + '\\\"' + '\\n'\n    \n    interfacesFd = open(interfacesFile, \"a\")\n    interfacesFd.write(allowHotPlug)\n    interfacesFd.write(autoWlan)\n    interfacesFd.write('\\n')\n    interfacesFd.write(wlanDhcp)\n    interfacesFd.write(wpaSsidStr)\n    interfacesFd.write(wpaPskStr)\n    interfacesFd.close()\n    \n    print 'Done!'\n\nif __name__ == \"__main__\":\n    main(sys.argv)"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/RaspberryPi/setup_autostart.sh",
    "content": "#!/bin/sh -e\n\nsudo cp $HOME/ctdgtwy/deploy_and_start_ctd_on_boot.sh /etc/init.d/\nsudo update-rc.d deploy_and_start_ctd_on_boot.sh defaults\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/ScriptConverter/App.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<configuration>\n    <startup> \n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5\" />\n    </startup>\n</configuration>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/ScriptConverter/Program.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace ScriptConverter\n{\n    using System;\n    using System.IO;\n\n    //--//\n\n    class Program\n    {\n        const byte CR_CODE = 0x0D;\n        const byte LF_CODE = 0x0A;\n\n        //--//\n\n        static void Main( string[] args )\n        {\n            foreach ( string t in args )\n            {\n                try\n                {\n                    string path = t;\n                    string directory = Path.GetDirectoryName( path );\n                    string file = Path.GetFileName( path );\n\n                    Console.Out.WriteLine( \"Processing dos2unix for \" + file );\n                    \n                    string newDirectory = Path.Combine( directory, \"Modified\" );\n                    if ( !Directory.Exists( newDirectory ) )\n                    {\n                        Directory.CreateDirectory( newDirectory );\n                    }\n                    Dos2Unix( path, Path.Combine( newDirectory, file ) );\n                }\n                catch ( Exception ex )\n                {\n                    Console.Out.WriteLine( \"Exception on dos2unix: \" + ex.Message );\n                }\n            }\n        }\n\n        private static void Dos2Unix( string inputFileName, string outputFileName )\n        {\n            byte[] data = File.ReadAllBytes( inputFileName );\n            using( FileStream outputStream = File.OpenWrite( outputFileName ) )\n            {\n                BinaryWriter file = new BinaryWriter( outputStream );\n                int position = 0;\n                int index;\n                do\n                {\n                    index = Array.IndexOf( data, CR_CODE, position );\n                    if( ( index >= 0 ) && ( data[ index + 1 ] == LF_CODE ) )\n                    {\n                        // Write before the CR\n                        file.Write( data, position, index - position );\n                        // from LF\n                        position = index + 1;\n                    }\n                }\n                while( index > 0 );\n                file.Write( data, position, data.Length - position );\n                outputStream.SetLength( outputStream.Position );\n                outputStream.Flush( );\n                outputStream.Close( );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/ScriptConverter/Properties/AssemblyInfo.cs",
    "content": "﻿using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"ScriptConverter\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"ScriptConverter\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"ddb7bb09-4837-4bcd-ae92-076956981031\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Scripts/ScriptConverter/ScriptConverter.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8D4BB859-6779-4D53-86C6-79712956A772}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>ScriptConverter</RootNamespace>\n    <AssemblyName>ScriptConverter</AssemblyName>\n    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <startup>\n    <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5.2\"/>\n  </startup>\n\n  <appSettings>\n    <!-- insert here the type of process to monitor: 'service' or 'process' -->\n    <!-- <add key=\"TargetType\" value=\"service\" /> -->\n    <add key=\"TargetType\" value=\"process\"/>\n    <!-- insert here the name of the process to monitor, no extension, no path -->\n    <add key=\"MonitoringTarget\" value=\"BBUpdate\"/>\n    <!-- insert here the cmd to launch the monitored process, with fully specified path if needed -->\n    <!-- for a service, this parameter has no influence -->\n    <add key=\"TargetExecutable\" value=\"notepad\"/>\n  </appSettings>\n\n</configuration>\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/IMonitor.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayServiceMonitor\n{\n\n    //--//\n\n    interface IMonitor\n    {\n        bool Lock( string monitoringTarget );\n\n        void Monitor( );\n\n        void QuitMonitor( );\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/Microsoft.ConnectTheDots.ServiceMonitor.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{7DB057F5-2B79-4822-9A3F-1B7F30EB552F}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.GatewayServiceMonitor</RootNamespace>\n    <AssemblyName>Microsoft.ConnectTheDots.GatewayServiceMonitor</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Devices.Client.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.Devices.Client.PCL.1.0.5\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Client.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Mono.Security.3.2.3.0\\lib\\net45\\Mono.Security.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"NLog, Version=3.2.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\NLog.3.2.0.0\\lib\\net45\\NLog.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PCLCrypto.1.0.86\\lib\\net40-Client\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.ServiceProcess\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"Validation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Validation.2.0.6.15003\\lib\\portable-net40+sl50+win+wpa81+wp80+Xamarin.iOS10+MonoAndroid10+MonoTouch10\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"IMonitor.cs\" />\n    <Compile Include=\"Monitor.cs\" />\n    <Compile Include=\"ProcessMonitor.cs\" />\n    <Compile Include=\"MonitorProgram.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"ServiceMonitor.cs\" />\n    <Compile Include=\"Utils\\Logger\\Logger.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n    <Content Include=\"NLog.config\">\n      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\n    </Content>\n    <None Include=\"NLog.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{e14d1c61-1979-452e-be8b-0303a95ef764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup />\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/Monitor.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayServiceMonitor\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Linq;\n    using System.Text;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    internal abstract class AbstractMonitor : IMonitor\n    {\n        public const string ProcessType = \"process\";\n        public const string ServiceType = \"service\";\n\n        //--//\n\n        protected AbstractMonitor( ILogger logger )\n        {\n            Logger = SafeLogger.FromLogger( logger );\n        }\n\n        protected ILogger Logger { get; private set; }\n\n        public int MonitoringInterval { get; set; }\n\n        public abstract bool Lock( string monitoringTarget );\n\n        public abstract void Monitor();\n\n        public abstract void QuitMonitor();\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/MonitorProgram.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayServiceMonitor\n{\n    using System;\n    using System.Configuration;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    class MonitorProgram\n    {\n        private const int MONITORING_INTERVAL = 1000; // ms\n\n        //--//\n\n        static void Main( string[] args )\n        {\n            ILogger logger = SafeLogger.FromLogger( MonitorLogger.Instance );\n\n            // try and open the GatewayService process\n            string monitoringTarget = ConfigurationManager.AppSettings.Get( \"MonitoringTarget\" );\n            string monitoringExecutable = ConfigurationManager.AppSettings.Get( \"TargetExecutable\" );\n            string type = ConfigurationManager.AppSettings.Get( \"TargetType\" );\n\n            if(String.IsNullOrEmpty( monitoringTarget ) || String.IsNullOrEmpty( monitoringExecutable ))\n            {\n                logger.LogError( \"Error in configuration, cannot start monitoring\" );\n\n                return;\n            }\n            if(String.IsNullOrEmpty( type ))\n            {\n                logger.LogInfo( \"No type specified, defaulting to 'process'\" );\n\n                type = AbstractMonitor.ProcessType;\n\n                return;\n            }\n\n            AbstractMonitor monitor = null;\n\n            switch(type)\n            {\n                case AbstractMonitor.ProcessType:\n                    monitor = new ProcessMonitor( monitoringExecutable, logger );\n                    break;\n                case AbstractMonitor.ServiceType:\n                    monitor = new ServiceMonitor( monitoringTarget, logger );\n                    break;\n                default:\n                    throw new ArgumentException( String.Format( \"Monitoring type {0} is unrecognized\", type ) ); \n            }\n\n            monitor.MonitoringInterval = MONITORING_INTERVAL;\n\n            if(monitor.Lock( monitoringTarget ))\n            {\n                monitor.Monitor();\n            }\n        }\n\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/NLog.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<nlog xmlns=\"http://www.nlog-project.org/schemas/NLog.xsd\"\n      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n\n  <!-- \n  See https://github.com/nlog/nlog/wiki/Configuration-file \n  for information on customizing logging rules and outputs.\n   -->\n  <targets>\n    <!-- add your targets here -->\n    \n    <!--\n    <target xsi:type=\"File\" name=\"f\" fileName=\"${basedir}/logs/${shortdate}.log\"\n            layout=\"${longdate} ${uppercase:${level}} ${message}\" />\n    -->\n  </targets>\n\n  <rules>\n    <!-- add your logging rules here -->\n    \n    <!--\n    <logger name=\"*\" minlevel=\"Trace\" writeTo=\"f\" />\n    -->\n  </rules>\n</nlog>"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/NLog.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema id=\"NLog\" targetNamespace=\"http://www.nlog-project.org/schemas/NLog.xsd\" elementFormDefault=\"qualified\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.nlog-project.org/schemas/NLog.xsd\">\n  <xs:element name=\"nlog\" type=\"NLogConfiguration\" />\n  <xs:complexType name=\"NLogConfiguration\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"extensions\" type=\"NLogExtensions\" />\n      <xs:element name=\"include\" type=\"NLogInclude\" />\n      <xs:element name=\"variable\" type=\"NLogVariable\" />\n      <xs:element name=\"targets\" type=\"NLogTargets\" />\n      <xs:element name=\"rules\" type=\"NLogRules\" />\n      <xs:element name=\"time\" type=\"TimeSource\" />\n    </xs:choice>\n    <xs:attribute name=\"autoReload\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Watch config file for changes and reload automatically.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogToConsole\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Print internal NLog messages to the console. Default value is: false</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogToConsoleError\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Print internal NLog messages to the console error output. Default value is: false</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogFile\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Write internal NLog messages to the specified file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogLevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Log level threshold for internal log messages. Default value is: Info.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"globalThreshold\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Global log level threshold for application log messages. Messages below this level won't be logged..</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"throwExceptions\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Pass NLog internal exceptions to the application. Default value is: false.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogTargets\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"default-wrapper\" type=\"WrapperTargetBase\" />\n      <xs:element name=\"default-target-parameters\" type=\"Target\" />\n      <xs:element name=\"target\" type=\"Target\" />\n      <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" />\n      <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" />\n    </xs:choice>\n    <xs:attribute name=\"async\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogRules\">\n    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"logger\" type=\"NLogLoggerRule\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:complexType name=\"NLogExtensions\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"add\" type=\"NLogExtensionsAdd\" />\n    </xs:choice>\n  </xs:complexType>\n  <xs:complexType name=\"NLogExtensionsAdd\">\n    <xs:attribute name=\"prefix\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Prefix for targets/layout renderers/filters/conditions loaded from this assembly.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"assemblyFile\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Load NLog extensions from the specified file (*.dll)</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"assembly\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Load NLog extensions from the specified assembly. Assembly name should be fully qualified.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogLoggerRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"filters\" type=\"NLogFilters\" />\n    </xs:choice>\n    <xs:attribute name=\"name\" use=\"optional\">\n      <xs:annotation>\n        <xs:documentation>Name of the logger. May include '*' character which acts like a wildcard. Allowed forms are: *, Name, *Name, Name* and *Name*</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"levels\" type=\"NLogLevelList\">\n      <xs:annotation>\n        <xs:documentation>Comma separated list of levels that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"minlevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Minimum level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"maxlevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Maximum level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"level\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"writeTo\" type=\"NLogTargetIDList\">\n      <xs:annotation>\n        <xs:documentation>Comma separated list of target names.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"final\" type=\"xs:boolean\" default=\"false\">\n      <xs:annotation>\n        <xs:documentation>Ignore further rules if this one matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogFilters\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"when\" type=\"when\" />\n      <xs:element name=\"whenContains\" type=\"whenContains\" />\n      <xs:element name=\"whenEqual\" type=\"whenEqual\" />\n      <xs:element name=\"whenNotContains\" type=\"whenNotContains\" />\n      <xs:element name=\"whenNotEqual\" type=\"whenNotEqual\" />\n    </xs:choice>\n  </xs:complexType>\n  <xs:simpleType name=\"NLogLevel\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Off\" />\n      <xs:enumeration value=\"Trace\" />\n      <xs:enumeration value=\"Debug\" />\n      <xs:enumeration value=\"Info\" />\n      <xs:enumeration value=\"Warn\" />\n      <xs:enumeration value=\"Error\" />\n      <xs:enumeration value=\"Fatal\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLogLevelList\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\"(|Trace|Debug|Info|Warn|Error|Fatal)(,(Trace|Debug|Info|Warn|Error|Fatal))*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLogInclude\">\n    <xs:attribute name=\"file\" type=\"SimpleLayoutAttribute\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Name of the file to be included. The name is relative to the name of the current config file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"ignoreErrors\" type=\"xs:boolean\" use=\"optional\" default=\"false\">\n      <xs:annotation>\n        <xs:documentation>Ignore any errors in the include file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogVariable\">\n    <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Variable name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"value\" type=\"SimpleLayoutAttribute\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Variable value.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:simpleType name=\"NLogTargetIDList\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\"(|([a-zA-Z][a-zA-Z0-9_\\-]*))(,([a-zA-Z][a-zA-Z0-9_\\-]*))*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"Target\" abstract=\"true\"></xs:complexType>\n  <xs:complexType name=\"TargetRef\">\n    <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\" />\n  </xs:complexType>\n  <xs:complexType name=\"WrapperTargetBase\" abstract=\"true\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"target\" type=\"Target\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n        </xs:choice>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"CompoundTargetBase\" abstract=\"true\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"target\" type=\"Target\" minOccurs=\"1\" maxOccurs=\"unbounded\" />\n          <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n        </xs:choice>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Layout\"></xs:complexType>\n  <xs:complexType name=\"Filter\" abstract=\"true\"></xs:complexType>\n  <xs:complexType name=\"TimeSource\" abstract=\"true\"></xs:complexType>\n  <xs:simpleType name=\"SimpleLayoutAttribute\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\".*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"Condition\">\n    <xs:restriction base=\"xs:string\">\n      <xs:minLength value=\"1\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"AspNetBufferingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"bufferGrowLimit\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"growBufferAsNeeded\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferGrowLimit\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of log events that the buffer can keep.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events to be buffered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"growBufferAsNeeded\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether buffer should grow as needed.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AspNetTrace\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AspResponse\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"addComments\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"addComments\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to add &lt;!-- --&gt; comments around all written texts.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AsyncWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"batchSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"overflowAction\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\" />\n          <xs:element name=\"queueLimit\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"timeToSleepBetweenBatches\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"batchSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events that should be processed in a batch by the lazy writer thread.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"overflowAction\" type=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when the lazy writer thread request queue count exceeds the set limit.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"queueLimit\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Limit on the number of requests in the lazy writer thread request queue.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"timeToSleepBetweenBatches\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Time in milliseconds to sleep between batches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Grow\" />\n      <xs:enumeration value=\"Discard\" />\n      <xs:enumeration value=\"Block\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"AutoFlushWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"BufferingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"flushTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"slidingTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events to be buffered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"flushTimeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"slidingTimeout\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use sliding timeout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Chainsaw\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"includeNLogData\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeSourceInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"ndcItemSeparator\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.NLogViewerParameterInfo\" />\n          <xs:element name=\"includeCallSite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"appInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"includeNdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeMdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNLogData\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeSourceInfo\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ndcItemSeparator\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>NDC item separator.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeCallSite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"appInfo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeMdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.NetworkTargetOverflowAction\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Error\" />\n      <xs:enumeration value=\"Split\" />\n      <xs:enumeration value=\"Discard\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.NLogViewerParameterInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Viewer parameter name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"ColoredConsole\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"useDefaultRowHighlightingRules\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"highlight-row\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.ConsoleRowHighlightingRule\" />\n          <xs:element name=\"highlight-word\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.ConsoleWordHighlightingRule\" />\n          <xs:element name=\"errorStream\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useDefaultRowHighlightingRules\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use default row highlighting rules.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"errorStream\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the error stream (stderr) should be used instead of the output stream (stdout).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.ConsoleOutputColor\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Black\" />\n      <xs:enumeration value=\"DarkBlue\" />\n      <xs:enumeration value=\"DarkGreen\" />\n      <xs:enumeration value=\"DarkCyan\" />\n      <xs:enumeration value=\"DarkRed\" />\n      <xs:enumeration value=\"DarkMagenta\" />\n      <xs:enumeration value=\"DarkYellow\" />\n      <xs:enumeration value=\"Gray\" />\n      <xs:enumeration value=\"DarkGray\" />\n      <xs:enumeration value=\"Blue\" />\n      <xs:enumeration value=\"Green\" />\n      <xs:enumeration value=\"Cyan\" />\n      <xs:enumeration value=\"Red\" />\n      <xs:enumeration value=\"Magenta\" />\n      <xs:enumeration value=\"Yellow\" />\n      <xs:enumeration value=\"White\" />\n      <xs:enumeration value=\"NoChange\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.ConsoleRowHighlightingRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n      <xs:element name=\"foregroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n    </xs:choice>\n    <xs:attribute name=\"condition\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition that must be met in order to set the specified foreground and background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"foregroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Foreground color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.ConsoleWordHighlightingRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"regex\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"wholeWords\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n      <xs:element name=\"foregroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n    </xs:choice>\n    <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"regex\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"wholeWords\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"foregroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Foreground color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Console\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"error\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"error\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to send the log messages to the standard error instead of the standard output.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Database\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"connectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"connectionStringName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"dbDatabase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbHost\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbPassword\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbProvider\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"dbUserName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"useTransactions\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"installConnectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"install-command\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseCommandInfo\" />\n          <xs:element name=\"uninstall-command\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseCommandInfo\" />\n          <xs:element name=\"commandText\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"commandType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Data.CommandType\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseParameterInfo\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionString\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionStringName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the connection string (as specified in &lt;connectionStrings&gt; configuration section.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbDatabase\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database name. If the ConnectionString is not provided this value will be used to construct the \"Database=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbHost\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database host name. If the ConnectionString is not provided this value will be used to construct the \"Server=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbPassword\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database password. If the ConnectionString is not provided this value will be used to construct the \"Password=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbProvider\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the database provider.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbUserName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database user name. If the ConnectionString is not provided this value will be used to construct the \"User ID=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep the database connection open between the log events.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useTransactions\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use database transactions. Some data providers require this.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"installConnectionString\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"commandText\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text of the SQL command to be run on each log level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"commandType\" type=\"System.Data.CommandType\">\n          <xs:annotation>\n            <xs:documentation>Type of the SQL command to be run on each log level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Data.CommandType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Text\" />\n      <xs:enumeration value=\"StoredProcedure\" />\n      <xs:enumeration value=\"TableDirect\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.DatabaseCommandInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"commandType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Data.CommandType\" />\n      <xs:element name=\"connectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"ignoreFailures\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseParameterInfo\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n    </xs:choice>\n    <xs:attribute name=\"commandType\" type=\"System.Data.CommandType\">\n      <xs:annotation>\n        <xs:documentation>Type of the command.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"connectionString\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Connection string to run the command against. If not provided, connection string from the target is used.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"ignoreFailures\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore failures.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Command text.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.DatabaseParameterInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"precision\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:byte\" />\n      <xs:element name=\"scale\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:byte\" />\n      <xs:element name=\"size\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Database parameter name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"precision\" type=\"xs:byte\">\n      <xs:annotation>\n        <xs:documentation>Database parameter precision.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"scale\" type=\"xs:byte\">\n      <xs:annotation>\n        <xs:documentation>Database parameter scale.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"size\" type=\"xs:integer\">\n      <xs:annotation>\n        <xs:documentation>Database parameter size.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Debugger\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Debug\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"EventLog\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"category\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"eventId\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"log\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"machineName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"source\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"category\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout that renders event Category.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"eventId\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout that renders event ID.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"log\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Event Log to write to. This can be System, Application or any user-defined name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"machineName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the machine on which Event Log service is running.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"source\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Value to be used as the event Source.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FallbackGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"returnToFirstOnSuccess\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"returnToFirstOnSuccess\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to return to the first target after any successful write.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"File\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"lineEnding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.LineEndingMode\" />\n          <xs:element name=\"archiveNumbering\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ArchiveNumberingMode\" />\n          <xs:element name=\"archiveFileName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"archiveEvery\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.FileArchivePeriod\" />\n          <xs:element name=\"archiveAboveSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:long\" />\n          <xs:element name=\"maxArchiveFiles\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"forceManaged\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"fileAttributes\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Win32FileAttributes\" />\n          <xs:element name=\"replaceFileContentsOnEachWrite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"deleteOldFileOnStartup\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"fileName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"archiveDateFormat\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"archiveOldFileOnStartup\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"createDirs\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"enableFileDelete\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"openFileCacheTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"networkWrites\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"keepFileOpen\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"concurrentWrites\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"concurrentWriteAttempts\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"concurrentWriteAttemptDelay\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"openFileCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"autoFlush\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>File encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"lineEnding\" type=\"NLog.Targets.LineEndingMode\">\n          <xs:annotation>\n            <xs:documentation>Line ending mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveNumbering\" type=\"NLog.Targets.ArchiveNumberingMode\">\n          <xs:annotation>\n            <xs:documentation>Way file archives are numbered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveFileName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the file to be used for an archive.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveEvery\" type=\"NLog.Targets.FileArchivePeriod\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to automatically archive log files every time the specified time passes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveAboveSize\" type=\"xs:long\">\n          <xs:annotation>\n            <xs:documentation>Size in bytes above which log files will be automatically archived.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxArchiveFiles\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of archive files that should be kept.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"forceManaged\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Gets ors set a value indicating whether a managed file stream is forced, instead of used the native implementation.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"fileAttributes\" type=\"NLog.Targets.Win32FileAttributes\">\n          <xs:annotation>\n            <xs:documentation>File attributes (Windows only).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"replaceFileContentsOnEachWrite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to replace file contents on each write instead of appending log message at the end.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"deleteOldFileOnStartup\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to delete old log file on startup.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"fileName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the file to write to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveDateFormat\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Value specifying the date format to use when archving files.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveOldFileOnStartup\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to archive old log file on startup.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"createDirs\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to create directories if they don't exist.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"enableFileDelete\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to enable log file(s) to be deleted.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"openFileCacheTimeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"networkWrites\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on different network hosts.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepFileOpen\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep log file open instead of opening and closing it on each logging event.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWrites\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on the same host.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWriteAttempts\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWriteAttemptDelay\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Delay in milliseconds to wait before attempting to write to the file again.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Log file buffer size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"openFileCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoFlush\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to automatically flush the file buffers after each log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.LineEndingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Default\" />\n      <xs:enumeration value=\"CRLF\" />\n      <xs:enumeration value=\"CR\" />\n      <xs:enumeration value=\"LF\" />\n      <xs:enumeration value=\"None\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.ArchiveNumberingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Sequence\" />\n      <xs:enumeration value=\"Rolling\" />\n      <xs:enumeration value=\"Date\" />\n      <xs:enumeration value=\"DateAndSequence\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.FileArchivePeriod\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"None\" />\n      <xs:enumeration value=\"Year\" />\n      <xs:enumeration value=\"Month\" />\n      <xs:enumeration value=\"Day\" />\n      <xs:enumeration value=\"Hour\" />\n      <xs:enumeration value=\"Minute\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Win32FileAttributes\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"ReadOnly\" />\n      <xs:enumeration value=\"Hidden\" />\n      <xs:enumeration value=\"System\" />\n      <xs:enumeration value=\"Archive\" />\n      <xs:enumeration value=\"Device\" />\n      <xs:enumeration value=\"Normal\" />\n      <xs:enumeration value=\"Temporary\" />\n      <xs:enumeration value=\"SparseFile\" />\n      <xs:enumeration value=\"ReparsePoint\" />\n      <xs:enumeration value=\"Compressed\" />\n      <xs:enumeration value=\"NotContentIndexed\" />\n      <xs:enumeration value=\"Encrypted\" />\n      <xs:enumeration value=\"WriteThrough\" />\n      <xs:enumeration value=\"NoBuffering\" />\n      <xs:enumeration value=\"DeleteOnClose\" />\n      <xs:enumeration value=\"PosixSemantics\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"FilteringWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"condition\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Condition expression. Log events who meet this condition will be forwarded to the wrapped target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FormControl\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"append\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"controlName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"formName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"reverseOrder\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"append\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether log text should be appended to the text of the control instead of overwriting it.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"controlName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of control to which NLog will log write log text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Form on which the control is located.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"reverseOrder\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Whether new log entry are added to the start or the end of the control</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"ImpersonatingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"domain\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"impersonationLevel\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\" />\n          <xs:element name=\"logOnProvider\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.LogOnProviderType\" />\n          <xs:element name=\"logOnType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.SecurityLogOnType\" />\n          <xs:element name=\"password\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"revertToSelf\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"userName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"domain\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Windows domain name to change context to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"impersonationLevel\" type=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\">\n          <xs:annotation>\n            <xs:documentation>Required impersonation level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"logOnProvider\" type=\"NLog.Targets.Wrappers.LogOnProviderType\">\n          <xs:annotation>\n            <xs:documentation>Type of the logon provider.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"logOnType\" type=\"NLog.Targets.Wrappers.SecurityLogOnType\">\n          <xs:annotation>\n            <xs:documentation>Logon Type.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"password\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>User account password.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"revertToSelf\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to revert to the credentials of the process instead of impersonating another user.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"userName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Username to change context to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Anonymous\" />\n      <xs:enumeration value=\"Identification\" />\n      <xs:enumeration value=\"Impersonation\" />\n      <xs:enumeration value=\"Delegation\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.LogOnProviderType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Default\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.SecurityLogOnType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Interactive\" />\n      <xs:enumeration value=\"Network\" />\n      <xs:enumeration value=\"Batch\" />\n      <xs:enumeration value=\"Service\" />\n      <xs:enumeration value=\"NetworkClearText\" />\n      <xs:enumeration value=\"NewCredentials\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"LogReceiverService\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"endpointAddress\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"endpointConfigurationName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"clientId\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"includeEventProperties\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n          <xs:element name=\"useBinaryEncoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"endpointAddress\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Endpoint address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"endpointConfigurationName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the endpoint configuration in WCF configuration file.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"clientId\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Client ID.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeEventProperties\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include per-event properties in the payload sent to the server.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useBinaryEncoding\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use binary message encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.MethodCallParameter\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"type\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Name of the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"type\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Type of the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Mail\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"html\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"addNewLines\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"bcc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"to\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"cc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"body\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"subject\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"from\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"replaceNewlineWithBrTagInHtml\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"priority\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"timeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"smtpServer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"smtpAuthentication\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.SmtpAuthenticationMode\" />\n          <xs:element name=\"smtpUserName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"smtpPassword\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"enableSsl\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"smtpPort\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"useSystemNetMailSettings\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"html\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to send message as HTML instead of plain text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used for sending e-mail.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"addNewLines\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to add new lines between log entries.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bcc\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"to\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"cc\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"body\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Mail message body (repeated for each log message send in one mail).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"subject\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Mail subject.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"from\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Sender's email address (e.g. joe@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"replaceNewlineWithBrTagInHtml\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether NewLine characters in the body should be replaced with  tags.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"priority\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Priority used for sending mails.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"timeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Indicates the SMTP client timeout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpServer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>SMTP Server to be used for sending.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpAuthentication\" type=\"NLog.Targets.SmtpAuthenticationMode\">\n          <xs:annotation>\n            <xs:documentation>SMTP Authentication mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpUserName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Username used to connect to SMTP server (used when SmtpAuthentication is set to \"basic\").</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpPassword\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Password used to authenticate against SMTP server (used when SmtpAuthentication is set to \"basic\").</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"enableSsl\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpPort\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Port number that SMTP Server is listening on.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useSystemNetMailSettings\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the default Settings from System.Net.MailSettings should be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.SmtpAuthenticationMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"None\" />\n      <xs:enumeration value=\"Basic\" />\n      <xs:enumeration value=\"Ntlm\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"Memory\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MessageBox\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"caption\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"caption\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Message box title.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MSMQ\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"useXmlEncoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"checkIfQueueExists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"createQueueIfNotExists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"label\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"queue\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"recoverable\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used when writing text to the queue.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useXmlEncoding\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use the XML format when serializing message. This will also disable creating queues.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"checkIfQueueExists\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to check if a queue exists before writing to it.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"createQueueIfNotExists\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to create the queue if it doesn't exists.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"label\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Label to associate with each message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"queue\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the queue to write to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"recoverable\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use recoverable messages (with guaranteed delivery).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MethodCall\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"className\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"methodName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"className\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Class name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"methodName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Method name. The method must be public and static.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Network\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLogViewer\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"includeNLogData\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeSourceInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"ndcItemSeparator\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.NLogViewerParameterInfo\" />\n          <xs:element name=\"includeCallSite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"appInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"includeNdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeMdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNLogData\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeSourceInfo\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ndcItemSeparator\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>NDC item separator.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeCallSite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"appInfo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeMdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Null\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"formatMessage\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formatMessage\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to perform layout calculation.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"OutputDebugString\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"PerfCounter\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"autoCreate\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"categoryName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterHelp\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Diagnostics.PerformanceCounterType\" />\n          <xs:element name=\"instanceName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoCreate\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether performance counter should be automatically created.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"categoryName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the performance counter category.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterHelp\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Counter help text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the performance counter.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterType\" type=\"System.Diagnostics.PerformanceCounterType\">\n          <xs:annotation>\n            <xs:documentation>Performance counter type.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"instanceName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Performance counter instance name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Diagnostics.PerformanceCounterType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"NumberOfItems32\" />\n      <xs:enumeration value=\"NumberOfItems64\" />\n      <xs:enumeration value=\"NumberOfItemsHEX32\" />\n      <xs:enumeration value=\"NumberOfItemsHEX64\" />\n      <xs:enumeration value=\"RateOfCountsPerSecond32\" />\n      <xs:enumeration value=\"RateOfCountsPerSecond64\" />\n      <xs:enumeration value=\"CountPerTimeInterval32\" />\n      <xs:enumeration value=\"CountPerTimeInterval64\" />\n      <xs:enumeration value=\"RawFraction\" />\n      <xs:enumeration value=\"RawBase\" />\n      <xs:enumeration value=\"AverageTimer32\" />\n      <xs:enumeration value=\"AverageBase\" />\n      <xs:enumeration value=\"AverageCount64\" />\n      <xs:enumeration value=\"SampleFraction\" />\n      <xs:enumeration value=\"SampleCounter\" />\n      <xs:enumeration value=\"SampleBase\" />\n      <xs:enumeration value=\"CounterTimer\" />\n      <xs:enumeration value=\"CounterTimerInverse\" />\n      <xs:enumeration value=\"Timer100Ns\" />\n      <xs:enumeration value=\"Timer100NsInverse\" />\n      <xs:enumeration value=\"ElapsedTime\" />\n      <xs:enumeration value=\"CounterMultiTimer\" />\n      <xs:enumeration value=\"CounterMultiTimerInverse\" />\n      <xs:enumeration value=\"CounterMultiTimer100Ns\" />\n      <xs:enumeration value=\"CounterMultiTimer100NsInverse\" />\n      <xs:enumeration value=\"CounterMultiBase\" />\n      <xs:enumeration value=\"CounterDelta32\" />\n      <xs:enumeration value=\"CounterDelta64\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"PostFilteringWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"defaultFilter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n          <xs:element name=\"when\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.Wrappers.FilteringRule\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"defaultFilter\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Default filter to be applied when no specific rule matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.Wrappers.FilteringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"exists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"filter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n    </xs:choice>\n    <xs:attribute name=\"exists\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition to be tested.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"filter\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Resulting filter to be applied when the condition matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"RandomizeGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RepeatingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"repeatCount\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"repeatCount\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of times to repeat each log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RetryingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"retryCount\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"retryDelayMilliseconds\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"retryCount\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of retries that should be attempted on the wrapped target in case of a failure.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"retryDelayMilliseconds\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Time to wait between retries in milliseconds.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RichTextBox\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"autoScroll\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"controlName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"formName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"height\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"maxLines\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"showMinimized\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"toolWindow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"width\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"row-coloring\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.RichTextBoxRowColoringRule\" />\n          <xs:element name=\"useDefaultRowColoringRules\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"word-coloring\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.RichTextBoxWordColoringRule\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoScroll\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether scroll bar will be moved automatically to show most recent log entries.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"controlName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of RichTextBox to which Nlog will write.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Form on which the control is located. If there is no open form of a specified name than NLog will create a new one.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"height\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Initial height of the form with rich text box.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxLines\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of lines the rich text box will store (or 0 to disable this feature).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"showMinimized\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the created form will be initially minimized.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"toolWindow\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the created window will be a tool window.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"width\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Initial width of the form with rich text box.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useDefaultRowColoringRules\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use default coloring rules.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Drawing.FontStyle\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Regular\" />\n      <xs:enumeration value=\"Bold\" />\n      <xs:enumeration value=\"Italic\" />\n      <xs:enumeration value=\"Underline\" />\n      <xs:enumeration value=\"Strikeout\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.RichTextBoxRowColoringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"fontColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"style\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Drawing.FontStyle\" />\n    </xs:choice>\n    <xs:attribute name=\"condition\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition that must be met in order to set the specified font color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"fontColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Font color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"style\" type=\"System.Drawing.FontStyle\">\n      <xs:annotation>\n        <xs:documentation>Font style of matched text.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.RichTextBoxWordColoringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"regex\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"wholeWords\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"fontColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"style\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Drawing.FontStyle\" />\n    </xs:choice>\n    <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"regex\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"wholeWords\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Background color. Names are identical with KnownColor enum extended with Empty value which means that background color won't be changed.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"fontColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Font color. Names are identical with KnownColor enum extended with Empty value which means that font color won't be changed.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"style\" type=\"System.Drawing.FontStyle\">\n      <xs:annotation>\n        <xs:documentation>Font style of matched text. Possible values are the same as in FontStyle enum in System.Drawing.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"RoundRobinGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SplitGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Trace\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"WebService\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"methodName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"namespace\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"protocol\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.WebServiceProtocol\" />\n          <xs:element name=\"url\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:anyURI\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"methodName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Web service method name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"namespace\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Web service namespace.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"protocol\" type=\"NLog.Targets.WebServiceProtocol\">\n          <xs:annotation>\n            <xs:documentation>Protocol to be used when calling web service.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"url\" type=\"xs:anyURI\">\n          <xs:annotation>\n            <xs:documentation>Web service URL.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.WebServiceProtocol\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Soap11\" />\n      <xs:enumeration value=\"Soap12\" />\n      <xs:enumeration value=\"HttpPost\" />\n      <xs:enumeration value=\"HttpGet\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"CsvLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"column\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Layouts.CsvColumn\" />\n          <xs:element name=\"customColumnDelimiter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"delimiter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Layouts.CsvColumnDelimiterMode\" />\n          <xs:element name=\"quoteChar\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"quoting\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Layouts.CsvQuotingMode\" />\n          <xs:element name=\"withHeader\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"customColumnDelimiter\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"delimiter\" type=\"NLog.Layouts.CsvColumnDelimiterMode\">\n          <xs:annotation>\n            <xs:documentation>Column delimiter.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"quoteChar\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Quote Character.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"quoting\" type=\"NLog.Layouts.CsvQuotingMode\">\n          <xs:annotation>\n            <xs:documentation>Quoting mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"withHeader\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether CVS should include header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Layouts.CsvColumnDelimiterMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Auto\" />\n      <xs:enumeration value=\"Comma\" />\n      <xs:enumeration value=\"Semicolon\" />\n      <xs:enumeration value=\"Tab\" />\n      <xs:enumeration value=\"Pipe\" />\n      <xs:enumeration value=\"Space\" />\n      <xs:enumeration value=\"Custom\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Layouts.CsvQuotingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"All\" />\n      <xs:enumeration value=\"Nothing\" />\n      <xs:enumeration value=\"Auto\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Layouts.CsvColumn\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout of the column.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Name of the column.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"LayoutWithHeaderAndFooter\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Log4JXmlEventLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SimpleLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"text\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Layout text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"when\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"condition\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Condition expression.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"FilterResult\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Neutral\" />\n      <xs:enumeration value=\"Log\" />\n      <xs:enumeration value=\"Ignore\" />\n      <xs:enumeration value=\"LogFinal\" />\n      <xs:enumeration value=\"IgnoreFinal\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"whenContains\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"substring\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"substring\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Substring to be matched.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenEqual\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"compareTo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"compareTo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>String to compare the layout to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenNotContains\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"substring\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"substring\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Substring to be matched.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenNotEqual\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"compareTo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"compareTo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>String to compare the layout to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AccurateLocal\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AccurateUTC\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FastLocal\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FastUTC\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n</xs:schema>"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/ProcessMonitor.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayServiceMonitor\n{\n    using System;\n    using System.Diagnostics;\n    using System.IO;\n    using System.Reflection;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    internal class ProcessMonitor : AbstractMonitor\n    {\n        private  string _executableName;\n        private Process _target;\n        private bool    _exit;\n\n        //--//\n\n        public ProcessMonitor( string executableName, ILogger logger ) : base( logger )\n        {\n            _executableName = executableName;\n\n            // cannot find executable, we may still be able to run based if such executable \n            // is in the path or already running\n            Directory.SetCurrentDirectory( Path.GetDirectoryName( Assembly.GetExecutingAssembly( ).Location ) );\n\n            if( !File.Exists( _executableName ) )\n            {\n                // cannot find executable, we may still be able to run based on the target\n                Logger.LogInfo( \"Executable does not exists in the current directory\" );\n            }\n\n            _exit = false;\n        }\n\n        public override bool Lock( string monitoringTarget )\n        {\n            //\n            // try and open the monitored process\n            //\n            Process[] processes = Process.GetProcessesByName( monitoringTarget );\n\n            if( processes.Length == 1 )\n            {\n                _target = processes[ 0 ];\n            }\n\n            if( processes.Length > 1 || processes.Length == 0 )\n            {\n                // if there is more than 1, kill them all and restart\n                foreach( Process p in processes )\n                {\n                    Logger.LogInfo( String.Format( \"Killing process {0}, PID: {1}\", p.ProcessName, p.Id ) );\n\n                    try\n                    {\n                        p.Kill( );\n                    }\n                    catch\n                    {\n                    }\n                }\n\n                // create new process\n                _target = CreateProcess( _executableName );\n            }\n\n            return _target == null ? false : true;\n        }\n\n        public override void Monitor()\n        {\n            // monitoring loop\n            while( _exit == false && _target != null )\n            {\n                Thread.Sleep( MonitoringInterval );\n\n                Process t = _target;\n\n                if( t.HasExited )\n                {\n                    Logger.LogInfo( String.Format( \"Process '{0}' exited at time {1} with code {2}\", _executableName, t.ExitTime, t.ExitCode ) );\n                }\n            }\n        }\n\n        public override void QuitMonitor()\n        {\n            _exit = true;\n        }\n\n        private Process CreateProcess( string monitoringExecutable )\n        {\n            Process p = new Process( );\n\n            p.StartInfo = new ProcessStartInfo( monitoringExecutable );\n\n            p.Exited += Restart;\n\n            if( !p.Start( ) )\n            {\n                Logger.LogError( String.Format( \"Process '{0}'could not be started\", monitoringExecutable ) );\n\n                return null;\n            }\n\n            return p;\n        }\n\n        private void Restart( object sender, EventArgs e )\n        {\n            _target = CreateProcess( _executableName );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle( \"ServiceMonitor\" )]\n[assembly: AssemblyDescription( \"\" )]\n[assembly: AssemblyConfiguration( \"\" )]\n[assembly: AssemblyCompany( \"Microsoft IT\" )]\n[assembly: AssemblyProduct( \"ServiceMonitor\" )]\n[assembly: AssemblyCopyright( \"Copyright © Microsoft IT 2015\" )]\n[assembly: AssemblyTrademark( \"\" )]\n[assembly: AssemblyCulture( \"\" )]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible( false )]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid( \"745f9211-7fec-4625-b6fb-15cf0c519fc1\" )]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion( \"1.0.0.0\" )]\n[assembly: AssemblyFileVersion( \"1.0.0.0\" )]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/ServiceMonitor.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayServiceMonitor\n{\n    using System;\n    using System.IO;\n    using System.Reflection;\n    using System.ServiceProcess;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    internal class ServiceMonitor : AbstractMonitor\n    {\n        private string            _serviceName;\n        private ServiceController _target;\n        private bool              _exit;\n\n        //--//\n\n        public ServiceMonitor( string serviceName, ILogger logger ) : base( logger )\n        {\n            _serviceName = serviceName;\n\n            // check that the file we are supposed to launch actually exists \n            Directory.SetCurrentDirectory( Path.GetDirectoryName( Assembly.GetExecutingAssembly( ).Location ) );\n\n            ServiceController[] svcs = ServiceController.GetServices( );\n\n            foreach( ServiceController svc in svcs )\n            {\n                if( svc.DisplayName == serviceName )\n                {\n                    _target = svc;\n                }\n            }\n\n            if( _target == null )\n            {\n                Logger.LogInfo( String.Format( \"Service '{0}' is not installed\", serviceName ) );\n            }\n\n            _exit = false;\n        }\n\n        public override bool Lock( string monitoringTarget )\n        {\n            if( _target == null )\n            {\n                return false;\n            }\n\n            if( _target.Status == ServiceControllerStatus.Stopped || _target.Status == ServiceControllerStatus.StopPending )\n            {\n                // create new process\n                _target.Start( );\n            }\n\n            return true;\n        }\n\n        public override void Monitor()\n        {\n            // monitoring loop\n            while( _exit == false )\n            {\n                Thread.Sleep( MonitoringInterval );\n\n                if( _target != null )\n                {\n                    _target.Refresh( );\n\n                    if( _target.Status == ServiceControllerStatus.Stopped )\n                    {\n                        Logger.LogInfo( String.Format( \"Service '{0}' stopped at time {1} or earlier\", _serviceName, DateTime.Now.ToString( ) ) );\n\n                        Restart( );\n                    }\n                }\n            }\n        }\n\n        public override void QuitMonitor()\n        {\n            _exit = true;\n        }\n\n        private void Restart( )\n        {\n            _target.Start( );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/Utils/Logger/Logger.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayServiceMonitor\n{\n    using System.ComponentModel;\n    using System.Diagnostics;\n    using NLog;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public class MonitorLogger : ILogger\n    {\n        #region Singleton implementation\n\n        private static readonly object          _SyncRoot = new object( );\n        private static          MonitorLogger   _logger;\n        private static          NLog.Logger     _NLog;\n\n        //--//\n\n        internal static MonitorLogger Instance\n        {\n            get\n            {\n                if( _logger == null )\n                {\n                    lock( _SyncRoot )\n                    {\n                        if( _logger == null )\n                        {\n                            _logger = new MonitorLogger( );\n                        }\n                    }\n                }\n\n                return _logger;\n            }\n        }\n\n        private MonitorLogger( )\n        {\n            _NLog = LogManager.GetCurrentClassLogger( );\n        }\n\n        #endregion\n\n        public void Flush( )\n        {\n            LogManager.Flush( );\n        }\n\n        public void LogError( string logMessage )\n        {\n            _NLog.Error( logMessage );\n        }\n\n        public void LogInfo( string logMessage )\n        {\n            _NLog.Info( logMessage );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/ServiceMonitor/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Azure.Devices.Client.PCL\" version=\"1.0.5\" targetFramework=\"net452\" />\n  <package id=\"Mono.Security\" version=\"3.2.3.0\" targetFramework=\"net452\" />\n  <package id=\"Newtonsoft.Json\" version=\"6.0.6\" targetFramework=\"net452\" />\n  <package id=\"NLog\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"NLog.Config\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"NLog.Schema\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"PCLCrypto\" version=\"1.0.86\" targetFramework=\"net452\" />\n  <package id=\"Validation\" version=\"2.0.6.15003\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Setup/WindowsExeSetup/Product.wxs",
    "content": "\n<Wix xmlns=\"http://schemas.microsoft.com/wix/2006/wi\">\n  <?define Microsoft.ConnectTheDots.GatewayExe_BIN=$(var.SolutionDir)WindowsEXE\\Bin\\$(var.Configuration)\\?>\n  <?define SerialPortAdapter_BIN=$(var.SolutionDir)DeviceAdapters\\SerialPort\\Bin\\$(var.Configuration)\\?>\n  <?define SocketAdapter_BIN=$(var.SolutionDir)DeviceAdapters\\Socket\\Bin\\$(var.Configuration)\\?>\n\t<Product Id=\"*\" Name=\"ConnectTheDots Gateway\" Language=\"1033\" Version=\"1.0.0.0\" Manufacturer=\"ConnectTheDots\" UpgradeCode=\"b0ed85dd-3e2d-4091-8231-c3953f502998\">\n\t\t<Package InstallerVersion=\"200\" Compressed=\"yes\" InstallScope=\"perMachine\" />\n\n\t\t<MajorUpgrade DowngradeErrorMessage=\"A newer version of [ProductName] is already installed.\" />\n\t\t<MediaTemplate />\n\n\t\t<Feature Id=\"ProductFeature\" Title=\"WindowsExeSetup\" Level=\"1\">\n\t\t\t<ComponentGroupRef Id=\"ProductComponents\" />\n\t\t</Feature>\n\n    <UI>\n      <UIRef Id=\"WixUI_InstallDir\" />\n      <!-- Skip license dialog -->\n      <Publish Dialog=\"WelcomeDlg\"\n               Control=\"Next\"\n               Event=\"NewDialog\"\n               Value=\"InstallDirDlg\"\n               Order=\"2\">1</Publish>\n      <Publish Dialog=\"InstallDirDlg\"\n               Control=\"Back\"\n               Event=\"NewDialog\"\n               Value=\"WelcomeDlg\"\n               Order=\"2\">1</Publish>\n    </UI>\n\t</Product>\n\n  \n\t<Fragment>\n\t\t<Directory Id=\"TARGETDIR\" Name=\"SourceDir\">\n\t\t\t<Directory Id=\"ProgramFilesFolder\">\n\t\t\t\t<Directory Id=\"INSTALLFOLDER\" Name=\"ConnectTheDots Gateway\" />\n\t\t\t</Directory>\n\t\t</Directory>\n    <Property Id=\"WIXUI_INSTALLDIR\" Value=\"INSTALLFOLDER\" />\n\t</Fragment>\n\n\t<Fragment>\n\t\t<ComponentGroup Id=\"ProductComponents\" Directory=\"INSTALLFOLDER\">\n      <Component Id=\"Newtonsoft.Json.dll\" Guid=\"8358d213-7f1c-4598-b56f-1502d3ccf61e\">\n        <File Id=\"Newtonsoft.Json.dll\" Name=\"Newtonsoft.Json.dll\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayExe_BIN)Newtonsoft.Json.dll\" />\n      </Component>\n      <Component Id=\"NLog.dll\" Guid=\"40358dcb-e599-4500-a39c-0bc4d2a4d01e\">\n        <File Id=\"NLog.dll\" Name=\"NLog.dll\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayExe_BIN)NLog.dll\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.Common.dll\" Guid=\"a998f7fd-2cbc-4097-8b6a-13040a6bb37c\">\n        <File Id=\"Microsoft.ConnectTheDots.Common.dll\" Name=\"Microsoft.ConnectTheDots.Common.dll\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayExe_BIN)Microsoft.ConnectTheDots.Common.dll\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.Gateway.dll\" Guid=\"87243811-d2e4-4bd3-add8-ef3f18859747\">\n        <File Id=\"Microsoft.ConnectTheDots.Gateway.dll\" Name=\"Microsoft.ConnectTheDots.Gateway.dll\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayExe_BIN)Microsoft.ConnectTheDots.Gateway.dll\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.GatewayExe.exe\" Guid=\"d0c3268d-ecf3-4636-81c7-f5f1f820501b\">\n        <File Id=\"Microsoft.ConnectTheDots.GatewayExe.exe\" Name=\"Microsoft.ConnectTheDots.GatewayExe.exe\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayExe_BIN)Microsoft.ConnectTheDots.GatewayExe.exe\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.GatewayExe.exe.config\" Guid=\"534b48a8-9f8a-49f4-ad24-b04f31ab213b\">\n        <File Id=\"Microsoft.ConnectTheDots.GatewayExe.exe.config\" Name=\"Microsoft.ConnectTheDots.GatewayExe.exe.config\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayExe_BIN)Microsoft.ConnectTheDots.GatewayExe.exe.config\" />\n      </Component>\n      <Component Id=\"NLog.config\" Guid=\"fac6a2e5-75ab-469b-8e26-41643fb08839\">\n        <File Id=\"NLog.config\" Name=\"NLog.config\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayExe_BIN)NLog.config\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.SerialPortAdapter.dll\" Guid=\"ef6ef6aa-8588-4b13-a198-8c62bbdee91d\">\n        <File Id=\"Microsoft.ConnectTheDots.SerialPortAdapter.dll\" Name=\"Microsoft.ConnectTheDots.SerialPortAdapter.dll\" Source=\"$(var.SerialPortAdapter_BIN)Microsoft.ConnectTheDots.SerialPortAdapter.dll\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.SocketAdapter.dll\" Guid=\"637653b6-7ee2-43a0-8ff8-d108c6b350f5\">\n        <File Id=\"Microsoft.ConnectTheDots.SocketAdapter.dll\" Name=\"Microsoft.ConnectTheDots.SocketAdapter.dll\" Source=\"$(var.SocketAdapter_BIN)Microsoft.ConnectTheDots.SocketAdapter.dll\" />\n      </Component>\n    </ComponentGroup>\n\t</Fragment>\n</Wix>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Setup/WindowsExeSetup/WindowsExeSetup.wixproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProductVersion>3.10</ProductVersion>\n    <ProjectGuid>cd583705-1033-4d51-b613-07295c56df57</ProjectGuid>\n    <SchemaVersion>2.0</SchemaVersion>\n    <OutputName>WindowsExeSetup</OutputName>\n    <OutputType>Package</OutputType>\n    <WixTargetsPath Condition=\" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' \">$(MSBuildExtensionsPath32)\\Microsoft\\WiX\\v3.x\\Wix.targets</WixTargetsPath>\n    <WixTargetsPath Condition=\" '$(WixTargetsPath)' == '' \">$(MSBuildExtensionsPath)\\Microsoft\\WiX\\v3.x\\Wix.targets</WixTargetsPath>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n    <OutputPath>bin\\$(Configuration)\\</OutputPath>\n    <IntermediateOutputPath>obj\\$(Configuration)\\</IntermediateOutputPath>\n    <DefineConstants>Debug</DefineConstants>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n    <OutputPath>bin\\$(Configuration)\\</OutputPath>\n    <IntermediateOutputPath>obj\\$(Configuration)\\</IntermediateOutputPath>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Product.wxs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <WixExtension Include=\"WixUIExtension\">\n      <HintPath>$(WixExtDir)\\WixUIExtension.dll</HintPath>\n      <Name>WixUIExtension</Name>\n    </WixExtension>\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\WindowsEXE\\Microsoft.ConnectTheDots.GatewayExe.csproj\">\n      <Name>Microsoft.ConnectTheDots.GatewayExe</Name>\n      <Project>{4c8a147e-13d2-4d6e-83f3-55791b6ff6dc}</Project>\n      <Private>True</Private>\n      <DoNotHarvest>True</DoNotHarvest>\n      <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>\n      <RefTargetDir>INSTALLFOLDER</RefTargetDir>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(WixTargetsPath)\" />\n  <!--\n\tTo modify your build process, add your task inside one of the targets below and uncomment it.\n\tOther similar extension points exist, see Wix.targets.\n\t<Target Name=\"BeforeBuild\">\n\t</Target>\n\t<Target Name=\"AfterBuild\">\n\t</Target>\n\t-->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Setup/WindowsServiceSetup/Product.wxs",
    "content": "<?define Name = \"ConnectTheDots GatewayService\" ?>\n\n<Wix xmlns=\"http://schemas.microsoft.com/wix/2006/wi\">\n  <?define Microsoft.ConnectTheDots.GatewayService_BIN=$(var.SolutionDir)WindowsService\\Bin\\$(var.Configuration)\\?>\n  <?define SerialPortAdapter_BIN=$(var.SolutionDir)DeviceAdapters\\SerialPort\\Bin\\$(var.Configuration)\\?>\n  <?define SocketAdapter_BIN=$(var.SolutionDir)DeviceAdapters\\Socket\\Bin\\$(var.Configuration)\\?>\n\t<Product Id=\"*\" Name=\"$(var.Name)\" Language=\"1033\" Version=\"1.0.0.0\" Manufacturer=\"ConnectTheDots\" UpgradeCode=\"33840066-93c1-42d6-9cad-5bf88b97de0d\">\n\t\t<Package InstallerVersion=\"200\" Compressed=\"yes\" InstallScope=\"perMachine\" />\n\n\t\t<MajorUpgrade DowngradeErrorMessage=\"A newer version of [ProductName] is already installed.\" />\n\t\t<MediaTemplate />\n\n\t\t<Feature Id=\"ProductFeature\" Title=\"WindowsServiceSetup\" Level=\"1\">\n\t\t\t<ComponentGroupRef Id=\"ProductComponents\" />\n\t\t</Feature>\n\n    <UI>\n      <UIRef Id=\"WixUI_InstallDir\" />\n      <!-- Skip license dialog -->\n      <Publish Dialog=\"WelcomeDlg\"\n               Control=\"Next\"\n               Event=\"NewDialog\"\n               Value=\"InstallDirDlg\"\n               Order=\"2\">1</Publish>\n      <Publish Dialog=\"InstallDirDlg\"\n               Control=\"Back\"\n               Event=\"NewDialog\"\n               Value=\"WelcomeDlg\"\n               Order=\"2\">1</Publish>\n    </UI>\n\t</Product>\n\n\t<Fragment>\n\t\t<Directory Id=\"TARGETDIR\" Name=\"SourceDir\">\n\t\t\t<Directory Id=\"ProgramFilesFolder\">\n\t\t\t\t<Directory Id=\"INSTALLFOLDER\" Name=\"ConnectTheDots GatewayService\" />\n\t\t\t</Directory>\n\t\t</Directory>\n    <Property Id=\"WIXUI_INSTALLDIR\" Value=\"INSTALLFOLDER\" />\n\t</Fragment>\n\n\t<Fragment>\n\t\t<ComponentGroup Id=\"ProductComponents\" Directory=\"INSTALLFOLDER\">\n      <Component Id=\"Newtonsoft.Json.dll\" Guid=\"6c312480-6c0a-4334-b769-8d973093ccf6\">\n        <File Id=\"Newtonsoft.Json.dll\" Name=\"Newtonsoft.Json.dll\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayService_BIN)Newtonsoft.Json.dll\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.Common.dll\" Guid=\"cc681188-11eb-4871-bb48-b73f1fdd8ddb\">\n        <File Id=\"Microsoft.ConnectTheDots.Common.dll\" Name=\"Microsoft.ConnectTheDots.Common.dll\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayService_BIN)Microsoft.ConnectTheDots.Common.dll\" />\n      </Component>\n      <Component Id=\"NLog.dll\" Guid=\"879254b4-3907-4f5e-a0c0-bff8661baf12\">\n        <File Id=\"NLog.dll\" Name=\"NLog.dll\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayService_BIN)NLog.dll\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.Gateway.dll\" Guid=\"ea18470b-1032-4245-8327-a83a169163c4\">\n        <File Id=\"Microsoft.ConnectTheDots.Gateway.dll\" Name=\"Microsoft.ConnectTheDots.Gateway.dll\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayService_BIN)Microsoft.ConnectTheDots.Gateway.dll\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.GatewayService.exe\" Guid=\"6be39dfd-883c-4c42-93b4-933f210e8262\">\n        <File Id=\"Microsoft.ConnectTheDots.GatewayService.exe\" Name=\"Microsoft.ConnectTheDots.GatewayService.exe\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayService_BIN)Microsoft.ConnectTheDots.GatewayService.exe\" />\n        <ServiceInstall Id=\"ServiceInstaller\"\n                        Type=\"ownProcess\"\n                        Name=\"TestService\"\n                        DisplayName=\"$(var.Name)\"\n                        Description=\"Gateway Service for ConnectTheDots\"\n                        Start=\"auto\"\n                        ErrorControl=\"normal\" />\n        <!-- Tell WiX to start the Service -->\n        <ServiceControl Id=\"StartService\" Start=\"install\" Stop=\"both\" Remove=\"uninstall\" Name=\"TestService\" Wait=\"yes\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.GatewayService.exe.config\" Guid=\"64ac2ff8-709b-412f-a3a2-23355f9f5242\">\n        <File Id=\"Microsoft.ConnectTheDots.GatewayService.exe.config\" Name=\"Microsoft.ConnectTheDots.GatewayService.exe.config\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayService_BIN)Microsoft.ConnectTheDots.GatewayService.exe.config\" />\n      </Component>\n      <Component Id=\"NLog.config\" Guid=\"28871bcf-004e-4ec6-b690-9d591da5795b\">\n        <File Id=\"NLog.config\" Name=\"NLog.config\" Source=\"$(var.Microsoft.ConnectTheDots.GatewayService_BIN)NLog.config\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.SerialPortAdapter.dll\" Guid=\"8ad1f68f-4dae-4a9f-b8ed-c22d083bfe00\">\n        <File Id=\"Microsoft.ConnectTheDots.SerialPortAdapter.dll\" Name=\"Microsoft.ConnectTheDots.SerialPortAdapter.dll\" Source=\"$(var.SerialPortAdapter_BIN)Microsoft.ConnectTheDots.SerialPortAdapter.dll\" />\n      </Component>\n      <Component Id=\"Microsoft.ConnectTheDots.SocketAdapter.dll\" Guid=\"c18745f2-c67e-4d1f-834e-0d9a5a6d3e2c\">\n        <File Id=\"Microsoft.ConnectTheDots.SocketAdapter.dll\" Name=\"Microsoft.ConnectTheDots.SocketAdapter.dll\" Source=\"$(var.SocketAdapter_BIN)Microsoft.ConnectTheDots.SocketAdapter.dll\" />\n      </Component>\n    </ComponentGroup>\n\t</Fragment>\n</Wix>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Setup/WindowsServiceSetup/WindowsServiceSetup.wixproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">x86</Platform>\n    <ProductVersion>3.10</ProductVersion>\n    <ProjectGuid>f7630e5c-40a9-44f4-a6d4-49ae731f4a38</ProjectGuid>\n    <SchemaVersion>2.0</SchemaVersion>\n    <OutputName>WindowsServiceSetup</OutputName>\n    <OutputType>Package</OutputType>\n    <WixTargetsPath Condition=\" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' \">$(MSBuildExtensionsPath32)\\Microsoft\\WiX\\v3.x\\Wix.targets</WixTargetsPath>\n    <WixTargetsPath Condition=\" '$(WixTargetsPath)' == '' \">$(MSBuildExtensionsPath)\\Microsoft\\WiX\\v3.x\\Wix.targets</WixTargetsPath>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|x86' \">\n    <OutputPath>bin\\$(Configuration)\\</OutputPath>\n    <IntermediateOutputPath>obj\\$(Configuration)\\</IntermediateOutputPath>\n    <DefineConstants>Debug</DefineConstants>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|x86' \">\n    <OutputPath>bin\\$(Configuration)\\</OutputPath>\n    <IntermediateOutputPath>obj\\$(Configuration)\\</IntermediateOutputPath>\n  </PropertyGroup>\n  <ItemGroup>\n    <Compile Include=\"Product.wxs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\DeviceAdapters\\SerialPort\\SerialPortAdapter.csproj\">\n      <Name>SerialPortAdapter</Name>\n      <Project>{a7b77408-0dba-4384-a31a-404187caec89}</Project>\n      <Private>True</Private>\n      <DoNotHarvest>True</DoNotHarvest>\n      <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>\n      <RefTargetDir>INSTALLFOLDER</RefTargetDir>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\DeviceAdapters\\Socket\\SocketAdapter.csproj\">\n      <Name>SocketAdapter</Name>\n      <Project>{9d9da1eb-90da-4fc0-a97f-c650201dd994}</Project>\n      <Private>True</Private>\n      <DoNotHarvest>True</DoNotHarvest>\n      <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>\n      <RefTargetDir>INSTALLFOLDER</RefTargetDir>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\WindowsService\\Microsoft.ConnectTheDots.GatewayService.csproj\">\n      <Name>Microsoft.ConnectTheDots.GatewayService</Name>\n      <Project>{38a27fc0-2864-49a8-bda3-d7e22d276b29}</Project>\n      <Private>True</Private>\n      <DoNotHarvest>True</DoNotHarvest>\n      <RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>\n      <RefTargetDir>INSTALLFOLDER</RefTargetDir>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <WixExtension Include=\"WixUIExtension\">\n      <HintPath>$(WixExtDir)\\WixUIExtension.dll</HintPath>\n      <Name>WixUIExtension</Name>\n    </WixExtension>\n  </ItemGroup>\n  <Import Project=\"$(WixTargetsPath)\" />\n  <!--\n\tTo modify your build process, add your task inside one of the targets below and uncomment it.\n\tOther similar extension points exist, see Wix.targets.\n\t<Target Name=\"BeforeBuild\">\n\t</Target>\n\t<Target Name=\"AfterBuild\">\n\t</Target>\n\t-->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/BatchSenderThreadTest/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup>\n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5.2\"/>\n    </startup>\n</configuration>\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/BatchSenderThreadTest/BatchSenderThreadTest.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public class BatchSenderThreadTest\n    {\n        private readonly ILogger _logger;\n        private readonly Random  _random;\n\n        //-//\n\n        public BatchSenderThreadTest( ILogger logger )\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Cannot run tests without logging\" );\n            }\n            \n            _random = new Random( ( int )DateTime.Now.Ticks );\n\n            _logger = logger;\n        }\n\n        public void Run( )\n        {\n            TestMessagesGoFromSourceToTarget( );\n            TestMessagesGoFromSourceToTargetWithTwoBatchSenderThreads( );\n        }\n        private void TestMessagesGoFromSourceToTarget( )\n        {\n            MockSenderMap<int> targetMap = new MockSenderMap<int>( );\n            \n            MockSenderMap<int> sourceMap = new MockSenderMap<int>( );\n\n            GatewayQueue<int> queue = new GatewayQueue<int>( );\n            \n            EventProcessor batchSenderThread = new BatchSenderThread<int, int>( queue, targetMap, m => m, null, _logger );\n            \n            batchSenderThread.Start( );\n\n            const int batchesIterations = 100;\n            const int maxQueuedItemCount = 20;\n            const int waitForBatchThreadTimeMs = 22;\n\n            for( int iteration = 0; iteration < batchesIterations; ++iteration )\n            {\n                int queuedItemCount = _random.Next( 1, maxQueuedItemCount );\n                for( int count = 0; count < queuedItemCount; ++count )\n                {\n                    int itemToQueue = _random.Next( );\n\n                    queue.Push( itemToQueue );\n\n                    sourceMap.SendMessage( itemToQueue ).Wait( );\n                }\n                batchSenderThread.Process( );\n\n                Thread.Sleep( waitForBatchThreadTimeMs );\n\n                if( !targetMap.ContainsOthersItems( sourceMap )\n                    || !sourceMap.ContainsOthersItems( targetMap ) )\n                {\n                    _logger.LogError( \"Not processed message found\" );\n                    break;\n                }\n            }\n\n            batchSenderThread.Stop( waitForBatchThreadTimeMs );\n        }\n\n        private void TestMessagesGoFromSourceToTargetWithTwoBatchSenderThreads( )\n        {\n            MockSenderAsyncQueue<int> targetQueue = new MockSenderAsyncQueue<int>( );\n            MockSenderMap<int> sourceMap = new MockSenderMap<int>( );\n\n            GatewayQueue<int> queue = new GatewayQueue<int>( );\n            EventProcessor batchSenderThreadA = new BatchSenderThread<int, int>( queue, targetQueue, m => m, null, _logger );\n            EventProcessor batchSenderThreadB = new BatchSenderThread<int, int>( queue, targetQueue, m => m, null, _logger );\n\n            batchSenderThreadA.Start( );\n            batchSenderThreadB.Start( );\n\n            const int waitForBatchThreadTimeMs = 800;\n            const int queuedItemCount = 400;\n\n            for( int count = 0; count < queuedItemCount; ++count )\n            {\n                int itemToQueue = _random.Next( );\n\n                queue.Push( itemToQueue );\n\n                sourceMap.SendMessage( itemToQueue ).Wait( );\n            }\n            batchSenderThreadA.Process( );\n            batchSenderThreadB.Process( );\n\n            Thread.Sleep( waitForBatchThreadTimeMs );\n\n            MockSenderMap<int> targetMap = targetQueue.ToMockSenderMap( );\n            if( !targetMap.ContainsOthersItems( sourceMap )\n                || !sourceMap.ContainsOthersItems( targetMap ) )\n            {\n                _logger.LogError( \"Not processed message found\" );\n            }\n\n            batchSenderThreadA.Stop( waitForBatchThreadTimeMs );\n            batchSenderThreadB.Stop( waitForBatchThreadTimeMs );\n        }        \n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/BatchSenderThreadTest/BatchSenderThreadTest.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{8279853A-07AE-4AF8-BC5F-FCD1696ABB4D}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.Test</RootNamespace>\n    <AssemblyName>BatchSenderThreadTest</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"BatchSenderThreadTest.cs\" />\n    <Compile Include=\"TestRunner.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Utils\\MessageSender\\MockSenderAsyncQueue.cs\" />\n    <Compile Include=\"Utils\\MessageSender\\MockSenderMap.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\WindowsService\\Microsoft.ConnectTheDots.GatewayService.csproj\">\n      <Project>{38A27FC0-2864-49A8-BDA3-D7E22D276B29}</Project>\n      <Name>Microsoft.ConnectTheDots.GatewayService</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{E14D1C61-1979-452E-BE8B-0303A95EF764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\CoreTest\\CoreTest.csproj\">\n      <Project>{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}</Project>\n      <Name>CoreTest</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/BatchSenderThreadTest/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"BatchSenderThreadTest\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"BatchSenderThreadTest\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"9cff1e27-0dfe-40cd-ac84-c636141ef217\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/BatchSenderThreadTest/TestRunner.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    class TestRunner\n    {\n        static void Main( string[] args )\n        {\n            BatchSenderThreadTest t = new BatchSenderThreadTest( SafeLogger.FromLogger( TestLogger.Instance ) );\n            t.Run( );\n\n            // wait for logging tasks to complete\n            Console.WriteLine( \"Test completed, press enter to exit\" );\n            Console.ReadLine( );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/BatchSenderThreadTest/Utils/MessageSender/MockSenderAsyncQueue.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Linq;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    internal class MockSenderAsyncQueue<T> : IMessageSender<T>\n    {\n        protected GatewayQueue<T> _SentMessagesQueue = new GatewayQueue<T>( );\n\n        //--//\n\n        public TaskWrapper SendMessage( T data )\n        {\n             _SentMessagesQueue.Push( data );\n\n             return default( TaskWrapper );\n        }\n\n        public TaskWrapper SendSerialized( string jsonData )\n        {\n            throw new Exception( \"Not implemented\" );\n        }\n\n        public MockSenderMap<T> ToMockSenderMap( )\n        {\n            MockSenderMap<T> result = new MockSenderMap<T>( );\n\n            int count = _SentMessagesQueue.Count;\n            var tasks = new TaskWrapper[ count ];\n            for( int processedCount = 0; processedCount < count; )\n            {\n                var popped = _SentMessagesQueue.TryPop( ).Result;\n                if( popped.IsSuccess )\n                {\n                    result.SendMessage( popped.Result ).Wait( );\n                    ++processedCount;\n                }\n            }\n\n            return result;\n        }\n\n        public void Close( )\n        {\n        }\n    }\n}\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/BatchSenderThreadTest/Utils/MessageSender/MockSenderMap.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Linq;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    internal class MockSenderMap<T> : IMessageSender<T>\n    {\n        protected SortedDictionary<T, int> _sentMessages = new SortedDictionary<T, int>( );\n\n        //--//\n\n        public TaskWrapper SendMessage( T data )\n        {\n            Action<T> send = ( d ) =>\n            {\n                lock( _sentMessages )\n                {\n                    if( _sentMessages.ContainsKey( d ) )\n                        _sentMessages[ d ]++;\n                    else _sentMessages.Add( d, 1 );\n                }\n            };\n\n            var sh = new SafeAction<T>( ( d ) => send( d ), null );\n\n            return TaskWrapper.Run( ( ) => sh.SafeInvoke( data ) );\n        }\n\n        public TaskWrapper SendSerialized( string jsonData )\n        {\n            throw new Exception( \"Not implemented\" );\n        }\n\n        public bool Contains( T data )\n        {\n            lock( _sentMessages )\n            {\n                return _sentMessages.ContainsKey( data );\n            }\n        }\n\n        public bool ContainsOthersItems( MockSenderMap<T> other )\n        {\n            lock( _sentMessages )\n            {\n                if( other._sentMessages.Any( key => !_sentMessages.Contains( key ) ) )\n                {\n                    return false;\n                }\n                return true;\n            }\n        }\n\n        public void Close( )\n        {\n        }\n    }\n}\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n\n    <!-- sensors config -->\n    <!-- \"Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element. -->\n    <configSections>\n        <section name=\"dataIntakes\" type=\"Microsoft.ConnectTheDots.Test.DeviceAdapterConfigSection, CoreTest\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\"/>\n        <section name=\"sensorEndpoints\" type=\"Microsoft.ConnectTheDots.Test.SensorEndpointConfigSection, CoreTest\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\"/>\n        <section name=\"IotHubConfig\" type=\"Microsoft.ConnectTheDots.Test.IotHubConfigSection, CoreTest\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\"/>\n        <section name=\"dataTransformsConfig\" type=\"Microsoft.ConnectTheDots.Test.DataTransformsConfigSection, CoreTest\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\"/>\n    </configSections>\n\n  <IotHubConfig IotHubConnectionString=\"[IoTHubConnectionString]\"/>\n\n  <dataIntakes>\n      <add name=\"SocketSensor\" type=\"Microsoft.ConnectTheDots.Adapters.SocketAdapter\" assemblyPath=\"..\\..\\..\\..\\DeviceAdapters\\Socket\\bin\\Debug\\Microsoft.ConnectTheDots.SocketAdapter.dll\"/>\n      <add name=\"SerialPortAdapter\" type=\"Microsoft.ConnectTheDots.Adapters.SerialPortAdapter\" assemblyPath=\"..\\..\\..\\..\\DeviceAdapters\\SerialPort\\bin\\Debug\\Microsoft.ConnectTheDots.SerialPortAdapter.dll\"/>\n      <add name=\"DataIntakeMock\" type=\"Microsoft.ConnectTheDots.Test.DeviceAdapterTestMock\" assemblyPath=\"..\\..\\..\\..\\Tests\\DeviceAdapterTestMock\\bin\\Debug\\DataIntakeTestMock.dll\"/>\n    </dataIntakes>\n\n    <sensorEndpoints>\n        <add name=\"LocalForSocket\" port=\"5000\" host=\"127.0.0.1\"/>\n    </sensorEndpoints>\n\n    <dataTransformsConfig AttachTime=\"true\" AttachIP=\"true\"/>\n\n    <startup>\n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5.2\"/>\n    </startup>\n\n    <!-- runtime config -->\n    <runtime>\n        <!-- do not close process on unobserved exception -->\n        <ThrowUnobservedTaskExceptions enabled=\"false\"/>\n    </runtime>\n\n    <!-- app config-->\n    <appSettings>\n        <!-- enable/disable logging: 'Disabled' is disabled, 'Errors' is errors only, 'Verbose' is errors and info -->\n        <!-- 'Errors' level should be used for performance testing -->\n        <add key=\"LoggingLevel\" value=\"Verbose\"/>\n    </appSettings>\n\n</configuration>\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/CoreTest.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n//#define MOCK_SENDER\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n\n    using System;\n    using System.Diagnostics;\n    using System.Collections.Generic;\n    using System.Text;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public class CoreTest : ITest\n    {\n        public const int TEST_ITERATIONS = 5;\n        public const int MAX_TEST_MESSAGES = 1000;\n\n        //--//\n\n        private const int STOP_TIMEOUT_MS = 5000; // ms\n\n        //--//\n\n        private readonly ILogger                                            _logger;\n        private readonly AutoResetEvent                                     _completed;\n        private readonly GatewayQueue<QueuedItem>                           _gatewayQueue;\n        private readonly IMessageSender<SensorDataContract>                 _sender;\n        private readonly BatchSenderThread<QueuedItem, SensorDataContract>  _batchSenderThread;\n        private readonly Random                                             _rand;\n        private          int                                                _totalMessagesSent;\n        private          int                                                _totalMessagesToSend;\n\n        private readonly Func<string, QueuedItem>                           _gatewayTransform;\n\n        //--//\n\n        public CoreTest( ILogger logger )\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Cannot run tests without logging\" );\n            }\n\n            _completed = new AutoResetEvent( false );\n\n            _logger = logger;\n\n            _rand = new Random( );\n            _totalMessagesSent = 0;\n            _totalMessagesToSend = 0;\n            _gatewayQueue = new GatewayQueue<QueuedItem>( );\n\n#if MOCK_SENDER\n            _sender = new MockSender<SensorDataContract>(this);\n#else\n\n            IotHubConfig iotHubConfig = Loader.GetIotHubConfig( );\n\n            _sender = new MessageSender<SensorDataContract>(iotHubConfig.IotHubConnectionString, _logger);\n#endif\n\n            _batchSenderThread = new BatchSenderThread<QueuedItem, SensorDataContract>(\n                _gatewayQueue,\n                _sender,\n                dataTransform : null, \n                serializedData: m => ( m == null ) ? null : m.JsonData,\n                logger        : _logger \n                );\n\n            string gatewayIPAddressString = string.Empty;\n            IPAddressHelper.GetIPAddressString( ref gatewayIPAddressString );\n\n            DataTransformsConfig dataTransformsConfig = Loader.GetDataTransformsConfig( );\n            if( dataTransformsConfig.AttachIP || dataTransformsConfig.AttachTime )\n            {\n                Func<string, SensorDataContract> transform = ( m => DataTransforms.SensorDataContractFromString( m, _logger ) );\n\n                if( dataTransformsConfig.AttachTime )\n                {\n                    var transformPrev = transform;\n                    transform = ( m => DataTransforms.AddTimeCreated( transformPrev( m ) ) );\n                }\n\n                if( dataTransformsConfig.AttachTime )\n                {\n                    var transformPrev = transform;\n                    transform = ( m => DataTransforms.AddIPToLocation( transformPrev( m ), gatewayIPAddressString ) );\n                }\n\n                _gatewayTransform = ( m => DataTransforms.QueuedItemFromSensorDataContract( transform( m ) ) );\n            }\n        }\n\n        public void Run( )\n        {\n            TestRepeatSend( );\n            TestDeviceAdapter( );\n        }\n\n        public void TestRepeatSend( )\n        {\n            try\n            {\n                GatewayService service = PrepareGatewayService( );\n\n                // Send a flurry of messages, repeat a few times\n\n                // script message sequence\n                int[] sequence = new int[ TEST_ITERATIONS ];\n                for( int iteration = 0; iteration < TEST_ITERATIONS; ++iteration )\n                {\n                    int count = _rand.Next( MAX_TEST_MESSAGES );\n\n                    sequence[ iteration ] = count;\n\n                    _totalMessagesToSend += count;\n                }\n\n                const float mean = 39.6001f;\n                const int range  = 10;\n\n                Random rand = new Random( ( int )( DateTime.Now.Ticks >> 32 ) );\n\n                // send the messages\n                for( int iteration = 0; iteration < TEST_ITERATIONS; ++iteration )\n                {\n                    int count = sequence[ iteration ];\n\n                    while( --count >= 0 )\n                    {\n                        //\n                        // Build a message. \n                        // It will look something like this: \n                        // \"{\\\"unitofmeasure\\\":\\\"%\\\",\\\"location\\\":\\\"Olivier's office\\\",\\\"measurename\\\":\\\"Humidity\\\",\\\"timecreated\\\":\\\"2/26/2015 12:50:29 AM\\\",\\\"organization\\\":\\\"MSOpenTech\\\",\\\"guid\\\":\\\"00000000-0000-0000-0000-000000000000\\\",\\\"value\\\":39.600000000000001,\\\"displayname\\\":\\\"NETMF\\\"}\"\n                        // \n\n                        bool add = ( rand.Next( ) % 2 ) == 0;\n                        int variant = rand.Next( ) % range;\n                        float value = mean;\n\n                        StringBuilder sb = new StringBuilder( );\n                        sb.Append( \"{\\\"unitofmeasure\\\":\\\"%\\\",\\\"location\\\":\\\"Olivier's office\\\",\\\"measurename\\\":\\\"Humidity\\\",\" );\n                        sb.Append( \"\\\"timecreated\\\":\\\"\" );\n                        sb.Append( DateTime.UtcNow.ToString( ) ); // this should look like \"2015-02-25T23:07:47.159Z\"\n                        sb.Append( \"\\\",\\\"organization\\\":\\\"MSOpenTech\\\",\\\"guid\\\":\\\"\" );\n                        sb.Append( new Guid( ).ToString( ) );\n                        sb.Append( \"\\\",\\\"value\\\":\" );\n                        sb.Append( ( value += add ? variant : -variant ).ToString( ) );\n                        sb.Append( \",\\\"displayname\\\":\\\"NETMF\\\"}\" );\n\n                        string message = sb.ToString( );\n\n                        service.Enqueue( message );\n\n                        DataArrived( message );\n                    }\n                }\n\n                Debug.Assert( _totalMessagesSent == _totalMessagesToSend );\n\n                _completed.WaitOne( );\n\n                _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"exception caught: \" + ex.StackTrace );\n            }\n            finally\n            {\n                _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n                _sender.Close( );\n            }\n        }\n\n        public void TestDeviceAdapter( )\n        {\n            try\n            {\n                GatewayService service = PrepareGatewayService( );\n\n                DeviceAdapterLoader dataIntakeLoader = new DeviceAdapterLoader( Loader.GetSources( ), Loader.GetEndpoints( ), _logger );\n\n                _totalMessagesToSend += 5;\n\n                dataIntakeLoader.StartAll( service.Enqueue, DataArrived );\n\n                _completed.WaitOne( );\n\n                dataIntakeLoader.StopAll( );\n\n                _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"exception caught: \" + ex.StackTrace );\n            }\n            finally\n            {\n                _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n                _sender.Close( );\n            }\n        }\n\n        public int TotalMessagesSent\n        {\n            get\n            {\n                return _totalMessagesSent;\n            }\n        }\n\n        public int TotalMessagesToSend\n        {\n            get\n            {\n                return _totalMessagesToSend;\n            }\n        }\n\n        public void Completed( )\n        {\n            _completed.Set( );\n\n            Console.WriteLine( String.Format( \"Test completed, {0} messages sent\", _totalMessagesToSend ) );\n        }\n\n        private GatewayService PrepareGatewayService( )\n        {\n            _batchSenderThread.Start( );\n\n            GatewayService service = new GatewayService(\n                _gatewayQueue,\n                _batchSenderThread,\n                _gatewayTransform\n            );\n\n            service.Logger = _logger;\n            service.OnDataInQueue += DataInQueue;\n\n            _batchSenderThread.OnEventsBatchProcessed += EventBatchProcessed;\n\n            return service;\n        }\n\n        protected void DataArrived( string data )\n        {\n            _totalMessagesSent++;\n        }\n\n        protected virtual void DataInQueue( QueuedItem data )\n        {\n            // LORENZO: test behaviours such as accumulating data an processing in batch\n            // as it stands, we are processing every event as it comes in\n\n            _batchSenderThread.Process( );\n        }\n\n        protected virtual void EventBatchProcessed( List<TaskWrapper> messages )\n        {\n            // LORENZO: test behaviours such as waiting for messages to be delivered or re-transmission\n\n            if(messages == null || messages.Count == 0)\n            {\n                return;\n            }\n\n            foreach( TaskWrapper t in messages )\n            {\n                _logger.LogInfo( String.Format( \"task {0} status is '{1}'\", t.Id, t.Status.ToString( ) ) );\n            }\n\n            TaskWrapper.BatchWaitAll( ( ( List<TaskWrapper> )messages ).ToArray( ) );\n\n            foreach( TaskWrapper t in messages )\n            {\n                _logger.LogInfo( String.Format( \"task {0} status is '{1}'\", t.Id, t.Status.ToString( ) ) );\n            }\n        }\n    }\n}\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/CoreTest.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{CA90B613-C4D6-4011-BC6B-CCC8DE62DAC0}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>CoreTest</RootNamespace>\n    <AssemblyName>CoreTest</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"CoreTest.cs\" />\n    <Compile Include=\"Devices\\SocketClientTestDevice.cs\" />\n    <Compile Include=\"Devices\\SocketServiceTestDevice.cs\" />\n    <Compile Include=\"ITest.cs\" />\n    <Compile Include=\"RealDataTest.cs\" />\n    <Compile Include=\"SocketTest.cs\" />\n    <Compile Include=\"Utils\\Generators\\RandomSensorDataGenerator.cs\" />\n    <Compile Include=\"Utils\\Loader\\Loader.cs\" />\n    <Compile Include=\"Utils\\MessageSender\\MockSender.cs\" />\n    <Compile Include=\"TestRunner.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Utils\\Logger\\TestLogger.cs\" />\n    <Compile Include=\"WebServiceTest.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\DeviceAdapters\\SerialPort\\SerialPortAdapter.csproj\">\n      <Project>{a7b77408-0dba-4384-a31a-404187caec89}</Project>\n      <Name>SerialPortAdapter</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\DeviceAdapters\\Socket\\SocketAdapter.csproj\">\n      <Project>{9d9da1eb-90da-4fc0-a97f-c650201dd994}</Project>\n      <Name>SocketAdapter</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{e14d1c61-1979-452e-be8b-0303a95ef764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/Devices/SocketClientTestDevice.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Net;\n    using System.Net.Sockets;\n    using System.Text;\n    using System.Threading;\n    using Newtonsoft.Json;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public class SocketClientTestDevice\n    {\n        private const int CONNECTION_RETRIES           = 20000;\n        private const int SLEEP_TIME_BETWEEN_RETRIES   = 1000;  // 1 sec\n        private const int TIME_BETWEEN_DATA_MS         = 500;   // 0.5 sec\n        \n\n        //--//\n\n        private readonly ILogger  _logger;\n\n        //--//\n\n        private static TcpListener _serverSocket;\n\n        //--//\n\n        private Func<string, int>      _enqueue;\n        private bool                   _doWorkSwitch;\n        private Thread                 _listeningThread;\n        private SensorEndpoint         _endpoint;\n        private int                    _messagesToSend;\n\n        //--//\n\n        public SocketClientTestDevice( ILogger logger )\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Please provide logger to SocketServiceDevice\" );\n            }\n\n            _logger = logger;\n        }\n\n        public void Stop( )\n        {\n            _doWorkSwitch = false;\n        }\n        public void Start( SensorEndpoint endpoint, int messagesToSend )\n        {\n            _messagesToSend = messagesToSend;\n            _endpoint = endpoint;\n            _doWorkSwitch = true;\n\n            var sh = new SafeAction<int>( e => RunSocketAsClient( e ), _logger );\n\n            TaskWrapper.Run( ( ) => sh.SafeInvoke( CONNECTION_RETRIES ) );\n        }\n\n        private int RunSocketAsClient( int retries )\n        {\n            int step = retries;\n\n            while( --step > 0 && _doWorkSwitch )\n            {\n                try\n                {\n                    _logger.LogInfo( \"Try connecting to gateway\" );\n\n                    Socket client = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Unspecified );\n\n                    client.Connect( _endpoint.Host, _endpoint.Port );\n\n                    if( client.Connected )\n                    {\n\n                        _logger.LogInfo( string.Format( \"Socket connected to {0}\", client.RemoteEndPoint.ToString() ) );\n\n                        _listeningThread = new Thread( ( ) => StartDataFlow( client ) );\n                        _listeningThread.Start( );\n\n                        _listeningThread.Join( );\n\n                        //reset number of retries to connect\n                        step = retries;\n                    }\n                }\n                catch( Exception ex )\n                {\n                    _logger.LogError( \"Exception when opening socket:\" + ex.StackTrace );\n                }\n\n                // wait and try again\n                Thread.Sleep( SLEEP_TIME_BETWEEN_RETRIES );\n            }\n\n            return 0;\n        }\n\n        private void StartDataFlow( Socket client )\n        {\n            for (; _messagesToSend != 0 && _doWorkSwitch; --_messagesToSend)\n            {\n                try\n                {\n                    if( !client.Connected )\n                    {\n                        client.Close( );\n                        break;\n                    }\n\n                    SensorDataContract sensorData = RandomSensorDataGenerator.Generate( );\n                    string serializedData = JsonConvert.SerializeObject( sensorData );\n\n                    Byte[] sendBytes = Encoding.ASCII.GetBytes( \"<\" + serializedData + \">\" );\n\n                    client.Send( sendBytes );\n\n                    Thread.Sleep( TIME_BETWEEN_DATA_MS );\n                }\n                catch( Exception ex )\n                {\n                    _logger.LogError( \"Exception processing data from socket: \" + ex.StackTrace );\n                    _logger.LogError( \"Continuing...\" );\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/Devices/SocketServiceTestDevice.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Net;\n    using System.Net.Sockets;\n    using System.Text;\n    using System.Threading;\n    using Newtonsoft.Json;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public class SocketServiceTestDevice\n    {\n        private const int SLEEP_TIME_MS = 1000;\n\n        //--//\n\n        private readonly ILogger _logger;\n\n        //--//\n\n        public SocketServiceTestDevice( ILogger logger )\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Please provide logger to SocketServiceDevice\" );\n            }\n\n            _logger = logger;\n        }\n\n\n        public void Start( SensorEndpoint endpoint )\n        {\n            var sh = new SafeAction<SensorEndpoint>( e => RunSocketServer( e ), _logger );\n\n            TaskWrapper.Run( ( ) => sh.SafeInvoke( endpoint ) );\n        }\n\n        public void RunSocketServer( SensorEndpoint endpoint )\n        {\n            IPAddress ipAddress;\n            if( !IPAddress.TryParse( endpoint.Host, out ipAddress ) )\n                return;\n\n            TcpListener serverSocket = new TcpListener( ipAddress, endpoint.Port );\n            serverSocket.Start( );\n\n            TcpClient clientSocket = serverSocket.AcceptTcpClient( );\n\n            try\n            {\n                for( ; ; )\n                {\n                    NetworkStream networkStream = clientSocket.GetStream( );\n\n                    //byte[] bytesFrom = new byte[10025];\n                    //networkStream.Read(bytesFrom, 0, clientSocket.ReceiveBufferSize);\n\n                    //string dataFromClient = Encoding.ASCII.GetString(bytesFrom);\n                    //dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf(\"$\"));\n\n                    SensorDataContract sensorData = RandomSensorDataGenerator.Generate( );\n                    string serializedData = JsonConvert.SerializeObject( sensorData );\n\n                    Byte[] sendBytes = Encoding.ASCII.GetBytes( \"<\" + serializedData + \">\" );\n\n                    networkStream.Write( sendBytes, 0, sendBytes.Length );\n                    networkStream.Flush( );\n\n                    Thread.Sleep( SLEEP_TIME_MS );\n                }\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( ex.ToString( ) );\n            }\n\n            try\n            {\n                serverSocket.Stop( );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( ex.ToString( ) );\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/ITest.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    interface ITest\n    {\n        void Run( );\n        void Completed( );\n        int TotalMessagesSent { get; }\n        int TotalMessagesToSend { get; }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle( \"CoreTest\" )]\n[assembly: AssemblyDescription( \"\" )]\n[assembly: AssemblyConfiguration( \"\" )]\n[assembly: AssemblyCompany( \"\" )]\n[assembly: AssemblyProduct( \"CoreTest\" )]\n[assembly: AssemblyCopyright( \"Copyright ©  2014\" )]\n[assembly: AssemblyTrademark( \"\" )]\n[assembly: AssemblyCulture( \"\" )]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible( false )]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid( \"907733b9-63ac-4ae4-9707-1d683a289c32\" )]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion( \"1.0.0.0\" )]\n[assembly: AssemblyFileVersion( \"1.0.0.0\" )]\n\n[assembly: InternalsVisibleTo( \"BatchSenderThreadTest\" )]"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/RealDataTest.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Linq;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public class RealDataTest : ITest\n    {\n        private readonly ILogger                                    _logger;\n        private readonly AutoResetEvent                             _completed;\n        private readonly GatewayQueue<QueuedItem>                   _gatewayQueue;\n        private readonly IMessageSender<QueuedItem>                 _sender;\n        private readonly BatchSenderThread<QueuedItem, QueuedItem>  _batchSenderThread;\n        private          int                                        _totalMessagesSent;\n        private          int                                        _totalMessagesToSend;\n\n        //--//\n\n        public RealDataTest(ILogger logger)\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Cannot run tests without logging\" );\n            }\n\n             _completed = new AutoResetEvent( false );\n\n            _logger = logger;\n\n            _totalMessagesSent = 0;\n            _totalMessagesToSend = 0;\n            _gatewayQueue = new GatewayQueue<QueuedItem>( );            \n\n            _sender = new MockSender<QueuedItem>( this );\n\n            _batchSenderThread = new BatchSenderThread<QueuedItem, QueuedItem>( _gatewayQueue, _sender, m => m, null, _logger );\n        }\n\n        public void Run( )\n        {\n            TestRealTimeData( );\n        }\n\n        public void TestRealTimeData( )\n        {\n            const int INITIAL_MESSAGES_BOUND = 5;\n            const int STOP_TIMEOUT_MS = 5000; // ms\n\n            try\n            {\n                IList<string> sources = Loader.GetSources( ).Where(\n                    m => !m.Contains( \"Mock\" )\n                        && ( m.Contains( \"Socket\" ) || m.Contains( \"SerialPort\" ) )\n                    ).ToList( );\n\n                IList<SensorEndpoint> endpoints = Loader.GetEndpoints( );\n\n                if( !endpoints.Any( m => m.Name.Contains( \"Socket\" ) ) )\n                {\n                    Console.Out.WriteLine( \"Need to specify local ip host for Socket interations \" +\n                                        \"and name of endpoint should contain \\\"Socket\\\"\" );\n                }\n\n                GatewayService service = PrepareGatewayService( );\n\n                DeviceAdapterLoader dataIntakeLoader = new DeviceAdapterLoader(\n                    sources,\n                    endpoints,\n                    _logger );\n\n                _totalMessagesToSend += INITIAL_MESSAGES_BOUND;\n\n                dataIntakeLoader.StartAll( service.Enqueue, DataArrived );\n\n                _completed.WaitOne( );\n\n                dataIntakeLoader.StopAll( );\n\n                _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"exception caught: \" + ex.StackTrace );\n            }\n            finally\n            {\n                _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n                _sender.Close( );\n            }\n        }\n\n        public int TotalMessagesSent\n        {\n            get\n            {\n                return _totalMessagesSent;\n            }\n        }\n\n        public int TotalMessagesToSend\n        {\n            get\n            {\n                return _totalMessagesToSend;\n            }\n        }\n\n        public void Completed( )\n        {\n            _completed.Set( );\n\n            Console.WriteLine( String.Format( \"Test completed, {0} messages sent\", _totalMessagesToSend ) );\n        }\n\n        private GatewayService PrepareGatewayService( )\n        {\n            _batchSenderThread.Start( );\n\n            GatewayService service = new GatewayService( _gatewayQueue, _batchSenderThread,\n                m => DataTransforms.QueuedItemFromSensorDataContract(\n                        DataTransforms.AddTimeCreated( DataTransforms.SensorDataContractFromString( m, _logger ) ), _logger ) );\n\n            service.Logger = _logger;\n            service.OnDataInQueue += DataInQueue;\n\n            return service;\n        }\n\n        protected void DataArrived( string data )\n        {\n            _totalMessagesSent++;\n\n            //we dont want to stop, so need to increment a limit\n            _totalMessagesToSend++;\n\n            string logMessage = \"New data arrived: \" + data;\n            Console.Out.WriteLine( logMessage );\n            _logger.LogInfo( logMessage );\n        }\n\n        protected virtual void DataInQueue( QueuedItem data )\n        {\n            // LORENZO: test behaviours such as accumulating data an processing in batch\n            // as it stands, we are processing every event as it comes in\n\n            _batchSenderThread.Process( );\n        }\n    }\n}\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/SocketTest.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Linq;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    public class SocketTest : ITest\n    {\n        public const int TEST_ITERATIONS   = 5;\n        public const int MAX_TEST_MESSAGES = 1000;\n\n        //--//\n\n        private const int STOP_TIMEOUT_MS = 5000; // ms\n\n        //--//\n\n        private readonly ILogger                                    _logger;\n        private readonly AutoResetEvent                             _completed;\n        private readonly GatewayQueue<QueuedItem>                   _gatewayQueue;\n        private readonly IMessageSender<QueuedItem>                 _sender;\n        private readonly BatchSenderThread<QueuedItem, QueuedItem>  _batchSenderThread;\n        private          int                                        _totalMessagesSent;\n        private          int                                        _totalMessagesToSend;\n\n        //--//\n\n        public SocketTest( ILogger logger )\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Cannot run tests without logging\" );\n            }\n\n             _completed = new AutoResetEvent( false );\n\n            _logger = logger;\n\n            _totalMessagesSent = 0;\n            _totalMessagesToSend = 0;\n            _gatewayQueue = new GatewayQueue<QueuedItem>( );            \n\n            _sender = new MockSender<QueuedItem>( this );\n            //\n            // To test with actual event hub, use the code below\n            //  _sender = new MessageSender<SensorDataContract>(Constants.IotHubConnectionString);\n            //  ((MessageSender<QueuedItem>)_Sender).Logger = new TestLogger();\n            // \n\n            _batchSenderThread = new BatchSenderThread<QueuedItem, QueuedItem>( _gatewayQueue, _sender, m => m, null, _logger );\n        }\n\n        public void Run( )\n        {\n            TestReceiveMessagesFromSocketDevice( );\n        }\n\n        public void TestReceiveMessagesFromSocketDevice( )\n        {\n            const int MESSAGES_TO_SEND_BY_SOCKET = 5;\n            try\n            {\n                IList<string> sources = Loader.GetSources( )\n                    .Where( m => m.Contains( \"Socket\" ) ).ToList( );\n                IList<SensorEndpoint> endpoints = Loader.GetEndpoints( )\n                    .Where( m => m.Name.Contains( \"Socket\" ) ).ToList( );\n\n                if( endpoints.Count == 0 )\n                {\n                    throw new Exception( \"Need to specify local ip host for Socket interations \" +\n                                        \"and name of endpoint should contain \\\"Socket\\\"\" );\n                }\n\n                GatewayService service = PrepareGatewayService( );\n\n                SensorEndpoint endpoint = endpoints.First( );\n                SocketClientTestDevice device = new SocketClientTestDevice( _logger );\n                device.Start( endpoint, MESSAGES_TO_SEND_BY_SOCKET );\n\n                DeviceAdapterLoader dataIntakeLoader = new DeviceAdapterLoader(\n                    sources,\n                    endpoints,\n                    _logger );\n\n                _totalMessagesToSend += MESSAGES_TO_SEND_BY_SOCKET;\n\n                dataIntakeLoader.StartAll( service.Enqueue, DataArrived );\n\n                _completed.WaitOne( );\n\n                dataIntakeLoader.StopAll( );\n\n                _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"exception caught: \" + ex.StackTrace );\n            }\n            finally\n            {\n                _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n                _sender.Close( );\n            }\n        }\n\n        public int TotalMessagesSent\n        {\n            get\n            {\n                return _totalMessagesSent;\n            }\n        }\n\n        public int TotalMessagesToSend\n        {\n            get\n            {\n                return _totalMessagesToSend;\n            }\n        }\n\n        public void Completed( )\n        {\n            _completed.Set( );\n\n            Console.WriteLine( String.Format( \"Test completed, {0} messages sent\", _totalMessagesToSend ) );\n        }\n\n        private GatewayService PrepareGatewayService( )\n        {\n            _batchSenderThread.Start( );\n\n            GatewayService service = new GatewayService( _gatewayQueue, _batchSenderThread,\n                m => DataTransforms.QueuedItemFromSensorDataContract(\n                        DataTransforms.AddTimeCreated( DataTransforms.SensorDataContractFromString( m, _logger ) ), _logger ) );\n\n            service.Logger = _logger;\n            service.OnDataInQueue += DataInQueue;\n\n            _batchSenderThread.OnEventsBatchProcessed += EventBatchProcessed;\n\n            return service;\n        }\n\n        protected void DataArrived( string data )\n        {\n            _totalMessagesSent++;\n        }\n\n        protected virtual void DataInQueue( QueuedItem data )\n        {\n            // LORENZO: test behaviours such as accumulating data an processing in batch\n            // as it stands, we are processing every event as it comes in\n\n            _batchSenderThread.Process( );\n        }\n\n        protected virtual void EventBatchProcessed( List<TaskWrapper> messages )\n        {\n            // LORENZO: test behaviours such as waiting for messages to be delivered or re-transmission\n\n            foreach( TaskWrapper t in messages )\n            {\n                _logger.LogInfo( String.Format( \"task {0} status is '{1}'\", t.Id, t.Status.ToString( ) ) );\n            }\n\n            TaskWrapper.BatchWaitAll( ( ( List<TaskWrapper> )messages ).ToArray( ) );\n\n            foreach( TaskWrapper t in messages )\n            {\n                _logger.LogInfo( String.Format( \"task {0} status is '{1}'\", t.Id, t.Status.ToString( ) ) );\n            }\n        }\n    }\n}\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/TestRunner.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Configuration;\n    using Newtonsoft.Json;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Gateway;\n\n    //--//\n\n    public class TestRunner\n    {\n\n        private static void TestMockData( ILogger logger )\n        {\n            /////////////////////////////////////////////////////////////////////////////////////////////\n            // Test core service \n            //\n            CoreTest mockDataTest = new CoreTest( logger );\n            mockDataTest.Run( );\n            Console.WriteLine( String.Format( \"Core Test completed\" ) );\n        }\n\n        private static void TestWebService( ILogger logger )\n        {\n            //////////////////////////////////////////////////////////////////////////////////////////////\n            // Test Web service and core service \n            //\n            SensorDataContract sensorData = RandomSensorDataGenerator.Generate( );\n            string serializedData = JsonConvert.SerializeObject( sensorData );\n\n            WebServiceTest webServiceTest = new WebServiceTest( \"http://localhost:8000/GatewayService/API/Enqueue?jsonData=\" + serializedData, logger );\n            webServiceTest.Run( );\n            Console.WriteLine( String.Format( \"WebService Test completed, {0} messages sent\", webServiceTest.TotalMessagesSent ) );\n        }\n\n        private static void TestSocket( ILogger logger )\n        {\n            /////////////////////////////////////////////////////////////////////////////////////////////\n            // Test Socket\n            //\n            SocketTest socketTest = new SocketTest( logger );\n            socketTest.Run( );\n            Console.WriteLine( String.Format( \"Socket Test completed\" ) );\n        }\n\n        private static void TestRealData( ILogger logger )\n        {\n            /////////////////////////////////////////////////////////////////////////////////////////////\n            // Test Socket\n            //\n            RealDataTest realDataTest = new RealDataTest( logger );\n            realDataTest.Run( );\n            Console.WriteLine( String.Format( \"Socket Test completed\" ) );\n        }\n\n        static void Main( string[] args )\n        {\n            // we do not need a tunable logger, but this is a nice way to test it...\n            TunableLogger logger = TunableLogger.FromLogger(\n                    SafeLogger.FromLogger( TestLogger.Instance )\n                    );\n\n            TunableLogger.LoggingLevel loggingLevel = TunableLogger.LevelFromString( ConfigurationManager.AppSettings.Get( \"LoggingLevel\" ) );\n\n            logger.Level = ( loggingLevel != TunableLogger.LoggingLevel.Undefined ) ? loggingLevel : TunableLogger.LoggingLevel.Errors;\n\n            if( args.Length == 0 )\n            {\n                //if started without arguments\n                TestRealData( logger );\n            }\n\n            foreach( string t in args )\n            {\n                switch( t.Substring( 0, 1 ).Replace( \"/\", \"-\" ) + t.Substring( 1 ).ToLowerInvariant( ) )\n                {\n                    case \"-MockData\":\n                        TestMockData( logger );\n                        break;\n                    case \"-WebService\":\n                        TestWebService( logger );\n                        break;\n                    case \"-Socket\":\n                        TestSocket( logger );\n                        break;\n                    case \"-AllTimeBounded\":\n                        TestMockData( logger );\n                        TestWebService( logger );\n                        TestSocket( logger );\n                        break;\n                    case \"-RealData\":\n                        TestRealData( logger );\n                        break;\n                }\n            }\n\n            // wait for logging tasks to complete\n            Console.WriteLine( \"Press enter to exit\" );\n            Console.ReadLine( );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/Utils/Generators/RandomSensorDataGenerator.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using Microsoft.ConnectTheDots.Gateway;\n\n    //--//\n\n    public static class RandomSensorDataGenerator\n    {\n        private const int DEVICE_COUNT = 4;\n\n        //--//\n\n        private static readonly Random   _Random        = new Random( );\n        private static readonly string[] _Guids         = new string[ DEVICE_COUNT ];\n        private static readonly string[] _MeasureName   = new string[ DEVICE_COUNT ];\n        private static readonly string[] _UnitOfMeasure = new string[ DEVICE_COUNT ];\n        private static readonly string[] _DisplayName   = new string[ DEVICE_COUNT ];\n\n        //--//\n\n        static RandomSensorDataGenerator( )\n        {\n            for( int i = 0; i < DEVICE_COUNT; ++i )\n            {\n                int rint = i % 2;\n\n                _Guids[ i ] = ( new Guid( _Random.Next( ), 0, 0, new byte[ 8 ] ) ).ToString( );\n                _MeasureName[ i ] = rint == 0 ? \"length\" : \"time\";\n                _UnitOfMeasure[ i ] = rint == 0 ? \"m\" : \"s\";\n                _DisplayName[ i ] = \"Sensor\" + i + ( rint == 0 ? \"m\" : \"s\" );\n            }\n        }\n\n        public static SensorDataContract Generate( )\n        {\n            int device = _Random.Next( ) % DEVICE_COUNT;\n\n            SensorDataContract sensorData = new SensorDataContract\n            {\n                MeasureName = _MeasureName[ device ],\n                UnitOfMeasure = _UnitOfMeasure[ device ],\n                DisplayName = _DisplayName[ device ],\n                Guid = _Guids[ device ],\n                Value = _Random.Next( ) % 1000 - 500,\n                Location = \"here\",\n                Organization = \"contoso\",\n                TimeCreated = DateTime.UtcNow\n            };\n            return sensorData;\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/Utils/Loader/Loader.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Collections.Generic;\n    using System.Configuration;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    internal class DataTransformsConfig\n    {\n        public bool AttachTime;\n        public bool AttachIP;\n    };\n\n    internal static class Loader\n    {\n        internal static IList<String> GetSources( )\n        {\n            var dataIntakes = new List<String>( );\n\n            DeviceAdapterConfigSection config = ConfigurationManager.GetSection( \"dataIntakes\" ) as DeviceAdapterConfigSection;\n\n            if( config != null )\n            {\n                foreach( DeviceAdapterConfigInstanceElement e in config.Instances )\n                {\n                    dataIntakes.Add( e.AssemblyPath );\n                }\n            }\n\n            return dataIntakes;\n        }\n\n        internal static IList<SensorEndpoint> GetEndpoints( )\n        {\n            var sensorEndpoints = new List<SensorEndpoint>( );\n\n            SensorEndpointConfigSection sensorEndpointItems = ConfigurationManager.GetSection( \"sensorEndpoints\" )\n                as SensorEndpointConfigSection;\n\n            if( sensorEndpointItems != null )\n            {\n                foreach( SensorEndpointConfigInstanceElement sensorEndpointItem in sensorEndpointItems.Instances )\n                {\n                    sensorEndpoints.Add( new SensorEndpoint\n                    {\n                        Name = sensorEndpointItem.Name,\n                        Host = sensorEndpointItem.Host,\n                        Port = sensorEndpointItem.Port,\n                    } );\n                }\n            }\n\n            return sensorEndpoints;\n        }\n\n        internal static IotHubConfig GetIotHubConfig( )\n        {\n            IotHubConfigSection section = ConfigurationManager.GetSection(\"IotHubConfig\") as IotHubConfigSection;\n            IotHubConfig configData = null;\n\n            if( section != null )\n            {\n                configData = new IotHubConfig\n                {\n                    IotHubConnectionString = section.IotHubConnectionString,\n                };\n            }\n\n            return configData;\n        }\n\n        internal class IotHubConfigSection : ConfigurationSection\n        {\n            [ConfigurationProperty(\"IotHubConnectionString\", DefaultValue = \"IotHubConnectionString\", IsRequired = true)]\n            public string IotHubConnectionString\n            {\n                get\n                {\n                    return (string)this[\"IotHubConnectionString\"];\n                }\n                set\n                {\n                    this[\"IotHubConnectionString\"] = value;\n                }\n            }\n        }\n\n        internal static DataTransformsConfig GetDataTransformsConfig( )\n        {\n            DataTransformsConfigSection section = ConfigurationManager.GetSection( \"dataTransformsConfig\" ) as DataTransformsConfigSection;\n            DataTransformsConfig configData;\n\n            if (section != null)\n            {\n                configData = new DataTransformsConfig\n                {\n                    AttachTime = section.AttachTime,\n                    AttachIP = section.AttachIP\n                };\n            }\n            else\n            {\n                configData = new DataTransformsConfig\n                {\n                    AttachTime = true,\n                    AttachIP = false\n                };\n            }\n\n            return configData;\n        }\n    }\n\n    internal class DataTransformsConfigSection : ConfigurationSection\n    {\n        [ConfigurationProperty( \"AttachTime\", DefaultValue = \"false\", IsRequired = true )]\n        public bool AttachTime\n        {\n            get\n            {\n                return ( bool )this[ \"AttachTime\" ];\n            }\n            set\n            {\n                this[ \"AttachTime\" ] = value;\n            }\n        }\n\n        [ConfigurationProperty(\"AttachIP\", DefaultValue = \"false\", IsRequired = true)]\n        public bool AttachIP\n        {\n            get\n            {\n                return ( bool )this[ \"AttachIP\" ];\n            }\n            set\n            {\n                this[ \"AttachIP\" ] = value;\n            }\n        }\n    }\n\n    public class DeviceAdapterConfigSection : ConfigurationSection\n    {\n        [ConfigurationProperty( \"\", IsRequired = true, IsDefaultCollection = true )]\n        public DeviceAdapterConfigInstanceCollection Instances\n        {\n            get { return ( DeviceAdapterConfigInstanceCollection )this[ \"\" ]; }\n            set { this[ \"\" ] = value; }\n        }\n    }\n\n    public class DeviceAdapterConfigInstanceCollection : ConfigurationElementCollection\n    {\n        protected override ConfigurationElement CreateNewElement( )\n        {\n            return new DeviceAdapterConfigInstanceElement( );\n        }\n\n        protected override object GetElementKey( ConfigurationElement element )\n        {\n            return ( ( DeviceAdapterConfigInstanceElement )element ).Name;\n        }\n    }\n\n    public class DeviceAdapterConfigInstanceElement : ConfigurationElement\n    {\n        [ConfigurationProperty( \"name\", IsKey = true, IsRequired = true )]\n        public string Name\n        {\n            get\n            {\n                return ( string )base[ \"name\" ];\n            }\n        }\n\n        [ConfigurationProperty( \"type\", IsRequired = true )]\n        public string TypeName\n        {\n            get\n            {\n                return ( string )base[ \"type\" ];\n            }\n        }\n\n        [ConfigurationProperty( \"assemblyPath\", IsRequired = true )]\n        public string AssemblyPath\n        {\n            get\n            {\n                return ( string )base[ \"assemblyPath\" ];\n            }\n        }\n    }\n\n    public class SensorEndpointConfigSection : ConfigurationSection\n    {\n        [ConfigurationProperty( \"\", IsRequired = true, IsDefaultCollection = true )]\n        public SensorEndpointConfigInstanceCollection Instances\n        {\n            get { return ( SensorEndpointConfigInstanceCollection )this[ \"\" ]; }\n            set { this[ \"\" ] = value; }\n        }\n    }\n\n    public class SensorEndpointConfigInstanceCollection : ConfigurationElementCollection\n    {\n        protected override ConfigurationElement CreateNewElement( )\n        {\n            return new SensorEndpointConfigInstanceElement( );\n        }\n\n        protected override object GetElementKey( ConfigurationElement element )\n        {\n            return ( ( SensorEndpointConfigInstanceElement )element ).Name;\n        }\n    }\n\n    public class SensorEndpointConfigInstanceElement : ConfigurationElement\n    {\n        [ConfigurationProperty( \"name\", IsKey = true, IsRequired = true )]\n        public string Name\n        {\n            get\n            {\n                return ( string )base[ \"name\" ];\n            }\n        }\n\n        [ConfigurationProperty( \"port\", IsRequired = true )]\n        public int Port\n        {\n            get\n            {\n                return ( int )base[ \"port\" ];\n            }\n        }\n\n        [ConfigurationProperty( \"host\", IsRequired = true )]\n        public string Host\n        {\n            get\n            {\n                return ( string )base[ \"host\" ];\n            }\n        }\n    }\n}"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/Utils/Logger/TestLogger.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System.Diagnostics;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public class TestLogger : ILogger\n    {\n        #region Singleton implementation\n\n        private static readonly object     _syncRoot = new object( );\n        private static          TestLogger _logger;\n\n        internal static TestLogger Instance\n        {\n            get\n            {\n                if( _logger == null )\n                {\n                    lock( _syncRoot )\n                    {\n                        if( _logger == null )\n                        {\n                            _logger = new TestLogger( );\n                        }\n                    }\n                }\n\n                return _logger;\n            }\n        }\n\n        private TestLogger( )\n        {\n        }\n\n        #endregion\n\n        public void Flush( )\n        {\n        }\n\n        public void LogError( string logMessage )\n        {\n            Debug.WriteLine( \"[ERROR]: \" + logMessage );\n        }\n\n        public void LogInfo( string logMessage )\n        {\n            Debug.WriteLine( \"[INFO ] : \" + logMessage );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/Utils/MessageSender/MockSender.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n    //--//\n\n    internal class MockSender<T> : IMessageSender<T>\n    {\n        private static readonly int MAX_LAG = 1; // ms\n\n        //--//\n\n        protected readonly ITest  _test;\n        protected readonly Random _rand;\n        protected          int    _forSending;\n\n        //--//\n\n        internal MockSender( ITest test )\n        {\n            _forSending = 0;\n            _test = test;\n            _rand = new Random( );\n        }\n\n        public TaskWrapper SendMessage( T data )\n        {\n            SimulateSend( );\n            return null;\n        }\n\n        public TaskWrapper SendSerialized( string jsonData )\n        {\n            SimulateSend( );\n            return null;\n        }\n\n        public void Close( )\n        {\n        }\n\n        private void SimulateSend( )\n        {\n            // Naive atetmpt to simulate network latency\n            Thread.Sleep( _rand.Next( MAX_LAG ) );\n\n            int totalMessagesSent = _test.TotalMessagesSent;\n\n            // LORENZO: print all data and validate that they match the data sent\n            if( Interlocked.Increment( ref _forSending ) == totalMessagesSent && totalMessagesSent >= _test.TotalMessagesToSend )\n            {\n                _test.Completed( );\n            }\n        }\n    }\n}\n\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/WebServiceTest.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Threading;\n    using System.Net;\n    using System.Diagnostics;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public class WebServiceTest : ITest\n    {\n        public const int TEST_ITERATIONS = 100;\n        public const int MAX_TEST_MESSAGES = 1000;\n\n        //--//\n\n        private const int MINUTES_TO_MILLISECONDS  = 60 * 1000;\n        private const int STOP_TIMEOUT_MS          = 5000;                        // ms\n        private const int MIN_WAIT_BEETWEEN_BURSTS = 5 * MINUTES_TO_MILLISECONDS; // 5 minutes in milliseconds\n\n        //--//\n\n        private readonly ILogger _logger;\n        private readonly Random  _rand;\n        private          string  _url;\n        private          int     _totalMessagesSent;\n        private          int     _totalMessagesToSend;\n\n        //--//\n\n        public WebServiceTest( string url, ILogger logger )\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Cannot run tests without logging\" );\n            }\n\n            _logger = logger;\n\n            _url = url;\n            _rand = new Random( );\n            _totalMessagesSent = 0;\n            _totalMessagesToSend = 0;\n        }\n\n        public void Run( )\n        {\n            try\n            {\n                // Send a flurry of messages, repeat a few times\n                for( int iteration = 0; iteration < TEST_ITERATIONS; ++iteration )\n                {\n                    int count = _rand.Next( MAX_TEST_MESSAGES );\n\n                    while( --count >= 0 )\n                    {\n                        HttpWebRequest request = ( HttpWebRequest )WebRequest.Create( _url );\n                        request.Method = \"GET\";\n\n                        using( HttpWebResponse response = ( HttpWebResponse )request.GetResponse( ) )\n                        {\n                            if( response.StatusCode != HttpStatusCode.OK )\n                            {\n                                SignalError( response.StatusCode );\n                            }\n                            else\n                            {\n                                _totalMessagesSent++;\n                            }\n                        }\n                    }\n\n                    // sleep 5 to 10 minutes\n                    int sleepMS = MIN_WAIT_BEETWEEN_BURSTS + _rand.Next( MIN_WAIT_BEETWEEN_BURSTS );\n\n                    Console.WriteLine( String.Format( \"Sent {0} messages, sleeping now for {1} minutes\", _totalMessagesSent, sleepMS / MINUTES_TO_MILLISECONDS ) );\n\n                    Thread.Sleep( sleepMS );\n                }\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"exception caught: \" + ex.StackTrace );\n            }\n        }\n\n        public void Completed( )\n        {\n            throw new NotImplementedException( );\n        }\n\n        public int TotalMessagesSent\n        {\n            get\n            {\n                return _totalMessagesSent;\n            }\n        }\n\n        public int TotalMessagesToSend\n        {\n            get\n            {\n                return _totalMessagesToSend;\n            }\n        }\n\n        protected void SignalError( HttpStatusCode code )\n        {\n            _logger.LogError( \"Response yielded error: \" + code.ToString( ) );\n\n            Debug.Assert( false );\n        }\n\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/CoreTest/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.6\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/DeviceAdapterTestMock/DeviceAdapterTestMock.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using System.Threading;\n    using Newtonsoft.Json;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n\n    //--//\n\n    public class DeviceAdapterTestMock : DeviceAdapterAbstract\n    {\n        private const int SLEEP_TIME_MS    = 1000;\n        private const int LOG_MESSAGE_RATE = 100;//should be positive\n\n        //--//\n\n        private Func<string, int> _enqueue;\n        private bool              _doWorkSwitch;\n\n        //--//\n\n        public DeviceAdapterTestMock( ILogger logger )\n            : base( logger )\n        {\n        }\n\n        public override bool Start( Func<string, int> enqueue )\n        {\n            _enqueue = enqueue;\n\n            _doWorkSwitch = true;\n\n            var sh = new SafeAction<int>( ( t ) => TestRun( t ), _logger );\n\n            TaskWrapper.Run( ( ) => sh.SafeInvoke( SLEEP_TIME_MS ) );\n\n            return true;\n        }\n\n        public override bool Stop( )\n        {\n            _doWorkSwitch = false;\n\n            return true;\n        }\n\n        public override bool SetEndpoint( SensorEndpoint endpoint = null )\n        {\n            //we don't need any endpoints for this Data Intake\n            if( endpoint == null )\n                return true;\n\n            return false;\n        }\n\n        public void TestRun( int sleepTime )\n        {\n            int messagesSent = 0;\n            do\n            {\n                SensorDataContract sensorData = RandomSensorDataGenerator.Generate( );\n\n                string serializedData = JsonConvert.SerializeObject( sensorData );\n\n                _enqueue( serializedData );\n\n                if( ++messagesSent % LOG_MESSAGE_RATE == 0 )\n                {\n                    _logger.LogInfo( LOG_MESSAGE_RATE + \" messages sent via DeviceAdapterTestMock.\" );\n                }\n\n                Thread.Sleep( sleepTime );\n\n            } while( _doWorkSwitch );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/DeviceAdapterTestMock/DeviceAdapterTestMock.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{756AB4B0-BC00-4297-A4F0-3DB40B7E2181}</ProjectGuid>\n    <OutputType>Library</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.Test</RootNamespace>\n    <AssemblyName>DataAdapterTestMock</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"DeviceAdapterTestMock.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{E14D1C61-1979-452E-BE8B-0303A95EF764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\CoreTest\\CoreTest.csproj\">\n      <Project>{ca90b613-c4d6-4011-bc6b-ccc8de62dac0}</Project>\n      <Name>CoreTest</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <PropertyGroup>\n    <PostBuildEvent>copy $(TargetPath) $(SolutionDir)Tests\\CoreTest\\$(OutDir)</PostBuildEvent>\n  </PropertyGroup>\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/DeviceAdapterTestMock/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"DeviceAdapterTestMock\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"DeviceAdapterTestMock\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"12f9e116-ca5e-496d-b7b4-3c6439886213\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/DeviceAdapterTestMock/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.6\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/SocketServiceDeviceMock/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n    <startup>\n        <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5.2\"/>\n    </startup>\n</configuration>\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/SocketServiceDeviceMock/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"SocketDeviceMock\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"SocketDeviceMock\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"7dec236e-ba74-4a1a-a625-90e8f1a6be50\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/SocketServiceDeviceMock/SocketServiceDeviceMock.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    class SocketServiceDeviceMock\n    {\n        static void Main( string[] args )\n        {\n            ConsoleLogger logger = new ConsoleLogger( );\n\n            SocketServiceTestDevice device = new SocketServiceTestDevice( logger );\n            \n            SensorEndpoint endpoint = new SensorEndpoint\n            {\n                Host = \"127.0.0.1\",\n                Port = 5000\n            };\n            \n            device.RunSocketServer( endpoint );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/SocketServiceDeviceMock/SocketServiceDeviceMock.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{91C31E86-7DDB-4C29-8A65-56596478013C}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>SocketDeviceMock</RootNamespace>\n    <AssemblyName>SocketDeviceMock</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"SocketServiceDeviceMock.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n    <Compile Include=\"Utils\\Logger\\ConsoleLogger.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\" />\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{E14D1C61-1979-452E-BE8B-0303A95EF764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\CoreTest\\CoreTest.csproj\">\n      <Project>{ca90b613-c4d6-4011-bc6b-ccc8de62dac0}</Project>\n      <Name>CoreTest</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/SocketServiceDeviceMock/Utils/Logger/ConsoleLogger.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.Test\n{\n    using System;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public class ConsoleLogger : ILogger\n    {\n        public void Flush( )\n        {\n        }\n\n        public void LogError( string logMessage )\n        {\n            Console.Out.WriteLine( \"[ERROR]: \" + logMessage );\n        }\n\n        public void LogInfo( string logMessage )\n        {\n            Console.Out.WriteLine( \"[INFO ] : \" + logMessage );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/Tests/SocketServiceDeviceMock/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"6.0.6\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WiFi-Configuration.md",
    "content": "# Wifi Configuration #\nIn our solution, the Raspberry Pi is most typically run in a headless configuration. When following the labs in your own home or office, you can usually find a keyboard, mouse, and HDMI display to use to connect to the Pi, configure WiFi, and identify the IP address. Or, you can just use a wired connection. In a classroom or lab situation, or when you are working from a laptop using WiFi, this can be more difficult, so we need to use a different approach.\n\n##Prerequisites\n\nBe sure you have installed the latest Raspbian for your Raspberry Pi. Then ensure you have all the latest updates installed as per the instructions here in the Wiki.\n\nOn your PC, ensure you have PuTTY, Tera Term, or another suitable terminal client with support for serial connections.\n\n##Using a USB/Serial TTL Cable\n\nAssuming you do not have an HDMI display, and USB mouse and keyboard available, you'll use a USB/Serial TTL cable to access the Pi through a direct serial connection. \n\nUnplug the Raspberry Pi.\n\nGet yourself one of these great Adafruit cables. Not any cable will work, you will need something that works with your operating system and with the Raspberry Pi. The Adafruit cable works with Windows, including 8+, Linux, OSX. In the Microsoft-run labs, these cables are provided for you.\n\n![Adafruit Serial Cable](AdafruitUSBSerialCable.png)\n\nYou can purchase the cable here: http://www.adafruit.com/products/954\n\nNow, connect the cable to the Raspberry Pi. **Do not yet plug it into the USB port on your computer.** We need to make sure there's no power going to the Pi.\n\nI'll show the connection a few different ways here. It's important that you get it correct.\n\n![Pi Serial Pins](PISerialPinout.png).\n \nUse the first +5v pin as shown here. Make sure you're on the outer row of pins -- the row nearest the edge of the board.\nPin 2: +5v\nPin 6: Ground\nPin 8: Pi Transmit (PC receive)\nPin 9: Pi Receive (PC transmit)\n\n![Pi Serial Connection](PISerialDebugConnection.png).\n \nThose are the correct pins for the Pi rev 2, the B+, and the Pi 2. For other versions of the Pi, consult the pin descriptions.\n\nOnce you've checked that everything is connected as described here, you may plug the USB connector into your PC. Depending upon the power available in your USB port, and what else you have attached to the Pi, you may be able to power the Raspberry Pi directly from this connection (the +5v wire).\n\nYou're not required to do that though. You can plug the Pi into a dedicated power adapter like you normally would. When working with USB WiFi dongles, I recommend you use the standard power connector with a decent (2 amp or more) power supply.\n\nOnce plugged in, Windows will detect the adapter and install the driver.\n \n![Driver installation](AdafruitCableDriverInstall.png).\n\nWhile the driver is installing, pay attention to the COM port listed. In this case, it's COM5. If you miss that, or if it's been a while since you installed the USB->TTL adapter, you can check device manager. For Windows 8+, right click the start button and select \"Device Manager\", then look under \"Ports (COM & LPT)\" as shown here. The port will be listed right in the entry.\n \n![Device Manager](DeviceManagerUSBSerial.png).\n\n##Connecting to the Pi over Serial\n\nUsing PuTTY, Tera Term, or whatever terminal program you choose, start a new serial session. Use the COM port you wrote down during the install. The rate to use is 115200. Other things may be left at typical default values (8 data bits, no parity, 1 stop bit, XON/XOFF flow control, vt100 emulation).\n\nOnce connected, hit enter to get to the login prompt.\n\nNote that if you reboot the Pi at any point, you'll get all of the debug boot information through this same connection. Be sure to leave it alone until you get the Linux login prompt, not the recovery login prompt.\n\n##Configuring WiFi\n\nOnce you've logged in (default password for Raspbian is user: pi, password: raspberry) over the serial connection, you may configure WiFi and perform other commands.\n\nFor our setup, we use wpa_supplicant for wifi. We also use the clear-text passphrase. For use outside of a lab situation, we recommend using the wpa_passphrase command to generate an encrypted passphrase.\n\nFor the next step, you'll need to have your network SSID and either your encrypted passphrase or your key from your WiFi router.\n\nAt the command line, type:\n\n    sudo nano /etc/wpa_supplicant/wpa_supplicant.conf\n\nNote that the shell has good completion, so you can type \"sudo nano /etc/wp{tab}wp{tab}\" to get the above if the wpa_supplicant.conf file already exists.\n\nYou'll then type this information in. For example, the default information for one of the ZyXel travel routers is shown below.\n\n![wpa_supplicant.conf](NanoWPAConfig.png).\n \nWhen you've entered the required information, hit control-X to exit. You'll be prompted to save, so answer \"Y\". Just hit enter to save over the old file.\n\nThe next step is to edit the `/etc/network/interfaces` file to add in wlan0. To do that, at the command prompt, type:\n\n    sudo nano /etc/network/interfaces\n\nOnce edited, your interfaces file should look like this:\n \n![Network Interfaces file](NanoNetworkInterfaces.png).\n\nAs before, exit nano, saving the file.\n\nBack at the command prompt, type \n\n    sudo reboot\n\nRemember to ignore the recovery login when you see it come up. Login at the normal Linux login.\n\n##Identifying the IP Address\n\nNow the easy part! To see the network configuration for your pi, at the command line, type:\n\n    ifconfig\n\nIf the Pi was able to connect to your WiFi network, you'll see the IP address in the results from that command\n\n![ifconfig](ifconfig.png).\n \nYou now know the IP address of your WiFi-connected Raspberry Pi.\n\n##Testing\n\nOnce you have confirmed the Pi has a valid IP address, connect to the same subnet as the Pi. (This usually does not work if you're on WiFi, and the Pi is on wired, or vice versa. In most venues, you'll need to get them both on the same network because companies isolate their wired and wireless networks from peer-to-peer communication.)\n\nOpen PuTTY or Tera Term and start an SSH session with the IP address you found here. From that point on, you may proceed with the rest of the lab.\n\nYou may leave the serial connection open and connected, or shutdown the Pi, and then disconnect the serial cable from the Pi and proceed using SSH only.\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsEXE/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n\n    <!-- sensors config -->\n    <!-- \"Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element. -->\n    <configSections>\n        <section name=\"dataIntakes\" type=\"Microsoft.ConnectTheDots.Common.DeviceAdapterConfigSection, Microsoft.ConnectTheDots.Common\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\"/>\n        <section name=\"sensorEndpoints\" type=\"Microsoft.ConnectTheDots.Common.SensorEndpointConfigSection, Microsoft.ConnectTheDots.Common\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\"/>\n        <section name=\"IotHubConfig\" type=\"Microsoft.ConnectTheDots.Common.IotHubConfigSection, Microsoft.ConnectTheDots.Common\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\"/>\n        <section name=\"dataTransformsConfig\" type=\"Microsoft.ConnectTheDots.Common.DataTransformsConfigSection, Microsoft.ConnectTheDots.Common\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\"/>\n    </configSections>\n\n  <IotHubConfig IotHubConnectionString=\"HostName=ctdoli1010hub.azure-devices.net;DeviceId=wingateway;SharedAccessKey=OyQZIRaOc/YJu4OvyGgEXfkXteL0N11K5ipQcPvUAg8=\"/>\n\n\n  <dataIntakes>\n      <add name=\"SocketSensor\" type=\"Microsoft.ConnectTheDots.Adapters.SocketAdapter\" assemblyPath=\"..\\..\\..\\DeviceAdapters\\Socket\\bin\\Debug\\Microsoft.ConnectTheDots.SocketAdapter.dll\"/>\n      <add name=\"SerialPortSensor\" type=\"Microsoft.ConnectTheDots.Adapters.SerialPortAdapter\" assemblyPath=\"..\\..\\..\\DeviceAdapters\\SerialPort\\bin\\Debug\\Microsoft.ConnectTheDots.SerialPortAdapter.dll\"/>\n    </dataIntakes>\n\n    <sensorEndpoints>\n        <add name=\"LocalForSocket\" port=\"5000\" host=\"127.0.0.1\"/>\n    </sensorEndpoints>\n\n    <dataTransformsConfig AttachTime=\"true\" AttachIP=\"false\"/>\n  \n    <!-- service config -->\n\n    <system.serviceModel>\n        <services>\n            <!-- This section is optional with the new configuration model introduced in .NET Framework 4. -->\n            <service name=\"Microsoft.ConnectTheDots.Gateway.GatewayService\" behaviorConfiguration=\"GatewayServiceBehavior\">\n                <host>\n                    <baseAddresses>\n                        <add baseAddress=\"http://localhost:8000/GatewayService/\"/>\n                    </baseAddresses>\n                </host>\n\n                <!-- this endpoint is exposed at the base address provided by host  -->\n                <endpoint address=\"API\" binding=\"webHttpBinding\" contract=\"Microsoft.ConnectTheDots.Gateway.IGatewayService\" behaviorConfiguration=\"WebHttp\"/>\n            </service>\n        </services>\n        <behaviors>\n            <endpointBehaviors>\n                <behavior name=\"WebHttp\">\n                    <webHttp/>\n                </behavior>\n            </endpointBehaviors>\n            <serviceBehaviors>\n                <behavior name=\"GatewayServiceBehavior\">\n                    <serviceMetadata httpGetEnabled=\"true\"/>\n                    <serviceDebug includeExceptionDetailInFaults=\"true\"/>\n                </behavior>\n            </serviceBehaviors>\n        </behaviors>\n    </system.serviceModel>\n\n    <!-- runtime config -->\n    <runtime>\n        <!-- do not close process on unobserved exception -->\n        <ThrowUnobservedTaskExceptions enabled=\"false\"/>\n    </runtime>\n\n    <!-- app config-->\n    <appSettings>\n        <!-- enable/disable logging: 'Disabled' is disabled, 'Errors' is errors only, 'Verbose' is errors and info -->\n        <add key=\"LoggingLevel\" value=\"Verbose\"/>\n    </appSettings>\n    \n<startup><supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5.2\"/></startup></configuration>\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsEXE/Microsoft.ConnectTheDots.GatewayExe.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{4C8A147E-13D2-4D6E-83F3-55791B6FF6DC}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.GatewayExe</RootNamespace>\n    <AssemblyName>Microsoft.ConnectTheDots.GatewayExe</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Devices.Client.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.Devices.Client.PCL.1.0.5\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Client.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Mono.Security.3.2.3.0\\lib\\net45\\Mono.Security.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"NLog, Version=3.2.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\NLog.3.2.0.0\\lib\\net45\\NLog.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PCLCrypto.1.0.86\\lib\\net40-Client\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.ServiceModel.Web\" />\n    <Reference Include=\"System.Web.Extensions\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"System.Data.DataSetExtensions\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"Validation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Validation.2.0.6.15003\\lib\\portable-net40+sl50+win+wpa81+wp80+Xamarin.iOS10+MonoAndroid10+MonoTouch10\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Program.cs\" />\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\">\n      <SubType>Designer</SubType>\n    </None>\n    <Content Include=\"NLog.config\">\n      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\n    </Content>\n    <None Include=\"NLog.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96FEDA4B-C7E0-4DDB-AD3A-BFF2FD8D973D}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\DeviceAdapters\\SerialPort\\SerialPortAdapter.csproj\">\n      <Project>{a7b77408-0dba-4384-a31a-404187caec89}</Project>\n      <Name>SerialPortAdapter</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\DeviceAdapters\\Socket\\SocketAdapter.csproj\">\n      <Project>{9d9da1eb-90da-4fc0-a97f-c650201dd994}</Project>\n      <Name>SocketAdapter</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{E14D1C61-1979-452E-BE8B-0303A95EF764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsEXE/NLog.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<nlog xmlns=\"http://www.nlog-project.org/schemas/NLog.xsd\"\n      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n\n  <!-- \n  See https://github.com/nlog/nlog/wiki/Configuration-file \n  for information on customizing logging rules and outputs.\n   -->\n  <targets>\n    <!-- add your targets here -->\n    \n    <!--\n    <target xsi:type=\"File\" name=\"f\" fileName=\"${basedir}/logs/${shortdate}.log\"\n            layout=\"${longdate} ${uppercase:${level}} ${message}\" />\n    -->\n  </targets>\n\n  <rules>\n    <!-- add your logging rules here -->\n    \n    <!--\n    <logger name=\"*\" minlevel=\"Trace\" writeTo=\"f\" />\n    -->\n  </rules>\n</nlog>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsEXE/NLog.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema id=\"NLog\" targetNamespace=\"http://www.nlog-project.org/schemas/NLog.xsd\" elementFormDefault=\"qualified\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.nlog-project.org/schemas/NLog.xsd\">\n  <xs:element name=\"nlog\" type=\"NLogConfiguration\" />\n  <xs:complexType name=\"NLogConfiguration\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"extensions\" type=\"NLogExtensions\" />\n      <xs:element name=\"include\" type=\"NLogInclude\" />\n      <xs:element name=\"variable\" type=\"NLogVariable\" />\n      <xs:element name=\"targets\" type=\"NLogTargets\" />\n      <xs:element name=\"rules\" type=\"NLogRules\" />\n      <xs:element name=\"time\" type=\"TimeSource\" />\n    </xs:choice>\n    <xs:attribute name=\"autoReload\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Watch config file for changes and reload automatically.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogToConsole\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Print internal NLog messages to the console. Default value is: false</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogToConsoleError\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Print internal NLog messages to the console error output. Default value is: false</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogFile\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Write internal NLog messages to the specified file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogLevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Log level threshold for internal log messages. Default value is: Info.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"globalThreshold\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Global log level threshold for application log messages. Messages below this level won't be logged..</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"throwExceptions\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Pass NLog internal exceptions to the application. Default value is: false.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogTargets\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"default-wrapper\" type=\"WrapperTargetBase\" />\n      <xs:element name=\"default-target-parameters\" type=\"Target\" />\n      <xs:element name=\"target\" type=\"Target\" />\n      <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" />\n      <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" />\n    </xs:choice>\n    <xs:attribute name=\"async\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogRules\">\n    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"logger\" type=\"NLogLoggerRule\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:complexType name=\"NLogExtensions\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"add\" type=\"NLogExtensionsAdd\" />\n    </xs:choice>\n  </xs:complexType>\n  <xs:complexType name=\"NLogExtensionsAdd\">\n    <xs:attribute name=\"prefix\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Prefix for targets/layout renderers/filters/conditions loaded from this assembly.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"assemblyFile\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Load NLog extensions from the specified file (*.dll)</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"assembly\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Load NLog extensions from the specified assembly. Assembly name should be fully qualified.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogLoggerRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"filters\" type=\"NLogFilters\" />\n    </xs:choice>\n    <xs:attribute name=\"name\" use=\"optional\">\n      <xs:annotation>\n        <xs:documentation>Name of the logger. May include '*' character which acts like a wildcard. Allowed forms are: *, Name, *Name, Name* and *Name*</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"levels\" type=\"NLogLevelList\">\n      <xs:annotation>\n        <xs:documentation>Comma separated list of levels that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"minlevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Minimum level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"maxlevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Maximum level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"level\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"writeTo\" type=\"NLogTargetIDList\">\n      <xs:annotation>\n        <xs:documentation>Comma separated list of target names.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"final\" type=\"xs:boolean\" default=\"false\">\n      <xs:annotation>\n        <xs:documentation>Ignore further rules if this one matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogFilters\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"when\" type=\"when\" />\n      <xs:element name=\"whenContains\" type=\"whenContains\" />\n      <xs:element name=\"whenEqual\" type=\"whenEqual\" />\n      <xs:element name=\"whenNotContains\" type=\"whenNotContains\" />\n      <xs:element name=\"whenNotEqual\" type=\"whenNotEqual\" />\n    </xs:choice>\n  </xs:complexType>\n  <xs:simpleType name=\"NLogLevel\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Off\" />\n      <xs:enumeration value=\"Trace\" />\n      <xs:enumeration value=\"Debug\" />\n      <xs:enumeration value=\"Info\" />\n      <xs:enumeration value=\"Warn\" />\n      <xs:enumeration value=\"Error\" />\n      <xs:enumeration value=\"Fatal\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLogLevelList\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\"(|Trace|Debug|Info|Warn|Error|Fatal)(,(Trace|Debug|Info|Warn|Error|Fatal))*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLogInclude\">\n    <xs:attribute name=\"file\" type=\"SimpleLayoutAttribute\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Name of the file to be included. The name is relative to the name of the current config file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"ignoreErrors\" type=\"xs:boolean\" use=\"optional\" default=\"false\">\n      <xs:annotation>\n        <xs:documentation>Ignore any errors in the include file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogVariable\">\n    <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Variable name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"value\" type=\"SimpleLayoutAttribute\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Variable value.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:simpleType name=\"NLogTargetIDList\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\"(|([a-zA-Z][a-zA-Z0-9_\\-]*))(,([a-zA-Z][a-zA-Z0-9_\\-]*))*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"Target\" abstract=\"true\"></xs:complexType>\n  <xs:complexType name=\"TargetRef\">\n    <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\" />\n  </xs:complexType>\n  <xs:complexType name=\"WrapperTargetBase\" abstract=\"true\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"target\" type=\"Target\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n        </xs:choice>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"CompoundTargetBase\" abstract=\"true\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"target\" type=\"Target\" minOccurs=\"1\" maxOccurs=\"unbounded\" />\n          <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n        </xs:choice>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Layout\"></xs:complexType>\n  <xs:complexType name=\"Filter\" abstract=\"true\"></xs:complexType>\n  <xs:complexType name=\"TimeSource\" abstract=\"true\"></xs:complexType>\n  <xs:simpleType name=\"SimpleLayoutAttribute\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\".*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"Condition\">\n    <xs:restriction base=\"xs:string\">\n      <xs:minLength value=\"1\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"AspNetBufferingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"bufferGrowLimit\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"growBufferAsNeeded\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferGrowLimit\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of log events that the buffer can keep.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events to be buffered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"growBufferAsNeeded\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether buffer should grow as needed.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AspNetTrace\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AspResponse\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"addComments\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"addComments\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to add &lt;!-- --&gt; comments around all written texts.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AsyncWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"batchSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"overflowAction\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\" />\n          <xs:element name=\"queueLimit\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"timeToSleepBetweenBatches\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"batchSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events that should be processed in a batch by the lazy writer thread.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"overflowAction\" type=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when the lazy writer thread request queue count exceeds the set limit.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"queueLimit\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Limit on the number of requests in the lazy writer thread request queue.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"timeToSleepBetweenBatches\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Time in milliseconds to sleep between batches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Grow\" />\n      <xs:enumeration value=\"Discard\" />\n      <xs:enumeration value=\"Block\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"AutoFlushWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"BufferingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"flushTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"slidingTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events to be buffered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"flushTimeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"slidingTimeout\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use sliding timeout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Chainsaw\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"includeNLogData\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeSourceInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"ndcItemSeparator\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.NLogViewerParameterInfo\" />\n          <xs:element name=\"includeCallSite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"appInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"includeNdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeMdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNLogData\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeSourceInfo\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ndcItemSeparator\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>NDC item separator.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeCallSite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"appInfo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeMdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.NetworkTargetOverflowAction\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Error\" />\n      <xs:enumeration value=\"Split\" />\n      <xs:enumeration value=\"Discard\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.NLogViewerParameterInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Viewer parameter name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"ColoredConsole\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"useDefaultRowHighlightingRules\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"highlight-row\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.ConsoleRowHighlightingRule\" />\n          <xs:element name=\"highlight-word\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.ConsoleWordHighlightingRule\" />\n          <xs:element name=\"errorStream\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useDefaultRowHighlightingRules\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use default row highlighting rules.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"errorStream\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the error stream (stderr) should be used instead of the output stream (stdout).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.ConsoleOutputColor\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Black\" />\n      <xs:enumeration value=\"DarkBlue\" />\n      <xs:enumeration value=\"DarkGreen\" />\n      <xs:enumeration value=\"DarkCyan\" />\n      <xs:enumeration value=\"DarkRed\" />\n      <xs:enumeration value=\"DarkMagenta\" />\n      <xs:enumeration value=\"DarkYellow\" />\n      <xs:enumeration value=\"Gray\" />\n      <xs:enumeration value=\"DarkGray\" />\n      <xs:enumeration value=\"Blue\" />\n      <xs:enumeration value=\"Green\" />\n      <xs:enumeration value=\"Cyan\" />\n      <xs:enumeration value=\"Red\" />\n      <xs:enumeration value=\"Magenta\" />\n      <xs:enumeration value=\"Yellow\" />\n      <xs:enumeration value=\"White\" />\n      <xs:enumeration value=\"NoChange\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.ConsoleRowHighlightingRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n      <xs:element name=\"foregroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n    </xs:choice>\n    <xs:attribute name=\"condition\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition that must be met in order to set the specified foreground and background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"foregroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Foreground color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.ConsoleWordHighlightingRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"regex\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"wholeWords\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n      <xs:element name=\"foregroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n    </xs:choice>\n    <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"regex\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"wholeWords\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"foregroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Foreground color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Console\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"error\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"error\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to send the log messages to the standard error instead of the standard output.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Database\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"connectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"connectionStringName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"dbDatabase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbHost\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbPassword\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbProvider\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"dbUserName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"useTransactions\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"installConnectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"install-command\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseCommandInfo\" />\n          <xs:element name=\"uninstall-command\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseCommandInfo\" />\n          <xs:element name=\"commandText\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"commandType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Data.CommandType\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseParameterInfo\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionString\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionStringName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the connection string (as specified in &lt;connectionStrings&gt; configuration section.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbDatabase\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database name. If the ConnectionString is not provided this value will be used to construct the \"Database=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbHost\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database host name. If the ConnectionString is not provided this value will be used to construct the \"Server=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbPassword\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database password. If the ConnectionString is not provided this value will be used to construct the \"Password=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbProvider\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the database provider.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbUserName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database user name. If the ConnectionString is not provided this value will be used to construct the \"User ID=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep the database connection open between the log events.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useTransactions\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use database transactions. Some data providers require this.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"installConnectionString\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"commandText\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text of the SQL command to be run on each log level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"commandType\" type=\"System.Data.CommandType\">\n          <xs:annotation>\n            <xs:documentation>Type of the SQL command to be run on each log level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Data.CommandType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Text\" />\n      <xs:enumeration value=\"StoredProcedure\" />\n      <xs:enumeration value=\"TableDirect\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.DatabaseCommandInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"commandType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Data.CommandType\" />\n      <xs:element name=\"connectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"ignoreFailures\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseParameterInfo\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n    </xs:choice>\n    <xs:attribute name=\"commandType\" type=\"System.Data.CommandType\">\n      <xs:annotation>\n        <xs:documentation>Type of the command.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"connectionString\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Connection string to run the command against. If not provided, connection string from the target is used.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"ignoreFailures\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore failures.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Command text.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.DatabaseParameterInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"precision\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:byte\" />\n      <xs:element name=\"scale\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:byte\" />\n      <xs:element name=\"size\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Database parameter name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"precision\" type=\"xs:byte\">\n      <xs:annotation>\n        <xs:documentation>Database parameter precision.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"scale\" type=\"xs:byte\">\n      <xs:annotation>\n        <xs:documentation>Database parameter scale.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"size\" type=\"xs:integer\">\n      <xs:annotation>\n        <xs:documentation>Database parameter size.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Debugger\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Debug\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"EventLog\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"category\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"eventId\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"log\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"machineName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"source\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"category\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout that renders event Category.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"eventId\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout that renders event ID.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"log\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Event Log to write to. This can be System, Application or any user-defined name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"machineName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the machine on which Event Log service is running.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"source\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Value to be used as the event Source.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FallbackGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"returnToFirstOnSuccess\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"returnToFirstOnSuccess\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to return to the first target after any successful write.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"File\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"lineEnding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.LineEndingMode\" />\n          <xs:element name=\"archiveNumbering\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ArchiveNumberingMode\" />\n          <xs:element name=\"archiveFileName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"archiveEvery\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.FileArchivePeriod\" />\n          <xs:element name=\"archiveAboveSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:long\" />\n          <xs:element name=\"maxArchiveFiles\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"forceManaged\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"fileAttributes\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Win32FileAttributes\" />\n          <xs:element name=\"replaceFileContentsOnEachWrite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"deleteOldFileOnStartup\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"fileName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"archiveDateFormat\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"archiveOldFileOnStartup\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"createDirs\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"enableFileDelete\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"openFileCacheTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"networkWrites\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"keepFileOpen\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"concurrentWrites\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"concurrentWriteAttempts\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"concurrentWriteAttemptDelay\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"openFileCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"autoFlush\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>File encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"lineEnding\" type=\"NLog.Targets.LineEndingMode\">\n          <xs:annotation>\n            <xs:documentation>Line ending mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveNumbering\" type=\"NLog.Targets.ArchiveNumberingMode\">\n          <xs:annotation>\n            <xs:documentation>Way file archives are numbered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveFileName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the file to be used for an archive.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveEvery\" type=\"NLog.Targets.FileArchivePeriod\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to automatically archive log files every time the specified time passes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveAboveSize\" type=\"xs:long\">\n          <xs:annotation>\n            <xs:documentation>Size in bytes above which log files will be automatically archived.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxArchiveFiles\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of archive files that should be kept.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"forceManaged\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Gets ors set a value indicating whether a managed file stream is forced, instead of used the native implementation.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"fileAttributes\" type=\"NLog.Targets.Win32FileAttributes\">\n          <xs:annotation>\n            <xs:documentation>File attributes (Windows only).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"replaceFileContentsOnEachWrite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to replace file contents on each write instead of appending log message at the end.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"deleteOldFileOnStartup\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to delete old log file on startup.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"fileName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the file to write to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveDateFormat\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Value specifying the date format to use when archving files.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveOldFileOnStartup\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to archive old log file on startup.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"createDirs\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to create directories if they don't exist.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"enableFileDelete\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to enable log file(s) to be deleted.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"openFileCacheTimeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"networkWrites\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on different network hosts.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepFileOpen\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep log file open instead of opening and closing it on each logging event.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWrites\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on the same host.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWriteAttempts\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWriteAttemptDelay\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Delay in milliseconds to wait before attempting to write to the file again.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Log file buffer size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"openFileCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoFlush\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to automatically flush the file buffers after each log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.LineEndingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Default\" />\n      <xs:enumeration value=\"CRLF\" />\n      <xs:enumeration value=\"CR\" />\n      <xs:enumeration value=\"LF\" />\n      <xs:enumeration value=\"None\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.ArchiveNumberingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Sequence\" />\n      <xs:enumeration value=\"Rolling\" />\n      <xs:enumeration value=\"Date\" />\n      <xs:enumeration value=\"DateAndSequence\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.FileArchivePeriod\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"None\" />\n      <xs:enumeration value=\"Year\" />\n      <xs:enumeration value=\"Month\" />\n      <xs:enumeration value=\"Day\" />\n      <xs:enumeration value=\"Hour\" />\n      <xs:enumeration value=\"Minute\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Win32FileAttributes\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"ReadOnly\" />\n      <xs:enumeration value=\"Hidden\" />\n      <xs:enumeration value=\"System\" />\n      <xs:enumeration value=\"Archive\" />\n      <xs:enumeration value=\"Device\" />\n      <xs:enumeration value=\"Normal\" />\n      <xs:enumeration value=\"Temporary\" />\n      <xs:enumeration value=\"SparseFile\" />\n      <xs:enumeration value=\"ReparsePoint\" />\n      <xs:enumeration value=\"Compressed\" />\n      <xs:enumeration value=\"NotContentIndexed\" />\n      <xs:enumeration value=\"Encrypted\" />\n      <xs:enumeration value=\"WriteThrough\" />\n      <xs:enumeration value=\"NoBuffering\" />\n      <xs:enumeration value=\"DeleteOnClose\" />\n      <xs:enumeration value=\"PosixSemantics\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"FilteringWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"condition\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Condition expression. Log events who meet this condition will be forwarded to the wrapped target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FormControl\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"append\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"controlName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"formName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"reverseOrder\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"append\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether log text should be appended to the text of the control instead of overwriting it.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"controlName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of control to which NLog will log write log text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Form on which the control is located.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"reverseOrder\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Whether new log entry are added to the start or the end of the control</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"ImpersonatingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"domain\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"impersonationLevel\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\" />\n          <xs:element name=\"logOnProvider\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.LogOnProviderType\" />\n          <xs:element name=\"logOnType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.SecurityLogOnType\" />\n          <xs:element name=\"password\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"revertToSelf\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"userName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"domain\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Windows domain name to change context to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"impersonationLevel\" type=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\">\n          <xs:annotation>\n            <xs:documentation>Required impersonation level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"logOnProvider\" type=\"NLog.Targets.Wrappers.LogOnProviderType\">\n          <xs:annotation>\n            <xs:documentation>Type of the logon provider.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"logOnType\" type=\"NLog.Targets.Wrappers.SecurityLogOnType\">\n          <xs:annotation>\n            <xs:documentation>Logon Type.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"password\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>User account password.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"revertToSelf\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to revert to the credentials of the process instead of impersonating another user.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"userName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Username to change context to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Anonymous\" />\n      <xs:enumeration value=\"Identification\" />\n      <xs:enumeration value=\"Impersonation\" />\n      <xs:enumeration value=\"Delegation\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.LogOnProviderType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Default\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.SecurityLogOnType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Interactive\" />\n      <xs:enumeration value=\"Network\" />\n      <xs:enumeration value=\"Batch\" />\n      <xs:enumeration value=\"Service\" />\n      <xs:enumeration value=\"NetworkClearText\" />\n      <xs:enumeration value=\"NewCredentials\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"LogReceiverService\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"endpointAddress\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"endpointConfigurationName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"clientId\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"includeEventProperties\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n          <xs:element name=\"useBinaryEncoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"endpointAddress\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Endpoint address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"endpointConfigurationName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the endpoint configuration in WCF configuration file.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"clientId\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Client ID.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeEventProperties\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include per-event properties in the payload sent to the server.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useBinaryEncoding\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use binary message encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.MethodCallParameter\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"type\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Name of the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"type\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Type of the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Mail\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"html\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"addNewLines\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"bcc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"to\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"cc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"body\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"subject\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"from\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"replaceNewlineWithBrTagInHtml\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"priority\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"timeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"smtpServer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"smtpAuthentication\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.SmtpAuthenticationMode\" />\n          <xs:element name=\"smtpUserName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"smtpPassword\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"enableSsl\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"smtpPort\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"useSystemNetMailSettings\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"html\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to send message as HTML instead of plain text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used for sending e-mail.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"addNewLines\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to add new lines between log entries.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bcc\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"to\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"cc\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"body\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Mail message body (repeated for each log message send in one mail).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"subject\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Mail subject.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"from\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Sender's email address (e.g. joe@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"replaceNewlineWithBrTagInHtml\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether NewLine characters in the body should be replaced with  tags.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"priority\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Priority used for sending mails.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"timeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Indicates the SMTP client timeout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpServer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>SMTP Server to be used for sending.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpAuthentication\" type=\"NLog.Targets.SmtpAuthenticationMode\">\n          <xs:annotation>\n            <xs:documentation>SMTP Authentication mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpUserName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Username used to connect to SMTP server (used when SmtpAuthentication is set to \"basic\").</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpPassword\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Password used to authenticate against SMTP server (used when SmtpAuthentication is set to \"basic\").</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"enableSsl\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpPort\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Port number that SMTP Server is listening on.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useSystemNetMailSettings\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the default Settings from System.Net.MailSettings should be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.SmtpAuthenticationMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"None\" />\n      <xs:enumeration value=\"Basic\" />\n      <xs:enumeration value=\"Ntlm\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"Memory\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MessageBox\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"caption\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"caption\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Message box title.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MSMQ\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"useXmlEncoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"checkIfQueueExists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"createQueueIfNotExists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"label\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"queue\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"recoverable\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used when writing text to the queue.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useXmlEncoding\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use the XML format when serializing message. This will also disable creating queues.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"checkIfQueueExists\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to check if a queue exists before writing to it.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"createQueueIfNotExists\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to create the queue if it doesn't exists.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"label\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Label to associate with each message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"queue\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the queue to write to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"recoverable\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use recoverable messages (with guaranteed delivery).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MethodCall\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"className\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"methodName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"className\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Class name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"methodName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Method name. The method must be public and static.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Network\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLogViewer\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"includeNLogData\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeSourceInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"ndcItemSeparator\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.NLogViewerParameterInfo\" />\n          <xs:element name=\"includeCallSite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"appInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"includeNdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeMdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNLogData\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeSourceInfo\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ndcItemSeparator\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>NDC item separator.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeCallSite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"appInfo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeMdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Null\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"formatMessage\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formatMessage\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to perform layout calculation.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"OutputDebugString\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"PerfCounter\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"autoCreate\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"categoryName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterHelp\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Diagnostics.PerformanceCounterType\" />\n          <xs:element name=\"instanceName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoCreate\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether performance counter should be automatically created.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"categoryName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the performance counter category.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterHelp\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Counter help text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the performance counter.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterType\" type=\"System.Diagnostics.PerformanceCounterType\">\n          <xs:annotation>\n            <xs:documentation>Performance counter type.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"instanceName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Performance counter instance name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Diagnostics.PerformanceCounterType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"NumberOfItems32\" />\n      <xs:enumeration value=\"NumberOfItems64\" />\n      <xs:enumeration value=\"NumberOfItemsHEX32\" />\n      <xs:enumeration value=\"NumberOfItemsHEX64\" />\n      <xs:enumeration value=\"RateOfCountsPerSecond32\" />\n      <xs:enumeration value=\"RateOfCountsPerSecond64\" />\n      <xs:enumeration value=\"CountPerTimeInterval32\" />\n      <xs:enumeration value=\"CountPerTimeInterval64\" />\n      <xs:enumeration value=\"RawFraction\" />\n      <xs:enumeration value=\"RawBase\" />\n      <xs:enumeration value=\"AverageTimer32\" />\n      <xs:enumeration value=\"AverageBase\" />\n      <xs:enumeration value=\"AverageCount64\" />\n      <xs:enumeration value=\"SampleFraction\" />\n      <xs:enumeration value=\"SampleCounter\" />\n      <xs:enumeration value=\"SampleBase\" />\n      <xs:enumeration value=\"CounterTimer\" />\n      <xs:enumeration value=\"CounterTimerInverse\" />\n      <xs:enumeration value=\"Timer100Ns\" />\n      <xs:enumeration value=\"Timer100NsInverse\" />\n      <xs:enumeration value=\"ElapsedTime\" />\n      <xs:enumeration value=\"CounterMultiTimer\" />\n      <xs:enumeration value=\"CounterMultiTimerInverse\" />\n      <xs:enumeration value=\"CounterMultiTimer100Ns\" />\n      <xs:enumeration value=\"CounterMultiTimer100NsInverse\" />\n      <xs:enumeration value=\"CounterMultiBase\" />\n      <xs:enumeration value=\"CounterDelta32\" />\n      <xs:enumeration value=\"CounterDelta64\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"PostFilteringWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"defaultFilter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n          <xs:element name=\"when\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.Wrappers.FilteringRule\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"defaultFilter\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Default filter to be applied when no specific rule matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.Wrappers.FilteringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"exists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"filter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n    </xs:choice>\n    <xs:attribute name=\"exists\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition to be tested.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"filter\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Resulting filter to be applied when the condition matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"RandomizeGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RepeatingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"repeatCount\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"repeatCount\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of times to repeat each log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RetryingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"retryCount\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"retryDelayMilliseconds\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"retryCount\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of retries that should be attempted on the wrapped target in case of a failure.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"retryDelayMilliseconds\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Time to wait between retries in milliseconds.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RichTextBox\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"autoScroll\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"controlName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"formName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"height\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"maxLines\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"showMinimized\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"toolWindow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"width\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"row-coloring\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.RichTextBoxRowColoringRule\" />\n          <xs:element name=\"useDefaultRowColoringRules\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"word-coloring\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.RichTextBoxWordColoringRule\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoScroll\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether scroll bar will be moved automatically to show most recent log entries.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"controlName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of RichTextBox to which Nlog will write.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Form on which the control is located. If there is no open form of a specified name than NLog will create a new one.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"height\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Initial height of the form with rich text box.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxLines\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of lines the rich text box will store (or 0 to disable this feature).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"showMinimized\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the created form will be initially minimized.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"toolWindow\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the created window will be a tool window.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"width\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Initial width of the form with rich text box.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useDefaultRowColoringRules\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use default coloring rules.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Drawing.FontStyle\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Regular\" />\n      <xs:enumeration value=\"Bold\" />\n      <xs:enumeration value=\"Italic\" />\n      <xs:enumeration value=\"Underline\" />\n      <xs:enumeration value=\"Strikeout\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.RichTextBoxRowColoringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"fontColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"style\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Drawing.FontStyle\" />\n    </xs:choice>\n    <xs:attribute name=\"condition\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition that must be met in order to set the specified font color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"fontColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Font color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"style\" type=\"System.Drawing.FontStyle\">\n      <xs:annotation>\n        <xs:documentation>Font style of matched text.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.RichTextBoxWordColoringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"regex\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"wholeWords\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"fontColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"style\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Drawing.FontStyle\" />\n    </xs:choice>\n    <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"regex\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"wholeWords\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Background color. Names are identical with KnownColor enum extended with Empty value which means that background color won't be changed.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"fontColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Font color. Names are identical with KnownColor enum extended with Empty value which means that font color won't be changed.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"style\" type=\"System.Drawing.FontStyle\">\n      <xs:annotation>\n        <xs:documentation>Font style of matched text. Possible values are the same as in FontStyle enum in System.Drawing.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"RoundRobinGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SplitGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Trace\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"WebService\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"methodName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"namespace\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"protocol\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.WebServiceProtocol\" />\n          <xs:element name=\"url\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:anyURI\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"methodName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Web service method name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"namespace\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Web service namespace.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"protocol\" type=\"NLog.Targets.WebServiceProtocol\">\n          <xs:annotation>\n            <xs:documentation>Protocol to be used when calling web service.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"url\" type=\"xs:anyURI\">\n          <xs:annotation>\n            <xs:documentation>Web service URL.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.WebServiceProtocol\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Soap11\" />\n      <xs:enumeration value=\"Soap12\" />\n      <xs:enumeration value=\"HttpPost\" />\n      <xs:enumeration value=\"HttpGet\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"CsvLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"column\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Layouts.CsvColumn\" />\n          <xs:element name=\"customColumnDelimiter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"delimiter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Layouts.CsvColumnDelimiterMode\" />\n          <xs:element name=\"quoteChar\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"quoting\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Layouts.CsvQuotingMode\" />\n          <xs:element name=\"withHeader\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"customColumnDelimiter\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"delimiter\" type=\"NLog.Layouts.CsvColumnDelimiterMode\">\n          <xs:annotation>\n            <xs:documentation>Column delimiter.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"quoteChar\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Quote Character.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"quoting\" type=\"NLog.Layouts.CsvQuotingMode\">\n          <xs:annotation>\n            <xs:documentation>Quoting mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"withHeader\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether CVS should include header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Layouts.CsvColumnDelimiterMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Auto\" />\n      <xs:enumeration value=\"Comma\" />\n      <xs:enumeration value=\"Semicolon\" />\n      <xs:enumeration value=\"Tab\" />\n      <xs:enumeration value=\"Pipe\" />\n      <xs:enumeration value=\"Space\" />\n      <xs:enumeration value=\"Custom\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Layouts.CsvQuotingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"All\" />\n      <xs:enumeration value=\"Nothing\" />\n      <xs:enumeration value=\"Auto\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Layouts.CsvColumn\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout of the column.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Name of the column.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"LayoutWithHeaderAndFooter\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Log4JXmlEventLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SimpleLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"text\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Layout text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"when\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"condition\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Condition expression.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"FilterResult\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Neutral\" />\n      <xs:enumeration value=\"Log\" />\n      <xs:enumeration value=\"Ignore\" />\n      <xs:enumeration value=\"LogFinal\" />\n      <xs:enumeration value=\"IgnoreFinal\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"whenContains\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"substring\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"substring\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Substring to be matched.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenEqual\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"compareTo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"compareTo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>String to compare the layout to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenNotContains\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"substring\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"substring\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Substring to be matched.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenNotEqual\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"compareTo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"compareTo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>String to compare the layout to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AccurateLocal\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AccurateUTC\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FastLocal\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FastUTC\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n</xs:schema>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsEXE/Program.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayExe\n{\n    using System;\n    using System.Configuration;\n    using System.ServiceModel.Web;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n    using Microsoft.ConnectTheDots.Gateway;\n\n    //--//\n\n    class Program\n    {\n        private const int STOP_TIMEOUT_MS = 5000; // ms\n\n        //--//\n\n        private static WebServiceHost _webHost;\n\n        //--//\n\n        private static ILogger                        _logger;\n        private static GatewayQueue<QueuedItem>       _gatewayQueue;\n        private static MessageSender<SensorDataContract> _MessageSender;\n        private static EventProcessor                 _batchSenderThread;\n        private static DeviceAdapterLoader            _dataIntakeLoader;\n        private static Func<string, QueuedItem>       _gatewayTransform;\n        private static string                         _gatewayIPAddressString = string.Empty;\n\n        //--//\n\n        private static void InitGateway( ILogger logger )\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Cannot run service without logging\" );\n            }\n\n            _logger = logger;\n\n            if( logger is TunableLogger )\n            {\n                TunableLogger.LoggingLevel loggingLevel = TunableLogger.LevelFromString( ConfigurationManager.AppSettings.Get( \"LoggingLevel\" ) );\n\n                ( ( TunableLogger )logger ).Level = ( loggingLevel != TunableLogger.LoggingLevel.Undefined ) ? loggingLevel : TunableLogger.LoggingLevel.Errors;\n            }\n\n            try\n            {\n                System.Threading.Tasks.TaskScheduler.UnobservedTaskException += OnUnobservedTaskException;\n\n                // Name the Windows Service\n                \n                _gatewayQueue = new GatewayQueue<QueuedItem>( );\n                IotHubConfig iotHubConfig = Loader.GetIotHubConfig();\n\n                if( iotHubConfig == null )\n                {\n                    _logger.LogError( \"IoT Hub connection configuration is missing\" );\n                    return;\n                }\n                _MessageSender = new MessageSender<SensorDataContract>(iotHubConfig.IotHubConnectionString, _logger);\n                \n                _batchSenderThread = new BatchSenderThread<QueuedItem, SensorDataContract>(\n                                                    _gatewayQueue,\n                                                    _MessageSender,\n                                                    null,//m => DataTransforms.AddTimeCreated(DataTransforms.SensorDataContractFromQueuedItem(m, _Logger)),\n                                                    new Func<QueuedItem, string>( m => m.JsonData ),\n                                                    _logger );\n\n                _dataIntakeLoader = new DeviceAdapterLoader( Loader.GetSources( ), Loader.GetEndpoints( ), _logger );\n\n                TaskWrapper.Run( ( ) => IPAddressHelper.GetIPAddressString( ref _gatewayIPAddressString ) );\n\n                DataTransformsConfig dataTransformsConfig = Loader.GetDataTransformsConfig( );\n                if( dataTransformsConfig.AttachIP || dataTransformsConfig.AttachTime )\n                {\n                    Func<string, SensorDataContract> transform = ( m => DataTransforms.SensorDataContractFromString( m, _logger ) );\n\n                    if( dataTransformsConfig.AttachTime )\n                    {\n                        var transformPrev = transform;\n                        transform = ( m => DataTransforms.AddTimeCreated( transformPrev( m ) ) );\n                    }\n\n                    if( dataTransformsConfig.AttachTime )\n                    {\n                        var transformPrev = transform;\n                        transform = ( m => DataTransforms.AddIPToLocation( transformPrev( m ), _gatewayIPAddressString ) );\n                    }\n\n                    _gatewayTransform = ( m => DataTransforms.QueuedItemFromSensorDataContract( transform( m ) ) );\n                }\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"Exception creating Gateway: \" + ex.Message );\n            }\n        }\n\n        private static void Start( )\n        {\n            _logger.LogInfo( \"Service starting... \" );\n\n            if( _webHost != null )\n            {\n                _webHost.Close( );\n            }\n\n            _batchSenderThread.Start( );\n\n            _webHost = new WebServiceHost( typeof( Microsoft.ConnectTheDots.Gateway.GatewayService ) );\n\n            Gateway.GatewayService service = new Microsoft.ConnectTheDots.Gateway.GatewayService(\n                _gatewayQueue,\n                _batchSenderThread,\n                _gatewayTransform\n            );\n            _webHost.Description.Behaviors.Add( new ServiceBehavior( ( ) => service ) );\n\n            service.Logger = _logger;\n            service.OnDataInQueue += OnData;\n\n            _webHost.Open( );\n\n            _dataIntakeLoader.StartAll( service.Enqueue );\n\n            _logger.LogInfo( \"...started\" );\n        }\n\n        private void Stop( )\n        {\n            _logger.LogInfo( \"Service stopping... \" );\n\n            _dataIntakeLoader.StopAll( );\n\n            // close web host first (message intake)\n            if( _webHost != null )\n            {\n                _webHost.Close( );\n                _webHost = null;\n            }\n\n            // shutdown processor (message processing)\n            _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n\n            // shut down connection to event hub last\n            if( _MessageSender != null )\n            {\n                _MessageSender.Close( );\n            }\n\n            _logger.LogInfo( \"...stopped\" );\n        }\n\n        private static void OnData( QueuedItem data )\n        {\n            // LORENZO: test behaviours such as accumulating data an processing in batch\n            _batchSenderThread.Process( );\n        }\n\n        private static void OnUnobservedTaskException( object sender, System.Threading.Tasks.UnobservedTaskExceptionEventArgs e )\n        {\n            // prevent exception escalation\n            e.SetObserved( );\n\n            _logger.LogError( String.Format( \"task Exception: '{0}'\\r\\nTrace:\\r\\n{1}\", e.Exception.Message, e.Exception.StackTrace ) );\n        }\n\n        static void Main( string[] args )\n        {\n            ILogger logger = null;\n\n            try\n            {\n                logger = TunableLogger.FromLogger(\n                    SafeLogger.FromLogger( NLogEventLogger.Instance )\n                    );\n\n                InitGateway( logger );\n                Start();\n            }\n            catch( Exception ex )\n            {\n                if( logger != null )\n                {\n                    logger.LogError( ex.ToString( ) );\n                }\n\n                // just return...\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsEXE/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"Microsoft.ConnectTheDots.GatewayExe\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"Microsoft.ConnectTheDots.GatewayExe\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2015\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"b7eac321-f309-48e2-a54b-2f9b4193bec6\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsEXE/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Azure.Devices.Client.PCL\" version=\"1.0.5\" targetFramework=\"net452\" />\n  <package id=\"Mono.Security\" version=\"3.2.3.0\" targetFramework=\"net452\" />\n  <package id=\"Newtonsoft.Json\" version=\"6.0.6\" targetFramework=\"net452\" />\n  <package id=\"NLog\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"NLog.Config\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"NLog.Schema\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"PCLCrypto\" version=\"1.0.86\" targetFramework=\"net452\" />\n  <package id=\"Validation\" version=\"2.0.6.15003\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/App.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <!-- sensors config -->\n  <!-- \"Only one <configSections> element allowed per config file and if present must be the first child of the root <configuration> element. -->\n  <configSections>\n    <section name=\"dataIntakes\" type=\"Microsoft.ConnectTheDots.Common.DeviceAdapterConfigSection, Microsoft.ConnectTheDots.Common\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\" />\n    <section name=\"sensorEndpoints\" type=\"Microsoft.ConnectTheDots.Common.SensorEndpointConfigSection, Microsoft.ConnectTheDots.Common\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\" />\n    <section name=\"IotHubConfig\" type=\"Microsoft.ConnectTheDots.Common.IotHubConfigSection, Microsoft.ConnectTheDots.Common\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\" />\n    <section name=\"dataTransformsConfig\" type=\"Microsoft.ConnectTheDots.Common.DataTransformsConfigSection, Microsoft.ConnectTheDots.Common\" requirePermission=\"true\" restartOnExternalChanges=\"true\" allowLocation=\"true\" />\n  </configSections>\n  <IotHubConfig IotHubConnectionString=\"HostName=ctdoli1010hub.azure-devices.net;DeviceId=pigateway;SharedAccessKey=nNRewokkYTLnYoNNnSrVKKRHvhdhDCqgU0K/jUJvK2s=\" />\n  <dataIntakes>\n  </dataIntakes>\n  <sensorEndpoints>\n    <add name=\"LocalForSocket\" port=\"5000\" host=\"127.0.0.1\" />\n    <add name=\"LocalForSocket2\" port=\"5002\" host=\"127.0.0.1\" />\n  </sensorEndpoints>\n  <dataTransformsConfig AttachTime=\"true\" AttachIP=\"false\" />\n  <!-- service config -->\n  <system.serviceModel>\n    <services>\n      <!-- This section is optional with the new configuration model introduced in .NET Framework 4. -->\n      <service name=\"Microsoft.ConnectTheDots.Gateway.GatewayService\" behaviorConfiguration=\"GatewayServiceBehavior\">\n        <host>\n          <baseAddresses>\n            <add baseAddress=\"http://localhost:8000/GatewayService/\" />\n          </baseAddresses>\n        </host>\n        <!-- this endpoint is exposed at the base address provided by host  -->\n        <endpoint address=\"API\" binding=\"webHttpBinding\" contract=\"Microsoft.ConnectTheDots.Gateway.IGatewayService\" behaviorConfiguration=\"WebHttp\" />\n      </service>\n    </services>\n    <behaviors>\n      <endpointBehaviors>\n        <behavior name=\"WebHttp\">\n          <webHttp />\n        </behavior>\n      </endpointBehaviors>\n      <serviceBehaviors>\n        <behavior name=\"GatewayServiceBehavior\">\n          <serviceMetadata httpGetEnabled=\"true\" />\n          <serviceDebug includeExceptionDetailInFaults=\"true\" />\n        </behavior>\n      </serviceBehaviors>\n    </behaviors>\n  </system.serviceModel>\n  <!-- runtime config -->\n  <runtime>\n    <!-- do not close process on unobserved exception -->\n    <ThrowUnobservedTaskExceptions enabled=\"false\" />\n  </runtime>\n  <!-- app config-->\n  <appSettings>\n    <!-- enable/disable logging: 'Disabled' is disabled, 'Errors' is errors only, 'Verbose' is errors and info -->\n    <add key=\"LoggingLevel\" value=\"Disabled\" />\n    <add key=\"ClientSettingsProvider.ServiceUri\" value=\"\" />\n  </appSettings>\n  <startup>\n    <supportedRuntime version=\"v4.0\" sku=\".NETFramework,Version=v4.5.2\" />\n  </startup>\n  <system.web>\n    <membership defaultProvider=\"ClientAuthenticationMembershipProvider\">\n      <providers>\n        <add name=\"ClientAuthenticationMembershipProvider\" type=\"System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" serviceUri=\"\" />\n      </providers>\n    </membership>\n    <roleManager defaultProvider=\"ClientRoleProvider\" enabled=\"true\">\n      <providers>\n        <add name=\"ClientRoleProvider\" type=\"System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" serviceUri=\"\" cacheTimeout=\"86400\" />\n      </providers>\n    </roleManager>\n  </system.web>\n</configuration>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/Microsoft.ConnectTheDots.GatewayService.csproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"12.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Import Project=\"$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props\" Condition=\"Exists('$(MSBuildExtensionsPath)\\$(MSBuildToolsVersion)\\Microsoft.Common.props')\" />\n  <PropertyGroup>\n    <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>\n    <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>\n    <ProjectGuid>{38A27FC0-2864-49A8-BDA3-D7E22D276B29}</ProjectGuid>\n    <OutputType>Exe</OutputType>\n    <AppDesignerFolder>Properties</AppDesignerFolder>\n    <RootNamespace>Microsoft.ConnectTheDots.GatewayService</RootNamespace>\n    <AssemblyName>Microsoft.ConnectTheDots.GatewayService</AssemblyName>\n    <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>\n    <FileAlignment>512</FileAlignment>\n    <TargetFrameworkProfile />\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugSymbols>true</DebugSymbols>\n    <DebugType>full</DebugType>\n    <Optimize>false</Optimize>\n    <OutputPath>bin\\Debug\\</OutputPath>\n    <DefineConstants>DEBUG;TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">\n    <PlatformTarget>AnyCPU</PlatformTarget>\n    <DebugType>pdbonly</DebugType>\n    <Optimize>true</Optimize>\n    <OutputPath>bin\\Release\\</OutputPath>\n    <DefineConstants>TRACE</DefineConstants>\n    <ErrorReport>prompt</ErrorReport>\n    <WarningLevel>4</WarningLevel>\n  </PropertyGroup>\n  <ItemGroup>\n    <Reference Include=\"Microsoft.Azure.Devices.Client.PCL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Microsoft.Azure.Devices.Client.PCL.1.0.5\\lib\\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\\Microsoft.Azure.Devices.Client.PCL.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Mono.Security.3.2.3.0\\lib\\net45\\Mono.Security.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Newtonsoft.Json.6.0.6\\lib\\net45\\Newtonsoft.Json.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"NLog, Version=3.2.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\NLog.3.2.0.0\\lib\\net45\\NLog.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"PCLCrypto, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d4421c8a4786956c, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\PCLCrypto.1.0.86\\lib\\net40-Client\\PCLCrypto.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n    <Reference Include=\"System\" />\n    <Reference Include=\"System.Configuration\" />\n    <Reference Include=\"System.Configuration.Install\" />\n    <Reference Include=\"System.Core\" />\n    <Reference Include=\"System.Runtime.Serialization\" />\n    <Reference Include=\"System.ServiceModel\" />\n    <Reference Include=\"System.ServiceModel.Web\" />\n    <Reference Include=\"System.ServiceProcess\" />\n    <Reference Include=\"System.Xml.Linq\" />\n    <Reference Include=\"Microsoft.CSharp\" />\n    <Reference Include=\"System.Data\" />\n    <Reference Include=\"System.Xml\" />\n    <Reference Include=\"Validation, Version=2.0.0.0, Culture=neutral, PublicKeyToken=2fc06f0d701809a7, processorArchitecture=MSIL\">\n      <HintPath>..\\packages\\Validation.2.0.6.15003\\lib\\portable-net40+sl50+win+wpa81+wp80+Xamarin.iOS10+MonoAndroid10+MonoTouch10\\Validation.dll</HintPath>\n      <Private>True</Private>\n    </Reference>\n  </ItemGroup>\n  <ItemGroup>\n    <Compile Include=\"Utils\\Logger\\EventLogger.cs\" />\n    <Compile Include=\"WindowsService.cs\">\n      <SubType>Component</SubType>\n    </Compile>\n    <Compile Include=\"ProjectInstaller.cs\">\n      <SubType>Component</SubType>\n    </Compile>\n    <Compile Include=\"Properties\\AssemblyInfo.cs\" />\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"App.config\">\n      <SubType>Designer</SubType>\n    </None>\n    <Content Include=\"NLog.config\">\n      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\n    </Content>\n    <None Include=\"NLog.xsd\">\n      <SubType>Designer</SubType>\n    </None>\n    <None Include=\"packages.config\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Common\\Microsoft.ConnectTheDots.Common.csproj\">\n      <Project>{96feda4b-c7e0-4ddb-ad3a-bff2fd8d973d}</Project>\n      <Name>Microsoft.ConnectTheDots.Common</Name>\n    </ProjectReference>\n    <ProjectReference Include=\"..\\Gateway\\Microsoft.ConnectTheDots.Gateway.csproj\">\n      <Project>{e14d1c61-1979-452e-be8b-0303a95ef764}</Project>\n      <Name>Microsoft.ConnectTheDots.Gateway</Name>\n    </ProjectReference>\n  </ItemGroup>\n  <Import Project=\"$(MSBuildToolsPath)\\Microsoft.CSharp.targets\" />\n  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \n       Other similar extension points exist, see Microsoft.Common.targets.\n  <Target Name=\"BeforeBuild\">\n  </Target>\n  <Target Name=\"AfterBuild\">\n  </Target>\n  -->\n</Project>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/NLog.config",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<nlog xmlns=\"http://www.nlog-project.org/schemas/NLog.xsd\"\n      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n\n  <!-- \n  See https://github.com/nlog/nlog/wiki/Configuration-file \n  for information on customizing logging rules and outputs.\n   -->\n  <targets>\n    <!-- add your targets here -->\n    \n    <!--\n    <target xsi:type=\"File\" name=\"f\" fileName=\"${basedir}/logs/${shortdate}.log\"\n            layout=\"${longdate} ${uppercase:${level}} ${message}\" />\n    -->\n  </targets>\n\n  <rules>\n    <!-- add your logging rules here -->\n    \n    <!--\n    <logger name=\"*\" minlevel=\"Trace\" writeTo=\"f\" />\n    -->\n  </rules>\n</nlog>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/NLog.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema id=\"NLog\" targetNamespace=\"http://www.nlog-project.org/schemas/NLog.xsd\" elementFormDefault=\"qualified\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.nlog-project.org/schemas/NLog.xsd\">\n  <xs:element name=\"nlog\" type=\"NLogConfiguration\" />\n  <xs:complexType name=\"NLogConfiguration\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"extensions\" type=\"NLogExtensions\" />\n      <xs:element name=\"include\" type=\"NLogInclude\" />\n      <xs:element name=\"variable\" type=\"NLogVariable\" />\n      <xs:element name=\"targets\" type=\"NLogTargets\" />\n      <xs:element name=\"rules\" type=\"NLogRules\" />\n      <xs:element name=\"time\" type=\"TimeSource\" />\n    </xs:choice>\n    <xs:attribute name=\"autoReload\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Watch config file for changes and reload automatically.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogToConsole\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Print internal NLog messages to the console. Default value is: false</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogToConsoleError\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Print internal NLog messages to the console error output. Default value is: false</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogFile\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Write internal NLog messages to the specified file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"internalLogLevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Log level threshold for internal log messages. Default value is: Info.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"globalThreshold\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Global log level threshold for application log messages. Messages below this level won't be logged..</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"throwExceptions\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Pass NLog internal exceptions to the application. Default value is: false.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogTargets\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"default-wrapper\" type=\"WrapperTargetBase\" />\n      <xs:element name=\"default-target-parameters\" type=\"Target\" />\n      <xs:element name=\"target\" type=\"Target\" />\n      <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" />\n      <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" />\n    </xs:choice>\n    <xs:attribute name=\"async\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes).</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogRules\">\n    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"logger\" type=\"NLogLoggerRule\" />\n    </xs:sequence>\n  </xs:complexType>\n  <xs:complexType name=\"NLogExtensions\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"add\" type=\"NLogExtensionsAdd\" />\n    </xs:choice>\n  </xs:complexType>\n  <xs:complexType name=\"NLogExtensionsAdd\">\n    <xs:attribute name=\"prefix\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Prefix for targets/layout renderers/filters/conditions loaded from this assembly.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"assemblyFile\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Load NLog extensions from the specified file (*.dll)</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"assembly\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Load NLog extensions from the specified assembly. Assembly name should be fully qualified.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogLoggerRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"filters\" type=\"NLogFilters\" />\n    </xs:choice>\n    <xs:attribute name=\"name\" use=\"optional\">\n      <xs:annotation>\n        <xs:documentation>Name of the logger. May include '*' character which acts like a wildcard. Allowed forms are: *, Name, *Name, Name* and *Name*</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"levels\" type=\"NLogLevelList\">\n      <xs:annotation>\n        <xs:documentation>Comma separated list of levels that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"minlevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Minimum level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"maxlevel\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Maximum level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"level\" type=\"NLogLevel\">\n      <xs:annotation>\n        <xs:documentation>Level that this rule matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"writeTo\" type=\"NLogTargetIDList\">\n      <xs:annotation>\n        <xs:documentation>Comma separated list of target names.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"final\" type=\"xs:boolean\" default=\"false\">\n      <xs:annotation>\n        <xs:documentation>Ignore further rules if this one matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogFilters\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"when\" type=\"when\" />\n      <xs:element name=\"whenContains\" type=\"whenContains\" />\n      <xs:element name=\"whenEqual\" type=\"whenEqual\" />\n      <xs:element name=\"whenNotContains\" type=\"whenNotContains\" />\n      <xs:element name=\"whenNotEqual\" type=\"whenNotEqual\" />\n    </xs:choice>\n  </xs:complexType>\n  <xs:simpleType name=\"NLogLevel\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Off\" />\n      <xs:enumeration value=\"Trace\" />\n      <xs:enumeration value=\"Debug\" />\n      <xs:enumeration value=\"Info\" />\n      <xs:enumeration value=\"Warn\" />\n      <xs:enumeration value=\"Error\" />\n      <xs:enumeration value=\"Fatal\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLogLevelList\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\"(|Trace|Debug|Info|Warn|Error|Fatal)(,(Trace|Debug|Info|Warn|Error|Fatal))*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLogInclude\">\n    <xs:attribute name=\"file\" type=\"SimpleLayoutAttribute\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Name of the file to be included. The name is relative to the name of the current config file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"ignoreErrors\" type=\"xs:boolean\" use=\"optional\" default=\"false\">\n      <xs:annotation>\n        <xs:documentation>Ignore any errors in the include file.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLogVariable\">\n    <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Variable name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"value\" type=\"SimpleLayoutAttribute\" use=\"required\">\n      <xs:annotation>\n        <xs:documentation>Variable value.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:simpleType name=\"NLogTargetIDList\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\"(|([a-zA-Z][a-zA-Z0-9_\\-]*))(,([a-zA-Z][a-zA-Z0-9_\\-]*))*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"Target\" abstract=\"true\"></xs:complexType>\n  <xs:complexType name=\"TargetRef\">\n    <xs:attribute name=\"name\" type=\"xs:string\" use=\"required\" />\n  </xs:complexType>\n  <xs:complexType name=\"WrapperTargetBase\" abstract=\"true\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"target\" type=\"Target\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n        </xs:choice>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"CompoundTargetBase\" abstract=\"true\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"target\" type=\"Target\" minOccurs=\"1\" maxOccurs=\"unbounded\" />\n          <xs:element name=\"wrapper-target\" type=\"WrapperTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target\" type=\"CompoundTargetBase\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"wrapper-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n          <xs:element name=\"compound-target-ref\" type=\"TargetRef\" minOccurs=\"1\" maxOccurs=\"1\" />\n        </xs:choice>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Layout\"></xs:complexType>\n  <xs:complexType name=\"Filter\" abstract=\"true\"></xs:complexType>\n  <xs:complexType name=\"TimeSource\" abstract=\"true\"></xs:complexType>\n  <xs:simpleType name=\"SimpleLayoutAttribute\">\n    <xs:restriction base=\"xs:string\">\n      <xs:pattern value=\".*\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"Condition\">\n    <xs:restriction base=\"xs:string\">\n      <xs:minLength value=\"1\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"AspNetBufferingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"bufferGrowLimit\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"growBufferAsNeeded\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferGrowLimit\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of log events that the buffer can keep.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events to be buffered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"growBufferAsNeeded\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether buffer should grow as needed.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AspNetTrace\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AspResponse\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"addComments\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"addComments\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to add &lt;!-- --&gt; comments around all written texts.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AsyncWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"batchSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"overflowAction\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\" />\n          <xs:element name=\"queueLimit\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"timeToSleepBetweenBatches\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"batchSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events that should be processed in a batch by the lazy writer thread.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"overflowAction\" type=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when the lazy writer thread request queue count exceeds the set limit.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"queueLimit\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Limit on the number of requests in the lazy writer thread request queue.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"timeToSleepBetweenBatches\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Time in milliseconds to sleep between batches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.AsyncTargetWrapperOverflowAction\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Grow\" />\n      <xs:enumeration value=\"Discard\" />\n      <xs:enumeration value=\"Block\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"AutoFlushWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"BufferingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"flushTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"slidingTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of log events to be buffered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"flushTimeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"slidingTimeout\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use sliding timeout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Chainsaw\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"includeNLogData\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeSourceInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"ndcItemSeparator\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.NLogViewerParameterInfo\" />\n          <xs:element name=\"includeCallSite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"appInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"includeNdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeMdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNLogData\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeSourceInfo\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ndcItemSeparator\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>NDC item separator.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeCallSite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"appInfo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeMdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.NetworkTargetOverflowAction\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Error\" />\n      <xs:enumeration value=\"Split\" />\n      <xs:enumeration value=\"Discard\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.NLogViewerParameterInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Viewer parameter name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"ColoredConsole\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"useDefaultRowHighlightingRules\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"highlight-row\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.ConsoleRowHighlightingRule\" />\n          <xs:element name=\"highlight-word\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.ConsoleWordHighlightingRule\" />\n          <xs:element name=\"errorStream\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useDefaultRowHighlightingRules\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use default row highlighting rules.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"errorStream\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the error stream (stderr) should be used instead of the output stream (stdout).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.ConsoleOutputColor\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Black\" />\n      <xs:enumeration value=\"DarkBlue\" />\n      <xs:enumeration value=\"DarkGreen\" />\n      <xs:enumeration value=\"DarkCyan\" />\n      <xs:enumeration value=\"DarkRed\" />\n      <xs:enumeration value=\"DarkMagenta\" />\n      <xs:enumeration value=\"DarkYellow\" />\n      <xs:enumeration value=\"Gray\" />\n      <xs:enumeration value=\"DarkGray\" />\n      <xs:enumeration value=\"Blue\" />\n      <xs:enumeration value=\"Green\" />\n      <xs:enumeration value=\"Cyan\" />\n      <xs:enumeration value=\"Red\" />\n      <xs:enumeration value=\"Magenta\" />\n      <xs:enumeration value=\"Yellow\" />\n      <xs:enumeration value=\"White\" />\n      <xs:enumeration value=\"NoChange\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.ConsoleRowHighlightingRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n      <xs:element name=\"foregroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n    </xs:choice>\n    <xs:attribute name=\"condition\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition that must be met in order to set the specified foreground and background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"foregroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Foreground color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.ConsoleWordHighlightingRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"regex\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"wholeWords\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n      <xs:element name=\"foregroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ConsoleOutputColor\" />\n    </xs:choice>\n    <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"regex\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"wholeWords\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"foregroundColor\" type=\"NLog.Targets.ConsoleOutputColor\">\n      <xs:annotation>\n        <xs:documentation>Foreground color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Console\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"error\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"error\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to send the log messages to the standard error instead of the standard output.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Database\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"connectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"connectionStringName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"dbDatabase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbHost\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbPassword\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"dbProvider\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"dbUserName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"useTransactions\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"installConnectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"install-command\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseCommandInfo\" />\n          <xs:element name=\"uninstall-command\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseCommandInfo\" />\n          <xs:element name=\"commandText\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"commandType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Data.CommandType\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseParameterInfo\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionString\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionStringName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the connection string (as specified in &lt;connectionStrings&gt; configuration section.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbDatabase\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database name. If the ConnectionString is not provided this value will be used to construct the \"Database=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbHost\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database host name. If the ConnectionString is not provided this value will be used to construct the \"Server=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbPassword\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database password. If the ConnectionString is not provided this value will be used to construct the \"Password=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbProvider\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the database provider.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"dbUserName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Database user name. If the ConnectionString is not provided this value will be used to construct the \"User ID=\" part of the connection string.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep the database connection open between the log events.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useTransactions\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use database transactions. Some data providers require this.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"installConnectionString\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"commandText\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text of the SQL command to be run on each log level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"commandType\" type=\"System.Data.CommandType\">\n          <xs:annotation>\n            <xs:documentation>Type of the SQL command to be run on each log level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Data.CommandType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Text\" />\n      <xs:enumeration value=\"StoredProcedure\" />\n      <xs:enumeration value=\"TableDirect\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.DatabaseCommandInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"commandType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Data.CommandType\" />\n      <xs:element name=\"connectionString\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"ignoreFailures\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.DatabaseParameterInfo\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n    </xs:choice>\n    <xs:attribute name=\"commandType\" type=\"System.Data.CommandType\">\n      <xs:annotation>\n        <xs:documentation>Type of the command.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"connectionString\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Connection string to run the command against. If not provided, connection string from the target is used.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"ignoreFailures\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore failures.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Command text.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.DatabaseParameterInfo\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"precision\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:byte\" />\n      <xs:element name=\"scale\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:byte\" />\n      <xs:element name=\"size\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Database parameter name.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"precision\" type=\"xs:byte\">\n      <xs:annotation>\n        <xs:documentation>Database parameter precision.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"scale\" type=\"xs:byte\">\n      <xs:annotation>\n        <xs:documentation>Database parameter scale.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"size\" type=\"xs:integer\">\n      <xs:annotation>\n        <xs:documentation>Database parameter size.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Debugger\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Debug\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"EventLog\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"category\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"eventId\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"log\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"machineName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"source\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"category\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout that renders event Category.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"eventId\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout that renders event ID.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"log\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Event Log to write to. This can be System, Application or any user-defined name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"machineName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the machine on which Event Log service is running.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"source\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Value to be used as the event Source.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FallbackGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"returnToFirstOnSuccess\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"returnToFirstOnSuccess\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to return to the first target after any successful write.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"File\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"lineEnding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.LineEndingMode\" />\n          <xs:element name=\"archiveNumbering\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.ArchiveNumberingMode\" />\n          <xs:element name=\"archiveFileName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"archiveEvery\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.FileArchivePeriod\" />\n          <xs:element name=\"archiveAboveSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:long\" />\n          <xs:element name=\"maxArchiveFiles\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"forceManaged\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"fileAttributes\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Win32FileAttributes\" />\n          <xs:element name=\"replaceFileContentsOnEachWrite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"deleteOldFileOnStartup\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"fileName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"archiveDateFormat\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"archiveOldFileOnStartup\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"createDirs\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"enableFileDelete\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"openFileCacheTimeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"networkWrites\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"keepFileOpen\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"concurrentWrites\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"concurrentWriteAttempts\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"concurrentWriteAttemptDelay\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"bufferSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"openFileCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"autoFlush\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>File encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"lineEnding\" type=\"NLog.Targets.LineEndingMode\">\n          <xs:annotation>\n            <xs:documentation>Line ending mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveNumbering\" type=\"NLog.Targets.ArchiveNumberingMode\">\n          <xs:annotation>\n            <xs:documentation>Way file archives are numbered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveFileName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the file to be used for an archive.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveEvery\" type=\"NLog.Targets.FileArchivePeriod\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to automatically archive log files every time the specified time passes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveAboveSize\" type=\"xs:long\">\n          <xs:annotation>\n            <xs:documentation>Size in bytes above which log files will be automatically archived.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxArchiveFiles\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of archive files that should be kept.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"forceManaged\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Gets ors set a value indicating whether a managed file stream is forced, instead of used the native implementation.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"fileAttributes\" type=\"NLog.Targets.Win32FileAttributes\">\n          <xs:annotation>\n            <xs:documentation>File attributes (Windows only).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"replaceFileContentsOnEachWrite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to replace file contents on each write instead of appending log message at the end.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"deleteOldFileOnStartup\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to delete old log file on startup.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"fileName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the file to write to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveDateFormat\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Value specifying the date format to use when archving files.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"archiveOldFileOnStartup\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to archive old log file on startup.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"createDirs\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to create directories if they don't exist.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"enableFileDelete\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to enable log file(s) to be deleted.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"openFileCacheTimeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"networkWrites\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on different network hosts.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepFileOpen\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep log file open instead of opening and closing it on each logging event.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWrites\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on the same host.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWriteAttempts\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"concurrentWriteAttemptDelay\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Delay in milliseconds to wait before attempting to write to the file again.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bufferSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Log file buffer size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"openFileCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoFlush\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to automatically flush the file buffers after each log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.LineEndingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Default\" />\n      <xs:enumeration value=\"CRLF\" />\n      <xs:enumeration value=\"CR\" />\n      <xs:enumeration value=\"LF\" />\n      <xs:enumeration value=\"None\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.ArchiveNumberingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Sequence\" />\n      <xs:enumeration value=\"Rolling\" />\n      <xs:enumeration value=\"Date\" />\n      <xs:enumeration value=\"DateAndSequence\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.FileArchivePeriod\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"None\" />\n      <xs:enumeration value=\"Year\" />\n      <xs:enumeration value=\"Month\" />\n      <xs:enumeration value=\"Day\" />\n      <xs:enumeration value=\"Hour\" />\n      <xs:enumeration value=\"Minute\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Win32FileAttributes\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"ReadOnly\" />\n      <xs:enumeration value=\"Hidden\" />\n      <xs:enumeration value=\"System\" />\n      <xs:enumeration value=\"Archive\" />\n      <xs:enumeration value=\"Device\" />\n      <xs:enumeration value=\"Normal\" />\n      <xs:enumeration value=\"Temporary\" />\n      <xs:enumeration value=\"SparseFile\" />\n      <xs:enumeration value=\"ReparsePoint\" />\n      <xs:enumeration value=\"Compressed\" />\n      <xs:enumeration value=\"NotContentIndexed\" />\n      <xs:enumeration value=\"Encrypted\" />\n      <xs:enumeration value=\"WriteThrough\" />\n      <xs:enumeration value=\"NoBuffering\" />\n      <xs:enumeration value=\"DeleteOnClose\" />\n      <xs:enumeration value=\"PosixSemantics\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"FilteringWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"condition\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Condition expression. Log events who meet this condition will be forwarded to the wrapped target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FormControl\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"append\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"controlName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"formName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"reverseOrder\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"append\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether log text should be appended to the text of the control instead of overwriting it.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"controlName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of control to which NLog will log write log text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Form on which the control is located.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"reverseOrder\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Whether new log entry are added to the start or the end of the control</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"ImpersonatingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"domain\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"impersonationLevel\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\" />\n          <xs:element name=\"logOnProvider\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.LogOnProviderType\" />\n          <xs:element name=\"logOnType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.Wrappers.SecurityLogOnType\" />\n          <xs:element name=\"password\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"revertToSelf\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"userName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"domain\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Windows domain name to change context to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"impersonationLevel\" type=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\">\n          <xs:annotation>\n            <xs:documentation>Required impersonation level.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"logOnProvider\" type=\"NLog.Targets.Wrappers.LogOnProviderType\">\n          <xs:annotation>\n            <xs:documentation>Type of the logon provider.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"logOnType\" type=\"NLog.Targets.Wrappers.SecurityLogOnType\">\n          <xs:annotation>\n            <xs:documentation>Logon Type.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"password\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>User account password.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"revertToSelf\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to revert to the credentials of the process instead of impersonating another user.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"userName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Username to change context to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.SecurityImpersonationLevel\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Anonymous\" />\n      <xs:enumeration value=\"Identification\" />\n      <xs:enumeration value=\"Impersonation\" />\n      <xs:enumeration value=\"Delegation\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.LogOnProviderType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Default\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Targets.Wrappers.SecurityLogOnType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Interactive\" />\n      <xs:enumeration value=\"Network\" />\n      <xs:enumeration value=\"Batch\" />\n      <xs:enumeration value=\"Service\" />\n      <xs:enumeration value=\"NetworkClearText\" />\n      <xs:enumeration value=\"NewCredentials\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"LogReceiverService\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"endpointAddress\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"endpointConfigurationName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"clientId\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"includeEventProperties\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n          <xs:element name=\"useBinaryEncoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"endpointAddress\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Endpoint address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"endpointConfigurationName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the endpoint configuration in WCF configuration file.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"clientId\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Client ID.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeEventProperties\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include per-event properties in the payload sent to the server.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useBinaryEncoding\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use binary message encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.MethodCallParameter\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"type\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout that should be use to calcuate the value for the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Name of the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"type\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Type of the parameter.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"Mail\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"html\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"addNewLines\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"bcc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"to\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"cc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"body\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"subject\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"from\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"replaceNewlineWithBrTagInHtml\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"priority\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"timeout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"smtpServer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"smtpAuthentication\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.SmtpAuthenticationMode\" />\n          <xs:element name=\"smtpUserName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"smtpPassword\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"enableSsl\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"smtpPort\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"useSystemNetMailSettings\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Text to be rendered.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"html\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to send message as HTML instead of plain text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used for sending e-mail.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"addNewLines\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to add new lines between log entries.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"bcc\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"to\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"cc\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"body\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Mail message body (repeated for each log message send in one mail).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"subject\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Mail subject.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"from\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Sender's email address (e.g. joe@domain.com).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"replaceNewlineWithBrTagInHtml\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether NewLine characters in the body should be replaced with  tags.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"priority\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Priority used for sending mails.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"timeout\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Indicates the SMTP client timeout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpServer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>SMTP Server to be used for sending.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpAuthentication\" type=\"NLog.Targets.SmtpAuthenticationMode\">\n          <xs:annotation>\n            <xs:documentation>SMTP Authentication mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpUserName\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Username used to connect to SMTP server (used when SmtpAuthentication is set to \"basic\").</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpPassword\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Password used to authenticate against SMTP server (used when SmtpAuthentication is set to \"basic\").</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"enableSsl\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"smtpPort\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Port number that SMTP Server is listening on.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useSystemNetMailSettings\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the default Settings from System.Net.MailSettings should be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.SmtpAuthenticationMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"None\" />\n      <xs:enumeration value=\"Basic\" />\n      <xs:enumeration value=\"Ntlm\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"Memory\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MessageBox\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"caption\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"caption\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Message box title.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MSMQ\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"useXmlEncoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"checkIfQueueExists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"createQueueIfNotExists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"label\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"queue\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"recoverable\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used when writing text to the queue.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useXmlEncoding\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use the XML format when serializing message. This will also disable creating queues.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"checkIfQueueExists\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to check if a queue exists before writing to it.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"createQueueIfNotExists\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to create the queue if it doesn't exists.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"label\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Label to associate with each message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"queue\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Name of the queue to write to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"recoverable\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use recoverable messages (with guaranteed delivery).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"MethodCall\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"className\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"methodName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"className\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Class name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"methodName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Method name. The method must be public and static.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Network\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLogViewer\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"maxMessageSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"newLine\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"onOverflow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.NetworkTargetOverflowAction\" />\n          <xs:element name=\"connectionCacheSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"address\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"keepConnection\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"maxQueueSize\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"includeNLogData\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeSourceInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"ndcItemSeparator\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.NLogViewerParameterInfo\" />\n          <xs:element name=\"includeCallSite\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"appInfo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"includeNdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"includeMdc\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding to be used.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Instance of  that is used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxMessageSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum message size in bytes.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"newLine\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to append newline at the end of log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"onOverflow\" type=\"NLog.Targets.NetworkTargetOverflowAction\">\n          <xs:annotation>\n            <xs:documentation>Action that should be taken if the message is larger than maxMessageSize.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"connectionCacheSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Size of the connection cache (number of connections which are kept alive).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"address\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Network address.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"keepConnection\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to keep connection open whenever possible.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxQueueSize\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum queue size.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNLogData\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include NLog-specific extensions to log4j schema.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeSourceInfo\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include source info (file name and line number) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ndcItemSeparator\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>NDC item separator.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeCallSite\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include call site (class and method name) in the information sent over the network.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"appInfo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>AppInfo field. By default it's the friendly name of the current AppDomain.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeNdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  stack contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"includeMdc\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to include  dictionary contents.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Null\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"formatMessage\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formatMessage\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to perform layout calculation.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"OutputDebugString\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"PerfCounter\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"autoCreate\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"categoryName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterHelp\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"counterType\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Diagnostics.PerformanceCounterType\" />\n          <xs:element name=\"instanceName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoCreate\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether performance counter should be automatically created.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"categoryName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the performance counter category.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterHelp\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Counter help text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the performance counter.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"counterType\" type=\"System.Diagnostics.PerformanceCounterType\">\n          <xs:annotation>\n            <xs:documentation>Performance counter type.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"instanceName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Performance counter instance name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Diagnostics.PerformanceCounterType\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"NumberOfItems32\" />\n      <xs:enumeration value=\"NumberOfItems64\" />\n      <xs:enumeration value=\"NumberOfItemsHEX32\" />\n      <xs:enumeration value=\"NumberOfItemsHEX64\" />\n      <xs:enumeration value=\"RateOfCountsPerSecond32\" />\n      <xs:enumeration value=\"RateOfCountsPerSecond64\" />\n      <xs:enumeration value=\"CountPerTimeInterval32\" />\n      <xs:enumeration value=\"CountPerTimeInterval64\" />\n      <xs:enumeration value=\"RawFraction\" />\n      <xs:enumeration value=\"RawBase\" />\n      <xs:enumeration value=\"AverageTimer32\" />\n      <xs:enumeration value=\"AverageBase\" />\n      <xs:enumeration value=\"AverageCount64\" />\n      <xs:enumeration value=\"SampleFraction\" />\n      <xs:enumeration value=\"SampleCounter\" />\n      <xs:enumeration value=\"SampleBase\" />\n      <xs:enumeration value=\"CounterTimer\" />\n      <xs:enumeration value=\"CounterTimerInverse\" />\n      <xs:enumeration value=\"Timer100Ns\" />\n      <xs:enumeration value=\"Timer100NsInverse\" />\n      <xs:enumeration value=\"ElapsedTime\" />\n      <xs:enumeration value=\"CounterMultiTimer\" />\n      <xs:enumeration value=\"CounterMultiTimerInverse\" />\n      <xs:enumeration value=\"CounterMultiTimer100Ns\" />\n      <xs:enumeration value=\"CounterMultiTimer100NsInverse\" />\n      <xs:enumeration value=\"CounterMultiBase\" />\n      <xs:enumeration value=\"CounterDelta32\" />\n      <xs:enumeration value=\"CounterDelta64\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"PostFilteringWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"defaultFilter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n          <xs:element name=\"when\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.Wrappers.FilteringRule\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"defaultFilter\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Default filter to be applied when no specific rule matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.Wrappers.FilteringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"exists\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"filter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n    </xs:choice>\n    <xs:attribute name=\"exists\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition to be tested.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"filter\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Resulting filter to be applied when the condition matches.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"RandomizeGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RepeatingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"repeatCount\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"repeatCount\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of times to repeat each log message.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RetryingWrapper\">\n    <xs:complexContent>\n      <xs:extension base=\"WrapperTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"retryCount\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"retryDelayMilliseconds\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"retryCount\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Number of retries that should be attempted on the wrapped target in case of a failure.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"retryDelayMilliseconds\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Time to wait between retries in milliseconds.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"RichTextBox\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"autoScroll\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"controlName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"formName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"height\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"maxLines\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"showMinimized\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"toolWindow\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"width\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:integer\" />\n          <xs:element name=\"row-coloring\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.RichTextBoxRowColoringRule\" />\n          <xs:element name=\"useDefaultRowColoringRules\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"word-coloring\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.RichTextBoxWordColoringRule\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"autoScroll\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether scroll bar will be moved automatically to show most recent log entries.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"controlName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of RichTextBox to which Nlog will write.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"formName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the Form on which the control is located. If there is no open form of a specified name than NLog will create a new one.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"height\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Initial height of the form with rich text box.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"maxLines\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Maximum number of lines the rich text box will store (or 0 to disable this feature).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"showMinimized\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the created form will be initially minimized.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"toolWindow\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether the created window will be a tool window.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"width\" type=\"xs:integer\">\n          <xs:annotation>\n            <xs:documentation>Initial width of the form with rich text box.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"useDefaultRowColoringRules\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to use default coloring rules.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"System.Drawing.FontStyle\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Regular\" />\n      <xs:enumeration value=\"Bold\" />\n      <xs:enumeration value=\"Italic\" />\n      <xs:enumeration value=\"Underline\" />\n      <xs:enumeration value=\"Strikeout\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Targets.RichTextBoxRowColoringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"fontColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"style\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Drawing.FontStyle\" />\n    </xs:choice>\n    <xs:attribute name=\"condition\" type=\"Condition\">\n      <xs:annotation>\n        <xs:documentation>Condition that must be met in order to set the specified font color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Background color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"fontColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Font color.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"style\" type=\"System.Drawing.FontStyle\">\n      <xs:annotation>\n        <xs:documentation>Font style of matched text.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"NLog.Targets.RichTextBoxWordColoringRule\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"regex\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"wholeWords\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n      <xs:element name=\"backgroundColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"fontColor\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n      <xs:element name=\"style\" minOccurs=\"0\" maxOccurs=\"1\" type=\"System.Drawing.FontStyle\" />\n    </xs:choice>\n    <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to ignore case when comparing texts.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"regex\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Regular expression to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"text\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Text to be matched. You must specify either text or regex.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"wholeWords\" type=\"xs:boolean\">\n      <xs:annotation>\n        <xs:documentation>Indicates whether to match whole words only.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"backgroundColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Background color. Names are identical with KnownColor enum extended with Empty value which means that background color won't be changed.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"fontColor\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Font color. Names are identical with KnownColor enum extended with Empty value which means that font color won't be changed.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"style\" type=\"System.Drawing.FontStyle\">\n      <xs:annotation>\n        <xs:documentation>Font style of matched text. Possible values are the same as in FontStyle enum in System.Drawing.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"RoundRobinGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SplitGroup\">\n    <xs:complexContent>\n      <xs:extension base=\"CompoundTargetBase\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Trace\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout used to format log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"WebService\">\n    <xs:complexContent>\n      <xs:extension base=\"Target\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Targets.MethodCallParameter\" />\n          <xs:element name=\"encoding\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"methodName\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"namespace\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"protocol\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Targets.WebServiceProtocol\" />\n          <xs:element name=\"url\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:anyURI\" />\n        </xs:choice>\n        <xs:attribute name=\"name\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Name of the target.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"encoding\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Encoding.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"methodName\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Web service method name.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"namespace\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Web service namespace.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"protocol\" type=\"NLog.Targets.WebServiceProtocol\">\n          <xs:annotation>\n            <xs:documentation>Protocol to be used when calling web service.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"url\" type=\"xs:anyURI\">\n          <xs:annotation>\n            <xs:documentation>Web service URL.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Targets.WebServiceProtocol\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Soap11\" />\n      <xs:enumeration value=\"Soap12\" />\n      <xs:enumeration value=\"HttpPost\" />\n      <xs:enumeration value=\"HttpGet\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"CsvLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"column\" minOccurs=\"0\" maxOccurs=\"unbounded\" type=\"NLog.Layouts.CsvColumn\" />\n          <xs:element name=\"customColumnDelimiter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"delimiter\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Layouts.CsvColumnDelimiterMode\" />\n          <xs:element name=\"quoteChar\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"quoting\" minOccurs=\"0\" maxOccurs=\"1\" type=\"NLog.Layouts.CsvQuotingMode\" />\n          <xs:element name=\"withHeader\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n        </xs:choice>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"customColumnDelimiter\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom').</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"delimiter\" type=\"NLog.Layouts.CsvColumnDelimiterMode\">\n          <xs:annotation>\n            <xs:documentation>Column delimiter.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"quoteChar\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Quote Character.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"quoting\" type=\"NLog.Layouts.CsvQuotingMode\">\n          <xs:annotation>\n            <xs:documentation>Quoting mode.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"withHeader\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether CVS should include header.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"NLog.Layouts.CsvColumnDelimiterMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Auto\" />\n      <xs:enumeration value=\"Comma\" />\n      <xs:enumeration value=\"Semicolon\" />\n      <xs:enumeration value=\"Tab\" />\n      <xs:enumeration value=\"Pipe\" />\n      <xs:enumeration value=\"Space\" />\n      <xs:enumeration value=\"Custom\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:simpleType name=\"NLog.Layouts.CsvQuotingMode\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"All\" />\n      <xs:enumeration value=\"Nothing\" />\n      <xs:enumeration value=\"Auto\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"NLog.Layouts.CsvColumn\">\n    <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n      <xs:element name=\"name\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n    </xs:choice>\n    <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n      <xs:annotation>\n        <xs:documentation>Layout of the column.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"name\" type=\"xs:string\">\n      <xs:annotation>\n        <xs:documentation>Name of the column.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n  </xs:complexType>\n  <xs:complexType name=\"LayoutWithHeaderAndFooter\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"footer\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"header\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"footer\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Footer layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"header\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Header layout.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Body layout (can be repeated multiple times).</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"Log4JXmlEventLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SimpleLayout\">\n    <xs:complexContent>\n      <xs:extension base=\"Layout\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"text\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"text\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Layout text.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"when\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"condition\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Condition\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"condition\" type=\"Condition\">\n          <xs:annotation>\n            <xs:documentation>Condition expression.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:simpleType name=\"FilterResult\">\n    <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"Neutral\" />\n      <xs:enumeration value=\"Log\" />\n      <xs:enumeration value=\"Ignore\" />\n      <xs:enumeration value=\"LogFinal\" />\n      <xs:enumeration value=\"IgnoreFinal\" />\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"whenContains\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"substring\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"substring\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Substring to be matched.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenEqual\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"compareTo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"compareTo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>String to compare the layout to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenNotContains\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n          <xs:element name=\"substring\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"substring\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>Substring to be matched.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"whenNotEqual\">\n    <xs:complexContent>\n      <xs:extension base=\"Filter\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element name=\"action\" minOccurs=\"0\" maxOccurs=\"1\" type=\"FilterResult\" />\n          <xs:element name=\"compareTo\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:string\" />\n          <xs:element name=\"ignoreCase\" minOccurs=\"0\" maxOccurs=\"1\" type=\"xs:boolean\" />\n          <xs:element name=\"layout\" minOccurs=\"0\" maxOccurs=\"1\" type=\"Layout\" />\n        </xs:choice>\n        <xs:attribute name=\"action\" type=\"FilterResult\">\n          <xs:annotation>\n            <xs:documentation>Action to be taken when filter matches.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"compareTo\" type=\"xs:string\">\n          <xs:annotation>\n            <xs:documentation>String to compare the layout to.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"ignoreCase\" type=\"xs:boolean\">\n          <xs:annotation>\n            <xs:documentation>Indicates whether to ignore case when comparing strings.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"layout\" type=\"SimpleLayoutAttribute\">\n          <xs:annotation>\n            <xs:documentation>Layout to be used to filter log messages.</xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AccurateLocal\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"AccurateUTC\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FastLocal\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"FastUTC\">\n    <xs:complexContent>\n      <xs:extension base=\"TimeSource\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\" />\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n</xs:schema>"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/ProjectInstaller.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayService\n{\n    using System.ComponentModel;\n    using System.Configuration.Install;\n    using System.ServiceProcess;\n    using Microsoft.ConnectTheDots.Gateway;\n\n    //--//\n\n    [RunInstaller( true )]\n    public class ProjectInstaller : Installer\n    {\n        private ServiceProcessInstaller _process;\n        private ServiceInstaller        _service;\n\n        //--//\n\n        public ProjectInstaller( )\n        {\n            _process = new ServiceProcessInstaller\n            {\n                Account = ServiceAccount.LocalSystem\n            };\n            _service = new ServiceInstaller\n            {\n                ServiceName = Constants.WindowsServiceName\n            };\n            Installers.Add( _process );\n            Installers.Add( _service );\n        }\n    }\n}"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/Properties/AssemblyInfo.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nusing System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled through the following \n// set of attributes. Change these attribute values to modify the information\n// associated with an assembly.\n[assembly: AssemblyTitle(\"GatewayService\")]\n[assembly: AssemblyDescription(\"\")]\n[assembly: AssemblyConfiguration(\"\")]\n[assembly: AssemblyCompany(\"\")]\n[assembly: AssemblyProduct(\"GatewayService\")]\n[assembly: AssemblyCopyright(\"Copyright ©  2014\")]\n[assembly: AssemblyTrademark(\"\")]\n[assembly: AssemblyCulture(\"\")]\n\n// Setting ComVisible to false makes the types in this assembly not visible \n// to COM components.  If you need to access a type in this assembly from \n// COM, set the ComVisible attribute to true on that type.\n[assembly: ComVisible(false)]\n\n// The following GUID is for the ID of the typelib if this project is exposed to COM\n[assembly: Guid(\"86008021-798e-41ed-921c-c706580e6b4e\")]\n\n// Version information for an assembly consists of the following four values:\n//\n//      Major Version\n//      Minor Version \n//      Build Number\n//      Revision\n//\n// You can specify all the values or you can default the Build and Revision Numbers \n// by using the '*' as shown below:\n// [assembly: AssemblyVersion(\"1.0.*\")]\n[assembly: AssemblyVersion(\"1.0.0.0\")]\n[assembly: AssemblyFileVersion(\"1.0.0.0\")]\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/Utils/Logger/EventLogger.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayService\n{\n    using System.ComponentModel;\n    using System.Diagnostics;\n    using Gateway;\n    using Microsoft.ConnectTheDots.Common;\n\n    //--//\n\n    public class WindowsEventLogger : ILogger\n    {\n        #region Singleton implementation\n\n        private static readonly object  _syncRoot = new object( );\n\n        //--//\n\n        private static ILogger          _WindowsEventLoggerInstance;\n        private static EventLog         _eventLog;\n\n        //--//\n        \n        public static ILogger Instance\n        {\n            get\n            {\n                if( _WindowsEventLoggerInstance == null )\n                {\n                    lock( _syncRoot )\n                    {\n                        if( _WindowsEventLoggerInstance == null )\n                        {\n                            _WindowsEventLoggerInstance = new WindowsEventLogger( );\n                        }\n                    }\n                }\n\n                return _WindowsEventLoggerInstance;\n            }\n        }\n\n        private WindowsEventLogger( )\n        {\n            _eventLog = new EventLog\n            {\n                Source = Constants.WindowsServiceName,\n                Log = \"Application\"\n            };\n\n            ( ( ISupportInitialize )( _eventLog ) ).BeginInit( );\n            if( !EventLog.SourceExists( _eventLog.Source ) )\n            {\n                EventLog.CreateEventSource( _eventLog.Source, _eventLog.Log );\n            }\n            ( ( ISupportInitialize )( _eventLog ) ).EndInit( );\n        }\n\n        #endregion\n\n        public void Flush( )\n        {\n        }\n\n        public void LogError( string logMessage )\n        {\n            _eventLog.WriteEntry( logMessage, EventLogEntryType.Error );\n        }\n\n        public void LogInfo( string logMessage )\n        {\n            _eventLog.WriteEntry( logMessage, EventLogEntryType.Information );\n        }\n    }\n\n    public static class EventLogger\n    {\n        private static readonly object  _syncRoot = new object( );\n\n        //--//\n\n        private static ILogger _eventLogger;\n\n        //--//\n\n        public static ILogger Instance\n        {\n            get\n            {\n                if( _eventLogger == null )\n                {\n                    lock( _syncRoot )\n                    {\n                        if( _eventLogger == null )\n                        {\n                            _eventLogger = Platform.IsMono ? NLogEventLogger.Instance : WindowsEventLogger.Instance;\n                        }\n                    }\n                }\n\n                return _eventLogger;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/WindowsService.cs",
    "content": "﻿//  ---------------------------------------------------------------------------------\n//  Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n// \n//  The MIT License (MIT)\n// \n//  Permission is hereby granted, free of charge, to any person obtaining a copy\n//  of this software and associated documentation files (the \"Software\"), to deal\n//  in the Software without restriction, including without limitation the rights\n//  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n//  copies of the Software, and to permit persons to whom the Software is\n//  furnished to do so, subject to the following conditions:\n// \n//  The above copyright notice and this permission notice shall be included in\n//  all copies or substantial portions of the Software.\n// \n//  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n//  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n//  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n//  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n//  THE SOFTWARE.\n//  ---------------------------------------------------------------------------------\n\nnamespace Microsoft.ConnectTheDots.GatewayService\n{\n    using System;\n    using System.Configuration;\n    using System.ServiceModel.Web;\n    using System.ServiceProcess;\n    \n    using _THREADING = System.Threading.Tasks;\n    using Microsoft.ConnectTheDots.Gateway;\n    using Microsoft.ConnectTheDots.Common;\n    using Microsoft.ConnectTheDots.Common.Threading;\n\n\n    //--//\n\n    public class WindowsService : ServiceBase\n    {\n        private const int STOP_TIMEOUT_MS = 5000; // ms\n\n        //--//\n\n        private static WebServiceHost _webHost;\n\n        //--//\n\n        private readonly ILogger                        _logger;\n        private readonly GatewayQueue<QueuedItem>       _gatewayQueue;\n        private readonly MessageSender<SensorDataContract> _MessageSender;\n\n        private readonly EventProcessor                 _batchSenderThread;\n        private readonly DeviceAdapterLoader            _dataIntakeLoader;\n\n        private readonly Func<string, QueuedItem>       _gatewayTransform;\n\n        //--//\n\n        private          string                         _gatewayIPAddressString = string.Empty;\n\n        //--//\n\n        public WindowsService( ILogger logger )\n        {\n            if( logger == null )\n            {\n                throw new ArgumentException( \"Cannot run service without logging\" );\n            }\n\n            _logger = logger;\n\n            if( logger is TunableLogger )\n            {\n                TunableLogger.LoggingLevel loggingLevel = TunableLogger.LevelFromString( ConfigurationManager.AppSettings.Get( \"LoggingLevel\" ) );\n\n                ( ( TunableLogger )logger ).Level = ( loggingLevel != TunableLogger.LoggingLevel.Undefined ) ? loggingLevel : TunableLogger.LoggingLevel.Errors;\n            }\n\n            try\n            {\n                _THREADING.TaskScheduler.UnobservedTaskException += OnUnobservedTaskException;\n\n                // Name the Windows Service\n                ServiceName = Constants.WindowsServiceName;\n\n                _gatewayQueue = new GatewayQueue<QueuedItem>( );\n                IotHubConfig iotHubConfig = Loader.GetIotHubConfig( );\n\n                if( iotHubConfig == null )\n                {\n                    _logger.LogError( \"IoT Hub connection configuration is missing\" );\n                    return;\n                }\n                _MessageSender = new MessageSender<SensorDataContract>(iotHubConfig.IotHubConnectionString, _logger);\n                \n                _batchSenderThread = new BatchSenderThread<QueuedItem, SensorDataContract>(\n                                                    _gatewayQueue,\n                                                    _MessageSender,\n                                                    null,//m => DataTransforms.AddTimeCreated(DataTransforms.SensorDataContractFromQueuedItem(m, _Logger)),\n                                                    new Func<QueuedItem, string>( m => m.JsonData ),\n                                                    _logger );\n\n                _dataIntakeLoader = new DeviceAdapterLoader( Loader.GetSources( ), Loader.GetEndpoints( ), _logger );\n\n                TaskWrapper.Run( ( ) => IPAddressHelper.GetIPAddressString( ref _gatewayIPAddressString ) );\n\n                DataTransformsConfig dataTransformsConfig = Loader.GetDataTransformsConfig( );\n                if( dataTransformsConfig.AttachIP || dataTransformsConfig.AttachTime )\n                {\n                    Func<string, SensorDataContract> transform = ( m => DataTransforms.SensorDataContractFromString( m, _logger ) );\n\n                    if( dataTransformsConfig.AttachTime )\n                    {\n                        var transformPrev = transform;\n                        transform = ( m => DataTransforms.AddTimeCreated( transformPrev( m ) ) );\n                    }\n\n                    if( dataTransformsConfig.AttachTime )\n                    {\n                        var transformPrev = transform;\n                        transform = ( m => DataTransforms.AddIPToLocation( transformPrev( m ), _gatewayIPAddressString ) );\n                    }\n\n                    _gatewayTransform = ( m => DataTransforms.QueuedItemFromSensorDataContract( transform( m ) ) );\n                }\n            }\n            catch( Exception ex )\n            {\n                _logger.LogError( \"Exception creating WindowsService: \" + ex.Message );\n            }\n        }\n\n        protected override void OnStart( string[] args )\n        {\n            _logger.LogInfo( \"Service starting... \" );\n\n            if( _webHost != null )\n            {\n                _webHost.Close( );\n            }\n\n            _batchSenderThread.Start( );\n\n            _webHost = new WebServiceHost( typeof( Microsoft.ConnectTheDots.Gateway.GatewayService ) );\n\n            Gateway.GatewayService service = new Microsoft.ConnectTheDots.Gateway.GatewayService(\n                _gatewayQueue,\n                _batchSenderThread,\n                _gatewayTransform\n            );\n            _webHost.Description.Behaviors.Add( new ServiceBehavior( ( ) => service ) );\n\n            service.Logger = _logger;\n            service.OnDataInQueue += OnData;\n\n            _webHost.Open( );\n\n            _dataIntakeLoader.StartAll( service.Enqueue );\n\n            _logger.LogInfo( \"...started\" );\n        }\n\n        protected override void OnStop( )\n        {\n            _logger.LogInfo( \"Service stopping... \" );\n\n            _dataIntakeLoader.StopAll( );\n\n            // close web host first (message intake)\n            if( _webHost != null )\n            {\n                _webHost.Close( );\n                _webHost = null;\n            }\n\n            // shutdown processor (message processing)\n            _batchSenderThread.Stop( STOP_TIMEOUT_MS );\n\n            // shut down connection to event hub last\n            if( _MessageSender != null )\n            {\n                _MessageSender.Close( );\n            }\n\n            _logger.LogInfo( \"...stopped\" );\n        }\n\n        protected virtual void OnData( QueuedItem data )\n        {\n            // LORENZO: test behaviours such as accumulating data an processing in batch\n            _batchSenderThread.Process( );\n        }\n\n        \n\n        static void Main( string[] args )\n        {\n            ILogger logger = null;\n\n            try\n            {\n                logger = TunableLogger.FromLogger(\n                    SafeLogger.FromLogger( EventLogger.Instance )\n                    );\n\n                Run( new WindowsService( logger ) );\n            }\n            catch( Exception ex )\n            {\n                if( logger != null )\n                {\n                    logger.LogError( ex.ToString( ) );\n                }\n\n                // just return...\n            }\n        }\n\n        private void OnUnobservedTaskException( object sender, _THREADING.UnobservedTaskExceptionEventArgs e )\n        {\n            // prevent exception escalation\n            e.SetObserved( );\n\n            _logger.LogError( String.Format( \"task Exception: '{0}'\\r\\nTrace:\\r\\n{1}\", e.Exception.Message, e.Exception.StackTrace ) );\n        }\n    }\n}\n"
  },
  {
    "path": "Devices/Gateways/GatewayService/WindowsService/packages.config",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Microsoft.Azure.Devices.Client.PCL\" version=\"1.0.5\" targetFramework=\"net452\" />\n  <package id=\"Mono.Security\" version=\"3.2.3.0\" targetFramework=\"net452\" />\n  <package id=\"Newtonsoft.Json\" version=\"6.0.6\" targetFramework=\"net452\" />\n  <package id=\"NLog\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"NLog.Config\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"NLog.Schema\" version=\"3.2.0.0\" targetFramework=\"net452\" />\n  <package id=\"PCLCrypto\" version=\"1.0.86\" targetFramework=\"net452\" />\n  <package id=\"Validation\" version=\"2.0.6.15003\" targetFramework=\"net452\" />\n</packages>"
  },
  {
    "path": "Devices/readme.md",
    "content": "# Device setup  #\nThe basic premise of this project is that data from sensing devices can be sent upstream and received in a prescribed JSON format. This might be achieved by programming the devices themselves (e.g. compiling and uploading a Wiring script to an Arduino UNO), or by reading the data from the device and formatting it accordingly (e.g. using a Python script on a Raspberry Pi to read USB output from a commercial Sound Level Meter). \n\n## Creating devices IDs for Azure IoT Hub ##\nThe ConnecttheDots project uses Azure IoT Hub to connect devices to the Cloud.\nWhen [deploying the full solution using the ARM template](../Azure/ARMTemplate/Readme.md) an Azure IoT Hub is deployed as part of your solution.\n\nThe ConnectTheDots website allows you to manage your IoT Hub (Create/Delete devices, get connection strings) directly from the site. But for security reasons, there is a configuration step described in the [service deployment instructions](../Azure/ARMTemplate/readme.md#enable-iothub-management).\nIf you have enabled this feature, then you can manage the devices directly from your ConnectTheDots website.\n\nIf you have not enabled the feature, then , you can find connection information for managing the IoT Hub instance in the [Azure portal](http://portal.azure.com). Search for the Resource Group with the name you used for the solution when deploying the services using the script.\nFor each of the devices that you want to connect to your ConnectTheDots solution, you will need to create a new device ID.\nYou will find all the instructions to create device IDs and retrieve connection strings [here](https://github.com/Azure/azure-iot-sdks/blob/master/doc/manage_iot_hub.md).\n\n## ConnectTheDots getting started project using Raspberry Pi and Arduino ##\nFor this project, follow the instructions for configuring the following:\n\n1. [Arduino UNO with weather shield](GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/Arduino-and-Weather-Shield-setup.md) \n2. [Raspberry Pi](Gateways/GatewayService/RaspberryPi-Gateway-setup.md) \n\n## Connect The Dots with all the other devices ##\n\nTo build your own end-to-end configuration you need to identify and configure the device(s) that will be producing the data to be pushed to Azure and displayed/analyzed. Devices fall generally into two categories - those that can connect directly to the Internet, and those that need to connect to the Internet through some intermediate device or gateway. Sample code and documentation can be found in the following folders:\n\n1. [Simple devices requiring a gateway](GatewayConnectedDevices/) - Devices too small or basic to support a secure IP connection, or which need to be aggregated before sending to Azure\n2. [Devices connecting directly to Azure](DirectlyConnectedDevices/) - Devices powerful enough to support a secure IP connection\n3. [Gateways or other intermediary devices](Gateways/) - Devices which collect data from other devices and upload to Azure. These can be very simple (e.g. just package and send the data securely to Azure without changes), or very sophisticated (e.g. allow for device authentication, provisioning, management, and communications). \n\n\n### Build a sensor infrastructure ###\nFor additional scenarios, or more advanced configurations, follow the setup instructions in the folders for the devices or gateways listed above.\n"
  },
  {
    "path": "GettingStarted.md",
    "content": "# Getting Started #\nAs good first task we'll walk you through building a simple temperature sensing network. It can be built quickly and easily with minimal knowledge of programming or Microsoft Azure, using commodity devices available locally or online - for example an Arduino UNO board with a weather shield, connected to a Raspberry Pi sending data to an Azure website. \n\n\n![](images/Arduino-Pi-IoT.jpg)\n\n\nSample code for this is included in the project.\n\n## Hardware prerequisites for Connect The Dots getting started project ##\nIf you are going to deploy the starter solution, you need to procure an Arduino UNO and Raspberry Pi, as shown in the documentation for those devices in the appropriate folders:\n\n- [Arduino UNO R3 and weather shield](Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/Hardware.md)\n- [Raspberry Pi](Devices/Gateways/GatewayService/Hardware.md)\n\n## Software prerequisites ##\nIn order to reproduce one of the ConnectTheDots.io scenarios, you will need the following:\n\n1. Microsoft Azure subscription ([free trial subscription](http://azure.microsoft.com/en-us/pricing/free-trial/) is sufficient)\n1. [optional] Visual Studio 2013 or above – [Community Edition](http://www.visualstudio.com/downloads/download-visual-studio-vs) is sufficient. Note that if you are not planning to use the Gateway nor making changes to the dashboard, you will NOT need Visual Studio.\n1. [optional] [WiX Toolset](http://wixtoolset.org) - if you want to build installer of Gateway for Windows\n\n## Setup Tasks ##\nSetting up your IoT solution involves several distinct steps, each of which is fully described in this project:\n\n\n1. Clone or copy the project to your machine (NOTE: place the project in a folder as close to the root of your file system as possible. Some paths in the project are very long and you might encounter issues with long path names when restoring NuGet packages)\n1. [Deploy Azure services](Azure/ARMTemplate/Readme.md) - Creating Azure resources\n1. [Device setup](Devices/DeviceSetup.md) - Configuring your device(s)\n  \nTo get started with our simple example, complete the tasks above in order. Navigation is provided on each page to get to the next topic.\n\n## Run the scenario ##\n\nOnce you have setup the services, published the site, provisioned and connected your devices, you will see data coming up on your website at the URL you chose when deploying the site.\n\nYou should see average temperature measurements showing up in the web browser every 20 seconds.\n\nIf you select “All”, you should see raw readings from the device coming in every second.\nIf the temperature exceeds 80 degrees (F), you should see an alert showing in the alerts table, once every 20 seconds while the temperature on any of the devices exceeds 80 degrees (F).\nIf you cover the shield, you will see an alert telling you the light is turned off.\n\n![](images/WebsiteCapture.jpg)\n"
  },
  {
    "path": "SupportedDevices.md",
    "content": "# Supported Devices #\n\nBelow you'll find a list of supported devices, which can be found under each parent directory.\n\n### Connect The Dots Getting Started With RPi and Arduino project ###\nIf you are going to deploy the getting started project, you need to procure an Arduino UNO and Raspberry Pi, as shown in the documentation for those devices in the appropriate folders:\n\n- [Arduino UNO R3 and weather shield](./Devices/GatewayConnectedDevices/Arduino UNO/Weather/WeatherShieldJson/Hardware.md)\n- [Raspberry Pi](Devices/Gateways/GatewayService/Hardware.md)\n\nOnce you have these, head over to the [Getting Started With RPi and Arduino project](GettingStarted.md) to get going.\n\n## Additional devices ##\nIf you decide to connect another device, you can check out the samples provided in the devices sub folder containing .NET, C++ and Node.js examples. Other languages examples are coming soon! Additionally, we encourage the community to submit new devices.  See the [Contribute](Contribute.md) page for details on how to do that.\n\nThe devices currently showcased are the following:\n\n- [Directly connected devices](Devices/DirectlyConnectedDevices/):\n    - Intel Edison running a node.js application sending data from a TI SensorTag BLE sensor kit\n    - Intel Edison running a node.js application sending data from a Grove sensor kit\n    - Intel Edison running a node.js application sending data from a Xadow sensor kit\n    - node.js application sending data from a TI SensorTag BLE sensor kit\n    - BeagleBone Black running a node.js application sending data from Grove sensors\n    - Windows 10 Universal Application (for Windows 10, Windows 10 IoT Core, Windows 10 Mobile) sending simulated data\n    - Windows 10 Universal Application (for Windows 10, Windows 10 Mobile) sending sensors data from a Microsoft Band\n    - Xamarin application sending simulated data\n    - ESP8266 powered board (such as Adafruit Feather Huzzah) running a C application.\n- [Gateways](Devices/Gateways/GatewayService/):\n    - Raspberry Pi supporting several types of device connections (see below) and running a C# service on top of Mono, or .NET Framework on Windows. \n- [Gateway connected devices](Devices/GatewayConnectedDevices/) (devices connecting to a gateway to send their data)\n    - Arduino UNO with one or several of the following sensors\n        - Accelerometer Memsic2125\n        - Temperature sensor DS18B20\n        - Simple sound sensor\n        - Sparkfun weather shield\n    - Arduino DUE with one or several of the following sensors:\n        - Temperature sensor DS18B20\n    - Wensn Sound Level Meter connected to the Gateway over USB\n    - and more...\n\nFor all the above mentioned devices setup instructions, see [Device setup](Devices/DeviceSetup.md)."
  },
  {
    "path": "license.txt",
    "content": "Copyright (c) Microsoft Open Technologies, Inc.  All rights reserved.\n \nThe MIT License (MIT)\n \nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n \nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n \nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "notice.txt",
    "content": "Third Party Notices for ConnectTheDots.io\n\nThis project incorporates material from the project(s) listed below (collectively, “Third Party Code”).\nMicrosoft Corp.(\"Microsoft\") is not the original author of the Third Party Code.\nThe original copyright notice and license, under which Microsoft received such Third Party Code, \nare set out below.  This Third Party Code is licensed to you under their original license terms set forth below.  \nMicrosoft reserves all other rights not expressly granted, whether by implication, estoppel or otherwise.  \n\n\n1. QRCodeJS, obtained from https://github.com/davidshimjs/qrcodejs\n\n/*\nThe MIT License (MIT)\n\n---------------------\nCopyright (c) 2012 davidshimjs\n\nPermission is hereby granted, free of charge,\nto any person obtaining a copy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction,\nincluding without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nContact GitHub API Training Shop Blog About \n\n© 2016 GitHub, Inc. Terms Privacy Security Status Help \n*/\n\n2.\tWeather Shield Example, obtained from https://learn.sparkfun.com/tutorials/weather-shield-hookup-guide   \n\n/*\nWeather Shield Example\nBy: Nathan Seidle\nSparkFun Electronics\nDate: November 16th, 2013\nLicense: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).\n\nMuch of this is based on Mike Grusin's USB Weather Board code: https://www.sparkfun.com/products/10586\n\nThis code reads all the various sensors (wind speed, direction, rain gauge, humidty, pressure, light, batt_lvl)\nand reports it over the serial comm port. This can be easily routed to an datalogger (such as OpenLog) or\na wireless transmitter (such as Electric Imp).\n\nMeasurements are reported once a second but windspeed and rain gauge are tied to interrupts that are\ncalcualted at each report.\n\nThis example code assumes the GPS module is not used.\n\n*/\n\n3.\tAnalogReadSerial, obtained from http://arduino.cc/en/Tutorial/AnalogReadSerial \n\n/*\n  \tAnalogReadSerial\n  \tReads an analog input on pin 0, prints the result to the serial monitor.\n \t Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground.\n\n \tThis example code is in the public domain.\n*/\n\n4.\tApache Qpid Proton version 0.6, obtained from https://github.com/apache/qpid-proton\n/*\n\n\n\t\t\t\tApache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\t\n      END OF TERMS AND CONDITIONS\n\n*/\n\n5.\tOpenSSL version 1.0.2-beta4-dev, obtained from https://github.com/openssl/openssl/\n/*\n\tThe OpenSSL toolkit stays under a dual license, i.e. both the conditions of\n\t  the OpenSSL License and the original SSLeay license apply to the toolkit.\n\t  See below for the actual license texts. Actually both licenses are BSD-style\n\t  Open Source licenses. In case of any license issues related to OpenSSL\n\t  please contact openssl-core@openssl.org.\n\n\t  OpenSSL License\n\t  ---------------\n\n\t/* ====================================================================\n\t * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.\n\t *\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions\n\t * are met:\n\t *\n\t * 1. Redistributions of source code must retain the above copyright\n\t *    notice, this list of conditions and the following disclaimer. \n\t *\n\t * 2. Redistributions in binary form must reproduce the above copyright\n\t *    notice, this list of conditions and the following disclaimer in\n\t *    the documentation and/or other materials provided with the\n\t *    distribution.\n\t *\n\t * 3. All advertising materials mentioning features or use of this\n\t *    software must display the following acknowledgment:\n\t *    \"This product includes software developed by the OpenSSL Project\n\t *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)\"\n\t *\n\t * 4. The names \"OpenSSL Toolkit\" and \"OpenSSL Project\" must not be used to\n\t *    endorse or promote products derived from this software without\n\t *    prior written permission. For written permission, please contact\n\t *    openssl-core@openssl.org.\n\t *\n\t * 5. Products derived from this software may not be called \"OpenSSL\"\n\t *    nor may \"OpenSSL\" appear in their names without prior written\n\t *    permission of the OpenSSL Project.\n\t *\n\t * 6. Redistributions of any form whatsoever must retain the following\n\t *    acknowledgment:\n\t *    \"This product includes software developed by the OpenSSL Project\n\t *    for use in the OpenSSL Toolkit (http://www.openssl.org/)\"\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY\n\t * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n\t * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR\n\t * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT\n\t * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n\t * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n\t * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n\t * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED\n\t * OF THE POSSIBILITY OF SUCH DAMAGE.\n\t * ====================================================================\n\t *\n\t * This product includes cryptographic software written by Eric Young\n\t * (eay@cryptsoft.com).  This product includes software written by Tim\n\t * Hudson (tjh@cryptsoft.com).\n\t *\n\t */\n\n\t Original SSLeay License\n\t -----------------------\n\n\t/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)\n\t * All rights reserved.\n\t *\n\t * This package is an SSL implementation written\n\t * by Eric Young (eay@cryptsoft.com).\n\t * The implementation was written so as to conform with Netscapes SSL.\n\t * \n\t * This library is free for commercial and non-commercial use as long as\n\t * the following conditions are aheared to.  The following conditions\n\t * apply to all code found in this distribution, be it the RC4, RSA,\n\t * lhash, DES, etc., code; not just the SSL code.  The SSL documentation\n\t * included with this distribution is covered by the same copyright terms\n\t * except that the holder is Tim Hudson (tjh@cryptsoft.com).\n\t * \n\t * Copyright remains Eric Young's, and as such any Copyright notices in\n\t * the code are not to be removed.\n\t * If this package is used in a product, Eric Young should be given attribution\n\t * as the author of the parts of the library used.\n\t * This can be in the form of a textual message at program startup or\n\t * in documentation (online or textual) provided with the package.\n\t * \n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions\n\t * are met:\n\t * 1. Redistributions of source code must retain the copyright\n\t *    notice, this list of conditions and the following disclaimer.\n\t * 2. Redistributions in binary form must reproduce the above copyright\n\t *    notice, this list of conditions and the following disclaimer in the\n\t *    documentation and/or other materials provided with the distribution.\n\t * 3. All advertising materials mentioning features or use of this software\n\t *    must display the following acknowledgement:\n\t *    \"This product includes cryptographic software written by\n\t *     Eric Young (eay@cryptsoft.com)\"\n\t *    The word 'cryptographic' can be left out if the rouines from the library\n\t *    being used are not cryptographic related :-).\n\t * 4. If you include any Windows specific code (or a derivative thereof) from \n\t *    the apps directory (application code) you must include an acknowledgement:\n\t *    \"This product includes software written by Tim Hudson (tjh@cryptsoft.com)\"\n\t * \n\t * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND\n\t * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n\t * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n\t * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n\t * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n\t * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n\t * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n\t * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n\t * SUCH DAMAGE.\n\t * \n\t * The licence and distribution terms for any publically available version or\n\t * derivative of this code cannot be changed.  i.e. this code cannot simply be\n\t * copied and put under another distribution licence\n\t * [including the GNU Public Licence.]\n\t */\n\n*/\n\n6. SimpleJSON library, obtained from https://github.com/MJPA/SimpleJSON\n/*\n\tSimpleJSON Library, copyright (C) 2010 Mike Anchor\n\n\n\tPermaLink: http://mjpa.in/json\n\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy\n\tof this software and associated documentation files (the \"Software\"), to deal\n\tin the Software without restriction, including without limitation the rights\n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\tcopies of the Software, and to permit persons to whom the Software is\n\tfurnished to do so, subject to the following conditions:\n\n\n\tThe above copyright notice and this permission notice shall be included in\n\tall copies or substantial portions of the Software.\n\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\tAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n\tTHE SOFTWARE.\n*/\n\n7. RapidXML version 1.13, obtained from http://rapidxml.sourceforge.net/\n/*\n\n\tUse of this software is granted under one of the following two licenses,\n\tto be chosen freely by the user.\n\n\t1. Boost Software License - Version 1.0 - August 17th, 2003\n\t===============================================================================\n\n\tCopyright (c) 2006, 2007 Marcin Kalicinski\n\n\tPermission is hereby granted, free of charge, to any person or organization\n\tobtaining a copy of the software and accompanying documentation covered by\n\tthis license (the \"Software\") to use, reproduce, display, distribute,\n\texecute, and transmit the Software, and to prepare derivative works of the\n\tSoftware, and to permit third-parties to whom the Software is furnished to\n\tdo so, all subject to the following:\n\n\tThe copyright notices in the Software and this entire statement, including\n\tthe above license grant, this restriction and the following disclaimer,\n\tmust be included in all copies of the Software, in whole or in part, and\n\tall derivative works of the Software, unless such copies or derivative\n\tworks are solely in the form of machine-executable object code generated by\n\ta source language processor.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\tFITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT\n\tSHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE\n\tFOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,\n\tARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n\tDEALINGS IN THE SOFTWARE.\n\n\t2. The MIT License\n\t===============================================================================\n\n\tCopyright (c) 2006, 2007 Marcin Kalicinski\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy \n\tof this software and associated documentation files (the \"Software\"), to deal \n\tin the Software without restriction, including without limitation the rights \n\tto use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies \n\tof the Software, and to permit persons to whom the Software is furnished to do so, \n\tsubject to the following conditions:\n\n\tThe above copyright notice and this permission notice shall be included in all \n\tcopies or substantial portions of the Software.\n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR \n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \n\tFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL \n\tTHE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \n\tLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, \n\tOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS \n\tIN THE SOFTWARE.\n\n\t*/\n\n\t7. Node-SensorTag library obtained from https://github.com/sandeepmistry/node-sensortag\n\t/*\n\tCopyright(c) 2013 Sandeep Mistry\n\n\tThe MIT License(MIT)\n\n\tPermission is hereby granted, free of charge, to any person obtaining a copy of\n\tthis software and associated documentation files(the \"Software\"), to deal in \n\tthe Software without restriction, including without limitation the rights to\n\tuse, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of\n\tthe Software, and to permit persons to whom the Software is furnished to do so, \n\tsubject to the following conditions: \n\n\tThe above copyright notice and this permission notice shall be included in all\n\tcopies or substantial portions of the Software. \n\n\tTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\tIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n\tFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR\n\tCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n\tIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n\tCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\t*/"
  },
  {
    "path": "readme.md",
    "content": "```diff\n- THIS PROJECT IS DEPRECATED AND NO LONGER UNDER ACTIVE MAINTENANCE\n```\n![](images/CTD-logo-v5-02.png)\n\n[ConnectTheDots.io](http://connectthedots.io) is an open source project created by Microsoft to help you get tiny devices connected to Microsoft Azure IoT and to implement great IoT solutions taking advantage of Microsoft Azure advanced analytic services such as Azure Stream Analytics and Azure Machine Learning.\n\nThe project is built with the assumption that the sensors get the raw data and format it into a JSON string. That string is then sent to Azure IoT Hub, from which a Web app gathers the data and displays it as a chart.\nOptional other functions of the Azure cloud include detecting and displaying alerts and averages, however this is not required.\n\nThe JSON string is sent to Azure IoT Hub whether directly by the sensor device if it is capable of connecting to Azure IoT Hub or through a multi-protocol Gateway, which is how the [Getting Started with Pi and Arduino](GettingStarted.md) sample does it. \nMore details on each of those options are below.\n\n![](images/ConnectTheDots-architecture.png)\n\n\nIn this project there are code samples, configuration scripts and guides that will help you set up devices and sensors, and configure Microsoft Azure services to view and analyze the data produced by those devices. Some of these samples have been provided by Microsoft, others by third parties; we encourage everyone to submit code samples or configuration documentation to grow this project.\n\nThis project contains several device samples all aimed at helping you connect your devices to Azure IoT, as well as visualize and gain insight from your data.  Check out all the samples below, or follow the getting started walkthrough to learn more. Then, add some of your devices to the project!\n\nWe encourage the community to contribute to the project! See [Contribute](Contribute.md) page for details.\n\n## What's new in the V2? ##\n\nPlenty!\nThe main change is the use of Azure IoT Hub instead of Event Hubs for connecting devices to the Cloud, but here is a list of what's new in V2\n\n- Migrated from Event Hubs to Azure IoT Hub for the devices connectivity to Azure IoT: IoT Hub offers a better security with a per device authentication, along with a bidirectional messaging infrastructure.\n- Replaced the Azure Prep tool with an ARM Template: you can now deploy the whole solution (including the WebSite) from a command line not only on Windows, but also no a Mac or a Linux machine!\n- Updated devices samples\n    - Updated all the node.js samples to use the Azure IoT Hub SDK\n    - Removed old devices samples (Galileo, .Net Micro Framework)\n    - Updated the Gateway code to use Azure IoT Hub device SDK\n    - Upgraded WP8 samples (Simulated Sensors and MS Band) to Windows 10 UWP apps\n    - Added Xamarin samples \n    - Added a sample for ESP8266 chips \n\n## Where is the V1 if I still want to use the old fashion way (using Event Hub)? ##\nThe V1 has been tagged and you can find the release as a binary [here](https://github.com/Azure/connectthedots/releases/tag/1.0)\nWe also created a [branch](https://github.com/Azure/connectthedots/tree/V1) that we will not make additions to any more but will definitively track to merge your contributions.\n\n## Device basics ##\n\n### Data format ###\nConnectTheDots is built on the assumption that data from sensors is sent to Azure IoT Hub in a prescribed JSON format. The minimum structure, with required attribute names, is \n\n```\n{\n    \"guid\":\t\"string\",\n    \"organization\":\t\"string\",\n    \"displayname\": \"string\",\n    \"location\": \"string\",\n    \"measurename\": \"string\",\n    \"unitofmeasure\": \"string\",\n    \"timecreated\": \"string\",\n    \"value\": double/float/integer\n}\n```\n\t\nThis should all be sent as one string message to IoT Hub, for example as the following strings: \n\n    {\"guid\":\"62X74059-A444-4797-8A7E-526C3EF9D64B\",\"organization\":\"My Org Name\",\"displayname\":\"Sensor Name\",\"location\":\"Sensor Location\",\"measurename\":\"Temperature\",\"unitofmeasure\":\"F\",\"timecreated\":\"1975-09-16T12:00:00Z\", \"value\":74}\n\nor\n\n    {\"guid\":\"62X74059-A444-4797-8A7E-526C3EF9D64B\",\"organization\":\"my org name\",\"displayname\":\"sensor name\",\"location\":\"sensor location\",\"measurename\":\"Temperature\",\"unitofmeasure\":\"F\",\"timecreated\":\"1975-09-16T12:00:00Z\", \"value\":74.0001}\n\n\nFurthermore, the project is built upon the assumption that the *sensors* create and format this JSON string.\nFor example, if using a sensor attached to an Arduino, the code running on the Arduino would send successive JSON strings, CRLF ended, out the serial port to a gateway such as a Raspberry Pi or Windows Tablet. The gateway does nothing other than receive the JSON string, package that into the right message format, adds the timecreated time stamp, and send it to Azure.\n\nIn the case of a directly connected device, the latest needs to send the JSON package to the IoT Hub leveraging one of the existing Azure IoT Hub device client SDKs.\n\nAll the device code included in this project, or submitted for inclusion, must conform to the JSON format requirement above. \n\n### Devices and Gateway ###\nConnectTheDots provides a Multi-protocol Gateway to collect data from devices that cannot, or should not, target the cloud directly. The Gateway code is tested on Mono for Linux and on the .NET Framework on Windows and is located in the source tree under [Devices/Gateways/GatewayService](Devices/Gateways/GatewayService/), and is a simple system service. \n\nTo send data from a device to a gateway, you can just use the same exact data format and a device protocol adapter to implement any transport of your choice. The device protocol adapter is an assembly that implements the DeviceAdapterAbstract type to collect data from the device and enqueue them to the gateway for upload to the cloud. The Gateway automatically loads the device adapters from the Gateway binary directory, so deployment is extremely simple. \nYou can find some examples under [Devices/Gateways/GatewayService/DeviceAdapters](Devices/Gateways/GatewayService/DeviceAdapters), and the matching devices under  [Devices/GatewayConnectedDevices](Devices/GatewayConnectedDevices). \n\nWe even have some devices running in separate processes as a Python script, sending data to an adapter Gateway on a socket or a serial port connection. It does not get any easier than that!\n\n## Software prerequisites ##\nIn order to reproduce one of the ConnectTheDots.io scenarios, you will need the following:\n\n1. Microsoft Azure subscription ([free trial subscription](http://azure.microsoft.com/en-us/pricing/free-trial/) is sufficient)\n1. [optional] Visual Studio 2013 or above – [Community Edition](http://www.visualstudio.com/downloads/download-visual-studio-vs) is sufficient. Note that if you are not planning to use the Gateway nor making changes to the dashboard, you will NOT need Visual Studio.\n1. [optional] [WiX Toolset](http://wixtoolset.org) - if you want to build installer of Gateway for Windows\n\n## Getting Started ##\n\nTo get started with ConnectTheDots, you will need to go through the following basic steps:\n\n1. [Deploying services](Azure/ARMTemplate/Readme.md): this is easily done using the automated deployment script.\n2. [Setup devices](Devices/readme.md): follow these instructions to provision devices in the IoT Hub and modify and deploy code sample\n\n## Available Devices ##\nFor a full list of devices and code samples check out the ever growing list of [supported gateways and sensors](SupportedDevices.md).\n"
  }
]