@microsoft/terraform-cdk-constructs 0.0.3-pre.6 → 0.0.3-pre.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +909 -306
- package/API.md +2488 -255
- package/README.md +112 -18
- package/docs/images/ide-documentation.png +0 -0
- package/lib/azure-actiongroup/lib/actiongroup.d.ts +39 -0
- package/lib/azure-actiongroup/lib/actiongroup.js +40 -1
- package/lib/azure-applicationgateway/lib/gateway.d.ts +76 -0
- package/lib/azure-applicationgateway/lib/gateway.js +78 -2
- package/lib/azure-applicationinsights/lib/appinsights.d.ts +50 -0
- package/lib/azure-applicationinsights/lib/appinsights.js +52 -3
- package/lib/azure-containerregistry/lib/registry.d.ts +29 -0
- package/lib/azure-containerregistry/lib/registry.js +31 -2
- package/lib/azure-datalake/lib/datalake.d.ts +50 -0
- package/lib/azure-datalake/lib/datalake.js +51 -1
- package/lib/azure-datalake/lib/filesystem.d.ts +51 -0
- package/lib/azure-datalake/lib/filesystem.js +52 -1
- package/lib/azure-datalake/lib/path.d.ts +37 -0
- package/lib/azure-datalake/lib/path.js +38 -1
- package/lib/azure-eventhub/lib/authorization.d.ts +30 -0
- package/lib/azure-eventhub/lib/authorization.js +32 -2
- package/lib/azure-eventhub/lib/cluster.d.ts +29 -0
- package/lib/azure-eventhub/lib/cluster.js +31 -2
- package/lib/azure-eventhub/lib/consumer.d.ts +28 -0
- package/lib/azure-eventhub/lib/consumer.js +30 -2
- package/lib/azure-eventhub/lib/instance.d.ts +118 -0
- package/lib/azure-eventhub/lib/instance.js +120 -2
- package/lib/azure-eventhub/lib/kusto-connection.d.ts +41 -0
- package/lib/azure-eventhub/lib/kusto-connection.js +43 -2
- package/lib/azure-eventhub/lib/namespace.d.ts +74 -0
- package/lib/azure-eventhub/lib/namespace.js +76 -3
- package/lib/azure-functionapp/lib/functionapplinux.js +1 -1
- package/lib/azure-keyvault/lib/certificate.d.ts +96 -2
- package/lib/azure-keyvault/lib/certificate.js +55 -3
- package/lib/azure-keyvault/lib/key.d.ts +36 -0
- package/lib/azure-keyvault/lib/key.js +38 -2
- package/lib/azure-keyvault/lib/policy.d.ts +30 -0
- package/lib/azure-keyvault/lib/policy.js +32 -2
- package/lib/azure-keyvault/lib/secret.d.ts +31 -0
- package/lib/azure-keyvault/lib/secret.js +33 -2
- package/lib/azure-keyvault/lib/vault.d.ts +188 -0
- package/lib/azure-keyvault/lib/vault.js +191 -7
- package/lib/azure-kubernetes/lib/cluster.d.ts +25 -4
- package/lib/azure-kubernetes/lib/cluster.js +27 -6
- package/lib/azure-kusto/lib/cluster.d.ts +53 -0
- package/lib/azure-kusto/lib/cluster.js +55 -2
- package/lib/azure-kusto/lib/compute-specification.js +1 -1
- package/lib/azure-kusto/lib/database.d.ts +103 -0
- package/lib/azure-kusto/lib/database.js +105 -2
- package/lib/azure-loganalytics/lib/workspace.d.ts +47 -0
- package/lib/azure-loganalytics/lib/workspace.js +49 -2
- package/lib/azure-metricalert/lib/metric-alert.d.ts +43 -4
- package/lib/azure-metricalert/lib/metric-alert.js +45 -6
- package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +1 -1
- package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +92 -0
- package/lib/azure-networksecuritygroup/lib/securitygroup.js +95 -5
- package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +35 -4
- package/lib/azure-queryrulealert/lib/query-rule-alert.js +37 -6
- package/lib/azure-resourcegroup/lib/resource-group.d.ts +28 -0
- package/lib/azure-resourcegroup/lib/resource-group.js +30 -2
- package/lib/azure-storageaccount/lib/account.d.ts +75 -48
- package/lib/azure-storageaccount/lib/account.js +77 -50
- package/lib/azure-storageaccount/lib/container.d.ts +94 -12
- package/lib/azure-storageaccount/lib/container.js +97 -15
- package/lib/azure-storageaccount/lib/fileshare.d.ts +36 -0
- package/lib/azure-storageaccount/lib/fileshare.js +39 -3
- package/lib/azure-storageaccount/lib/queue.d.ts +29 -0
- package/lib/azure-storageaccount/lib/queue.js +31 -2
- package/lib/azure-storageaccount/lib/table.d.ts +32 -0
- package/lib/azure-storageaccount/lib/table.js +34 -2
- package/lib/azure-virtualmachine/lib/image-references.js +2 -2
- package/lib/azure-virtualmachine/lib/vm.d.ts +84 -8
- package/lib/azure-virtualmachine/lib/vm.js +87 -11
- package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +98 -8
- package/lib/azure-virtualmachinescaleset/lib/cluster.js +101 -11
- package/lib/azure-virtualnetwork/lib/network.d.ts +61 -0
- package/lib/azure-virtualnetwork/lib/network.js +63 -3
- package/lib/azure-virtualnetwork/lib/peering.d.ts +39 -0
- package/lib/azure-virtualnetwork/lib/peering.js +41 -2
- package/lib/core-azure/lib/diagsettings.d.ts +37 -0
- package/lib/core-azure/lib/diagsettings.js +39 -2
- package/lib/core-azure/lib/rbac.d.ts +22 -4
- package/lib/core-azure/lib/rbac.js +24 -6
- package/lib/core-azure/lib/resource.d.ts +45 -0
- package/lib/core-azure/lib/resource.js +48 -4
- package/package.json +1 -1
|
@@ -13,11 +13,47 @@ const network_1 = require("../../azure-virtualnetwork/lib/network");
|
|
|
13
13
|
const lib_1 = require("../../core-azure/lib");
|
|
14
14
|
class WindowsVM extends lib_1.AzureResource {
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* Represents a Windows-based Virtual Machine (VM) within Microsoft Azure.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* This class is designed to provision and manage a Windows VM in Azure, allowing for detailed configuration including
|
|
19
|
+
* the VM's size, the operating system image, network settings, and administrative credentials. It supports customization
|
|
20
|
+
* of the OS disk, networking setup, and optional features like custom data scripts and boot diagnostics.
|
|
21
|
+
*
|
|
22
|
+
* @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
|
|
23
|
+
* @param id - The unique identifier for this instance of the Windows VM, used within the scope for reference.
|
|
24
|
+
* @param props - Configuration properties for the Windows Virtual Machine, derived from the WindowsVMProps interface. These include:
|
|
25
|
+
* - `location`: The geographic location where the VM will be hosted (e.g., "eastus").
|
|
26
|
+
* - `name`: The name of the VM, which must be unique within the resource group.
|
|
27
|
+
* - `resourceGroup`: The ResourceGroup within which the VM will be created.
|
|
28
|
+
* - `size`: The size specification of the VM (e.g., "Standard_B2s").
|
|
29
|
+
* - `adminUsername`: The administrator username for accessing the VM.
|
|
30
|
+
* - `adminPassword`: The administrator password for accessing the VM.
|
|
31
|
+
* - `sourceImageReference`: A reference to the specific Windows image to be used for the VM.
|
|
32
|
+
* - `sourceImageId`: The identifier for a custom image to use for the VM.
|
|
33
|
+
* - `tags`: Key-value pairs for resource tagging.
|
|
34
|
+
* - `osDisk`: Configuration for the VM's operating system disk.
|
|
35
|
+
* - `subnet`: Specifies the subnet within which the VM will be placed.
|
|
36
|
+
* - `publicIPAllocationMethod`: The method used to allocate a public IP address to the VM.
|
|
37
|
+
* - `customData`: Scripts or commands passed to the VM at startup.
|
|
38
|
+
* - `bootstrapCustomData`: Custom data used to trigger the Azure Custom Script Extension for VM setup tasks.
|
|
39
|
+
* - `bootDiagnosticsStorageURI`: URI for storage where VM boot diagnostics are collected.
|
|
40
|
+
*
|
|
41
|
+
* Example usage:
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const vm = new WindowsVM(this, 'MyWindowsVM', {
|
|
44
|
+
* resourceGroup: myResourceGroup,
|
|
45
|
+
* name: 'myVM',
|
|
46
|
+
* size: 'Standard_DS1_v2',
|
|
47
|
+
* adminUsername: 'adminuser',
|
|
48
|
+
* adminPassword: 'securepassword123',
|
|
49
|
+
* sourceImageReference: { publisher: 'MicrosoftWindowsServer', offer: 'WindowsServer', sku: '2019-Datacenter', version: 'latest' },
|
|
50
|
+
* osDisk: { caching: 'ReadWrite', storageAccountType: 'Standard_LRS' },
|
|
51
|
+
* subnet: mySubnet,
|
|
52
|
+
* tags: { environment: 'production' }
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
55
|
+
* This class initializes a Windows VM with the specified configurations, handling details like network setup, OS installation,
|
|
56
|
+
* and security settings, thus providing a robust infrastructure for hosting applications on Windows Server environments.
|
|
21
57
|
*/
|
|
22
58
|
constructor(scope, id, props) {
|
|
23
59
|
super(scope, id);
|
|
@@ -101,14 +137,54 @@ class WindowsVM extends lib_1.AzureResource {
|
|
|
101
137
|
}
|
|
102
138
|
exports.WindowsVM = WindowsVM;
|
|
103
139
|
_a = JSII_RTTI_SYMBOL_1;
|
|
104
|
-
WindowsVM[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualmachine.WindowsVM", version: "0.0.3-pre.
|
|
140
|
+
WindowsVM[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualmachine.WindowsVM", version: "0.0.3-pre.7" };
|
|
105
141
|
class LinuxVM extends lib_1.AzureResource {
|
|
106
142
|
/**
|
|
107
|
-
*
|
|
143
|
+
* Represents a Linux-based Virtual Machine (VM) within Microsoft Azure.
|
|
144
|
+
*
|
|
145
|
+
* This class is designed to provision and manage a Linux VM in Azure, facilitating detailed configuration including
|
|
146
|
+
* VM size, the operating system image, network settings, and administrative credentials. It supports custom data scripts,
|
|
147
|
+
* SSH configurations, and optional features like managed identity and boot diagnostics.
|
|
148
|
+
*
|
|
149
|
+
* @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
|
|
150
|
+
* @param id - The unique identifier for this instance of the Linux VM, used within the scope for reference.
|
|
151
|
+
* @param props - Configuration properties for the Linux Virtual Machine, derived from the LinuxVMProps interface. These include:
|
|
152
|
+
* - `location`: The geographic location where the VM will be hosted (e.g., "eastus").
|
|
153
|
+
* - `name`: The name of the VM, which must be unique within the resource group.
|
|
154
|
+
* - `resourceGroup`: The ResourceGroup within which the VM will be created.
|
|
155
|
+
* - `size`: The size specification of the VM (e.g., "Standard_B2s").
|
|
156
|
+
* - `availabilitySetId`: The ID of the availability set in which to include the VM.
|
|
157
|
+
* - `userData`: Custom data scripts to pass to the VM upon creation.
|
|
158
|
+
* - `adminSshKey`: SSH keys for secure access to the VM.
|
|
159
|
+
* - `zone`: The availability zone for deploying the VM.
|
|
160
|
+
* - `identity`: Managed identity settings for accessing other Azure services.
|
|
161
|
+
* - `additionalCapabilities`: Special capabilities like Ultra Disk support.
|
|
162
|
+
* - `sourceImageReference`: A reference to the specific Linux image to be used for the VM.
|
|
163
|
+
* - `sourceImageId`: The identifier for a custom image to use for the VM.
|
|
164
|
+
* - `tags`: Key-value pairs for resource tagging.
|
|
165
|
+
* - `osDisk`: Configuration for the VM's operating system disk.
|
|
166
|
+
* - `subnet`: Specifies the subnet within which the VM will be placed.
|
|
167
|
+
* - `publicIPAllocationMethod`: Method used to allocate a public IP address.
|
|
168
|
+
* - `customData`: Additional scripts or commands passed to the VM at startup.
|
|
169
|
+
* - `enableSshAzureADLogin`: Option to enable Azure AD login for SSH.
|
|
170
|
+
* - `bootDiagnosticsStorageURI`: URI for storage where VM boot diagnostics are collected.
|
|
108
171
|
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
172
|
+
* Example usage:
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const linuxVM = new LinuxVM(this, 'MyLinuxVM', {
|
|
175
|
+
* resourceGroup: myResourceGroup,
|
|
176
|
+
* name: 'myVM',
|
|
177
|
+
* size: 'Standard_DS1_v2',
|
|
178
|
+
* adminUsername: 'adminuser',
|
|
179
|
+
* adminSshKey: [{ publicKey: 'ssh-rsa AAAAB...' }],
|
|
180
|
+
* sourceImageReference: { publisher: 'Canonical', offer: 'UbuntuServer', sku: '18.04-LTS', version: 'latest' },
|
|
181
|
+
* osDisk: { caching: 'ReadWrite', storageAccountType: 'Standard_LRS' },
|
|
182
|
+
* subnet: mySubnet,
|
|
183
|
+
* tags: { environment: 'production' }
|
|
184
|
+
* });
|
|
185
|
+
* ```
|
|
186
|
+
* This class initializes a Linux VM with the specified configurations, handling details like network setup, OS installation,
|
|
187
|
+
* and security settings, thus providing a robust infrastructure for hosting applications on Linux environments.
|
|
112
188
|
*/
|
|
113
189
|
constructor(scope, id, props) {
|
|
114
190
|
super(scope, id);
|
|
@@ -203,5 +279,5 @@ class LinuxVM extends lib_1.AzureResource {
|
|
|
203
279
|
}
|
|
204
280
|
exports.LinuxVM = LinuxVM;
|
|
205
281
|
_b = JSII_RTTI_SYMBOL_1;
|
|
206
|
-
LinuxVM[_b] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualmachine.LinuxVM", version: "0.0.3-pre.
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtdmlydHVhbG1hY2hpbmUvbGliL3ZtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkZBUTJEO0FBQzNELHFGQUFpRjtBQUNqRixxRUFBaUU7QUFHakUscUdBQWdHO0FBQ2hHLGlHQUk2RDtBQUk3RCx5REFBNEQ7QUFDNUQsb0VBQWlFO0FBQ2pFLDhDQUFxRDtBQXFGckQsTUFBYSxTQUFVLFNBQVEsbUJBQWE7SUFPMUM7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQjtRQUM3RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUV6QyxrREFBa0Q7UUFDbEQsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLFFBQVE7WUFDcEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksY0FBYztZQUNsQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSTtnQkFDdEIsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLGtCQUFrQixFQUFFLGNBQWM7YUFDbkM7WUFDRCxvQkFBb0IsRUFDbEIsS0FBSyxDQUFDLG9CQUFvQjtnQkFDMUIseUNBQXNCLENBQUMsK0JBQStCO1lBQ3hELE1BQU0sRUFDSixLQUFLLENBQUMsTUFBTTtnQkFDWixJQUFJLGlCQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtvQkFDeEIsYUFBYSxFQUFFLEtBQUssQ0FB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SUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLFNBQVMsRUFBRSxpQ0FBaUM7Z0JBQzVDLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLGtCQUFrQixFQUFFLEtBQUs7Z0JBQ3pCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0FBbkhILDBCQW9IQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIExpbnV4VmlydHVhbE1hY2hpbmUsXG4gIExpbnV4VmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZSxcbiAgTGludXhWaXJ0dWFsTWFjaGluZU9zRGlzayxcbiAgTGludXhWaXJ0dWFsTWFjaGluZUFkbWluU3NoS2V5LFxuICBMaW51eFZpcnR1YWxNYWNoaW5lSWRlbnRpdHksXG4gIExpbnV4VmlydHVhbE1hY2hpbmVTZWNyZXQsXG4gIExpbnV4VmlydHVhbE1hY2hpbmVBZGRpdGlvbmFsQ2FwYWJpbGl0aWVzLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2xpbnV4LXZpcnR1YWwtbWFjaGluZVwiO1xuaW1wb3J0IHsgTmV0d29ya0ludGVyZmFjZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvbmV0d29yay1pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFB1YmxpY0lwIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9wdWJsaWMtaXBcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBTdWJuZXQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3N1Ym5ldFwiO1xuaW1wb3J0IHsgVmlydHVhbE1hY2hpbmVFeHRlbnNpb24gfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3ZpcnR1YWwtbWFjaGluZS1leHRlbnNpb25cIjtcbmltcG9ydCB7XG4gIFdpbmRvd3NWaXJ0dWFsTWFjaGluZSxcbiAgV2luZG93c1ZpcnR1YWxNYWNoaW5lT3NEaXNrLFxuICBXaW5kb3dzVmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZSxcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi93aW5kb3dzLXZpcnR1YWwtbWFjaGluZVwiO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBXaW5kb3dzSW1hZ2VSZWZlcmVuY2VzIH0gZnJvbSBcIi4vaW1hZ2UtcmVmZXJlbmNlc1wiO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gXCIuLi8uLi9henVyZS12aXJ0dWFsbmV0d29yay9saWIvbmV0d29ya1wiO1xuaW1wb3J0IHsgQXp1cmVSZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpbmRvd3NWTVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBenVyZSBsb2NhdGlvbiB3aGVyZSB0aGUgdmlydHVhbCBtYWNoaW5lIHNob3VsZCBiZSBjcmVhdGVkLlxuICAgKiBAZGVmYXVsdCBcImVhc3R1c1wiXG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBuYW1lIGRlcml2ZWQgZnJvbSB0aGUgY29uc3RydWN0IHBhdGguXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgZ3JvdXAgaW4gd2hpY2ggdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgdmlydHVhbCBtYWNoaW5lLlxuICAgKiBAZGVmYXVsdCBcIlN0YW5kYXJkX0Iyc1wiXG4gICAqL1xuICByZWFkb25seSBzaXplPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRtaW4gdXNlcm5hbWUgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBwYXNzd29yZCBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBpbWFnZSByZWZlcmVuY2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyBXaW5kb3dzU2VydmVyMjAyMkRhdGFjZW50ZXJDb3JlLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlSW1hZ2VSZWZlcmVuY2U/OiBXaW5kb3dzVmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBzb3VyY2UgaW1hZ2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJbWFnZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIHRvIGFwcGx5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIE9TIGRpc2sgY29uZmlndXJhdGlvbiBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgLSBVc2VzIGEgZGlzayB3aXRoIGNhY2hpbmcgc2V0IHRvIFwiUmVhZFdyaXRlXCIgYW5kIHN0b3JhZ2UgYWNjb3VudCB0eXBlIFwiU3RhbmRhcmRfTFJTXCIuXG4gICAqL1xuICByZWFkb25seSBvc0Rpc2s/OiBXaW5kb3dzVmlydHVhbE1hY2hpbmVPc0Rpc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgaW4gd2hpY2ggdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGJlIHBsYWNlZC5cbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBkZWZhdWx0IHN1Ym5ldCBmcm9tIGEgbmV3IHZpcnR1YWwgbmV0d29yay5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldD86IFN1Ym5ldDtcblxuICAvKipcbiAgICogVGhlIGFsbG9jYXRpb24gbWV0aG9kIGZvciB0aGUgcHVibGljIElQLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSB0byBwYXNzIHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUgdXBvbiBjcmVhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbURhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRhIHRvIGJvb3RzdHJhcCB0aGUgdmlydHVhbCBtYWNoaW5lLiBBdXRvbWF0aWNhbGx5IHRyaWdnZXJzIEF6dXJlIEN1c3RvbSBTY3JpcHQgZXh0ZW5zaW9uIHRvIGRlcGxveSBjb2RlIGluIGN1c3RvbSBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgYm9vc3RyYXBDdXN0b21EYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb290ZGlhZ25vc3RpY3Mgc2V0dGluZ3MgZm9yIHRoZSBWTS5cbiAgICovXG4gIHJlYWRvbmx5IGJvb3REaWFnbm9zdGljc1N0b3JhZ2VVUkk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dzVk0gZXh0ZW5kcyBBenVyZVJlc291cmNlIHtcbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBXaW5kb3dzVk1Qcm9wcztcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljSXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEF6dXJlV2luZG93c1ZpcnR1YWxNYWNoaW5lIGNsYXNzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdGhpcyBjb25zdHJ1Y3QgaXMgZGVmaW5lZC5cbiAgICogQHBhcmFtIGlkIC0gVGhlIElEIG9mIHRoaXMgY29uc3RydWN0LlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcHJvcGVydGllcyBmb3IgZGVmaW5pbmcgYSBXaW5kb3dzIFZpcnR1YWwgTWFjaGluZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXaW5kb3dzVk1Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5yZXNvdXJjZUdyb3VwID0gcHJvcHMucmVzb3VyY2VHcm91cDtcblxuICAgIC8vIERlZmF1bHQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBuYW1lOiBwcm9wcy5uYW1lIHx8IHRoaXMubm9kZS5wYXRoLnNwbGl0KFwiL1wiKVswXSxcbiAgICAgIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbiB8fCBcImVhc3R1c1wiLFxuICAgICAgc2l6ZTogcHJvcHMuc2l6ZSB8fCBcIlN0YW5kYXJkX0Iyc1wiLFxuICAgICAgb3NEaXNrOiBwcm9wcy5vc0Rpc2sgfHwge1xuICAgICAgICBjYWNoaW5nOiBcIlJlYWRXcml0ZVwiLFxuICAgICAgICBzdG9yYWdlQWNjb3VudFR5cGU6IFwiU3RhbmRhcmRfTFJTXCIsXG4gICAgICB9LFxuICAgICAgc291cmNlSW1hZ2VSZWZlcmVuY2U6XG4gICAgICAgIHByb3BzLnNvdXJjZUltYWdlUmVmZXJlbmNlIHx8XG4gICAgICAgIFdpbmRvd3NJbWFnZVJlZmVyZW5jZXMud2luZG93c1NlcnZlcjIwMjJEYXRhY2VudGVyQ29yZSxcbiAgICAgIHN1Ym5ldDpcbiAgICAgICAgcHJvcHMuc3VibmV0IHx8XG4gICAgICAgIG5ldyBOZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAgICAgcmVzb3VyY2VHcm91cDogcHJvcHMucmVzb3VyY2VHcm91cCxcbiAgICAgICAgfSkuc3VibmV0cy5kZWZhdWx0LFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgUHVibGljIElQIGlmIHNwZWNpZmllZC5cbiAgICBsZXQgcHVibGljSXBJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5wdWJsaWNJUEFsbG9jYXRpb25NZXRob2QpIHtcbiAgICAgIGNvbnN0IGF6dXJlcm1QdWJsaWNJcCA9IG5ldyBQdWJsaWNJcCh0aGlzLCBcInB1YmxpYy1pcFwiLCB7XG4gICAgICAgIG5hbWU6IGBwaXAtJHtkZWZhdWx0cy5uYW1lfWAsXG4gICAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICAgIGxvY2F0aW9uOiBkZWZhdWx0cy5sb2NhdGlvbixcbiAgICAgICAgYWxsb2NhdGlvbk1ldGhvZDogcHJvcHMucHVibGljSVBBbGxvY2F0aW9uTWV0aG9kLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgfSk7XG5cbiAgICAgIHB1YmxpY0lwSWQgPSBhenVyZXJtUHVibGljSXAuaWQ7XG4gICAgICB0aGlzLnB1YmxpY0lwID0gYXp1cmVybVB1YmxpY0lwLmlwQWRkcmVzcztcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIE5ldHdvcmsgSW50ZXJmYWNlLlxuICAgIGNvbnN0IGF6dXJlcm1OZXR3b3JrSW50ZXJmYWNlID0gbmV3IE5ldHdvcmtJbnRlcmZhY2UodGhpcywgXCJuaWNcIiwge1xuICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICBuYW1lOiBgbmljLSR7ZGVmYXVsdHMubmFtZX1gLFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIGlwQ29uZmlndXJhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJpbnRlcm5hbFwiLFxuICAgICAgICAgIHN1Ym5ldElkOiBkZWZhdWx0cy5zdWJuZXQuaWQsXG4gICAgICAgICAgcHJpdmF0ZUlwQWRkcmVzc0FsbG9jYXRpb246IFwiRHluYW1pY1wiLFxuICAgICAgICAgIHB1YmxpY0lwQWRkcmVzc0lkOiBwdWJsaWNJcElkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgfSk7XG5cbiAgICAvLyBCYXNlNjQgZW5jb2RlIGN1c3RvbSBkYXRhIGlmIHByb3ZpZGVkLlxuICAgIGNvbnN0IGN1c3RvbURhdGEgPSBwcm9wcy5jdXN0b21EYXRhIHx8IHByb3BzLmJvb3N0cmFwQ3VzdG9tRGF0YTtcbiAgICBjb25zdCBiYXNlNjRDdXN0b21EYXRhID0gY3VzdG9tRGF0YVxuICAgICAgPyBCdWZmZXIuZnJvbShjdXN0b21EYXRhKS50b1N0cmluZyhcImJhc2U2NFwiKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGUgdGhlIFdpbmRvd3MgVmlydHVhbCBNYWNoaW5lLlxuICAgIGNvbnN0IGF6dXJlcm1XaW5kb3dzVmlydHVhbE1hY2hpbmUgPSBuZXcgV2luZG93c1ZpcnR1YWxNYWNoaW5lKHRoaXMsIFwidm1cIiwge1xuICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcHJvcHMucmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgYWRtaW5Vc2VybmFtZTogcHJvcHMuYWRtaW5Vc2VybmFtZSxcbiAgICAgIGFkbWluUGFzc3dvcmQ6IHByb3BzLmFkbWluUGFzc3dvcmQsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgbmV0d29ya0ludGVyZmFjZUlkczogW2F6dXJlcm1OZXR3b3JrSW50ZXJmYWNlLmlkXSxcbiAgICAgIHNvdXJjZUltYWdlSWQ6IHByb3BzLnNvdXJjZUltYWdlSWQsXG4gICAgICBjdXN0b21EYXRhOiBiYXNlNjRDdXN0b21EYXRhLFxuICAgICAgYm9vdERpYWdub3N0aWNzOiB7IHN0b3JhZ2VBY2NvdW50VXJpOiBwcm9wcy5ib290RGlhZ25vc3RpY3NTdG9yYWdlVVJJIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmlkID0gYXp1cmVybVdpbmRvd3NWaXJ0dWFsTWFjaGluZS5pZDtcbiAgICB0aGlzLm5hbWUgPSBhenVyZXJtV2luZG93c1ZpcnR1YWxNYWNoaW5lLm5hbWU7XG5cbiAgICAvLyBCb290c3RyYXAgVk0gd2l0aCBjdXN0b20gc2NyaXB0IGV4dGVuc2lvbiBpZiBib290c3RyYXAgY3VzdG9tIGRhdGEgaXMgcHJvdmlkZWQuXG4gICAgaWYgKHByb3BzLmJvb3N0cmFwQ3VzdG9tRGF0YSkge1xuICAgICAgbmV3IFZpcnR1YWxNYWNoaW5lRXh0ZW5zaW9uKHRoaXMsIFwic2NyaXB0LWV4dFwiLCB7XG4gICAgICAgIG5hbWU6IGAke3RoaXMubmFtZX0tc2NyaXB0LWV4dGAsXG4gICAgICAgIHZpcnR1YWxNYWNoaW5lSWQ6IHRoaXMuaWQsXG4gICAgICAgIHB1Ymxpc2hlcjogXCJNaWNyb3NvZnQuQ29tcHV0ZVwiLFxuICAgICAgICB0eXBlOiBcIkN1c3RvbVNjcmlwdEV4dGVuc2lvblwiLFxuICAgICAgICB0eXBlSGFuZGxlclZlcnNpb246IFwiMS4xMFwiLFxuICAgICAgICBwcm90ZWN0ZWRTZXR0aW5nczpcbiAgICAgICAgICAne1wiY29tbWFuZFRvRXhlY3V0ZVwiOiBcInJlbmFtZSAgQzpcXFxcXFxcXEF6dXJlRGF0YVxcXFxcXFxcQ3VzdG9tRGF0YS5iaW4gIHBvc3RkZXBsb3kucHMxICYgcG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IFVucmVzdHJpY3RlZCAtRmlsZSBDOlxcXFxcXFxcQXp1cmVEYXRhXFxcXFxcXFxwb3N0ZGVwbG95LnBzMVwifScsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaW51eFZNUHJvcHMge1xuICAvKipcbiAgICogVGhlIEF6dXJlIGxvY2F0aW9uIHdoZXJlIHRoZSB2aXJ0dWFsIG1hY2hpbmUgc2hvdWxkIGJlIGNyZWF0ZWQuXG4gICAqIEBkZWZhdWx0IFwiZWFzdHVzXCJcbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdmlydHVhbCBtYWNoaW5lLlxuICAgKiBAZGVmYXVsdCAtIFVzZXMgdGhlIG5hbWUgZGVyaXZlZCBmcm9tIHRoZSBjb25zdHJ1Y3QgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBncm91cCBpbiB3aGljaCB0aGUgdmlydHVhbCBtYWNoaW5lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqIEBkZWZhdWx0IFwiU3RhbmRhcmRfQjJzXCJcbiAgICovXG4gIHJlYWRvbmx5IHNpemU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgYXZhaWxhYmlsaXR5IHNldCBpbiB3aGljaCB0aGUgVk0gc2hvdWxkIGJlIHBsYWNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVNldElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSB0byBwYXNzIHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUgdXBvbiBjcmVhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJEYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBTU0gga2V5cyBmb3IgdGhlIGFkbWluIHVzZXIuXG4gICAqL1xuICByZWFkb25seSBhZG1pblNzaEtleT86IExpbnV4VmlydHVhbE1hY2hpbmVBZG1pblNzaEtleVtdIHwgY2RrdGYuSVJlc29sdmFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhdmFpbGFiaWxpdHkgem9uZSBpbiB3aGljaCB0aGUgVk0gc2hvdWxkIGJlIHBsYWNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHpvbmU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hbmFnZWQgaWRlbnRpdHkgc2V0dGluZ3MgZm9yIHRoZSBWTS5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5PzogTGludXhWaXJ0dWFsTWFjaGluZUlkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGNhcGFiaWxpdGllcyBsaWtlIFVsdHJhIERpc2sgY29tcGF0aWJpbGl0eS5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxDYXBhYmlsaXRpZXM/OiBMaW51eFZpcnR1YWxNYWNoaW5lQWRkaXRpb25hbENhcGFiaWxpdGllcztcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2Ygc2VjcmV0cyB0byBiZSBwYXNzZWQgdG8gdGhlIFZNLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0PzogTGludXhWaXJ0dWFsTWFjaGluZVNlY3JldFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRtaW4gdXNlcm5hbWUgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRtaW4gcGFzc3dvcmQgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBhZG1pblBhc3N3b3JkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc291cmNlIGltYWdlIHJlZmVyZW5jZSBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgLSBVc2VzIFdpbmRvd3NTZXJ2ZXIyMDIyRGF0YWNlbnRlckNvcmUuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJbWFnZVJlZmVyZW5jZT86IExpbnV4VmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBzb3VyY2UgaW1hZ2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJbWFnZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIHRvIGFwcGx5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIE9TIGRpc2sgY29uZmlndXJhdGlvbiBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgLSBVc2VzIGEgZGlzayB3aXRoIGNhY2hpbmcgc2V0IHRvIFwiUmVhZFdyaXRlXCIgYW5kIHN0b3JhZ2UgYWNjb3VudCB0eXBlIFwiU3RhbmRhcmRfTFJTXCIuXG4gICAqL1xuICByZWFkb25seSBvc0Rpc2s/OiBMaW51eFZpcnR1YWxNYWNoaW5lT3NEaXNrO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0IGluIHdoaWNoIHRoZSB2aXJ0dWFsIG1hY2hpbmUgd2lsbCBiZSBwbGFjZWQuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyB0aGUgZGVmYXVsdCBzdWJuZXQgZnJvbSBhIG5ldyB2aXJ0dWFsIG5ldHdvcmsuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXQ/OiBTdWJuZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGxvY2F0aW9uIG1ldGhvZCBmb3IgdGhlIHB1YmxpYyBJUC5cbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZD86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIGRhdGEgdG8gcGFzcyB0byB0aGUgdmlydHVhbCBtYWNoaW5lIHVwb24gY3JlYXRpb24uXG4gICAqL1xuICByZWFkb25seSBjdXN0b21EYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgU1NIIEF6dXJlIEFEIExvZ2luLCByZXF1aXJlZCBtYW5hZ2VkIGlkZW50aXR5IHRvIGJlIHNldC5cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVNzaEF6dXJlQURMb2dpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJvb3RkaWFnbm9zdGljcyBzZXR0aW5ncyBmb3IgdGhlIFZNLlxuICAgKi9cbiAgcmVhZG9ubHkgYm9vdERpYWdub3N0aWNzU3RvcmFnZVVSST86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIExpbnV4Vk0gZXh0ZW5kcyBBenVyZVJlc291cmNlIHtcbiAgLy8gUHJvcGVydGllcyBvZiB0aGUgQXp1cmVMaW51eFZpcnR1YWxNYWNoaW5lIGNsYXNzXG4gIHJlYWRvbmx5IHByb3BzOiBMaW51eFZNUHJvcHM7XG4gIHB1YmxpYyByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHB1YmxpY0lwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBBenVyZUxpbnV4VmlydHVhbE1hY2hpbmUgY2xhc3MuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0aGlzIGNvbnN0cnVjdCBpcyBkZWZpbmVkLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhpcyBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIExpbnV4IFZpcnR1YWwgTWFjaGluZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMaW51eFZNUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gQXNzaWduaW5nIHRoZSBwcm9wZXJ0aWVzXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMucmVzb3VyY2VHcm91cCA9IHByb3BzLnJlc291cmNlR3JvdXA7XG5cbiAgICAvLyBFeHRyYWN0aW5nIHRoZSBuYW1lIGZyb20gdGhlIG5vZGUgcGF0aFxuICAgIGNvbnN0IHBhdGhOYW1lID0gdGhpcy5ub2RlLnBhdGguc3BsaXQoXCIvXCIpWzBdO1xuXG4gICAgLy8gU2V0dGluZyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgdmlydHVhbCBtYWNoaW5lXG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBuYW1lOiBwcm9wcy5uYW1lIHx8IHBhdGhOYW1lLFxuICAgICAgYWRtaW5Vc2VybmFtZTogcHJvcHMuYWRtaW5Vc2VybmFtZSB8fCBgYWRtaW4ke3BhdGhOYW1lfWAsXG4gICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24gfHwgXCJlYXN0dXNcIixcbiAgICAgIHNpemU6IHByb3BzLnNpemUgfHwgXCJTdGFuZGFyZF9CMnNcIixcbiAgICAgIG9zRGlzazogcHJvcHMub3NEaXNrIHx8IHtcbiAgICAgICAgY2FjaGluZzogXCJSZWFkV3JpdGVcIixcbiAgICAgICAgc3RvcmFnZUFjY291bnRUeXBlOiBcIlN0YW5kYXJkX0xSU1wiLFxuICAgICAgfSxcbiAgICAgIHNvdXJjZUltYWdlUmVmZXJlbmNlOlxuICAgICAgICBwcm9wcy5zb3VyY2VJbWFnZVJlZmVyZW5jZSB8fFxuICAgICAgICBXaW5kb3dzSW1hZ2VSZWZlcmVuY2VzLndpbmRvd3NTZXJ2ZXIyMDIyRGF0YWNlbnRlckNvcmUsXG4gICAgICBzdWJuZXQ6XG4gICAgICAgIHByb3BzLnN1Ym5ldCB8fFxuICAgICAgICBuZXcgTmV0d29yayh0aGlzLCBcInZuZXRcIiwge1xuICAgICAgICAgIHJlc291cmNlR3JvdXA6IHByb3BzLnJlc291cmNlR3JvdXAsXG4gICAgICAgIH0pLnN1Ym5ldHMuZGVmYXVsdCxcbiAgICB9O1xuXG4gICAgLy8gQ3JlYXRlIFB1YmxpYyBJUCBpZiBzcGVjaWZpZWRcbiAgICBsZXQgcHVibGljSXBJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5wdWJsaWNJUEFsbG9jYXRpb25NZXRob2QpIHtcbiAgICAgIGNvbnN0IGF6dXJlcm1QdWJsaWNJcCA9IG5ldyBQdWJsaWNJcCh0aGlzLCBcInB1YmxpYy1pcFwiLCB7XG4gICAgICAgIG5hbWU6IGBwaXAtJHtkZWZhdWx0cy5uYW1lfWAsXG4gICAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICAgIGxvY2F0aW9uOiBkZWZhdWx0cy5sb2NhdGlvbixcbiAgICAgICAgYWxsb2NhdGlvbk1ldGhvZDogcHJvcHMucHVibGljSVBBbGxvY2F0aW9uTWV0aG9kLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgfSk7XG5cbiAgICAgIHB1YmxpY0lwSWQgPSBhenVyZXJtUHVibGljSXAuaWQ7XG4gICAgICB0aGlzLnB1YmxpY0lwID0gYXp1cmVybVB1YmxpY0lwLmlwQWRkcmVzcztcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIE5ldHdvcmsgSW50ZXJmYWNlXG4gICAgY29uc3QgYXp1cmVybU5ldHdvcmtJbnRlcmZhY2UgPSBuZXcgTmV0d29ya0ludGVyZmFjZSh0aGlzLCBcIm5pY1wiLCB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIG5hbWU6IGBuaWMtJHtkZWZhdWx0cy5uYW1lfWAsXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcHJvcHMucmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgaXBDb25maWd1cmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImludGVybmFsXCIsXG4gICAgICAgICAgc3VibmV0SWQ6IGRlZmF1bHRzLnN1Ym5ldC5pZCxcbiAgICAgICAgICBwcml2YXRlSXBBZGRyZXNzQWxsb2NhdGlvbjogXCJEeW5hbWljXCIsXG4gICAgICAgICAgcHVibGljSXBBZGRyZXNzSWQ6IHB1YmxpY0lwSWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSB0aGUgTGludXggVmlydHVhbCBNYWNoaW5lXG4gICAgY29uc3QgYXp1cmVybUxpbnV4VmlydHVhbE1hY2hpbmUgPSBuZXcgTGludXhWaXJ0dWFsTWFjaGluZSh0aGlzLCBcInZtXCIsIHtcbiAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIGFkbWluUGFzc3dvcmQ6IHByb3BzLmFkbWluUGFzc3dvcmQsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgbmV0d29ya0ludGVyZmFjZUlkczogW2F6dXJlcm1OZXR3b3JrSW50ZXJmYWNlLmlkXSxcbiAgICAgIHNvdXJjZUltYWdlSWQ6IHByb3BzLnNvdXJjZUltYWdlSWQsXG4gICAgICBjdXN0b21EYXRhOiBwcm9wcy5jdXN0b21EYXRhXG4gICAgICAgID8gQnVmZmVyLmZyb20ocHJvcHMuY3VzdG9tRGF0YSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICB1c2VyRGF0YTogcHJvcHMudXNlckRhdGFcbiAgICAgICAgPyBCdWZmZXIuZnJvbShwcm9wcy51c2VyRGF0YSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBhdmFpbGFiaWxpdHlTZXRJZDogcHJvcHMuYXZhaWxhYmlsaXR5U2V0SWQsXG4gICAgICBhZG1pblNzaEtleTogcHJvcHMuYWRtaW5Tc2hLZXksXG4gICAgICBib290RGlhZ25vc3RpY3M6IHsgc3RvcmFnZUFjY291bnRVcmk6IHByb3BzLmJvb3REaWFnbm9zdGljc1N0b3JhZ2VVUkkgfSxcbiAgICAgIHpvbmU6IHByb3BzLnpvbmUsXG4gICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHksXG4gICAgICBhZGRpdGlvbmFsQ2FwYWJpbGl0aWVzOiBwcm9wcy5hZGRpdGlvbmFsQ2FwYWJpbGl0aWVzLFxuICAgICAgc2VjcmV0OiBwcm9wcy5zZWNyZXQsXG4gICAgICBkaXNhYmxlUGFzc3dvcmRBdXRoZW50aWNhdGlvbjogcHJvcHMuYWRtaW5QYXNzd29yZCA/IGZhbHNlIDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEFzc2lnbmluZyB0aGUgVk0ncyBJRCBhbmQgbmFtZSB0byB0aGUgY2xhc3MgcHJvcGVydGllc1xuICAgIHRoaXMuaWQgPSBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZS5pZDtcbiAgICB0aGlzLm5hbWUgPSBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZS5uYW1lO1xuXG4gICAgLy8gRW5hYmxlIFNTSCBBenVyZSBBRCBMb2dpbiBpZiBzcGVjaWZpZWRcbiAgICBpZiAocHJvcHMuZW5hYmxlU3NoQXp1cmVBRExvZ2luKSB7XG4gICAgICBuZXcgVmlydHVhbE1hY2hpbmVFeHRlbnNpb24odGhpcywgXCJBQURTU0hsb2dpblwiLCB7XG4gICAgICAgIG5hbWU6IFwiQUFEU1NITG9naW5Gb3JMaW51eFwiLFxuICAgICAgICB2aXJ0dWFsTWFjaGluZUlkOiB0aGlzLmlkLFxuICAgICAgICBwdWJsaXNoZXI6IFwiTWljcm9zb2Z0LkF6dXJlLkFjdGl2ZURpcmVjdG9yeVwiLFxuICAgICAgICB0eXBlOiBcIkFBRFNTSExvZ2luRm9yTGludXhcIixcbiAgICAgICAgdHlwZUhhbmRsZXJWZXJzaW9uOiBcIjEuMFwiLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
282
|
+
LinuxVM[_b] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualmachine.LinuxVM", version: "0.0.3-pre.7" };
|
|
283
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtdmlydHVhbG1hY2hpbmUvbGliL3ZtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkZBUTJEO0FBQzNELHFGQUFpRjtBQUNqRixxRUFBaUU7QUFHakUscUdBQWdHO0FBQ2hHLGlHQUk2RDtBQUk3RCx5REFBNEQ7QUFDNUQsb0VBQWlFO0FBQ2pFLDhDQUFxRDtBQXFGckQsTUFBYSxTQUFVLFNBQVEsbUJBQWE7SUFPMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBDRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFekMsa0RBQWtEO1FBQ2xELE1BQU0sUUFBUSxHQUFHO1lBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRO1lBQ3BDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLGNBQWM7WUFDbEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUk7Z0JBQ3RCLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixrQkFBa0IsRUFBRSxjQUFjO2FBQ25DO1lBQ0Qsb0JBQW9CLEVBQ2xCLEtBQUssQ0FBQyxvQkFBb0I7Z0JBQzFCLHlDQUFzQixDQUFDLCtCQUErQjtZQUN4RCxNQUFNLEVBQ0osS0FBSyxDQUFDLE1BQU07Z0JBQ1osSUFBSSxpQkFBTyxDQUFDLElBQUksRUFB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LElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFO1lBQy9CLElBQUksbURBQXVCLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDL0MsSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ3pCLFNBQVMsRUFBRSxpQ0FBaUM7Z0JBQzVDLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLGtCQUFrQixFQUFFLEtBQUs7Z0JBQ3pCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0FBM0pILDBCQTRKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIExpbnV4VmlydHVhbE1hY2hpbmUsXG4gIExpbnV4VmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZSxcbiAgTGludXhWaXJ0dWFsTWFjaGluZU9zRGlzayxcbiAgTGludXhWaXJ0dWFsTWFjaGluZUFkbWluU3NoS2V5LFxuICBMaW51eFZpcnR1YWxNYWNoaW5lSWRlbnRpdHksXG4gIExpbnV4VmlydHVhbE1hY2hpbmVTZWNyZXQsXG4gIExpbnV4VmlydHVhbE1hY2hpbmVBZGRpdGlvbmFsQ2FwYWJpbGl0aWVzLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2xpbnV4LXZpcnR1YWwtbWFjaGluZVwiO1xuaW1wb3J0IHsgTmV0d29ya0ludGVyZmFjZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvbmV0d29yay1pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFB1YmxpY0lwIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9wdWJsaWMtaXBcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBTdWJuZXQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3N1Ym5ldFwiO1xuaW1wb3J0IHsgVmlydHVhbE1hY2hpbmVFeHRlbnNpb24gfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3ZpcnR1YWwtbWFjaGluZS1leHRlbnNpb25cIjtcbmltcG9ydCB7XG4gIFdpbmRvd3NWaXJ0dWFsTWFjaGluZSxcbiAgV2luZG93c1ZpcnR1YWxNYWNoaW5lT3NEaXNrLFxuICBXaW5kb3dzVmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZSxcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi93aW5kb3dzLXZpcnR1YWwtbWFjaGluZVwiO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgeyBXaW5kb3dzSW1hZ2VSZWZlcmVuY2VzIH0gZnJvbSBcIi4vaW1hZ2UtcmVmZXJlbmNlc1wiO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gXCIuLi8uLi9henVyZS12aXJ0dWFsbmV0d29yay9saWIvbmV0d29ya1wiO1xuaW1wb3J0IHsgQXp1cmVSZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpbmRvd3NWTVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBenVyZSBsb2NhdGlvbiB3aGVyZSB0aGUgdmlydHVhbCBtYWNoaW5lIHNob3VsZCBiZSBjcmVhdGVkLlxuICAgKiBAZGVmYXVsdCBcImVhc3R1c1wiXG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBuYW1lIGRlcml2ZWQgZnJvbSB0aGUgY29uc3RydWN0IHBhdGguXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgZ3JvdXAgaW4gd2hpY2ggdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgdmlydHVhbCBtYWNoaW5lLlxuICAgKiBAZGVmYXVsdCBcIlN0YW5kYXJkX0Iyc1wiXG4gICAqL1xuICByZWFkb25seSBzaXplPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRtaW4gdXNlcm5hbWUgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBwYXNzd29yZCBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBpbWFnZSByZWZlcmVuY2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyBXaW5kb3dzU2VydmVyMjAyMkRhdGFjZW50ZXJDb3JlLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlSW1hZ2VSZWZlcmVuY2U/OiBXaW5kb3dzVmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBzb3VyY2UgaW1hZ2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJbWFnZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIHRvIGFwcGx5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIE9TIGRpc2sgY29uZmlndXJhdGlvbiBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgLSBVc2VzIGEgZGlzayB3aXRoIGNhY2hpbmcgc2V0IHRvIFwiUmVhZFdyaXRlXCIgYW5kIHN0b3JhZ2UgYWNjb3VudCB0eXBlIFwiU3RhbmRhcmRfTFJTXCIuXG4gICAqL1xuICByZWFkb25seSBvc0Rpc2s/OiBXaW5kb3dzVmlydHVhbE1hY2hpbmVPc0Rpc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgaW4gd2hpY2ggdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGJlIHBsYWNlZC5cbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBkZWZhdWx0IHN1Ym5ldCBmcm9tIGEgbmV3IHZpcnR1YWwgbmV0d29yay5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldD86IFN1Ym5ldDtcblxuICAvKipcbiAgICogVGhlIGFsbG9jYXRpb24gbWV0aG9kIGZvciB0aGUgcHVibGljIElQLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSB0byBwYXNzIHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUgdXBvbiBjcmVhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbURhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRhIHRvIGJvb3RzdHJhcCB0aGUgdmlydHVhbCBtYWNoaW5lLiBBdXRvbWF0aWNhbGx5IHRyaWdnZXJzIEF6dXJlIEN1c3RvbSBTY3JpcHQgZXh0ZW5zaW9uIHRvIGRlcGxveSBjb2RlIGluIGN1c3RvbSBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgYm9vc3RyYXBDdXN0b21EYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb290ZGlhZ25vc3RpY3Mgc2V0dGluZ3MgZm9yIHRoZSBWTS5cbiAgICovXG4gIHJlYWRvbmx5IGJvb3REaWFnbm9zdGljc1N0b3JhZ2VVUkk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dzVk0gZXh0ZW5kcyBBenVyZVJlc291cmNlIHtcbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBXaW5kb3dzVk1Qcm9wcztcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljSXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSBXaW5kb3dzLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoVk0pIHdpdGhpbiBNaWNyb3NvZnQgQXp1cmUuXG4gICAqXG4gICAqIFRoaXMgY2xhc3MgaXMgZGVzaWduZWQgdG8gcHJvdmlzaW9uIGFuZCBtYW5hZ2UgYSBXaW5kb3dzIFZNIGluIEF6dXJlLCBhbGxvd2luZyBmb3IgZGV0YWlsZWQgY29uZmlndXJhdGlvbiBpbmNsdWRpbmdcbiAgICogdGhlIFZNJ3Mgc2l6ZSwgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW1hZ2UsIG5ldHdvcmsgc2V0dGluZ3MsIGFuZCBhZG1pbmlzdHJhdGl2ZSBjcmVkZW50aWFscy4gSXQgc3VwcG9ydHMgY3VzdG9taXphdGlvblxuICAgKiBvZiB0aGUgT1MgZGlzaywgbmV0d29ya2luZyBzZXR1cCwgYW5kIG9wdGlvbmFsIGZlYXR1cmVzIGxpa2UgY3VzdG9tIGRhdGEgc2NyaXB0cyBhbmQgYm9vdCBkaWFnbm9zdGljcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdCwgdHlwaWNhbGx5IHJlcHJlc2VudGluZyB0aGUgQ2xvdWQgRGV2ZWxvcG1lbnQgS2l0IChDREspIGFwcGxpY2F0aW9uLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIFdpbmRvd3MgVk0sIHVzZWQgd2l0aGluIHRoZSBzY29wZSBmb3IgcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0gcHJvcHMgLSBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBXaW5kb3dzIFZpcnR1YWwgTWFjaGluZSwgZGVyaXZlZCBmcm9tIHRoZSBXaW5kb3dzVk1Qcm9wcyBpbnRlcmZhY2UuIFRoZXNlIGluY2x1ZGU6XG4gICAqICAgICAgICAgICAgICAgIC0gYGxvY2F0aW9uYDogVGhlIGdlb2dyYXBoaWMgbG9jYXRpb24gd2hlcmUgdGhlIFZNIHdpbGwgYmUgaG9zdGVkIChlLmcuLCBcImVhc3R1c1wiKS5cbiAgICogICAgICAgICAgICAgICAgLSBgbmFtZWA6IFRoZSBuYW1lIG9mIHRoZSBWTSwgd2hpY2ggbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSByZXNvdXJjZSBncm91cC5cbiAgICogICAgICAgICAgICAgICAgLSBgcmVzb3VyY2VHcm91cGA6IFRoZSBSZXNvdXJjZUdyb3VwIHdpdGhpbiB3aGljaCB0aGUgVk0gd2lsbCBiZSBjcmVhdGVkLlxuICAgKiAgICAgICAgICAgICAgICAtIGBzaXplYDogVGhlIHNpemUgc3BlY2lmaWNhdGlvbiBvZiB0aGUgVk0gKGUuZy4sIFwiU3RhbmRhcmRfQjJzXCIpLlxuICAgKiAgICAgICAgICAgICAgICAtIGBhZG1pblVzZXJuYW1lYDogVGhlIGFkbWluaXN0cmF0b3IgdXNlcm5hbWUgZm9yIGFjY2Vzc2luZyB0aGUgVk0uXG4gICAqICAgICAgICAgICAgICAgIC0gYGFkbWluUGFzc3dvcmRgOiBUaGUgYWRtaW5pc3RyYXRvciBwYXNzd29yZCBmb3IgYWNjZXNzaW5nIHRoZSBWTS5cbiAgICogICAgICAgICAgICAgICAgLSBgc291cmNlSW1hZ2VSZWZlcmVuY2VgOiBBIHJlZmVyZW5jZSB0byB0aGUgc3BlY2lmaWMgV2luZG93cyBpbWFnZSB0byBiZSB1c2VkIGZvciB0aGUgVk0uXG4gICAqICAgICAgICAgICAgICAgIC0gYHNvdXJjZUltYWdlSWRgOiBUaGUgaWRlbnRpZmllciBmb3IgYSBjdXN0b20gaW1hZ2UgdG8gdXNlIGZvciB0aGUgVk0uXG4gICAqICAgICAgICAgICAgICAgIC0gYHRhZ3NgOiBLZXktdmFsdWUgcGFpcnMgZm9yIHJlc291cmNlIHRhZ2dpbmcuXG4gICAqICAgICAgICAgICAgICAgIC0gYG9zRGlza2A6IENvbmZpZ3VyYXRpb24gZm9yIHRoZSBWTSdzIG9wZXJhdGluZyBzeXN0ZW0gZGlzay5cbiAgICogICAgICAgICAgICAgICAgLSBgc3VibmV0YDogU3BlY2lmaWVzIHRoZSBzdWJuZXQgd2l0aGluIHdoaWNoIHRoZSBWTSB3aWxsIGJlIHBsYWNlZC5cbiAgICogICAgICAgICAgICAgICAgLSBgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kYDogVGhlIG1ldGhvZCB1c2VkIHRvIGFsbG9jYXRlIGEgcHVibGljIElQIGFkZHJlc3MgdG8gdGhlIFZNLlxuICAgKiAgICAgICAgICAgICAgICAtIGBjdXN0b21EYXRhYDogU2NyaXB0cyBvciBjb21tYW5kcyBwYXNzZWQgdG8gdGhlIFZNIGF0IHN0YXJ0dXAuXG4gICAqICAgICAgICAgICAgICAgIC0gYGJvb3RzdHJhcEN1c3RvbURhdGFgOiBDdXN0b20gZGF0YSB1c2VkIHRvIHRyaWdnZXIgdGhlIEF6dXJlIEN1c3RvbSBTY3JpcHQgRXh0ZW5zaW9uIGZvciBWTSBzZXR1cCB0YXNrcy5cbiAgICogICAgICAgICAgICAgICAgLSBgYm9vdERpYWdub3N0aWNzU3RvcmFnZVVSSWA6IFVSSSBmb3Igc3RvcmFnZSB3aGVyZSBWTSBib290IGRpYWdub3N0aWNzIGFyZSBjb2xsZWN0ZWQuXG4gICAqXG4gICAqIEV4YW1wbGUgdXNhZ2U6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3Qgdm0gPSBuZXcgV2luZG93c1ZNKHRoaXMsICdNeVdpbmRvd3NWTScsIHtcbiAgICogICByZXNvdXJjZUdyb3VwOiBteVJlc291cmNlR3JvdXAsXG4gICAqICAgbmFtZTogJ215Vk0nLFxuICAgKiAgIHNpemU6ICdTdGFuZGFyZF9EUzFfdjInLFxuICAgKiAgIGFkbWluVXNlcm5hbWU6ICdhZG1pbnVzZXInLFxuICAgKiAgIGFkbWluUGFzc3dvcmQ6ICdzZWN1cmVwYXNzd29yZDEyMycsXG4gICAqICAgc291cmNlSW1hZ2VSZWZlcmVuY2U6IHsgcHVibGlzaGVyOiAnTWljcm9zb2Z0V2luZG93c1NlcnZlcicsIG9mZmVyOiAnV2luZG93c1NlcnZlcicsIHNrdTogJzIwMTktRGF0YWNlbnRlcicsIHZlcnNpb246ICdsYXRlc3QnIH0sXG4gICAqICAgb3NEaXNrOiB7IGNhY2hpbmc6ICdSZWFkV3JpdGUnLCBzdG9yYWdlQWNjb3VudFR5cGU6ICdTdGFuZGFyZF9MUlMnIH0sXG4gICAqICAgc3VibmV0OiBteVN1Ym5ldCxcbiAgICogICB0YWdzOiB7IGVudmlyb25tZW50OiAncHJvZHVjdGlvbicgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqIFRoaXMgY2xhc3MgaW5pdGlhbGl6ZXMgYSBXaW5kb3dzIFZNIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9ucywgaGFuZGxpbmcgZGV0YWlscyBsaWtlIG5ldHdvcmsgc2V0dXAsIE9TIGluc3RhbGxhdGlvbixcbiAgICogYW5kIHNlY3VyaXR5IHNldHRpbmdzLCB0aHVzIHByb3ZpZGluZyBhIHJvYnVzdCBpbmZyYXN0cnVjdHVyZSBmb3IgaG9zdGluZyBhcHBsaWNhdGlvbnMgb24gV2luZG93cyBTZXJ2ZXIgZW52aXJvbm1lbnRzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdpbmRvd3NWTVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLnJlc291cmNlR3JvdXAgPSBwcm9wcy5yZXNvdXJjZUdyb3VwO1xuXG4gICAgLy8gRGVmYXVsdCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUgfHwgdGhpcy5ub2RlLnBhdGguc3BsaXQoXCIvXCIpWzBdLFxuICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uIHx8IFwiZWFzdHVzXCIsXG4gICAgICBzaXplOiBwcm9wcy5zaXplIHx8IFwiU3RhbmRhcmRfQjJzXCIsXG4gICAgICBvc0Rpc2s6IHByb3BzLm9zRGlzayB8fCB7XG4gICAgICAgIGNhY2hpbmc6IFwiUmVhZFdyaXRlXCIsXG4gICAgICAgIHN0b3JhZ2VBY2NvdW50VHlwZTogXCJTdGFuZGFyZF9MUlNcIixcbiAgICAgIH0sXG4gICAgICBzb3VyY2VJbWFnZVJlZmVyZW5jZTpcbiAgICAgICAgcHJvcHMuc291cmNlSW1hZ2VSZWZlcmVuY2UgfHxcbiAgICAgICAgV2luZG93c0ltYWdlUmVmZXJlbmNlcy53aW5kb3dzU2VydmVyMjAyMkRhdGFjZW50ZXJDb3JlLFxuICAgICAgc3VibmV0OlxuICAgICAgICBwcm9wcy5zdWJuZXQgfHxcbiAgICAgICAgbmV3IE5ldHdvcmsodGhpcywgXCJ2bmV0XCIsIHtcbiAgICAgICAgICByZXNvdXJjZUdyb3VwOiBwcm9wcy5yZXNvdXJjZUdyb3VwLFxuICAgICAgICB9KS5zdWJuZXRzLmRlZmF1bHQsXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBQdWJsaWMgSVAgaWYgc3BlY2lmaWVkLlxuICAgIGxldCBwdWJsaWNJcElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BzLnB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZCkge1xuICAgICAgY29uc3QgYXp1cmVybVB1YmxpY0lwID0gbmV3IFB1YmxpY0lwKHRoaXMsIFwicHVibGljLWlwXCIsIHtcbiAgICAgICAgbmFtZTogYHBpcC0ke2RlZmF1bHRzLm5hbWV9YCxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgICAgbG9jYXRpb246IGRlZmF1bHRzLmxvY2F0aW9uLFxuICAgICAgICBhbGxvY2F0aW9uTWV0aG9kOiBwcm9wcy5wdWJsaWNJUEFsbG9jYXRpb25NZXRob2QsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICB9KTtcblxuICAgICAgcHVibGljSXBJZCA9IGF6dXJlcm1QdWJsaWNJcC5pZDtcbiAgICAgIHRoaXMucHVibGljSXAgPSBhenVyZXJtUHVibGljSXAuaXBBZGRyZXNzO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgTmV0d29yayBJbnRlcmZhY2UuXG4gICAgY29uc3QgYXp1cmVybU5ldHdvcmtJbnRlcmZhY2UgPSBuZXcgTmV0d29ya0ludGVyZmFjZSh0aGlzLCBcIm5pY1wiLCB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIG5hbWU6IGBuaWMtJHtkZWZhdWx0cy5uYW1lfWAsXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcHJvcHMucmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgaXBDb25maWd1cmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImludGVybmFsXCIsXG4gICAgICAgICAgc3VibmV0SWQ6IGRlZmF1bHRzLnN1Ym5ldC5pZCxcbiAgICAgICAgICBwcml2YXRlSXBBZGRyZXNzQWxsb2NhdGlvbjogXCJEeW5hbWljXCIsXG4gICAgICAgICAgcHVibGljSXBBZGRyZXNzSWQ6IHB1YmxpY0lwSWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIC8vIEJhc2U2NCBlbmNvZGUgY3VzdG9tIGRhdGEgaWYgcHJvdmlkZWQuXG4gICAgY29uc3QgY3VzdG9tRGF0YSA9IHByb3BzLmN1c3RvbURhdGEgfHwgcHJvcHMuYm9vc3RyYXBDdXN0b21EYXRhO1xuICAgIGNvbnN0IGJhc2U2NEN1c3RvbURhdGEgPSBjdXN0b21EYXRhXG4gICAgICA/IEJ1ZmZlci5mcm9tKGN1c3RvbURhdGEpLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIENyZWF0ZSB0aGUgV2luZG93cyBWaXJ0dWFsIE1hY2hpbmUuXG4gICAgY29uc3QgYXp1cmVybVdpbmRvd3NWaXJ0dWFsTWFjaGluZSA9IG5ldyBXaW5kb3dzVmlydHVhbE1hY2hpbmUodGhpcywgXCJ2bVwiLCB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICBhZG1pblVzZXJuYW1lOiBwcm9wcy5hZG1pblVzZXJuYW1lLFxuICAgICAgYWRtaW5QYXNzd29yZDogcHJvcHMuYWRtaW5QYXNzd29yZCxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICBuZXR3b3JrSW50ZXJmYWNlSWRzOiBbYXp1cmVybU5ldHdvcmtJbnRlcmZhY2UuaWRdLFxuICAgICAgc291cmNlSW1hZ2VJZDogcHJvcHMuc291cmNlSW1hZ2VJZCxcbiAgICAgIGN1c3RvbURhdGE6IGJhc2U2NEN1c3RvbURhdGEsXG4gICAgICBib290RGlhZ25vc3RpY3M6IHsgc3RvcmFnZUFjY291bnRVcmk6IHByb3BzLmJvb3REaWFnbm9zdGljc1N0b3JhZ2VVUkkgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuaWQgPSBhenVyZXJtV2luZG93c1ZpcnR1YWxNYWNoaW5lLmlkO1xuICAgIHRoaXMubmFtZSA9IGF6dXJlcm1XaW5kb3dzVmlydHVhbE1hY2hpbmUubmFtZTtcblxuICAgIC8vIEJvb3RzdHJhcCBWTSB3aXRoIGN1c3RvbSBzY3JpcHQgZXh0ZW5zaW9uIGlmIGJvb3RzdHJhcCBjdXN0b20gZGF0YSBpcyBwcm92aWRlZC5cbiAgICBpZiAocHJvcHMuYm9vc3RyYXBDdXN0b21EYXRhKSB7XG4gICAgICBuZXcgVmlydHVhbE1hY2hpbmVFeHRlbnNpb24odGhpcywgXCJzY3JpcHQtZXh0XCIsIHtcbiAgICAgICAgbmFtZTogYCR7dGhpcy5uYW1lfS1zY3JpcHQtZXh0YCxcbiAgICAgICAgdmlydHVhbE1hY2hpbmVJZDogdGhpcy5pZCxcbiAgICAgICAgcHVibGlzaGVyOiBcIk1pY3Jvc29mdC5Db21wdXRlXCIsXG4gICAgICAgIHR5cGU6IFwiQ3VzdG9tU2NyaXB0RXh0ZW5zaW9uXCIsXG4gICAgICAgIHR5cGVIYW5kbGVyVmVyc2lvbjogXCIxLjEwXCIsXG4gICAgICAgIHByb3RlY3RlZFNldHRpbmdzOlxuICAgICAgICAgICd7XCJjb21tYW5kVG9FeGVjdXRlXCI6IFwicmVuYW1lICBDOlxcXFxcXFxcQXp1cmVEYXRhXFxcXFxcXFxDdXN0b21EYXRhLmJpbiAgcG9zdGRlcGxveS5wczEgJiBwb3dlcnNoZWxsIC1FeGVjdXRpb25Qb2xpY3kgVW5yZXN0cmljdGVkIC1GaWxlIEM6XFxcXFxcXFxBenVyZURhdGFcXFxcXFxcXHBvc3RkZXBsb3kucHMxXCJ9JyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbnV4Vk1Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXp1cmUgbG9jYXRpb24gd2hlcmUgdGhlIHZpcnR1YWwgbWFjaGluZSBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICogQGRlZmF1bHQgXCJlYXN0dXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyB0aGUgbmFtZSBkZXJpdmVkIGZyb20gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIGdyb3VwIGluIHdoaWNoIHRoZSB2aXJ0dWFsIG1hY2hpbmUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cDogUmVzb3VyY2VHcm91cDtcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgXCJTdGFuZGFyZF9CMnNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc2l6ZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBhdmFpbGFiaWxpdHkgc2V0IGluIHdoaWNoIHRoZSBWTSBzaG91bGQgYmUgcGxhY2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5U2V0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRhIHRvIHBhc3MgdG8gdGhlIHZpcnR1YWwgbWFjaGluZSB1cG9uIGNyZWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckRhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFNTSCBrZXlzIGZvciB0aGUgYWRtaW4gdXNlci5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluU3NoS2V5PzogTGludXhWaXJ0dWFsTWFjaGluZUFkbWluU3NoS2V5W10gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSB6b25lIGluIHdoaWNoIHRoZSBWTSBzaG91bGQgYmUgcGxhY2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgem9uZT86IHN0cmluZztcblxuICAvKipcbiAgICogTWFuYWdlZCBpZGVudGl0eSBzZXR0aW5ncyBmb3IgdGhlIFZNLlxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk/OiBMaW51eFZpcnR1YWxNYWNoaW5lSWRlbnRpdHk7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY2FwYWJpbGl0aWVzIGxpa2UgVWx0cmEgRGlzayBjb21wYXRpYmlsaXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbENhcGFiaWxpdGllcz86IExpbnV4VmlydHVhbE1hY2hpbmVBZGRpdGlvbmFsQ2FwYWJpbGl0aWVzO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBzZWNyZXRzIHRvIGJlIHBhc3NlZCB0byB0aGUgVk0uXG4gICAqL1xuICByZWFkb25seSBzZWNyZXQ/OiBMaW51eFZpcnR1YWxNYWNoaW5lU2VjcmV0W107XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiB1c2VybmFtZSBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluVXNlcm5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBwYXNzd29yZCBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgaW1hZ2UgcmVmZXJlbmNlIGZvciB0aGUgdmlydHVhbCBtYWNoaW5lLlxuICAgKiBAZGVmYXVsdCAtIFVzZXMgV2luZG93c1NlcnZlcjIwMjJEYXRhY2VudGVyQ29yZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUltYWdlUmVmZXJlbmNlPzogTGludXhWaXJ0dWFsTWFjaGluZVNvdXJjZUltYWdlUmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHNvdXJjZSBpbWFnZSBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUltYWdlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgdG8gYXBwbHkgdG8gdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgT1MgZGlzayBjb25maWd1cmF0aW9uIGZvciB0aGUgdmlydHVhbCBtYWNoaW5lLlxuICAgKiBAZGVmYXVsdCAtIFVzZXMgYSBkaXNrIHdpdGggY2FjaGluZyBzZXQgdG8gXCJSZWFkV3JpdGVcIiBhbmQgc3RvcmFnZSBhY2NvdW50IHR5cGUgXCJTdGFuZGFyZF9MUlNcIi5cbiAgICovXG4gIHJlYWRvbmx5IG9zRGlzaz86IExpbnV4VmlydHVhbE1hY2hpbmVPc0Rpc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgaW4gd2hpY2ggdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGJlIHBsYWNlZC5cbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBkZWZhdWx0IHN1Ym5ldCBmcm9tIGEgbmV3IHZpcnR1YWwgbmV0d29yay5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldD86IFN1Ym5ldDtcblxuICAvKipcbiAgICogVGhlIGFsbG9jYXRpb24gbWV0aG9kIGZvciB0aGUgcHVibGljIElQLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSB0byBwYXNzIHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUgdXBvbiBjcmVhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbURhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBTU0ggQXp1cmUgQUQgTG9naW4sIHJlcXVpcmVkIG1hbmFnZWQgaWRlbnRpdHkgdG8gYmUgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlU3NoQXp1cmVBRExvZ2luPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQm9vdGRpYWdub3N0aWNzIHNldHRpbmdzIGZvciB0aGUgVk0uXG4gICAqL1xuICByZWFkb25seSBib290RGlhZ25vc3RpY3NTdG9yYWdlVVJJPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTGludXhWTSBleHRlbmRzIEF6dXJlUmVzb3VyY2Uge1xuICAvLyBQcm9wZXJ0aWVzIG9mIHRoZSBBenVyZUxpbnV4VmlydHVhbE1hY2hpbmUgY2xhc3NcbiAgcmVhZG9ubHkgcHJvcHM6IExpbnV4Vk1Qcm9wcztcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljSXA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSBMaW51eC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKFZNKSB3aXRoaW4gTWljcm9zb2Z0IEF6dXJlLlxuICAgKlxuICAgKiBUaGlzIGNsYXNzIGlzIGRlc2lnbmVkIHRvIHByb3Zpc2lvbiBhbmQgbWFuYWdlIGEgTGludXggVk0gaW4gQXp1cmUsIGZhY2lsaXRhdGluZyBkZXRhaWxlZCBjb25maWd1cmF0aW9uIGluY2x1ZGluZ1xuICAgKiBWTSBzaXplLCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpbWFnZSwgbmV0d29yayBzZXR0aW5ncywgYW5kIGFkbWluaXN0cmF0aXZlIGNyZWRlbnRpYWxzLiBJdCBzdXBwb3J0cyBjdXN0b20gZGF0YSBzY3JpcHRzLFxuICAgKiBTU0ggY29uZmlndXJhdGlvbnMsIGFuZCBvcHRpb25hbCBmZWF0dXJlcyBsaWtlIG1hbmFnZWQgaWRlbnRpdHkgYW5kIGJvb3QgZGlhZ25vc3RpY3MuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3QsIHR5cGljYWxseSByZXByZXNlbnRpbmcgdGhlIENsb3VkIERldmVsb3BtZW50IEtpdCAoQ0RLKSBhcHBsaWNhdGlvbi5cbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlIG9mIHRoZSBMaW51eCBWTSwgdXNlZCB3aXRoaW4gdGhlIHNjb3BlIGZvciByZWZlcmVuY2UuXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIExpbnV4IFZpcnR1YWwgTWFjaGluZSwgZGVyaXZlZCBmcm9tIHRoZSBMaW51eFZNUHJvcHMgaW50ZXJmYWNlLiBUaGVzZSBpbmNsdWRlOlxuICAgKiAgICAgICAgICAgICAgICAtIGBsb2NhdGlvbmA6IFRoZSBnZW9ncmFwaGljIGxvY2F0aW9uIHdoZXJlIHRoZSBWTSB3aWxsIGJlIGhvc3RlZCAoZS5nLiwgXCJlYXN0dXNcIikuXG4gICAqICAgICAgICAgICAgICAgIC0gYG5hbWVgOiBUaGUgbmFtZSBvZiB0aGUgVk0sIHdoaWNoIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgcmVzb3VyY2UgZ3JvdXAuXG4gICAqICAgICAgICAgICAgICAgIC0gYHJlc291cmNlR3JvdXBgOiBUaGUgUmVzb3VyY2VHcm91cCB3aXRoaW4gd2hpY2ggdGhlIFZNIHdpbGwgYmUgY3JlYXRlZC5cbiAgICogICAgICAgICAgICAgICAgLSBgc2l6ZWA6IFRoZSBzaXplIHNwZWNpZmljYXRpb24gb2YgdGhlIFZNIChlLmcuLCBcIlN0YW5kYXJkX0Iyc1wiKS5cbiAgICogICAgICAgICAgICAgICAgLSBgYXZhaWxhYmlsaXR5U2V0SWRgOiBUaGUgSUQgb2YgdGhlIGF2YWlsYWJpbGl0eSBzZXQgaW4gd2hpY2ggdG8gaW5jbHVkZSB0aGUgVk0uXG4gICAqICAgICAgICAgICAgICAgIC0gYHVzZXJEYXRhYDogQ3VzdG9tIGRhdGEgc2NyaXB0cyB0byBwYXNzIHRvIHRoZSBWTSB1cG9uIGNyZWF0aW9uLlxuICAgKiAgICAgICAgICAgICAgICAtIGBhZG1pblNzaEtleWA6IFNTSCBrZXlzIGZvciBzZWN1cmUgYWNjZXNzIHRvIHRoZSBWTS5cbiAgICogICAgICAgICAgICAgICAgLSBgem9uZWA6IFRoZSBhdmFpbGFiaWxpdHkgem9uZSBmb3IgZGVwbG95aW5nIHRoZSBWTS5cbiAgICogICAgICAgICAgICAgICAgLSBgaWRlbnRpdHlgOiBNYW5hZ2VkIGlkZW50aXR5IHNldHRpbmdzIGZvciBhY2Nlc3Npbmcgb3RoZXIgQXp1cmUgc2VydmljZXMuXG4gICAqICAgICAgICAgICAgICAgIC0gYGFkZGl0aW9uYWxDYXBhYmlsaXRpZXNgOiBTcGVjaWFsIGNhcGFiaWxpdGllcyBsaWtlIFVsdHJhIERpc2sgc3VwcG9ydC5cbiAgICogICAgICAgICAgICAgICAgLSBgc291cmNlSW1hZ2VSZWZlcmVuY2VgOiBBIHJlZmVyZW5jZSB0byB0aGUgc3BlY2lmaWMgTGludXggaW1hZ2UgdG8gYmUgdXNlZCBmb3IgdGhlIFZNLlxuICAgKiAgICAgICAgICAgICAgICAtIGBzb3VyY2VJbWFnZUlkYDogVGhlIGlkZW50aWZpZXIgZm9yIGEgY3VzdG9tIGltYWdlIHRvIHVzZSBmb3IgdGhlIFZNLlxuICAgKiAgICAgICAgICAgICAgICAtIGB0YWdzYDogS2V5LXZhbHVlIHBhaXJzIGZvciByZXNvdXJjZSB0YWdnaW5nLlxuICAgKiAgICAgICAgICAgICAgICAtIGBvc0Rpc2tgOiBDb25maWd1cmF0aW9uIGZvciB0aGUgVk0ncyBvcGVyYXRpbmcgc3lzdGVtIGRpc2suXG4gICAqICAgICAgICAgICAgICAgIC0gYHN1Ym5ldGA6IFNwZWNpZmllcyB0aGUgc3VibmV0IHdpdGhpbiB3aGljaCB0aGUgVk0gd2lsbCBiZSBwbGFjZWQuXG4gICAqICAgICAgICAgICAgICAgIC0gYHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZGA6IE1ldGhvZCB1c2VkIHRvIGFsbG9jYXRlIGEgcHVibGljIElQIGFkZHJlc3MuXG4gICAqICAgICAgICAgICAgICAgIC0gYGN1c3RvbURhdGFgOiBBZGRpdGlvbmFsIHNjcmlwdHMgb3IgY29tbWFuZHMgcGFzc2VkIHRvIHRoZSBWTSBhdCBzdGFydHVwLlxuICAgKiAgICAgICAgICAgICAgICAtIGBlbmFibGVTc2hBenVyZUFETG9naW5gOiBPcHRpb24gdG8gZW5hYmxlIEF6dXJlIEFEIGxvZ2luIGZvciBTU0guXG4gICAqICAgICAgICAgICAgICAgIC0gYGJvb3REaWFnbm9zdGljc1N0b3JhZ2VVUklgOiBVUkkgZm9yIHN0b3JhZ2Ugd2hlcmUgVk0gYm9vdCBkaWFnbm9zdGljcyBhcmUgY29sbGVjdGVkLlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGxpbnV4Vk0gPSBuZXcgTGludXhWTSh0aGlzLCAnTXlMaW51eFZNJywge1xuICAgKiAgIHJlc291cmNlR3JvdXA6IG15UmVzb3VyY2VHcm91cCxcbiAgICogICBuYW1lOiAnbXlWTScsXG4gICAqICAgc2l6ZTogJ1N0YW5kYXJkX0RTMV92MicsXG4gICAqICAgYWRtaW5Vc2VybmFtZTogJ2FkbWludXNlcicsXG4gICAqICAgYWRtaW5Tc2hLZXk6IFt7IHB1YmxpY0tleTogJ3NzaC1yc2EgQUFBQUIuLi4nIH1dLFxuICAgKiAgIHNvdXJjZUltYWdlUmVmZXJlbmNlOiB7IHB1Ymxpc2hlcjogJ0Nhbm9uaWNhbCcsIG9mZmVyOiAnVWJ1bnR1U2VydmVyJywgc2t1OiAnMTguMDQtTFRTJywgdmVyc2lvbjogJ2xhdGVzdCcgfSxcbiAgICogICBvc0Rpc2s6IHsgY2FjaGluZzogJ1JlYWRXcml0ZScsIHN0b3JhZ2VBY2NvdW50VHlwZTogJ1N0YW5kYXJkX0xSUycgfSxcbiAgICogICBzdWJuZXQ6IG15U3VibmV0LFxuICAgKiAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyB9XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICogVGhpcyBjbGFzcyBpbml0aWFsaXplcyBhIExpbnV4IFZNIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9ucywgaGFuZGxpbmcgZGV0YWlscyBsaWtlIG5ldHdvcmsgc2V0dXAsIE9TIGluc3RhbGxhdGlvbixcbiAgICogYW5kIHNlY3VyaXR5IHNldHRpbmdzLCB0aHVzIHByb3ZpZGluZyBhIHJvYnVzdCBpbmZyYXN0cnVjdHVyZSBmb3IgaG9zdGluZyBhcHBsaWNhdGlvbnMgb24gTGludXggZW52aXJvbm1lbnRzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpbnV4Vk1Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBBc3NpZ25pbmcgdGhlIHByb3BlcnRpZXNcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5yZXNvdXJjZUdyb3VwID0gcHJvcHMucmVzb3VyY2VHcm91cDtcblxuICAgIC8vIEV4dHJhY3RpbmcgdGhlIG5hbWUgZnJvbSB0aGUgbm9kZSBwYXRoXG4gICAgY29uc3QgcGF0aE5hbWUgPSB0aGlzLm5vZGUucGF0aC5zcGxpdChcIi9cIilbMF07XG5cbiAgICAvLyBTZXR0aW5nIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmVcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUgfHwgcGF0aE5hbWUsXG4gICAgICBhZG1pblVzZXJuYW1lOiBwcm9wcy5hZG1pblVzZXJuYW1lIHx8IGBhZG1pbiR7cGF0aE5hbWV9YCxcbiAgICAgIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbiB8fCBcImVhc3R1c1wiLFxuICAgICAgc2l6ZTogcHJvcHMuc2l6ZSB8fCBcIlN0YW5kYXJkX0Iyc1wiLFxuICAgICAgb3NEaXNrOiBwcm9wcy5vc0Rpc2sgfHwge1xuICAgICAgICBjYWNoaW5nOiBcIlJlYWRXcml0ZVwiLFxuICAgICAgICBzdG9yYWdlQWNjb3VudFR5cGU6IFwiU3RhbmRhcmRfTFJTXCIsXG4gICAgICB9LFxuICAgICAgc291cmNlSW1hZ2VSZWZlcmVuY2U6XG4gICAgICAgIHByb3BzLnNvdXJjZUltYWdlUmVmZXJlbmNlIHx8XG4gICAgICAgIFdpbmRvd3NJbWFnZVJlZmVyZW5jZXMud2luZG93c1NlcnZlcjIwMjJEYXRhY2VudGVyQ29yZSxcbiAgICAgIHN1Ym5ldDpcbiAgICAgICAgcHJvcHMuc3VibmV0IHx8XG4gICAgICAgIG5ldyBOZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAgICAgcmVzb3VyY2VHcm91cDogcHJvcHMucmVzb3VyY2VHcm91cCxcbiAgICAgICAgfSkuc3VibmV0cy5kZWZhdWx0LFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgUHVibGljIElQIGlmIHNwZWNpZmllZFxuICAgIGxldCBwdWJsaWNJcElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHByb3BzLnB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZCkge1xuICAgICAgY29uc3QgYXp1cmVybVB1YmxpY0lwID0gbmV3IFB1YmxpY0lwKHRoaXMsIFwicHVibGljLWlwXCIsIHtcbiAgICAgICAgbmFtZTogYHBpcC0ke2RlZmF1bHRzLm5hbWV9YCxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgICAgbG9jYXRpb246IGRlZmF1bHRzLmxvY2F0aW9uLFxuICAgICAgICBhbGxvY2F0aW9uTWV0aG9kOiBwcm9wcy5wdWJsaWNJUEFsbG9jYXRpb25NZXRob2QsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICB9KTtcblxuICAgICAgcHVibGljSXBJZCA9IGF6dXJlcm1QdWJsaWNJcC5pZDtcbiAgICAgIHRoaXMucHVibGljSXAgPSBhenVyZXJtUHVibGljSXAuaXBBZGRyZXNzO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgTmV0d29yayBJbnRlcmZhY2VcbiAgICBjb25zdCBhenVyZXJtTmV0d29ya0ludGVyZmFjZSA9IG5ldyBOZXR3b3JrSW50ZXJmYWNlKHRoaXMsIFwibmljXCIsIHtcbiAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgbmFtZTogYG5pYy0ke2RlZmF1bHRzLm5hbWV9YCxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICBpcENvbmZpZ3VyYXRpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiaW50ZXJuYWxcIixcbiAgICAgICAgICBzdWJuZXRJZDogZGVmYXVsdHMuc3VibmV0LmlkLFxuICAgICAgICAgIHByaXZhdGVJcEFkZHJlc3NBbGxvY2F0aW9uOiBcIkR5bmFtaWNcIixcbiAgICAgICAgICBwdWJsaWNJcEFkZHJlc3NJZDogcHVibGljSXBJZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBMaW51eCBWaXJ0dWFsIE1hY2hpbmVcbiAgICBjb25zdCBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZSA9IG5ldyBMaW51eFZpcnR1YWxNYWNoaW5lKHRoaXMsIFwidm1cIiwge1xuICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcHJvcHMucmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgYWRtaW5QYXNzd29yZDogcHJvcHMuYWRtaW5QYXNzd29yZCxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICBuZXR3b3JrSW50ZXJmYWNlSWRzOiBbYXp1cmVybU5ldHdvcmtJbnRlcmZhY2UuaWRdLFxuICAgICAgc291cmNlSW1hZ2VJZDogcHJvcHMuc291cmNlSW1hZ2VJZCxcbiAgICAgIGN1c3RvbURhdGE6IHByb3BzLmN1c3RvbURhdGFcbiAgICAgICAgPyBCdWZmZXIuZnJvbShwcm9wcy5jdXN0b21EYXRhKS50b1N0cmluZyhcImJhc2U2NFwiKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHVzZXJEYXRhOiBwcm9wcy51c2VyRGF0YVxuICAgICAgICA/IEJ1ZmZlci5mcm9tKHByb3BzLnVzZXJEYXRhKS50b1N0cmluZyhcImJhc2U2NFwiKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGF2YWlsYWJpbGl0eVNldElkOiBwcm9wcy5hdmFpbGFiaWxpdHlTZXRJZCxcbiAgICAgIGFkbWluU3NoS2V5OiBwcm9wcy5hZG1pblNzaEtleSxcbiAgICAgIGJvb3REaWFnbm9zdGljczogeyBzdG9yYWdlQWNjb3VudFVyaTogcHJvcHMuYm9vdERpYWdub3N0aWNzU3RvcmFnZVVSSSB9LFxuICAgICAgem9uZTogcHJvcHMuem9uZSxcbiAgICAgIGlkZW50aXR5OiBwcm9wcy5pZGVudGl0eSxcbiAgICAgIGFkZGl0aW9uYWxDYXBhYmlsaXRpZXM6IHByb3BzLmFkZGl0aW9uYWxDYXBhYmlsaXRpZXMsXG4gICAgICBzZWNyZXQ6IHByb3BzLnNlY3JldCxcbiAgICAgIGRpc2FibGVQYXNzd29yZEF1dGhlbnRpY2F0aW9uOiBwcm9wcy5hZG1pblBhc3N3b3JkID8gZmFsc2UgOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgLy8gQXNzaWduaW5nIHRoZSBWTSdzIElEIGFuZCBuYW1lIHRvIHRoZSBjbGFzcyBwcm9wZXJ0aWVzXG4gICAgdGhpcy5pZCA9IGF6dXJlcm1MaW51eFZpcnR1YWxNYWNoaW5lLmlkO1xuICAgIHRoaXMubmFtZSA9IGF6dXJlcm1MaW51eFZpcnR1YWxNYWNoaW5lLm5hbWU7XG5cbiAgICAvLyBFbmFibGUgU1NIIEF6dXJlIEFEIExvZ2luIGlmIHNwZWNpZmllZFxuICAgIGlmIChwcm9wcy5lbmFibGVTc2hBenVyZUFETG9naW4pIHtcbiAgICAgIG5ldyBWaXJ0dWFsTWFjaGluZUV4dGVuc2lvbih0aGlzLCBcIkFBRFNTSGxvZ2luXCIsIHtcbiAgICAgICAgbmFtZTogXCJBQURTU0hMb2dpbkZvckxpbnV4XCIsXG4gICAgICAgIHZpcnR1YWxNYWNoaW5lSWQ6IHRoaXMuaWQsXG4gICAgICAgIHB1Ymxpc2hlcjogXCJNaWNyb3NvZnQuQXp1cmUuQWN0aXZlRGlyZWN0b3J5XCIsXG4gICAgICAgIHR5cGU6IFwiQUFEU1NITG9naW5Gb3JMaW51eFwiLFxuICAgICAgICB0eXBlSGFuZGxlclZlcnNpb246IFwiMS4wXCIsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -118,11 +118,57 @@ export declare class LinuxCluster extends AzureResource {
|
|
|
118
118
|
readonly name: string;
|
|
119
119
|
readonly fqn: string;
|
|
120
120
|
/**
|
|
121
|
-
*
|
|
121
|
+
* Represents a Linux Virtual Machine Scale Set (VMSS) within Microsoft Azure.
|
|
122
122
|
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
123
|
+
* This class is designed to provision and manage a scale set of Linux virtual machines, providing capabilities such as
|
|
124
|
+
* auto-scaling, high availability, and simplified management. It supports detailed configurations like VM size, operating
|
|
125
|
+
* system image, network settings, and administrative credentials. Additional functionalities include custom data scripts,
|
|
126
|
+
* SSH configurations, and optional features like managed identity and boot diagnostics.
|
|
127
|
+
*
|
|
128
|
+
* @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
|
|
129
|
+
* @param id - The unique identifier for this instance of the Linux cluster, used within the scope for reference.
|
|
130
|
+
* @param props - Configuration properties for the Linux VM Scale Set, derived from the LinuxClusterProps interface. These include:
|
|
131
|
+
* - `location`: The geographic location where the scale set will be hosted (e.g., "eastus").
|
|
132
|
+
* - `name`: The name of the scale set, which must be unique within the resource group.
|
|
133
|
+
* - `resourceGroup`: The ResourceGroup within which the scale set will be created.
|
|
134
|
+
* - `sku`: The size specification of the VMs (e.g., "Standard_B2s").
|
|
135
|
+
* - `adminUsername`: The administrator username for the VMs.
|
|
136
|
+
* - `adminPassword`: The administrator password for the VMs.
|
|
137
|
+
* - `adminSshKey`: SSH keys for secure access to the VMs.
|
|
138
|
+
* - `zones`: The availability zones for deploying the VMs.
|
|
139
|
+
* - `identity`: Managed identity settings for accessing other Azure services.
|
|
140
|
+
* - `sourceImageReference`: A reference to the specific Linux image to be used for the VMs.
|
|
141
|
+
* - `sourceImageId`: The identifier for a custom image to use for the VMs.
|
|
142
|
+
* - `tags`: Key-value pairs for resource tagging.
|
|
143
|
+
* - `osDisk`: Configuration for the VMs' operating system disks.
|
|
144
|
+
* - `subnet`: Specifies the subnet within which the VMs will be placed.
|
|
145
|
+
* - `publicIPAddress`: Method used to allocate public IP addresses to the VMs.
|
|
146
|
+
* - `customData`: Scripts or commands passed to the VMs at startup.
|
|
147
|
+
* - `instances`: The number of VM instances in the scale set.
|
|
148
|
+
* - `upgradePolicyMode`: The upgrade policy mode for the VMSS.
|
|
149
|
+
* - `overprovision`: Specifies if the VMSS should be overprovisioned to maintain capacity during updates.
|
|
150
|
+
* - `scaleInPolicy`: The scale-in policy for the VMSS.
|
|
151
|
+
* - `bootDiagnosticsStorageURI`: URI for storage where VMSS boot diagnostics are collected.
|
|
152
|
+
* - `enableSshAzureADLogin`: Option to enable Azure AD login for SSH on the VMs.
|
|
153
|
+
*
|
|
154
|
+
* Example usage:
|
|
155
|
+
* ```typescript
|
|
156
|
+
* const linuxCluster = new LinuxCluster(this, 'MyLinuxCluster', {
|
|
157
|
+
* resourceGroup: myResourceGroup,
|
|
158
|
+
* name: 'myCluster',
|
|
159
|
+
* sku: 'Standard_DS1_v2',
|
|
160
|
+
* adminUsername: 'adminuser',
|
|
161
|
+
* adminSshKey: [{ publicKey: 'ssh-rsa AAAAB...' }],
|
|
162
|
+
* sourceImageReference: { publisher: 'Canonical', offer: 'UbuntuServer', sku: '18.04-LTS', version: 'latest' },
|
|
163
|
+
* osDisk: { caching: 'ReadWrite', storageAccountType: 'Standard_LRS' },
|
|
164
|
+
* subnet: mySubnet,
|
|
165
|
+
* instances: 3,
|
|
166
|
+
* tags: { environment: 'production' }
|
|
167
|
+
* });
|
|
168
|
+
* ```
|
|
169
|
+
* This class initializes a Linux VM Scale Set with the specified configurations, handling details like VM creation,
|
|
170
|
+
* scaling policies, network setup, OS installation, and security settings, providing a robust and scalable infrastructure
|
|
171
|
+
* for hosting cloud-based Linux applications.
|
|
126
172
|
*/
|
|
127
173
|
constructor(scope: Construct, id: string, props: LinuxClusterProps);
|
|
128
174
|
}
|
|
@@ -224,11 +270,55 @@ export declare class WindowsCluster extends AzureResource {
|
|
|
224
270
|
id: string;
|
|
225
271
|
readonly name: string;
|
|
226
272
|
/**
|
|
227
|
-
*
|
|
273
|
+
* Represents a Windows Virtual Machine Scale Set (VMSS) within Microsoft Azure.
|
|
274
|
+
*
|
|
275
|
+
* This class provides a way to deploy and manage a scale set of Windows virtual machines, allowing for configurations such as
|
|
276
|
+
* auto-scaling, high availability, and simplified patch management. It supports detailed specifications including
|
|
277
|
+
* VM size, the operating system image, network settings, and administrative credentials. Additional capabilities include
|
|
278
|
+
* custom data scripts, automatic OS updates, and optional features like managed identity and boot diagnostics.
|
|
279
|
+
*
|
|
280
|
+
* @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
|
|
281
|
+
* @param id - The unique identifier for this instance of the Windows cluster, used within the scope for reference.
|
|
282
|
+
* @param props - Configuration properties for the Windows VM Scale Set, derived from the WindowsClusterProps interface. These include:
|
|
283
|
+
* - `location`: The geographic location where the scale set will be hosted (e.g., "eastus").
|
|
284
|
+
* - `name`: The name of the scale set, which must be unique within the resource group.
|
|
285
|
+
* - `resourceGroup`: The ResourceGroup within which the scale set will be created.
|
|
286
|
+
* - `sku`: The size specification of the VMs (e.g., "Standard_B2s").
|
|
287
|
+
* - `adminUsername`: The administrator username for the VMs.
|
|
288
|
+
* - `adminPassword`: The administrator password for the VMs.
|
|
289
|
+
* - `zones`: The availability zones for deploying the VMs.
|
|
290
|
+
* - `instances`: The number of VM instances in the scale set.
|
|
291
|
+
* - `sourceImageReference`: A reference to the specific Windows image to be used for the VMs.
|
|
292
|
+
* - `sourceImageId`: The identifier for a custom image to use for the VMs.
|
|
293
|
+
* - `tags`: Key-value pairs for resource tagging.
|
|
294
|
+
* - `osDisk`: Configuration for the VMs' operating system disks.
|
|
295
|
+
* - `subnet`: Specifies the subnet within which the VMs will be placed.
|
|
296
|
+
* - `publicIPAddress`: Method used to allocate public IP addresses to the VMs.
|
|
297
|
+
* - `customData`: Scripts or commands passed to the VMs at startup.
|
|
298
|
+
* - `upgradePolicyMode`: The upgrade policy mode for the VMSS.
|
|
299
|
+
* - `overprovision`: Specifies if the VMSS should be overprovisioned to maintain capacity during updates.
|
|
300
|
+
* - `scaleInPolicy`: The scale-in policy for the VMSS.
|
|
301
|
+
* - `bootDiagnosticsStorageURI`: URI for storage where VMSS boot diagnostics are collected.
|
|
302
|
+
* - `enableSshAzureADLogin`: Option to enable Azure AD login for SSH on the VMs.
|
|
228
303
|
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
304
|
+
* Example usage:
|
|
305
|
+
* ```typescript
|
|
306
|
+
* const windowsCluster = new WindowsCluster(this, 'MyWindowsCluster', {
|
|
307
|
+
* resourceGroup: myResourceGroup,
|
|
308
|
+
* name: 'myCluster',
|
|
309
|
+
* sku: 'Standard_DS1_v2',
|
|
310
|
+
* adminUsername: 'adminuser',
|
|
311
|
+
* adminPassword: 'securepassword123',
|
|
312
|
+
* sourceImageReference: { publisher: 'MicrosoftWindowsServer', offer: 'WindowsServer', sku: '2019-Datacenter', version: 'latest' },
|
|
313
|
+
* osDisk: { caching: 'ReadWrite', storageAccountType: 'Standard_LRS' },
|
|
314
|
+
* subnet: mySubnet,
|
|
315
|
+
* instances: 3,
|
|
316
|
+
* tags: { environment: 'production' }
|
|
317
|
+
* });
|
|
318
|
+
* ```
|
|
319
|
+
* This class initializes a Windows VM Scale Set with the specified configurations, handling details like VM creation,
|
|
320
|
+
* scaling policies, network setup, OS installation, and security settings, providing a robust and scalable infrastructure
|
|
321
|
+
* for hosting cloud-based Windows applications.
|
|
232
322
|
*/
|
|
233
323
|
constructor(scope: Construct, id: string, props: WindowsClusterProps);
|
|
234
324
|
}
|