From 8ce3feb4b1cce03993fc2e61da1180120abd3835 Mon Sep 17 00:00:00 2001 From: Daniel Muehlbachler-Pietrzykowski Date: Mon, 25 Nov 2024 13:11:04 +0100 Subject: [PATCH] feat: update pulumi-terraform-bridge --- .../cmd/pulumi-resource-proxmoxve/main.go | 2 +- .../schema-embed.json | 2 +- .../cmd/pulumi-resource-proxmoxve/schema.json | 18 +-- provider/cmd/pulumi-tfgen-proxmoxve/main.go | 2 +- provider/go.mod | 3 +- provider/go.sum | 14 -- provider/resources.go | 2 +- sdk/dotnet/Acl.cs | 2 +- sdk/dotnet/HA/Haresource.cs | 2 +- sdk/dotnet/Network/FirewallAlias.cs | 4 +- sdk/dotnet/Network/FirewallIPSet.cs | 2 +- sdk/dotnet/Network/FirewallSecurityGroup.cs | 2 +- sdk/dotnet/Permission/Group.cs | 2 +- sdk/dotnet/Permission/Pool.cs | 2 +- sdk/dotnet/Permission/User.cs | 2 +- sdk/dotnet/User/Token.cs | 4 +- sdk/go/proxmoxve/acl.go | 2 +- sdk/go/proxmoxve/ha/haresource.go | 2 +- sdk/go/proxmoxve/network/firewallAlias.go | 4 +- sdk/go/proxmoxve/network/firewallIPSet.go | 2 +- .../network/firewallSecurityGroup.go | 2 +- sdk/go/proxmoxve/permission/group.go | 2 +- sdk/go/proxmoxve/permission/pool.go | 2 +- sdk/go/proxmoxve/permission/user.go | 2 +- sdk/go/proxmoxve/user/token.go | 4 +- .../io/muehlbachler/pulumi/proxmoxve/Acl.java | 2 +- .../pulumi/proxmoxve/HA/Haresource.java | 2 +- .../pulumi/proxmoxve/User/Token.java | 4 +- .../proxmoxve/network/FirewallAlias.java | 4 +- .../proxmoxve/network/FirewallIPSet.java | 2 +- .../network/FirewallSecurityGroup.java | 2 +- .../pulumi/proxmoxve/permission/Group.java | 2 +- .../pulumi/proxmoxve/permission/Pool.java | 2 +- .../pulumi/proxmoxve/permission/User.java | 2 +- sdk/nodejs/.pnp.cjs | 138 +++++++++--------- sdk/nodejs/.yarn/install-state.gz | Bin 227109 -> 225381 bytes sdk/nodejs/acl.ts | 2 +- sdk/nodejs/ha/haresource.ts | 2 +- sdk/nodejs/network/firewallAlias.ts | 4 +- sdk/nodejs/network/firewallIPSet.ts | 2 +- sdk/nodejs/network/firewallSecurityGroup.ts | 2 +- sdk/nodejs/permission/group.ts | 2 +- sdk/nodejs/permission/pool.ts | 2 +- sdk/nodejs/permission/user.ts | 2 +- sdk/nodejs/user/token.ts | 4 +- sdk/python/pulumi_proxmoxve/acl.py | 4 +- sdk/python/pulumi_proxmoxve/ha/ha_resource.py | 4 +- .../network/firewall_alias.py | 8 +- .../network/firewall_ip_set.py | 4 +- .../network/firewall_security_group.py | 4 +- .../pulumi_proxmoxve/permission/group.py | 4 +- .../pulumi_proxmoxve/permission/pool.py | 4 +- .../pulumi_proxmoxve/permission/user.py | 4 +- sdk/python/pulumi_proxmoxve/user/token.py | 8 +- 54 files changed, 150 insertions(+), 163 deletions(-) diff --git a/provider/cmd/pulumi-resource-proxmoxve/main.go b/provider/cmd/pulumi-resource-proxmoxve/main.go index a1b1a747..d9498f16 100644 --- a/provider/cmd/pulumi-resource-proxmoxve/main.go +++ b/provider/cmd/pulumi-resource-proxmoxve/main.go @@ -21,7 +21,7 @@ import ( _ "embed" proxmoxve "github.com/muhlba91/pulumi-proxmoxve/provider" - "github.com/pulumi/pulumi-terraform-bridge/pf/tfbridge" + "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge" ) //go:embed schema-embed.json diff --git a/provider/cmd/pulumi-resource-proxmoxve/schema-embed.json b/provider/cmd/pulumi-resource-proxmoxve/schema-embed.json index 9392a85e..60a5380d 100644 --- a/provider/cmd/pulumi-resource-proxmoxve/schema-embed.json +++ b/provider/cmd/pulumi-resource-proxmoxve/schema-embed.json @@ -1 +1 @@ -{"name":"proxmoxve","displayName":"Proxmox Virtual Environment (Proxmox VE)","version":"6.16.0-alpha.1732164157+eea5eaed.dirty","description":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","keywords":["pulumi","proxmox","proxmoxve"],"homepage":"https://github.com/muhlba91/pulumi-proxmoxve","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`proxmox` Terraform Provider](https://github.com/bpg/terraform-provider-proxmox).","repository":"https://github.com/muhlba91/pulumi-proxmoxve","logoUrl":"https://raw.githubusercontent.com/muhlba91/pulumi-proxmoxve/main/assets/proxmox-logo.png","pluginDownloadURL":"github://api.github.com/muhlba91/pulumi-proxmoxve","publisher":"Daniel Muehlbachler-Pietrzykowski","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"proxmoxve":"ProxmoxVE"},"compatibility":"tfbridge20"},"go":{"importBasePath":"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve","generateResourceContainerTypes":true,"generateExtraInputTypes":true},"java":{"basePackage":"io.muehlbachler.pulumi","buildFiles":"","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"packageName":"@muhlba91/pulumi-proxmoxve","packageDescription":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","dependencies":{"@pulumi/pulumi":"^3.0.0"},"devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true},"python":{"packageName":"pulumi_proxmoxve","requires":{"pulumi":"\u003e=3.0.0,\u003c4.0.0"},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","compatibility":"tfbridge20","pyproject":{}}},"config":{"variables":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:config/ssh:ssh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}}},"types":{"proxmoxve:Acme/getAccountAccount:getAccountAccount":{"properties":{"contacts":{"type":"array","items":{"type":"string"},"description":"An array of contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the account creation.\n"},"status":{"type":"string","description":"The status of the account. Can be one of `valid`, `deactivated` or `revoked`.\n"}},"type":"object","required":["contacts","createdAt","status"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin":{"properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"type":{"type":"string","description":"ACME challenge type (dns, standalone).\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object","required":["api","data","digest","plugin","type","validationDelay"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:CT/ContainerClone:ContainerClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the `node_name` argument).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source container.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:CT/ContainerConsole:ContainerConsole":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the console device (defaults\nto `true`).\n"},"ttyCount":{"type":"integer","description":"The number of available TTY (defaults to `2`).\n"},"type":{"type":"string","description":"The console mode (defaults to `tty`).\n"}},"type":"object"},"proxmoxve:CT/ContainerCpu:ContainerCpu":{"properties":{"architecture":{"type":"string","description":"The CPU architecture (defaults to `amd64`).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to `1`).\n"},"units":{"type":"integer","description":"The CPU units (defaults to `1024`).\n"}},"type":"object"},"proxmoxve:CT/ContainerDisk:ContainerDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ndisk in (defaults to `local`).\n","willReplaceOnChanges":true},"size":{"type":"integer","description":"The size of the root filesystem in gigabytes (defaults\nto `4`). Requires `datastore_id` to be set.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerFeatures:ContainerFeatures":{"properties":{"fuse":{"type":"boolean","description":"Whether the container supports FUSE mounts (defaults\nto `false`)\n"},"keyctl":{"type":"boolean","description":"Whether the container supports `keyctl()` system\ncall (defaults to `false`)\n"},"mounts":{"type":"array","items":{"type":"string"},"description":"List of allowed mount types (`cifs` or `nfs`)\n"},"nesting":{"type":"boolean","description":"Whether the container is nested (defaults\nto `false`)\n"}},"type":"object"},"proxmoxve:CT/ContainerInitialization:ContainerInitialization":{"properties":{"dns":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns","description":"The DNS configuration.\n"},"hostname":{"type":"string","description":"The hostname.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"userAccount":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount","description":"The user account configuration.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server. The `server` attribute is\ndeprecated and will be removed in a future release. Please use\nthe `servers` attribute instead.\n","deprecationMessage":"The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6","description":"The IPv4 configuration.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address (use `dhcp` for auto-discovery).\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address (use `dhcp` for auto-discovery).\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys for the root account.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The password for the root account.\n","secret":true,"willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerMemory:ContainerMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults\nto `512`).\n"},"swap":{"type":"integer","description":"The swap size in megabytes (defaults to `0`).\n"}},"type":"object"},"proxmoxve:CT/ContainerMountPoint:ContainerMountPoint":{"properties":{"acl":{"type":"boolean","description":"Explicitly enable or disable ACL support.\n"},"backup":{"type":"boolean","description":"Whether to include the mount point in backups (only\nused for volume mount points, defaults to `false`).\n"},"mountOptions":{"type":"array","items":{"type":"string"},"description":"List of extra mount options.\n"},"path":{"type":"string","description":"Path to the mount point as seen from inside the\ncontainer.\n"},"quota":{"type":"boolean","description":"Enable user quotas inside the container (not supported\nwith ZFS subvolumes).\n"},"readOnly":{"type":"boolean","description":"Read-only mount point.\n"},"replicate":{"type":"boolean","description":"Will include this volume to a storage replica job.\n"},"shared":{"type":"boolean","description":"Mark this non-volume mount point as available on all\nnodes.\n"},"size":{"type":"string","description":"Volume size (only for volume mount points).\nCan be specified with a unit suffix (e.g. `10G`).\n"},"volume":{"type":"string","description":"Volume, device or directory to mount into the\ncontainer.\n"}},"type":"object","required":["path","volume"]},"proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults\nto `vmbr0`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults\nto `true`).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be\nused (defaults to `false`).\n"},"macAddress":{"type":"string","description":"The MAC address.\n"},"mtu":{"type":"integer","description":"Maximum transfer unit of the interface. Cannot be\nlarger than the bridge's MTU.\n"},"name":{"type":"string","description":"The network interface name.\n"},"rateLimit":{"type":"number","description":"The rate limit in megabytes per second.\n"},"vlanId":{"type":"integer","description":"The VLAN identifier.\n"}},"type":"object","required":["name"]},"proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem":{"properties":{"templateFileId":{"type":"string","description":"The identifier for an OS template file.\nThe ID format is `\u003cdatastore_id\u003e:\u003ccontent_type\u003e/\u003cfile_name\u003e`, for example `local:iso/jammy-server-cloudimg-amd64.tar.gz`.\nCan be also taken from `proxmoxve.Download.File` resource, or from the output of `pvesm list \u003cstorage\u003e`.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type (defaults to `unmanaged`).\n"}},"type":"object","required":["templateFileId"]},"proxmoxve:CT/ContainerStartup:ContainerStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is started.\n"}},"type":"object"},"proxmoxve:Cluster/OptionsNextId:OptionsNextId":{"properties":{"lower":{"type":"integer","description":"The minimum number for the next free VM ID. Must be higher or equal to 100\n"},"upper":{"type":"integer","description":"The maximum number for the next free VM ID. Must be less or equal to 999999999\n"}},"type":"object"},"proxmoxve:Cluster/OptionsNotify:OptionsNotify":{"properties":{"haFencingMode":{"type":"string","description":"Cluster-wide notification settings for the HA fencing mode. Must be `always` | `never`.\n"},"haFencingTarget":{"type":"string","description":"Cluster-wide notification settings for the HA fencing target.\n"},"packageUpdates":{"type":"string","description":"Cluster-wide notification settings for package updates. Must be `auto` | `always` | `never`.\n"},"packageUpdatesTarget":{"type":"string","description":"Cluster-wide notification settings for the package updates target.\n"},"replication":{"type":"string","description":"Cluster-wide notification settings for replication. Must be `always` | `never`.\n"},"replicationTarget":{"type":"string","description":"Cluster-wide notification settings for the replication target.\n"}},"type":"object"},"proxmoxve:Hardware/getMappingsCheck:getMappingsCheck":{"properties":{"mappingId":{"type":"string","description":"The corresponding hardware mapping ID of the node check diagnostic entry.\n"},"message":{"type":"string","description":"The message of the node check diagnostic entry.\n"},"severity":{"type":"string","description":"The severity of the node check diagnostic entry.\n"}},"type":"object","required":["mappingId","message","severity"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/PciMap:PciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"}},"type":"object","required":["id","node","path"]},"proxmoxve:Hardware/mapping/UsbMap:UsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map. For hardware mappings of type USB the path is optional and indicates that the device is mapped through the device ID instead of ports.\n"}},"type":"object","required":["id","node"]},"proxmoxve:Hardware/mapping/getPciMap:getPciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID attribute of the map.Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set.\n"}},"type":"object","required":["comment","id","iommuGroup","node","path","subsystemId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/getUsbMap:getUsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"}},"type":"object","required":["comment","id","node","path"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr":{"properties":{"comment":{"type":"string","description":"Arbitrary string annotation.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Network/IP specification in CIDR format.\n","willReplaceOnChanges":true},"nomatch":{"type":"boolean","description":"Entries marked as `nomatch` are skipped as if those\nwere not added to the set.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit":{"properties":{"burst":{"type":"integer","description":"Initial burst of packages which will always get\nlogged before the rate is applied (defaults to `5`).\n"},"enabled":{"type":"boolean","description":"Enable or disable the log rate limit.\n"},"rate":{"type":"string","description":"Frequency with which the burst bucket gets refilled\n(defaults to `1/second`).\n"}},"type":"object"},"proxmoxve:Network/FirewallRulesRule:FirewallRulesRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can\nrefer to a single IP address, an IP set ('+ipsetname') or an IP\nalias definition. You can also specify an address range\nlike `20.34.101.207-201.3.9.99`, or a list of IP addresses and\nnetworks (entries are separated by comma). Please do not mix IPv4\nand IPv6 addresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined\nin `/etc/services`. Port ranges can be specified with '\\d+:\\d+', for\nexample `80:85`, and you can use comma separated list to match\nseveral ports or ranges.\n"},"enabled":{"type":"boolean","description":"Enable this rule. Defaults to `true`.\n"},"iface":{"type":"string","description":"Network interface name. You have to use network\nconfiguration key names for VMs and containers ('net\\d+'). Host\nrelated rules can use arbitrary strings.\n"},"log":{"type":"string","description":"Log level for this rule (`emerg`, `alert`, `crit`,\n`err`, `warning`, `notice`, `info`, `debug`, `nolog`).\n"},"macro":{"type":"string","description":"Macro name. Use predefined standard macro\nfrom \u003chttps://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions\u003e\n"},"pos":{"type":"integer","description":"Position of the rule in the list.\n"},"proto":{"type":"string","description":"Restrict packet protocol. You can use protocol\nnames as defined in '/etc/protocols'.\n"},"securityGroup":{"type":"string","description":"Security group name.\n","willReplaceOnChanges":true},"source":{"type":"string","description":"Restrict packet source address. This can refer\nto a single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range\nlike `20.34.101.207-201.3.9.99`, or a list of IP addresses and\nnetworks (entries are separated by comma). Please do not mix IPv4\nand IPv6 addresses inside such lists.\n"},"sport":{"type":"string","description":"Restrict TCP/UDP source port. You can use\nservice names or simple numbers (0-65535), as defined\nin `/etc/services`. Port ranges can be specified with '\\d+:\\d+', for\nexample `80:85`, and you can use comma separated list to match\nseveral ports or ranges.\n- a security group insertion block, which includes the following arguments:\n"},"type":{"type":"string","description":"Rule type (`in`, `out`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can refer to\na single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range like\n`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks\n(entries are separated by comma). Please do not mix IPv4 and IPv6\naddresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined in '/etc/\nservices'. Port ranges can be specified with '\\d+:\\d+', for example\n`80:85`, and you can use comma separated list to match several ports or\nranges.\n"},"enabled":{"type":"boolean","description":"Enable rule\n"},"iface":{"type":"string","description":"Network interface name. You have to use network\nconfiguration key names for VMs and containers ('net\\d+'). Host related\nrules can use arbitrary strings.\n"},"log":{"type":"string","description":"Log level for this rule (`emerg`, `alert`, `crit`,\n`err`, `warning`, `notice`, `info`, `debug`, `nolog`).\n"},"macro":{"type":"string","description":"Macro name. Use predefined standard macro\nfrom \u003chttps://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions\u003e\n"},"pos":{"type":"integer","description":"Position of the rule in the list.\n"},"proto":{"type":"string","description":"Restrict packet protocol. You can use protocol names\nas defined in '/etc/protocols'.\n"},"securityGroup":{"type":"string","description":"Security group name\n","willReplaceOnChanges":true},"source":{"type":"string","description":"Restrict packet source address. This can refer\nto a single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range like\n`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks (\nentries are separated by comma). Please do not mix IPv4 and IPv6\naddresses inside such lists.\n"},"sport":{"type":"string","description":"Restrict TCP/UDP source port. You can use\nservice names or simple numbers (0-65535), as defined in '/etc/\nservices'. Port ranges can be specified with '\\d+:\\d+', for example\n`80:85`, and you can use comma separated list to match several ports or\nranges.\n"},"type":{"type":"string","description":"Rule type (`in`, `out`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/getHostsEntry:getHostsEntry":{"properties":{"address":{"type":"string","description":"The address\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames associated with each of the IP addresses.\n"}},"type":"object","required":["address","hostnames"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/GroupAcl:GroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/PoolMember:PoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["datastoreId","id","nodeName","type","vmId"]}}},"proxmoxve:Permission/UserAcl:UserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/getGroupAcl:getGroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getPoolMember:getPoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","required":["datastoreId","id","nodeName","type","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getUserAcl:getUserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Storage/FileSourceFile:FileSourceFile":{"properties":{"changed":{"type":"boolean","description":"Whether the source file has changed since the last run\n","willReplaceOnChanges":true},"checksum":{"type":"string","description":"The SHA256 checksum of the source file.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name to use instead of the source file\nname. Useful when the source file does not have a valid file extension,\nfor example when the source file is a URL referencing a `.qcow2` image.\n","willReplaceOnChanges":true},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step for\nHTTPS sources (defaults to `false`).\n","willReplaceOnChanges":true},"minTls":{"type":"string","description":"The minimum required TLS version for HTTPS\nsources. \"Supported values: `1.0|1.1|1.2|1.3` (defaults to `1.3`).\n","willReplaceOnChanges":true},"path":{"type":"string","description":"A path to a local file or a URL.\n","willReplaceOnChanges":true}},"type":"object","required":["path"]},"proxmoxve:Storage/FileSourceRaw:FileSourceRaw":{"properties":{"data":{"type":"string","description":"The raw data.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name.\n","willReplaceOnChanges":true},"resize":{"type":"integer","description":"The number of bytes to resize the file to.\n","willReplaceOnChanges":true}},"type":"object","required":["data","fileName"]},"proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","retries"]}}},"proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based. For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture `\u003caarch64 | x86_64\u003e` (defaults to the host). Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to `1`).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags. Use `+FLAG` to enable, `-FLAG` to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to `0` which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to `false`).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only `vnc` is available. Migration with VNC clipboard is not supported by Proxmox.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type (defaults to `std`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the QEMU agent (defaults\nto `false`).\n"},"timeout":{"type":"string","description":"The maximum amount of time to wait for data from\nthe QEMU agent to become available ( defaults to `15m`).\n"},"trim":{"type":"boolean","description":"Whether to enable the FSTRIM feature in the QEMU agent\n(defaults to `false`).\n"},"type":{"type":"string","description":"The QEMU agent interface type (defaults to `virtio`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `intel-hda`).\n- `AC97` - Intel 82801AA AC97 Audio.\n- `ich9-intel-hda` - Intel HD Audio Controller (ich9).\n- `intel-hda` - Intel HD Audio.\n"},"driver":{"type":"string","description":"The driver (defaults to `spice`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the audio device (defaults\nto `true`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the CDROM drive (defaults\nto `false`).\n"},"fileId":{"type":"string","description":"A file ID for an ISO file (defaults to `cdrom` as\nin the physical drive). Use `none` to leave the CDROM drive empty.\n"},"interface":{"type":"string","description":"A hardware interface to connect CDROM drive to,\nmust be `ideN` (defaults to `ide3`). Note that `q35` machine type only\nsupports `ide0` and `ide2`.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineClone:VirtualMachineClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"full":{"type":"boolean","description":"Full or linked clone (defaults to `true`).\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the `node_name` argument).\n","willReplaceOnChanges":true},"retries":{"type":"integer","description":"Number of retries in Proxmox for clone vm.\nSometimes Proxmox errors with timeout when creating multiple clones at\nonce.\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source VM.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The\nvalue is a list of CPU IDs, separated by commas. The CPU IDs are zero-based.\nFor example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four\nCPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture (defaults to `x86_64`).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to `1`).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"The CPU flags.\n- `+aes`/`-aes` - Activate AES instruction set for HW acceleration.\n- `+amd-no-ssb`/`-amd-no-ssb` - Notifies guest OS that host is not\nvulnerable for Spectre on AMD CPUs.\n- `+amd-ssbd`/`-amd-ssbd` - Improves Spectre mitigation performance with\nAMD CPUs, best used with \"virt-ssbd\".\n- `+hv-evmcs`/`-hv-evmcs` - Improve performance for nested\nvirtualization (only supported on Intel CPUs).\n- `+hv-tlbflush`/`-hv-tlbflush` - Improve performance in overcommitted\nWindows guests (may lead to guest BSOD on old CPUs).\n- `+ibpb`/`-ibpb` - Allows improved Spectre mitigation on AMD CPUs.\n- `+md-clear`/`-md-clear` - Required to let the guest OS know if MDS is\nmitigated correctly.\n- `+pcid`/`-pcid` - Meltdown fix cost reduction on Westmere, Sandy- and\nIvy Bridge Intel CPUs.\n- `+pdpe1gb`/`-pdpe1gb` - Allows guest OS to use 1 GB size pages, if\nhost HW supports it.\n- `+spec-ctrl`/`-spec-ctrl` - Allows improved Spectre mitigation with\nIntel CPUs.\n- `+ssbd`/`-ssbd` - Protection for \"Speculative Store Bypass\" for Intel\nmodels.\n- `+virt-ssbd`/`-virt-ssbd` - Basis for \"Speculative Store Bypass\"\nprotection for AMD models.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults\nto `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage, `0...128`. (defaults to `0` -- no limit).\n"},"numa":{"type":"boolean","description":"Enable/disable NUMA. (default to `false`)\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"The emulated CPU type, it's recommended to\nuse `x86-64-v2-AES` (defaults to `qemu64`).\n"},"units":{"type":"integer","description":"The CPU units (defaults to `1024`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk":{"properties":{"aio":{"type":"string","description":"The disk AIO mode (defaults to `io_uring`).\n"},"backup":{"type":"boolean","description":"Whether the drive should be included when making backups (defaults to `true`).\n"},"cache":{"type":"string","description":"The cache type (defaults to `none`).\n"},"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"discard":{"type":"string","description":"Whether to pass discard/trim requests to the\nunderlying storage. Supported values are `on`/`ignore` (defaults\nto `ignore`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to `qcow2`).\n"},"fileId":{"type":"string","description":"The file ID for a disk image. The ID format is\n`\u003cdatastore_id\u003e:\u003ccontent_type\u003e/\u003cfile_name\u003e`, for example `local:iso/centos8.img`. Can be also taken from\n`proxmoxve.Download.File` resource.\n","willReplaceOnChanges":true},"interface":{"type":"string","description":"The disk interface for Proxmox, currently `scsi`,\n`sata` and `virtio` interfaces are supported. Append the disk index at\nthe end, for example, `virtio0` for the first virtio disk, `virtio1` for\nthe second, etc.\n"},"iothread":{"type":"boolean","description":"Whether to use iothreads for this disk (defaults\nto `false`).\n"},"pathInDatastore":{"type":"string","description":"The in-datastore path to the disk image.\n***Experimental.***Use to attach another VM's disks,\nor (as root only) host's filesystem paths (`datastore_id` empty string).\nSee \"*Example: Attached disks*\".\n"},"replicate":{"type":"boolean","description":"Whether the drive should be considered for replication jobs (defaults to `true`).\n"},"serial":{"type":"string","description":"The serial number of the disk, up to 20 bytes long.\n"},"size":{"type":"integer","description":"The disk size in gigabytes (defaults to `8`).\n"},"speed":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed","description":"The speed limits.\n"},"ssd":{"type":"boolean","description":"Whether to use an SSD emulation option for this disk (\ndefaults to `false`). Note that SSD emulation is not supported on VirtIO\nBlock drives.\n"}},"type":"object","required":["interface"],"language":{"nodejs":{"requiredOutputs":["fileFormat","interface","pathInDatastore"]}}},"proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed":{"properties":{"iopsRead":{"type":"integer","description":"The maximum read I/O in operations per second.\n"},"iopsReadBurstable":{"type":"integer","description":"The maximum unthrottled read I/O pool in operations per second.\n"},"iopsWrite":{"type":"integer","description":"The maximum write I/O in operations per second.\n"},"iopsWriteBurstable":{"type":"integer","description":"The maximum unthrottled write I/O pool in operations per second.\n"},"read":{"type":"integer","description":"The maximum read speed in megabytes per second.\n"},"readBurstable":{"type":"integer","description":"The maximum burstable read speed in\nmegabytes per second.\n"},"write":{"type":"integer","description":"The maximum write speed in megabytes per second.\n"},"writeBurstable":{"type":"integer","description":"The maximum burstable write speed in\nmegabytes per second.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to `raw`).\n","willReplaceOnChanges":true},"preEnrolledKeys":{"type":"boolean","description":"Use am EFI vars template with\ndistribution-specific and Microsoft Standard keys enrolled, if used with\nEFI type=`4m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults\nto `false`).\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Size and type of the OVMF EFI disk. `4m` is newer and\nrecommended, and required for Secure Boot. For backwards compatibility\nuse `2m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults\nto `2m`).\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileFormat"]}}},"proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci":{"properties":{"device":{"type":"string","description":"The PCI device name for Proxmox, in form\nof `hostpciX` where `X` is a sequential number from 0 to 15.\n"},"id":{"type":"string","description":"The PCI device ID. This parameter is not compatible\nwith `api_token` and requires the root `username` and `password`\nconfigured in the proxmox provider. Use either this or `mapping`.\n"},"mapping":{"type":"string","description":"The resource mapping name of the device, for\nexample gpu. Use either this or `id`.\n"},"mdev":{"type":"string","description":"The mediated device ID to use.\n"},"pcie":{"type":"boolean","description":"Tells Proxmox to use a PCIe or PCI port. Some\nguests/device combination require PCIe rather than PCI. PCIe is only\navailable for q35 machine types.\n"},"romFile":{"type":"string","description":"A path to a ROM file for the device to use. This\nis a relative path under `/usr/share/kvm/`.\n"},"rombar":{"type":"boolean","description":"Makes the firmware ROM visible for the VM (defaults\nto `true`).\n"},"xvga":{"type":"boolean","description":"Marks the PCI(e) device as the primary GPU of the VM.\nWith this enabled the `vga` configuration argument will be ignored.\n"}},"type":"object","required":["device"]},"proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ncloud-init disk in (defaults to `local-lvm`).\n"},"dns":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns","description":"The DNS configuration.\n"},"interface":{"type":"string","description":"The hardware interface to connect the cloud-init\nimage to. Must be one of `ide0..3`, `sata0..5`, `scsi0..30`. Will be\ndetected if the setting is missing but a cloud-init image is present,\notherwise defaults to `ide2`.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"metaDataFileId":{"type":"string","description":"The identifier for a file containing\nall meta data passed to the VM via cloud-init.\n","willReplaceOnChanges":true},"networkDataFileId":{"type":"string","description":"The identifier for a file containing\nnetwork configuration data passed to the VM via cloud-init (conflicts\nwith `ip_config`).\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The cloud-init configuration format\n","willReplaceOnChanges":true},"upgrade":{"type":"boolean","description":"Whether to do an automatic package upgrade after the first boot\n","deprecationMessage":"The `upgrade` attribute is deprecated and will be removed in a future release."},"userAccount":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount","description":"The user account configuration (conflicts\nwith `user_data_file_id`).\n","willReplaceOnChanges":true},"userDataFileId":{"type":"string","description":"The identifier for a file containing\ncustom user data (conflicts with `user_account`).\n","willReplaceOnChanges":true},"vendorDataFileId":{"type":"string","description":"The identifier for a file containing\nall vendor data passed to the VM via cloud-init.\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["upgrade"]}}},"proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server. The `server` attribute is\ndeprecated and will be removed in a future release. Please use the\n`servers` attribute instead.\n","deprecationMessage":"The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6","description":"The IPv6 configuration.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address in CIDR notation\n(e.g. 192.168.2.2/24). Alternatively, set this to `dhcp` for\nautodiscovery.\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address in CIDR notation\n(e.g. fd1c:000:0000::0000:000:7334/64). Alternatively, set this\nto `dhcp` for autodiscovery.\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The SSH password.\n","secret":true,"willReplaceOnChanges":true},"username":{"type":"string","description":"The SSH username.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults to `512`).\n"},"floating":{"type":"integer","description":"The floating memory in megabytes. The default is `0`, which disables \"ballooning device\" for the VM.\nPlease note that Proxmox has ballooning enabled by default. To enable it, set `floating` to the same value as `dedicated`.\nSee [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_memory) section 10.2.6 for more information.\n"},"hugepages":{"type":"string","description":"Enable/disable hugepages memory (defaults to disable).\n"},"keepHugepages":{"type":"boolean","description":"Keep hugepages memory after the VM is stopped (defaults to `false`).\n\nSettings `hugepages` and `keep_hugepages` are only allowed for `root@pam` authenticated user.\nAnd required `cpu.numa` to be enabled.\n"},"shared":{"type":"integer","description":"The shared memory in megabytes (defaults to `0`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults to `vmbr0`).\n"},"disconnected":{"type":"boolean","description":"Whether to disconnect the network device from the network (defaults to `false`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults to `true`).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be used (defaults to `false`).\n"},"macAddress":{"type":"string","description":"The MAC address.\n"},"model":{"type":"string","description":"The network device model (defaults to `virtio`).\n"},"mtu":{"type":"integer","description":"Force MTU, for VirtIO only. Set to 1 to use the bridge MTU. Cannot be larger than the bridge MTU.\n"},"queues":{"type":"integer","description":"The number of queues for VirtIO (1..64).\n"},"rateLimit":{"type":"number","description":"The rate limit in megabytes per second.\n"},"trunks":{"type":"string","description":"String containing a `;` separated list of VLAN trunks\n(\"10;20;30\"). Note that the VLAN-aware feature need to be enabled on the PVE\nLinux Bridge to use trunks.\n"},"vlanId":{"type":"integer","description":"The VLAN identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["macAddress"]}}},"proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma":{"properties":{"cpus":{"type":"string","description":"The CPU cores to assign to the NUMA node (format is `0-7;16-31`).\n"},"device":{"type":"string","description":"The NUMA device name for Proxmox, in form\nof `numaX` where `X` is a sequential number from 0 to 7.\n"},"hostnodes":{"type":"string","description":"The NUMA host nodes.\n"},"memory":{"type":"integer","description":"The memory in megabytes to assign to the NUMA node.\n"},"policy":{"type":"string","description":"The NUMA policy (defaults to `preferred`).\n"}},"type":"object","required":["cpus","device","memory"]},"proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem":{"properties":{"type":{"type":"string","description":"The type (defaults to `other`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `socket`).\n- `/dev/*` - A host serial device.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios":{"properties":{"family":{"type":"string","description":"The family string.\n"},"manufacturer":{"type":"string","description":"The manufacturer.\n"},"product":{"type":"string","description":"The product ID.\n"},"serial":{"type":"string","description":"The serial number.\n"},"sku":{"type":"string","description":"The SKU number.\n"},"uuid":{"type":"string","description":"The UUID (defaults to randomly generated UUID).\n"},"version":{"type":"string","description":"The version.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["uuid"]}}},"proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is started.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"version":{"type":"string","description":"TPM state device version. Can be `v1.2` or `v2.0`.\n(defaults to `v2.0`).\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb":{"properties":{"host":{"type":"string","description":"The Host USB device or port or the value `spice`. Use either this or `mapping`.\n"},"mapping":{"type":"string","description":"The cluster-wide resource mapping name of the device, for example \"usbdevice\". Use either this or `host`.\n"},"usb3":{"type":"boolean","description":"Makes the USB device a USB3 device for the VM\n(defaults to `false`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineVga:VirtualMachineVga":{"properties":{"clipboard":{"type":"string","description":"Enable VNC clipboard by setting to `vnc`. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (defaults to `16`).\n"},"type":{"type":"string","description":"The VGA type (defaults to `std`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog":{"properties":{"action":{"type":"string","description":"The action to perform if after activation the guest fails to poll the watchdog in time (defaults to `none`).\n"},"enabled":{"type":"boolean","description":"Whether the watchdog is enabled (defaults to `false`).\n"},"model":{"type":"string","description":"The watchdog type to emulate (defaults to `i6300esb`).\n"}},"type":"object"},"proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter":{"properties":{"name":{"type":"string","description":"Name of the VM attribute to filter on. One of [`name`, `template`, `status`, `node_name`]\n"},"regex":{"type":"boolean","description":"Treat values as regex patterns\n"},"values":{"type":"array","items":{"type":"string"},"description":"List of values to pass the filter. VM's attribute should match at least one value in the list.\n"}},"type":"object","required":["name","values"]},"proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm":{"properties":{"name":{"type":"string","description":"The virtual machine name.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"status":{"type":"string","description":"Status of the VM\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the VMs. The VM must have all\nthe tags to be included in the result.\n"},"template":{"type":"boolean","description":"Is VM a template (true) or a regular VM (false)\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["name","nodeName","tags","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:config/ssh:ssh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the `private_key` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:config/sshNode:sshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` block.\n"}},"type":"object"},"proxmoxve:config/sshNode:sshNode":{"properties":{"address":{"type":"string","description":"The address of the Proxmox VE node.\n"},"name":{"type":"string","description":"The name of the Proxmox VE node.\n"},"port":{"type":"integer","description":"The port of the Proxmox VE node.\n"}},"type":"object","required":["address","name"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/HostsEntry:HostsEntry":{"properties":{"address":{"type":"string","description":"The IP address.\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames.\n"}},"type":"object","required":["address","hostnames"]},"proxmoxve:index/ProviderSsh:ProviderSsh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the `private_key` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/ProviderSshNode:ProviderSshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` block.\n"}},"type":"object"},"proxmoxve:index/ProviderSshNode:ProviderSshNode":{"properties":{"address":{"type":"string","description":"The address of the Proxmox VE node.\n"},"name":{"type":"string","description":"The name of the Proxmox VE node.\n"},"port":{"type":"integer","description":"The port of the Proxmox VE node.\n"}},"type":"object","required":["address","name"],"language":{"nodejs":{"requiredOutputs":[]}}},"proxmoxve:index/Vm2Cdrom:Vm2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:index/Vm2Clone:Vm2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","retries"]}}},"proxmoxve:index/Vm2Cpu:Vm2Cpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based. For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture `\u003caarch64 | x86_64\u003e` (defaults to the host). Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to `1`).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags. Use `+FLAG` to enable, `-FLAG` to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to `0` which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to `false`).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:index/Vm2Timeouts:Vm2Timeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"proxmoxve:index/Vm2Vga:Vm2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only `vnc` is available. Migration with VNC clipboard is not supported by Proxmox.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type (defaults to `std`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:index/getVm2Clone:getVm2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id","retries"],"language":{"nodejs":{"requiredInputs":["id"]}}},"proxmoxve:index/getVm2Cpu:getVm2Cpu":{"properties":{"affinity":{"type":"string","description":"List of host cores used to execute guest processes, for example: '0,5,8-11'\n"},"architecture":{"type":"string","description":"The CPU architecture.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket.\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs.\n"},"limit":{"type":"integer","description":"Limit of CPU usage.\n"},"numa":{"type":"boolean","description":"Enable NUMA.\n"},"sockets":{"type":"integer","description":"The number of CPU sockets.\n"},"type":{"type":"string","description":"Emulated CPU type.\n"},"units":{"type":"integer","description":"CPU weight for a VM\n"}},"type":"object","required":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/getVm2Timeouts:getVm2Timeouts":{"properties":{"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"}},"type":"object"},"proxmoxve:index/getVm2Vga:getVm2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type.\n"}},"type":"object","required":["clipboard","memory","type"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the proxmox package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}},"inputProperties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}}},"resources":{"proxmoxve:Apt/repository:Repository":{"description":"Manages an APT repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.apt.Repository(\"example\", {\n enabled: true,\n filePath: \"/etc/apt/sources.list\",\n index: 0,\n node: \"pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.apt.Repository(\"example\",\n enabled=True,\n file_path=\"/etc/apt/sources.list\",\n index=0,\n node=\"pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Apt.Repository(\"example\", new()\n {\n Enabled = true,\n FilePath = \"/etc/apt/sources.list\",\n Index = 0,\n Node = \"pve\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Apt.NewRepository(ctx, \"example\", \u0026Apt.RepositoryArgs{\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tFilePath: pulumi.String(\"/etc/apt/sources.list\"),\n\t\t\tIndex: pulumi.Int(0),\n\t\t\tNode: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.Repository;\nimport com.pulumi.proxmoxve.Apt.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Repository(\"example\", RepositoryArgs.builder()\n .enabled(true)\n .filePath(\"/etc/apt/sources.list\")\n .index(0)\n .node(\"pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Apt:Repository\n properties:\n enabled: true\n filePath: /etc/apt/sources.list\n index: 0\n node: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nthe absolute source list file path, and the index in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/repository:Repository example pve,/etc/apt/sources.list,0\n```\n\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"required":["comment","components","enabled","filePath","fileType","index","node","packageTypes","suites","uris"],"inputProperties":{"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"requiredInputs":["filePath","index","node"],"stateInputs":{"description":"Input properties used for looking up and filtering Repository resources.\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"type":"object"}},"proxmoxve:Apt/standard/repository:Repository":{"description":"Manages an APT standard repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst exampleRepository = new proxmoxve.apt.standard.Repository(\"exampleRepository\", {\n handle: \"no-subscription\",\n node: \"pve\",\n});\nconst exampleApt_repositoryRepository = new proxmoxve.apt.Repository(\"exampleApt/repositoryRepository\", {\n enabled: true,\n filePath: exampleRepository.filePath,\n index: exampleRepository.index,\n node: exampleRepository.node,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_repository = proxmoxve.apt.standard.Repository(\"exampleRepository\",\n handle=\"no-subscription\",\n node=\"pve\")\nexample_apt_repository_repository = proxmoxve.apt.Repository(\"exampleApt/repositoryRepository\",\n enabled=True,\n file_path=example_repository.file_path,\n index=example_repository.index,\n node=example_repository.node)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleRepository = new ProxmoxVE.Apt.Standard.Repository(\"exampleRepository\", new()\n {\n Handle = \"no-subscription\",\n Node = \"pve\",\n });\n\n var exampleApt_repositoryRepository = new ProxmoxVE.Apt.Repository(\"exampleApt/repositoryRepository\", new()\n {\n Enabled = true,\n FilePath = exampleRepository.FilePath,\n Index = exampleRepository.Index,\n Node = exampleRepository.Node,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleRepository, err := Apt.NewRepository(ctx, \"exampleRepository\", \u0026Apt.RepositoryArgs{\n\t\t\tHandle: pulumi.String(\"no-subscription\"),\n\t\t\tNode: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Apt.NewRepository(ctx, \"exampleApt/repositoryRepository\", \u0026Apt.RepositoryArgs{\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tFilePath: exampleRepository.FilePath,\n\t\t\tIndex: exampleRepository.Index,\n\t\t\tNode: exampleRepository.Node,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.Repository;\nimport com.pulumi.proxmoxve.Apt.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleRepository = new Repository(\"exampleRepository\", RepositoryArgs.builder()\n .handle(\"no-subscription\")\n .node(\"pve\")\n .build());\n\n var exampleApt_repositoryRepository = new Repository(\"exampleApt/repositoryRepository\", RepositoryArgs.builder()\n .enabled(true)\n .filePath(exampleRepository.filePath())\n .index(exampleRepository.index())\n .node(exampleRepository.node())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleRepository:\n type: proxmoxve:Apt/standard:Repository\n properties:\n handle: no-subscription\n node: pve\n exampleApt/repositoryRepository:\n type: proxmoxve:Apt:Repository\n properties:\n enabled: true\n filePath: ${exampleRepository.filePath}\n index: ${exampleRepository.index}\n node: ${exampleRepository.node}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT standard repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nand the standard repository handle in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/standard/repository:Repository example pve,no-subscription\n```\n\n","properties":{"description":{"type":"string","description":"The description of the APT standard repository.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this standard repository.\n"},"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"name":{"type":"string","description":"The name of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"status":{"type":"integer","description":"Indicates the activation status.\n"}},"required":["description","filePath","handle","index","name","node","status"],"inputProperties":{"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"requiredInputs":["handle","node"],"stateInputs":{"description":"Input properties used for looking up and filtering Repository resources.\n","properties":{"description":{"type":"string","description":"The description of the APT standard repository.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this standard repository.\n"},"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"name":{"type":"string","description":"The name of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"status":{"type":"integer","description":"Indicates the activation status.\n"}},"type":"object"}},"proxmoxve:CT/container:Container":{"description":"Manages a container.\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:CT/container:Container ubuntu_container first-node/1234\n```\n\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n"},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n"},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n"},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on\nthe host (defaults to `false`).\n"},"vmId":{"type":"integer","description":"The container identifier\n"}},"required":["nodeName","vmId"],"inputProperties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n","willReplaceOnChanges":true},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on\nthe host (defaults to `false`).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Container resources.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n","willReplaceOnChanges":true},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on\nthe host (defaults to `false`).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\n"}},"type":"object"}},"proxmoxve:Cluster/options:Options":{"description":"Manages Proxmox VE Cluster Datacenter options.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Cluster.Options;\nimport com.pulumi.proxmoxve.Cluster.OptionsArgs;\nimport com.pulumi.proxmoxve.Cluster.inputs.OptionsNextIdArgs;\nimport com.pulumi.proxmoxve.Cluster.inputs.OptionsNotifyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var options = new Options(\"options\", OptionsArgs.builder()\n .bandwidthLimitDefault(666666)\n .bandwidthLimitMigration(555555)\n .emailFrom(\"ged@gont.earthsea\")\n .keyboard(\"pl\")\n .language(\"en\")\n .maxWorkers(5)\n .migrationCidr(\"10.0.0.0/8\")\n .migrationType(\"secure\")\n .nextId(OptionsNextIdArgs.builder()\n .lower(100)\n .upper(999999999)\n .build())\n .notify(OptionsNotifyArgs.builder()\n .ha_fencing_mode(\"never\")\n .ha_fencing_target(\"default-matcher\")\n .package_replication(\"always\")\n .package_replication_target(\"default-matcher\")\n .package_updates(\"always\")\n .package_updates_target(\"default-matcher\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n options:\n type: proxmoxve:Cluster:Options\n properties:\n bandwidthLimitDefault: 666666\n bandwidthLimitMigration: 555555\n emailFrom: ged@gont.earthsea\n keyboard: pl\n language: en\n maxWorkers: 5\n migrationCidr: 10.0.0.0/8\n migrationType: secure\n nextId:\n lower: 100\n upper: 9.99999999e+08\n notify:\n ha_fencing_mode: never\n ha_fencing_target: default-matcher\n package_replication: always\n package_replication_target: default-matcher\n package_updates: always\n package_updates_target: default-matcher\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nCluster options are global and can be imported using e.g.:\n\n```sh\n$ pulumi import proxmoxve:Cluster/options:Options options cluster\n```\n\n","properties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be `applet` | `vv`| `html5` | `xtermjs`. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be `static` | `basic` (default is `basic`).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"required":["crsHa","macPrefix"],"inputProperties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be `applet` | `vv`| `html5` | `xtermjs`. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be `static` | `basic` (default is `basic`).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Options resources.\n","properties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be `applet` | `vv`| `html5` | `xtermjs`. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be `static` | `basic` (default is `basic`).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"type":"object"}},"proxmoxve:Download/file:File":{"description":"Manages files upload using PVE download-url API. It can be fully compatible and faster replacement for image files created using `proxmoxve.Storage.File`. Supports images for VMs (ISO images) and LXC (CT Templates).\n\n\u003e Besides the `Datastore.AllocateTemplate` privilege, this resource requires both the `Sys.Audit` and `Sys.Modify` privileges.\u003cbr\u003e\u003cbr\u003e\nFor more details, see the [`download-url`](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/storage/{storage}/download-url) API documentation under the \"Required permissions\" section.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst release20231228Debian12BookwormQcow2Img = new proxmoxve.download.File(\"release20231228Debian12BookwormQcow2Img\", {\n checksum: \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n checksumAlgorithm: \"sha512\",\n contentType: \"iso\",\n datastoreId: \"local\",\n fileName: \"debian-12-generic-amd64-20231228-1609.img\",\n nodeName: \"pve\",\n url: \"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n});\nconst latestDebian12BookwormQcow2Img = new proxmoxve.download.File(\"latestDebian12BookwormQcow2Img\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n fileName: \"debian-12-generic-amd64.qcow2.img\",\n nodeName: \"pve\",\n url: \"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\",\n});\nconst latestUbuntu22JammyQcow2Img = new proxmoxve.download.File(\"latestUbuntu22JammyQcow2Img\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n url: \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n});\nconst latestStaticUbuntu24NobleQcow2Img = new proxmoxve.download.File(\"latestStaticUbuntu24NobleQcow2Img\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n overwrite: false,\n url: \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n});\nconst release20231211Ubuntu22JammyLxcImg = new proxmoxve.download.File(\"release20231211Ubuntu22JammyLxcImg\", {\n checksum: \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n checksumAlgorithm: \"sha256\",\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n uploadTimeout: 4444,\n url: \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n});\nconst latestUbuntu22JammyLxcImg = new proxmoxve.download.File(\"latestUbuntu22JammyLxcImg\", {\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n url: \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nrelease20231228_debian12_bookworm_qcow2_img = proxmoxve.download.File(\"release20231228Debian12BookwormQcow2Img\",\n checksum=\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n checksum_algorithm=\"sha512\",\n content_type=\"iso\",\n datastore_id=\"local\",\n file_name=\"debian-12-generic-amd64-20231228-1609.img\",\n node_name=\"pve\",\n url=\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\")\nlatest_debian12_bookworm_qcow2_img = proxmoxve.download.File(\"latestDebian12BookwormQcow2Img\",\n content_type=\"iso\",\n datastore_id=\"local\",\n file_name=\"debian-12-generic-amd64.qcow2.img\",\n node_name=\"pve\",\n url=\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\")\nlatest_ubuntu22_jammy_qcow2_img = proxmoxve.download.File(\"latestUbuntu22JammyQcow2Img\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n url=\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\")\nlatest_static_ubuntu24_noble_qcow2_img = proxmoxve.download.File(\"latestStaticUbuntu24NobleQcow2Img\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n overwrite=False,\n url=\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\nrelease20231211_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"release20231211Ubuntu22JammyLxcImg\",\n checksum=\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n checksum_algorithm=\"sha256\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"pve\",\n upload_timeout=4444,\n url=\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\nlatest_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"latestUbuntu22JammyLxcImg\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"pve\",\n url=\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var release20231228Debian12BookwormQcow2Img = new ProxmoxVE.Download.File(\"release20231228Debian12BookwormQcow2Img\", new()\n {\n Checksum = \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n ChecksumAlgorithm = \"sha512\",\n ContentType = \"iso\",\n DatastoreId = \"local\",\n FileName = \"debian-12-generic-amd64-20231228-1609.img\",\n NodeName = \"pve\",\n Url = \"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n });\n\n var latestDebian12BookwormQcow2Img = new ProxmoxVE.Download.File(\"latestDebian12BookwormQcow2Img\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n FileName = \"debian-12-generic-amd64.qcow2.img\",\n NodeName = \"pve\",\n Url = \"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\",\n });\n\n var latestUbuntu22JammyQcow2Img = new ProxmoxVE.Download.File(\"latestUbuntu22JammyQcow2Img\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n Url = \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n });\n\n var latestStaticUbuntu24NobleQcow2Img = new ProxmoxVE.Download.File(\"latestStaticUbuntu24NobleQcow2Img\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n Overwrite = false,\n Url = \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n });\n\n var release20231211Ubuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"release20231211Ubuntu22JammyLxcImg\", new()\n {\n Checksum = \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n ChecksumAlgorithm = \"sha256\",\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n UploadTimeout = 4444,\n Url = \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n });\n\n var latestUbuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"latestUbuntu22JammyLxcImg\", new()\n {\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n Url = \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Download\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Download.NewFile(ctx, \"release20231228Debian12BookwormQcow2Img\", \u0026Download.FileArgs{\n\t\t\tChecksum: pulumi.String(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha512\"),\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tFileName: pulumi.String(\"debian-12-generic-amd64-20231228-1609.img\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUrl: pulumi.String(\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestDebian12BookwormQcow2Img\", \u0026Download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tFileName: pulumi.String(\"debian-12-generic-amd64.qcow2.img\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUrl: pulumi.String(\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestUbuntu22JammyQcow2Img\", \u0026Download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestStaticUbuntu24NobleQcow2Img\", \u0026Download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tOverwrite: pulumi.Bool(false),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"release20231211Ubuntu22JammyLxcImg\", \u0026Download.FileArgs{\n\t\t\tChecksum: pulumi.String(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha256\"),\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUploadTimeout: pulumi.Int(4444),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestUbuntu22JammyLxcImg\", \u0026Download.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Download.File;\nimport com.pulumi.proxmoxve.Download.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var release20231228Debian12BookwormQcow2Img = new File(\"release20231228Debian12BookwormQcow2Img\", FileArgs.builder()\n .checksum(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\")\n .checksumAlgorithm(\"sha512\")\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .fileName(\"debian-12-generic-amd64-20231228-1609.img\")\n .nodeName(\"pve\")\n .url(\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\")\n .build());\n\n var latestDebian12BookwormQcow2Img = new File(\"latestDebian12BookwormQcow2Img\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .fileName(\"debian-12-generic-amd64.qcow2.img\")\n .nodeName(\"pve\")\n .url(\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\")\n .build());\n\n var latestUbuntu22JammyQcow2Img = new File(\"latestUbuntu22JammyQcow2Img\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .url(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\")\n .build());\n\n var latestStaticUbuntu24NobleQcow2Img = new File(\"latestStaticUbuntu24NobleQcow2Img\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .overwrite(false)\n .url(\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\n .build());\n\n var release20231211Ubuntu22JammyLxcImg = new File(\"release20231211Ubuntu22JammyLxcImg\", FileArgs.builder()\n .checksum(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\")\n .checksumAlgorithm(\"sha256\")\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .uploadTimeout(4444)\n .url(\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\n .build());\n\n var latestUbuntu22JammyLxcImg = new File(\"latestUbuntu22JammyLxcImg\", FileArgs.builder()\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .url(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n release20231228Debian12BookwormQcow2Img:\n type: proxmoxve:Download:File\n properties:\n checksum: d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\n checksumAlgorithm: sha512\n contentType: iso\n datastoreId: local\n fileName: debian-12-generic-amd64-20231228-1609.img\n nodeName: pve\n url: https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\n latestDebian12BookwormQcow2Img:\n type: proxmoxve:Download:File\n properties:\n contentType: iso\n datastoreId: local\n fileName: debian-12-generic-amd64.qcow2.img\n nodeName: pve\n url: https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\n latestUbuntu22JammyQcow2Img:\n type: proxmoxve:Download:File\n properties:\n contentType: iso\n datastoreId: local\n nodeName: pve\n url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\n latestStaticUbuntu24NobleQcow2Img:\n type: proxmoxve:Download:File\n properties:\n contentType: iso\n datastoreId: local\n nodeName: pve\n overwrite: false\n url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\n release20231211Ubuntu22JammyLxcImg:\n type: proxmoxve:Download:File\n properties:\n checksum: c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\n checksumAlgorithm: sha256\n contentType: vztmpl\n datastoreId: local\n nodeName: pve\n uploadTimeout: 4444\n url: https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\n latestUbuntu22JammyLxcImg:\n type: proxmoxve:Download:File\n properties:\n contentType: vztmpl\n datastoreId: local\n nodeName: pve\n url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, no SSL/TLS certificates will be verified.\n"}},"required":["contentType","datastoreId","fileName","nodeName","overwrite","overwriteUnmanaged","size","uploadTimeout","url","verify"],"inputProperties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, no SSL/TLS certificates will be verified.\n"}},"requiredInputs":["contentType","datastoreId","nodeName","url"],"stateInputs":{"description":"Input properties used for looking up and filtering File resources.\n","properties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, no SSL/TLS certificates will be verified.\n"}},"type":"object"}},"proxmoxve:HA/hAGroup:HAGroup":{"description":"Manages a High Availability group in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAGroup(\"example\", {\n group: \"example\",\n comment: \"This is a comment.\",\n nodes: {\n node1: undefined,\n node2: 2,\n node3: 1,\n },\n restricted: true,\n noFailback: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAGroup(\"example\",\n group=\"example\",\n comment=\"This is a comment.\",\n nodes={\n \"node1\": None,\n \"node2\": 2,\n \"node3\": 1,\n },\n restricted=True,\n no_failback=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.HA.HAGroup(\"example\", new()\n {\n Group = \"example\",\n Comment = \"This is a comment.\",\n Nodes = \n {\n { \"node1\", null },\n { \"node2\", 2 },\n { \"node3\", 1 },\n },\n Restricted = true,\n NoFailback = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAGroup(ctx, \"example\", \u0026HA.HAGroupArgs{\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"This is a comment.\"),\n\t\t\tNodes: pulumi.IntMap{\n\t\t\t\t\"node1\": nil,\n\t\t\t\t\"node2\": pulumi.Int(2),\n\t\t\t\t\"node3\": pulumi.Int(1),\n\t\t\t},\n\t\t\tRestricted: pulumi.Bool(true),\n\t\t\tNoFailback: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAGroup;\nimport com.pulumi.proxmoxve.HA.HAGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAGroup(\"example\", HAGroupArgs.builder()\n .group(\"example\")\n .comment(\"This is a comment.\")\n .nodes(Map.ofEntries(\n Map.entry(\"node1\", null),\n Map.entry(\"node2\", 2),\n Map.entry(\"node3\", 1)\n ))\n .restricted(true)\n .noFailback(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAGroup\n properties:\n group: example\n comment: This is a comment.\n # Member nodes, with or without priority.\n nodes:\n node1: null\n node2: 2\n node3: 1\n restricted: true\n noFailback: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA groups can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAGroup:HAGroup example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to `false`.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to `false`.\n"}},"required":["group","noFailback","nodes","restricted"],"inputProperties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to `false`.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to `false`.\n"}},"requiredInputs":["group","nodes"],"stateInputs":{"description":"Input properties used for looking up and filtering HAGroup resources.\n","properties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to `false`.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to `false`.\n"}},"type":"object"}},"proxmoxve:HA/hAResource:HAResource":{"description":"Manages Proxmox HA resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAResource(\"example\", {\n resourceId: \"vm:123\",\n state: \"started\",\n group: \"example\",\n comment: \"Managed by Terraform\",\n}, {\n dependsOn: [proxmox_virtual_environment_hagroup.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAResource(\"example\",\n resource_id=\"vm:123\",\n state=\"started\",\n group=\"example\",\n comment=\"Managed by Terraform\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_hagroup[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.HA.HAResource(\"example\", new()\n {\n ResourceId = \"vm:123\",\n State = \"started\",\n Group = \"example\",\n Comment = \"Managed by Terraform\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_hagroup.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAResource(ctx, \"example\", \u0026HA.HAResourceArgs{\n\t\t\tResourceId: pulumi.String(\"vm:123\"),\n\t\t\tState: pulumi.String(\"started\"),\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_hagroup.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAResource;\nimport com.pulumi.proxmoxve.HA.HAResourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAResource(\"example\", HAResourceArgs.builder()\n .resourceId(\"vm:123\")\n .state(\"started\")\n .group(\"example\")\n .comment(\"Managed by Terraform\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_hagroup.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAResource\n properties:\n resourceId: vm:123\n state: started\n group: example\n comment: Managed by Terraform\n options:\n dependson:\n - ${proxmox_virtual_environment_hagroup.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAResource:HAResource example vm:123\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the `resource_id`.\n"}},"required":["resourceId","state","type"],"inputProperties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the `resource_id`.\n"}},"requiredInputs":["resourceId"],"stateInputs":{"description":"Input properties used for looking up and filtering HAResource resources.\n","properties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the `resource_id`.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/pci:Pci":{"description":"Manages a PCI hardware mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.Pci;\nimport com.pulumi.proxmoxve.Hardware.PciArgs;\nimport com.pulumi.proxmoxve.Hardware.inputs.PciMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Pci(\"example\", PciArgs.builder()\n .comment(\"This is a comment\")\n .maps(PciMapArgs.builder()\n .comment(\"This is a device specific comment\")\n .id(\"8086:5916\")\n .iommu_group(0)\n .node(\"pve\")\n .path(\"0000:00:02.0\")\n .subsystem_id(\"8086:2068\")\n .build())\n .mediatedDevices(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Hardware/mapping:Pci\n properties:\n comment: This is a comment\n # The actual map of devices.\n maps:\n - comment: This is a device specific comment\n id: 8086:5916\n iommu_group: 0\n node: pve\n path: 0000:00:02.0\n subsystem_id: 8086:2068\n mediatedDevices: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA PCI hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/pci:Pci example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"required":["maps","mediatedDevices","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Pci resources.\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/usb:Usb":{"description":"Manages a USB hardware mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.hardware.mapping.Usb(\"example\", {\n comment: \"This is a comment\",\n maps: [{\n comment: \"This is a device specific comment\",\n id: \"8087:0a2b\",\n node: \"pve\",\n path: \"1-8.2\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.hardware.mapping.Usb(\"example\",\n comment=\"This is a comment\",\n maps=[{\n \"comment\": \"This is a device specific comment\",\n \"id\": \"8087:0a2b\",\n \"node\": \"pve\",\n \"path\": \"1-8.2\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Hardware.Mapping.Usb(\"example\", new()\n {\n Comment = \"This is a comment\",\n Maps = new[]\n {\n new ProxmoxVE.Hardware.Mapping.Inputs.UsbMapArgs\n {\n Comment = \"This is a device specific comment\",\n Id = \"8087:0a2b\",\n Node = \"pve\",\n Path = \"1-8.2\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Hardware.NewUsb(ctx, \"example\", \u0026Hardware.UsbArgs{\n\t\t\tComment: pulumi.String(\"This is a comment\"),\n\t\t\tMaps: mapping.UsbMapTypeArray{\n\t\t\t\t\u0026mapping.UsbMapTypeArgs{\n\t\t\t\t\tComment: pulumi.String(\"This is a device specific comment\"),\n\t\t\t\t\tId: pulumi.String(\"8087:0a2b\"),\n\t\t\t\t\tNode: pulumi.String(\"pve\"),\n\t\t\t\t\tPath: pulumi.String(\"1-8.2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.Usb;\nimport com.pulumi.proxmoxve.Hardware.UsbArgs;\nimport com.pulumi.proxmoxve.Hardware.inputs.UsbMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Usb(\"example\", UsbArgs.builder()\n .comment(\"This is a comment\")\n .maps(UsbMapArgs.builder()\n .comment(\"This is a device specific comment\")\n .id(\"8087:0a2b\")\n .node(\"pve\")\n .path(\"1-8.2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Hardware/mapping:Usb\n properties:\n comment: This is a comment\n # The actual map of devices.\n maps:\n - comment: This is a device specific comment\n id: 8087:0a2b\n node: pve\n path: 1-8.2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA USB hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/usb:Usb example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"required":["maps","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Usb resources.\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"type":"object"}},"proxmoxve:Network/firewall:Firewall":{"description":"Manages firewall options on the cluster level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.Firewall(\"example\", {\n ebtables: false,\n enabled: false,\n inputPolicy: \"DROP\",\n logRatelimit: {\n burst: 10,\n enabled: false,\n rate: \"5/second\",\n },\n outputPolicy: \"ACCEPT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.Firewall(\"example\",\n ebtables=False,\n enabled=False,\n input_policy=\"DROP\",\n log_ratelimit={\n \"burst\": 10,\n \"enabled\": False,\n \"rate\": \"5/second\",\n },\n output_policy=\"ACCEPT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Network.Firewall(\"example\", new()\n {\n Ebtables = false,\n Enabled = false,\n InputPolicy = \"DROP\",\n LogRatelimit = new ProxmoxVE.Network.Inputs.FirewallLogRatelimitArgs\n {\n Burst = 10,\n Enabled = false,\n Rate = \"5/second\",\n },\n OutputPolicy = \"ACCEPT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewall(ctx, \"example\", \u0026Network.FirewallArgs{\n\t\t\tEbtables: pulumi.Bool(false),\n\t\t\tEnabled: pulumi.Bool(false),\n\t\t\tInputPolicy: pulumi.String(\"DROP\"),\n\t\t\tLogRatelimit: \u0026network.FirewallLogRatelimitArgs{\n\t\t\t\tBurst: pulumi.Int(10),\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\tRate: pulumi.String(\"5/second\"),\n\t\t\t},\n\t\t\tOutputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.Firewall;\nimport com.pulumi.proxmoxve.Network.FirewallArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallLogRatelimitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Firewall(\"example\", FirewallArgs.builder()\n .ebtables(false)\n .enabled(false)\n .inputPolicy(\"DROP\")\n .logRatelimit(FirewallLogRatelimitArgs.builder()\n .burst(10)\n .enabled(false)\n .rate(\"5/second\")\n .build())\n .outputPolicy(\"ACCEPT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Network:Firewall\n properties:\n ebtables: false\n enabled: false\n inputPolicy: DROP\n logRatelimit:\n burst: 10\n enabled: false\n rate: 5/second\n outputPolicy: ACCEPT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported without an ID, but you still need to pass one, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewall:Firewall example example\n```\n\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"inputProperties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Firewall resources.\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"type":"object"}},"proxmoxve:Network/firewallAlias:FirewallAlias":{"description":"Aliases are used to see what devices or group of devices are affected by a rule.\nWe can create aliases to identify an IP address or a network. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst localNetwork = new proxmoxve.network.FirewallAlias(\"localNetwork\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n cidr: \"192.168.0.0/23\",\n comment: \"Managed by Terraform\",\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\nconst ubuntuVm = new proxmoxve.network.FirewallAlias(\"ubuntuVm\", {\n cidr: \"192.168.0.1\",\n comment: \"Managed by Terraform\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nlocal_network = proxmoxve.network.FirewallAlias(\"localNetwork\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n cidr=\"192.168.0.0/23\",\n comment=\"Managed by Terraform\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\nubuntu_vm = proxmoxve.network.FirewallAlias(\"ubuntuVm\",\n cidr=\"192.168.0.1\",\n comment=\"Managed by Terraform\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var localNetwork = new ProxmoxVE.Network.FirewallAlias(\"localNetwork\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Cidr = \"192.168.0.0/23\",\n Comment = \"Managed by Terraform\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n var ubuntuVm = new ProxmoxVE.Network.FirewallAlias(\"ubuntuVm\", new()\n {\n Cidr = \"192.168.0.1\",\n Comment = \"Managed by Terraform\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallAlias(ctx, \"localNetwork\", \u0026Network.FirewallAliasArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tCidr: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewFirewallAlias(ctx, \"ubuntuVm\", \u0026Network.FirewallAliasArgs{\n\t\t\tCidr: pulumi.String(\"192.168.0.1\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallAlias;\nimport com.pulumi.proxmoxve.Network.FirewallAliasArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var localNetwork = new FirewallAlias(\"localNetwork\", FirewallAliasArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .cidr(\"192.168.0.0/23\")\n .comment(\"Managed by Terraform\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n var ubuntuVm = new FirewallAlias(\"ubuntuVm\", FirewallAliasArgs.builder()\n .cidr(\"192.168.0.1\")\n .comment(\"Managed by Terraform\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n localNetwork:\n type: proxmoxve:Network:FirewallAlias\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n cidr: 192.168.0.0/23\n comment: Managed by Terraform\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n ubuntuVm:\n type: proxmoxve:Network:FirewallAlias\n properties:\n cidr: 192.168.0.1\n comment: Managed by Terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["cidr","name"],"inputProperties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"requiredInputs":["cidr"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallAlias resources.\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallIPSet:FirewallIPSet":{"description":"An IPSet allows us to group multiple IP addresses, IP subnets and aliases. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ipset = new proxmoxve.network.FirewallIPSet(\"ipset\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n comment: \"Managed by Terraform\",\n cidrs: [\n {\n name: \"192.168.0.0/23\",\n comment: \"Local network 1\",\n },\n {\n name: \"192.168.0.1\",\n comment: \"Server 1\",\n nomatch: true,\n },\n {\n name: \"192.168.2.1\",\n comment: \"Server 1\",\n },\n ],\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nipset = proxmoxve.network.FirewallIPSet(\"ipset\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n comment=\"Managed by Terraform\",\n cidrs=[\n {\n \"name\": \"192.168.0.0/23\",\n \"comment\": \"Local network 1\",\n },\n {\n \"name\": \"192.168.0.1\",\n \"comment\": \"Server 1\",\n \"nomatch\": True,\n },\n {\n \"name\": \"192.168.2.1\",\n \"comment\": \"Server 1\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ipset = new ProxmoxVE.Network.FirewallIPSet(\"ipset\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Comment = \"Managed by Terraform\",\n Cidrs = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.0/23\",\n Comment = \"Local network 1\",\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.1\",\n Comment = \"Server 1\",\n Nomatch = true,\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.2.1\",\n Comment = \"Server 1\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallIPSet(ctx, \"ipset\", \u0026Network.FirewallIPSetArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tCidrs: network.FirewallIPSetCidrArray{\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.0/23\"),\n\t\t\t\t\tComment: pulumi.String(\"Local network 1\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t\tNomatch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.2.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallIPSet;\nimport com.pulumi.proxmoxve.Network.FirewallIPSetArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallIPSetCidrArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ipset = new FirewallIPSet(\"ipset\", FirewallIPSetArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .comment(\"Managed by Terraform\")\n .cidrs( \n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.0/23\")\n .comment(\"Local network 1\")\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.1\")\n .comment(\"Server 1\")\n .nomatch(true)\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.2.1\")\n .comment(\"Server 1\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipset:\n type: proxmoxve:Network:FirewallIPSet\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n comment: Managed by Terraform\n cidrs:\n - name: 192.168.0.0/23\n comment: Local network 1\n - name: 192.168.0.1\n comment: Server 1\n nomatch: true\n - name: 192.168.2.1\n comment: Server 1\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n"},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["name"],"inputProperties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering FirewallIPSet resources.\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallOptions:FirewallOptions":{"description":"Manages firewall options on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.FirewallOptions(\"example\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n dhcp: true,\n enabled: false,\n ipfilter: true,\n logLevelIn: \"info\",\n logLevelOut: \"info\",\n macfilter: false,\n ndp: true,\n inputPolicy: \"ACCEPT\",\n outputPolicy: \"ACCEPT\",\n radv: true,\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.FirewallOptions(\"example\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n dhcp=True,\n enabled=False,\n ipfilter=True,\n log_level_in=\"info\",\n log_level_out=\"info\",\n macfilter=False,\n ndp=True,\n input_policy=\"ACCEPT\",\n output_policy=\"ACCEPT\",\n radv=True,\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Network.FirewallOptions(\"example\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Dhcp = true,\n Enabled = false,\n Ipfilter = true,\n LogLevelIn = \"info\",\n LogLevelOut = \"info\",\n Macfilter = false,\n Ndp = true,\n InputPolicy = \"ACCEPT\",\n OutputPolicy = \"ACCEPT\",\n Radv = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallOptions(ctx, \"example\", \u0026Network.FirewallOptionsArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tDhcp: pulumi.Bool(true),\n\t\t\tEnabled: pulumi.Bool(false),\n\t\t\tIpfilter: pulumi.Bool(true),\n\t\t\tLogLevelIn: pulumi.String(\"info\"),\n\t\t\tLogLevelOut: pulumi.String(\"info\"),\n\t\t\tMacfilter: pulumi.Bool(false),\n\t\t\tNdp: pulumi.Bool(true),\n\t\t\tInputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t\tOutputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t\tRadv: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallOptions;\nimport com.pulumi.proxmoxve.Network.FirewallOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FirewallOptions(\"example\", FirewallOptionsArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .dhcp(true)\n .enabled(false)\n .ipfilter(true)\n .logLevelIn(\"info\")\n .logLevelOut(\"info\")\n .macfilter(false)\n .ndp(true)\n .inputPolicy(\"ACCEPT\")\n .outputPolicy(\"ACCEPT\")\n .radv(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Network:FirewallOptions\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n dhcp: true\n enabled: false\n ipfilter: true\n logLevelIn: info\n logLevelOut: info\n macfilter: false\n ndp: true\n inputPolicy: ACCEPT\n outputPolicy: ACCEPT\n radv: true\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["nodeName"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallOptions resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallRules:FirewallRules":{"description":"A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports. Rules can be created on the cluster\nlevel, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst inbound = new proxmoxve.network.FirewallRules(\"inbound\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n rules: [\n {\n type: \"in\",\n action: \"ACCEPT\",\n comment: \"Allow HTTP\",\n dest: \"192.168.1.5\",\n dport: \"80\",\n proto: \"tcp\",\n log: \"info\",\n },\n {\n type: \"in\",\n action: \"ACCEPT\",\n comment: \"Allow HTTPS\",\n dest: \"192.168.1.5\",\n dport: \"443\",\n proto: \"tcp\",\n log: \"info\",\n },\n {\n securityGroup: proxmox_virtual_environment_cluster_firewall_security_group.example.name,\n comment: \"From security group\",\n iface: \"net0\",\n },\n ],\n}, {\n dependsOn: [\n proxmox_virtual_environment_vm.example,\n proxmox_virtual_environment_cluster_firewall_security_group.example,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ninbound = proxmoxve.network.FirewallRules(\"inbound\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n rules=[\n {\n \"type\": \"in\",\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTP\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"80\",\n \"proto\": \"tcp\",\n \"log\": \"info\",\n },\n {\n \"type\": \"in\",\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTPS\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"443\",\n \"proto\": \"tcp\",\n \"log\": \"info\",\n },\n {\n \"security_group\": proxmox_virtual_environment_cluster_firewall_security_group[\"example\"][\"name\"],\n \"comment\": \"From security group\",\n \"iface\": \"net0\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n proxmox_virtual_environment_vm[\"example\"],\n proxmox_virtual_environment_cluster_firewall_security_group[\"example\"],\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var inbound = new ProxmoxVE.Network.FirewallRules(\"inbound\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n Type = \"in\",\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Proto = \"tcp\",\n Log = \"info\",\n },\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n Type = \"in\",\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Proto = \"tcp\",\n Log = \"info\",\n },\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n SecurityGroup = proxmox_virtual_environment_cluster_firewall_security_group.Example.Name,\n Comment = \"From security group\",\n Iface = \"net0\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n proxmox_virtual_environment_cluster_firewall_security_group.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallRules(ctx, \"inbound\", \u0026Network.FirewallRulesArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tRules: network.FirewallRulesRuleArray{\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"80\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"443\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tSecurityGroup: pulumi.Any(proxmox_virtual_environment_cluster_firewall_security_group.Example.Name),\n\t\t\t\t\tComment: pulumi.String(\"From security group\"),\n\t\t\t\t\tIface: pulumi.String(\"net0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t\tproxmox_virtual_environment_cluster_firewall_security_group.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallRules;\nimport com.pulumi.proxmoxve.Network.FirewallRulesArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallRulesRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var inbound = new FirewallRules(\"inbound\", FirewallRulesArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .rules( \n FirewallRulesRuleArgs.builder()\n .type(\"in\")\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .proto(\"tcp\")\n .log(\"info\")\n .build(),\n FirewallRulesRuleArgs.builder()\n .type(\"in\")\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .proto(\"tcp\")\n .log(\"info\")\n .build(),\n FirewallRulesRuleArgs.builder()\n .securityGroup(proxmox_virtual_environment_cluster_firewall_security_group.example().name())\n .comment(\"From security group\")\n .iface(\"net0\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n proxmox_virtual_environment_vm.example(),\n proxmox_virtual_environment_cluster_firewall_security_group.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inbound:\n type: proxmoxve:Network:FirewallRules\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n rules:\n - type: in\n action: ACCEPT\n comment: Allow HTTP\n dest: 192.168.1.5\n dport: '80'\n proto: tcp\n log: info\n - type: in\n action: ACCEPT\n comment: Allow HTTPS\n dest: 192.168.1.5\n dport: '443'\n proto: tcp\n log: info\n - securityGroup: ${proxmox_virtual_environment_cluster_firewall_security_group.example.name}\n comment: From security group\n iface: net0\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n - ${proxmox_virtual_environment_cluster_firewall_security_group.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"required":["rules"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallRules resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"type":"object"}},"proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup":{"description":"A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst webserver = new proxmoxve.network.FirewallSecurityGroup(\"webserver\", {\n comment: \"Managed by Terraform\",\n rules: [\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTP\",\n dest: \"192.168.1.5\",\n dport: \"80\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTPS\",\n dest: \"192.168.1.5\",\n dport: \"443\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwebserver = proxmoxve.network.FirewallSecurityGroup(\"webserver\",\n comment=\"Managed by Terraform\",\n rules=[\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTP\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"80\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTPS\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"443\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webserver = new ProxmoxVE.Network.FirewallSecurityGroup(\"webserver\", new()\n {\n Comment = \"Managed by Terraform\",\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallSecurityGroup(ctx, \"webserver\", \u0026Network.FirewallSecurityGroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tRules: network.FirewallSecurityGroupRuleArray{\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"80\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"443\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroup;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroupArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallSecurityGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webserver = new FirewallSecurityGroup(\"webserver\", FirewallSecurityGroupArgs.builder()\n .comment(\"Managed by Terraform\")\n .rules( \n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build(),\n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webserver:\n type: proxmoxve:Network:FirewallSecurityGroup\n properties:\n comment: Managed by Terraform\n rules:\n - action: ACCEPT\n comment: Allow HTTP\n dest: 192.168.1.5\n dport: '80'\n log: info\n proto: tcp\n type: in\n - action: ACCEPT\n comment: Allow HTTPS\n dest: 192.168.1.5\n dport: '443'\n log: info\n proto: tcp\n type: in\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup webserver webserver\n```\n\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n"},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"required":["name","rules"],"inputProperties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallSecurityGroup resources.\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"type":"object"}},"proxmoxve:Network/networkBridge:NetworkBridge":{"description":"Manages a Linux Bridge network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {nodeName: \"pve\"});\n//# or alternatively, use custom name:\n// name = \"vlan_lab\"\n// interface = \"eno0\"\n// vlan = 98\nconst vmbr99 = new proxmoxve.network.NetworkBridge(\"vmbr99\", {\n nodeName: \"pve\",\n address: \"99.99.99.99/16\",\n comment: \"vmbr99 comment\",\n ports: [\"ens18.99\"],\n}, {\n dependsOn: [vlan99],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\", node_name=\"pve\")\n## or alternatively, use custom name:\n# name = \"vlan_lab\"\n# interface = \"eno0\"\n# vlan = 98\nvmbr99 = proxmoxve.network.NetworkBridge(\"vmbr99\",\n node_name=\"pve\",\n address=\"99.99.99.99/16\",\n comment=\"vmbr99 comment\",\n ports=[\"ens18.99\"],\n opts = pulumi.ResourceOptions(depends_on=[vlan99]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n {\n NodeName = \"pve\",\n });\n\n //# or alternatively, use custom name:\n // name = \"vlan_lab\"\n // interface = \"eno0\"\n // vlan = 98\n var vmbr99 = new ProxmoxVE.Network.NetworkBridge(\"vmbr99\", new()\n {\n NodeName = \"pve\",\n Address = \"99.99.99.99/16\",\n Comment = \"vmbr99 comment\",\n Ports = new[]\n {\n \"ens18.99\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vlan99,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvlan99, err := Network.NewNetworkVlan(ctx, \"vlan99\", \u0026Network.NetworkVlanArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewNetworkBridge(ctx, \"vmbr99\", \u0026Network.NetworkBridgeArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tAddress: pulumi.String(\"99.99.99.99/16\"),\n\t\t\tComment: pulumi.String(\"vmbr99 comment\"),\n\t\t\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ens18.99\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvlan99,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkVlan;\nimport com.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport com.pulumi.proxmoxve.Network.NetworkBridge;\nimport com.pulumi.proxmoxve.Network.NetworkBridgeArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n .nodeName(\"pve\")\n .build());\n\n //# or alternatively, use custom name:\n // name = \"vlan_lab\"\n // interface = \"eno0\"\n // vlan = 98\n var vmbr99 = new NetworkBridge(\"vmbr99\", NetworkBridgeArgs.builder()\n .nodeName(\"pve\")\n .address(\"99.99.99.99/16\")\n .comment(\"vmbr99 comment\")\n .ports(\"ens18.99\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vlan99)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmbr99:\n type: proxmoxve:Network:NetworkBridge\n properties:\n nodeName: pve\n address: 99.99.99.99/16\n comment: vmbr99 comment\n ports:\n - ens18.99\n options:\n dependson:\n - ${vlan99}\n vlan99:\n type: proxmoxve:Network:NetworkVlan\n properties:\n nodeName: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkBridge:NetworkBridge vmbr99 pve:vmbr99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Must be `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"required":["autostart","name","nodeName","vlanAware"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Must be `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkBridge resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Must be `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"type":"object"}},"proxmoxve:Network/networkVlan:NetworkVlan":{"description":"Manages a Linux VLAN network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// using VLAN tag\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {\n comment: \"VLAN 99\",\n nodeName: \"pve\",\n});\n// using custom network interface name\nconst vlan98 = new proxmoxve.network.NetworkVlan(\"vlan98\", {\n comment: \"VLAN 98\",\n \"interface\": \"eno0\",\n nodeName: \"pve\",\n vlan: 98,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# using VLAN tag\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\",\n comment=\"VLAN 99\",\n node_name=\"pve\")\n# using custom network interface name\nvlan98 = proxmoxve.network.NetworkVlan(\"vlan98\",\n comment=\"VLAN 98\",\n interface=\"eno0\",\n node_name=\"pve\",\n vlan=98)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // using VLAN tag\n var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n {\n Comment = \"VLAN 99\",\n NodeName = \"pve\",\n });\n\n // using custom network interface name\n var vlan98 = new ProxmoxVE.Network.NetworkVlan(\"vlan98\", new()\n {\n Comment = \"VLAN 98\",\n Interface = \"eno0\",\n NodeName = \"pve\",\n Vlan = 98,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// using VLAN tag\n\t\t_, err := Network.NewNetworkVlan(ctx, \"vlan99\", \u0026Network.NetworkVlanArgs{\n\t\t\tComment: pulumi.String(\"VLAN 99\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using custom network interface name\n\t\t_, err = Network.NewNetworkVlan(ctx, \"vlan98\", \u0026Network.NetworkVlanArgs{\n\t\t\tComment: pulumi.String(\"VLAN 98\"),\n\t\t\tInterface: pulumi.String(\"eno0\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tVlan: pulumi.Int(98),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkVlan;\nimport com.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // using VLAN tag\n var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n .comment(\"VLAN 99\")\n .nodeName(\"pve\")\n .build());\n\n // using custom network interface name\n var vlan98 = new NetworkVlan(\"vlan98\", NetworkVlanArgs.builder()\n .comment(\"VLAN 98\")\n .interface_(\"eno0\")\n .nodeName(\"pve\")\n .vlan(98)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # using VLAN tag\n vlan99:\n type: proxmoxve:Network:NetworkVlan\n properties:\n comment: VLAN 99\n nodeName: pve\n # using custom network interface name\n vlan98:\n type: proxmoxve:Network:NetworkVlan\n properties:\n comment: VLAN 98\n interface: eno0\n nodeName: pve\n vlan: 98\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkVlan:NetworkVlan vlan99 pve:vlan99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also `name`.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"required":["autostart","interface","name","nodeName","vlan"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also `name`.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkVlan resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also `name`.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"type":"object"}},"proxmoxve:Permission/group:Group":{"description":"Manages a user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsTeam = new proxmoxve.permission.Group(\"operationsTeam\", {\n comment: \"Managed by Terraform\",\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.permission.Group(\"operationsTeam\",\n comment=\"Managed by Terraform\",\n group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = new ProxmoxVE.Permission.Group(\"operationsTeam\", new()\n {\n Comment = \"Managed by Terraform\",\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewGroup(ctx, \"operationsTeam\", \u0026Permission.GroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tGroupId: pulumi.String(\"operations-team\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Group;\nimport com.pulumi.proxmoxve.Permission.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsTeam = new Group(\"operationsTeam\", GroupArgs.builder()\n .comment(\"Managed by Terraform\")\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsTeam:\n type: proxmoxve:Permission:Group\n properties:\n comment: Managed by Terraform\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `group_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/group:Group operations_team operations-team\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n"},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"required":["groupId","members"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["groupId"],"stateInputs":{"description":"Input properties used for looking up and filtering Group resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"type":"object"}},"proxmoxve:Permission/pool:Pool":{"description":"Manages a resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsPool = new proxmoxve.permission.Pool(\"operationsPool\", {\n comment: \"Managed by Terraform\",\n poolId: \"operations-pool\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.permission.Pool(\"operationsPool\",\n comment=\"Managed by Terraform\",\n pool_id=\"operations-pool\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = new ProxmoxVE.Permission.Pool(\"operationsPool\", new()\n {\n Comment = \"Managed by Terraform\",\n PoolId = \"operations-pool\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewPool(ctx, \"operationsPool\", \u0026Permission.PoolArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tPoolId: pulumi.String(\"operations-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Pool;\nimport com.pulumi.proxmoxve.Permission.PoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsPool = new Pool(\"operationsPool\", PoolArgs.builder()\n .comment(\"Managed by Terraform\")\n .poolId(\"operations-pool\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsPool:\n type: proxmoxve:Permission:Pool\n properties:\n comment: Managed by Terraform\n poolId: operations-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `pool_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/pool:Pool operations_pool operations-pool\n```\n\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n"}},"required":["members","poolId"],"inputProperties":{"comment":{"type":"string","description":"The pool comment.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["poolId"],"stateInputs":{"description":"Input properties used for looking up and filtering Pool resources.\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/role:Role":{"description":"Manages a role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n privileges: [\"VM.Monitor\"],\n roleId: \"operations-monitoring\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n privileges=[\"VM.Monitor\"],\n role_id=\"operations-monitoring\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n RoleId = \"operations-monitoring\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .privileges(\"VM.Monitor\")\n .roleId(\"operations-monitoring\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n privileges:\n - VM.Monitor\n roleId: operations-monitoring\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `role_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/role:Role operations_monitoring operations-monitoring\n```\n\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"required":["privileges","roleId"],"inputProperties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["privileges","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering Role resources.\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/user:User":{"description":"Manages a user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n acls: [{\n path: \"/vms/1234\",\n propagate: true,\n roleId: operationsMonitoring.roleId,\n }],\n comment: \"Managed by Terraform\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n acls=[{\n \"path\": \"/vms/1234\",\n \"propagate\": True,\n \"role_id\": operations_monitoring.role_id,\n }],\n comment=\"Managed by Terraform\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Acls = new[]\n {\n new ProxmoxVE.Permission.Inputs.UserAclArgs\n {\n Path = \"/vms/1234\",\n Propagate = true,\n RoleId = operationsMonitoring.RoleId,\n },\n },\n Comment = \"Managed by Terraform\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tAcls: permission.UserAclArray{\n\t\t\t\t\u0026permission.UserAclArgs{\n\t\t\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\t\t\tPropagate: pulumi.Bool(true),\n\t\t\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.inputs.UserAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .acls(UserAclArgs.builder()\n .path(\"/vms/1234\")\n .propagate(true)\n .roleId(operationsMonitoring.roleId())\n .build())\n .comment(\"Managed by Terraform\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n acls:\n - path: /vms/1234\n propagate: true\n roleId: ${operationsMonitoring.roleId}\n comment: Managed by Terraform\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `user_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/user:User operations_automation operations-automation@pve\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n"}},"required":["userId"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["userId"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Storage/file:File":{"description":"Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `content_type` attribute.\n\n## Example Usage\n\n### Backups (`dump`)\n\n\u003e The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n\u003e The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst backup = new proxmoxve.storage.File(\"backup\", {\n contentType: \"dump\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nbackup = proxmoxve.storage.File(\"backup\",\n content_type=\"dump\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var backup = new ProxmoxVE.Storage.File(\"backup\", new()\n {\n ContentType = \"dump\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"backup\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"dump\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var backup = new File(\"backup\", FileArgs.builder()\n .contentType(\"dump\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n backup:\n type: proxmoxve:Storage:File\n properties:\n contentType: dump\n datastoreId: local\n nodeName: pve\n sourceFile:\n path: vzdump-lxc-100-2023_11_08-23_10_05.tar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Images\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n properties:\n contentType: iso\n datastoreId: local\n nodeName: pve\n sourceFile:\n path: https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Container Template (`vztmpl`)\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"first-node\",\n sourceFile: {\n path: \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"first-node\",\n source_file={\n \"path\": \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"first-node\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"first-node\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n properties:\n contentType: vztmpl\n datastoreId: local\n nodeName: first-node\n sourceFile:\n path: https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nThe Proxmox VE API endpoint for file uploads does not support chunked transfer\nencoding, which means that we must first store the source file as a temporary\nfile locally before uploading it.\n\nYou must ensure that you have at least `Size-in-MB * 2 + 1` MB of storage space\navailable (twice the size plus overhead because a multipart payload needs to be\ncreated as another temporary file).\n\nBy default, if the specified file already exists, the resource will\nunconditionally replace it and take ownership of the resource. On destruction,\nthe file will be deleted as if it did not exist before. If you want to prevent\nthe resource from replacing the file, set `overwrite` to `false`.\n\n## Import\n\nInstances can be imported using the `node_name`, `datastore_id`, `content_type`\n\nand the `file_name` in the following format:\n\ntext\n\nnode_name:datastore_id/content_type/file_name\n\nExample:\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Storage/file:File cloud_config pve/local:snippets/example.cloud-config.yaml\n```\n\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n"},"datastoreId":{"type":"string","description":"The datastore id.\n"},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n"},"fileModificationDate":{"type":"string","description":"The file modification date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"fileSize":{"type":"integer","description":"The file size in bytes.\n"},"fileTag":{"type":"string","description":"The file tag.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n"},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n"},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"required":["contentType","datastoreId","fileModificationDate","fileName","fileSize","fileTag","nodeName"],"inputProperties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n","willReplaceOnChanges":true},"datastoreId":{"type":"string","description":"The datastore id.\n","willReplaceOnChanges":true},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"requiredInputs":["datastoreId","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering File resources.\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n","willReplaceOnChanges":true},"datastoreId":{"type":"string","description":"The datastore id.\n","willReplaceOnChanges":true},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n","willReplaceOnChanges":true},"fileModificationDate":{"type":"string","description":"The file modification date (RFC 3339).\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name.\n"},"fileSize":{"type":"integer","description":"The file size in bytes.\n","willReplaceOnChanges":true},"fileTag":{"type":"string","description":"The file tag.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"type":"object"}},"proxmoxve:User/token:Token":{"description":"User API tokens.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// if creating a user token, the user must be created first\nconst user = new proxmoxve.permission.User(\"user\", {\n comment: \"Managed by Terraform\",\n email: \"user@pve\",\n enabled: true,\n expirationDate: \"2034-01-01T22:00:00Z\",\n userId: \"user@pve\",\n});\nconst userToken = new proxmoxve.user.Token(\"userToken\", {\n comment: \"Managed by Terraform\",\n expirationDate: \"2033-01-01T22:00:00Z\",\n tokenName: \"tk1\",\n userId: user.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# if creating a user token, the user must be created first\nuser = proxmoxve.permission.User(\"user\",\n comment=\"Managed by Terraform\",\n email=\"user@pve\",\n enabled=True,\n expiration_date=\"2034-01-01T22:00:00Z\",\n user_id=\"user@pve\")\nuser_token = proxmoxve.user.Token(\"userToken\",\n comment=\"Managed by Terraform\",\n expiration_date=\"2033-01-01T22:00:00Z\",\n token_name=\"tk1\",\n user_id=user.user_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // if creating a user token, the user must be created first\n var user = new ProxmoxVE.Permission.User(\"user\", new()\n {\n Comment = \"Managed by Terraform\",\n Email = \"user@pve\",\n Enabled = true,\n ExpirationDate = \"2034-01-01T22:00:00Z\",\n UserId = \"user@pve\",\n });\n\n var userToken = new ProxmoxVE.User.Token(\"userToken\", new()\n {\n Comment = \"Managed by Terraform\",\n ExpirationDate = \"2033-01-01T22:00:00Z\",\n TokenName = \"tk1\",\n UserId = user.UserId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/User\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// if creating a user token, the user must be created first\n\t\tuser, err := Permission.NewUser(ctx, \"user\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tEmail: pulumi.String(\"user@pve\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tExpirationDate: pulumi.String(\"2034-01-01T22:00:00Z\"),\n\t\t\tUserId: pulumi.String(\"user@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = User.NewToken(ctx, \"userToken\", \u0026User.TokenArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tExpirationDate: pulumi.String(\"2033-01-01T22:00:00Z\"),\n\t\t\tTokenName: pulumi.String(\"tk1\"),\n\t\t\tUserId: user.UserId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.User.Token;\nimport com.pulumi.proxmoxve.User.TokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // if creating a user token, the user must be created first\n var user = new User(\"user\", UserArgs.builder()\n .comment(\"Managed by Terraform\")\n .email(\"user@pve\")\n .enabled(true)\n .expirationDate(\"2034-01-01T22:00:00Z\")\n .userId(\"user@pve\")\n .build());\n\n var userToken = new Token(\"userToken\", TokenArgs.builder()\n .comment(\"Managed by Terraform\")\n .expirationDate(\"2033-01-01T22:00:00Z\")\n .tokenName(\"tk1\")\n .userId(user.userId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # if creating a user token, the user must be created first\n user:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Terraform\n email: user@pve\n enabled: true\n expirationDate: 2034-01-01T22:00:00Z\n userId: user@pve\n userToken:\n type: proxmoxve:User:Token\n properties:\n comment: Managed by Terraform\n expirationDate: 2033-01-01T22:00:00Z\n tokenName: tk1\n userId: ${user.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Tokens can be imported using they identifiers in format `user_id!token_name` format, e.g.:\n\n```sh\n$ pulumi import proxmoxve:User/token:Token token1 user@pve!token1\n```\n\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"required":["privilegesSeparation","tokenName","userId","value"],"inputProperties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"}},"requiredInputs":["tokenName","userId"],"stateInputs":{"description":"Input properties used for looking up and filtering Token resources.\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"type":"object"}},"proxmoxve:VM/virtualMachine2:VirtualMachine2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM resource using Plugin Framework.\u003cbr\u003e\u003cbr\u003eIt is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.\n\n\u003e Many attributes are marked as **optional** _and_ **computed** in the schema,\nhence you may seem added to the plan with \"(known after apply)\" status, even if they are not set in the configuration.\nThis is done to support the `clone` operation, when a VM is created from an existing VM or template,\nand the source attributes are copied to the clone.\u003cbr\u003e\u003cbr\u003e\nComputed attributes allow the provider to set those attributes without user input.\nThe attributes are also marked as optional to allow the practitioner to set (or overwrite) them if needed.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","name","nodeName","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"type":"object"},"aliases":[{"type":"proxmoxve:index/vm2:Vm2"}]},"proxmoxve:VM/virtualMachine:VirtualMachine":{"description":"Manages a virtual machine.\n\n\u003e This resource uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:VM/virtualMachine:VirtualMachine ubuntu_vm first-node/4321\n```\n\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\n"},"ipv6Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv6 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is `false`)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n"},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n"},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"required":["ipv4Addresses","ipv6Addresses","macAddresses","name","networkInterfaceNames","nodeName","vmId"],"inputProperties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n","willReplaceOnChanges":true},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n","willReplaceOnChanges":true},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine resources.\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n","willReplaceOnChanges":true},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\n"},"ipv6Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv6 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is `false`)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n","willReplaceOnChanges":true},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"type":"object"}},"proxmoxve:index/acl:Acl":{"description":"Manages ACLs on the Proxmox cluster.\n\nACLs are used to control access to resources in the Proxmox cluster.\nEach ACL consists of a path, a user, group or token, a role, and a flag to allow propagation of permissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n comment: \"Managed by Terraform\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomationMonitoring = new proxmoxve.Acl(\"operationsAutomationMonitoring\", {\n userId: operationsAutomation.userId,\n roleId: operationsMonitoring.roleId,\n path: \"/vms/1234\",\n propagate: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n comment=\"Managed by Terraform\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation_monitoring = proxmoxve.Acl(\"operationsAutomationMonitoring\",\n user_id=operations_automation.user_id,\n role_id=operations_monitoring.role_id,\n path=\"/vms/1234\",\n propagate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Comment = \"Managed by Terraform\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomationMonitoring = new ProxmoxVE.Acl(\"operationsAutomationMonitoring\", new()\n {\n UserId = operationsAutomation.UserId,\n RoleId = operationsMonitoring.RoleId,\n Path = \"/vms/1234\",\n Propagate = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsAutomation, err := Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.NewAcl(ctx, \"operationsAutomationMonitoring\", \u0026proxmoxve.AclArgs{\n\t\t\tUserId: operationsAutomation.UserId,\n\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\tPropagate: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Acl;\nimport com.pulumi.proxmoxve.AclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .comment(\"Managed by Terraform\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomationMonitoring = new Acl(\"operationsAutomationMonitoring\", AclArgs.builder()\n .userId(operationsAutomation.userId())\n .roleId(operationsMonitoring.roleId())\n .path(\"/vms/1234\")\n .propagate(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Terraform\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n operationsAutomationMonitoring:\n type: proxmoxve:Acl\n properties:\n userId: ${operationsAutomation.userId}\n roleId: ${operationsMonitoring.roleId}\n path: /vms/1234\n propagate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACL can be imported using its unique identifier, e.g.: {path}?{group|user@realm|user@realm!token}?{role}\n\n```sh\n$ pulumi import proxmoxve:index/acl:Acl operations_automation_monitoring /?monitor@pve?operations-monitoring\n```\n\n","properties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"required":["path","propagate","roleId"],"inputProperties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"requiredInputs":["path","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering Acl resources.\n","properties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"type":"object"}},"proxmoxve:index/acmeAccount:AcmeAccount":{"description":"Manages an ACME account in a Proxmox VE cluster.\n\n\u003e This resource requires `root@pam` authentication.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeAccount(\"example\", {\n contact: \"example@email.com\",\n directory: \"https://acme-staging-v02.api.letsencrypt.org/directory\",\n tos: \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeAccount(\"example\",\n contact=\"example@email.com\",\n directory=\"https://acme-staging-v02.api.letsencrypt.org/directory\",\n tos=\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.AcmeAccount(\"example\", new()\n {\n Contact = \"example@email.com\",\n Directory = \"https://acme-staging-v02.api.letsencrypt.org/directory\",\n Tos = \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeAccount(ctx, \"example\", \u0026proxmoxve.AcmeAccountArgs{\n\t\t\tContact: pulumi.String(\"example@email.com\"),\n\t\t\tDirectory: pulumi.String(\"https://acme-staging-v02.api.letsencrypt.org/directory\"),\n\t\t\tTos: pulumi.String(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.AcmeAccount;\nimport com.pulumi.proxmoxve.AcmeAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AcmeAccount(\"example\", AcmeAccountArgs.builder()\n .contact(\"example@email.com\")\n .directory(\"https://acme-staging-v02.api.letsencrypt.org/directory\")\n .tos(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:AcmeAccount\n properties:\n contact: example@email.com\n directory: https://acme-staging-v02.api.letsencrypt.org/directory\n tos: https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeAccount:AcmeAccount example example\n```\n\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"required":["contact","createdAt","location","name"],"inputProperties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"requiredInputs":["contact"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeAccount resources.\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"type":"object"}},"proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin":{"description":"Manages an ACME plugin in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeDnsPlugin(\"example\", {\n api: \"aws\",\n data: {\n AWS_ACCESS_KEY_ID: \"EXAMPLE\",\n AWS_SECRET_ACCESS_KEY: \"EXAMPLE\",\n },\n plugin: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeDnsPlugin(\"example\",\n api=\"aws\",\n data={\n \"AWS_ACCESS_KEY_ID\": \"EXAMPLE\",\n \"AWS_SECRET_ACCESS_KEY\": \"EXAMPLE\",\n },\n plugin=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.AcmeDnsPlugin(\"example\", new()\n {\n Api = \"aws\",\n Data = \n {\n { \"AWS_ACCESS_KEY_ID\", \"EXAMPLE\" },\n { \"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\" },\n },\n Plugin = \"test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeDnsPlugin(ctx, \"example\", \u0026proxmoxve.AcmeDnsPluginArgs{\n\t\t\tApi: pulumi.String(\"aws\"),\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"AWS_ACCESS_KEY_ID\": pulumi.String(\"EXAMPLE\"),\n\t\t\t\t\"AWS_SECRET_ACCESS_KEY\": pulumi.String(\"EXAMPLE\"),\n\t\t\t},\n\t\t\tPlugin: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.AcmeDnsPlugin;\nimport com.pulumi.proxmoxve.AcmeDnsPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AcmeDnsPlugin(\"example\", AcmeDnsPluginArgs.builder()\n .api(\"aws\")\n .data(Map.ofEntries(\n Map.entry(\"AWS_ACCESS_KEY_ID\", \"EXAMPLE\"),\n Map.entry(\"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\")\n ))\n .plugin(\"test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:AcmeDnsPlugin\n properties:\n api: aws\n data:\n AWS_ACCESS_KEY_ID: EXAMPLE\n AWS_SECRET_ACCESS_KEY: EXAMPLE\n plugin: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin example test\n```\n\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"required":["api","digest","plugin","validationDelay"],"inputProperties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"requiredInputs":["api","plugin"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeDnsPlugin resources.\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object"}},"proxmoxve:index/certifi:Certifi":{"description":"Manages the custom SSL/TLS certificate for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: proxmoxve:Certifi\n properties:\n certificate: ${proxmoxVirtualEnvironmentCertificateSelfSignedCert.certPem}\n nodeName: first-node\n privateKey: ${proxmoxVirtualEnvironmentCertificatePrivateKey.privateKeyPem}\n proxmoxVirtualEnvironmentCertificatePrivateKey:\n type: tls:PrivateKey\n properties:\n algorithm: RSA\n rsaBits: 2048\n proxmoxVirtualEnvironmentCertificateSelfSignedCert:\n type: tls:SelfSignedCert\n properties:\n keyAlgorithm: ${proxmoxVirtualEnvironmentCertificatePrivateKey.algorithm}\n privateKeyPem: ${proxmoxVirtualEnvironmentCertificatePrivateKey.privateKeyPem}\n subject:\n commonName: example.com\n organization: Terraform Provider for Proxmox\n validityPeriodHours: 8760\n allowedUses:\n - key_encipherment\n - digital_signature\n - server_auth\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"expirationDate":{"type":"string","description":"The expiration date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"issuer":{"type":"string","description":"The issuer.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true},"publicKeySize":{"type":"integer","description":"The public key size.\n"},"publicKeyType":{"type":"string","description":"The public key type.\n"},"sslFingerprint":{"type":"string","description":"The SSL fingerprint.\n"},"startDate":{"type":"string","description":"The start date (RFC 3339).\n"},"subject":{"type":"string","description":"The subject.\n"},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The subject alternative names.\n"}},"required":["certificate","expirationDate","fileName","issuer","nodeName","privateKey","publicKeySize","publicKeyType","sslFingerprint","startDate","subject","subjectAlternativeNames"],"inputProperties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true}},"requiredInputs":["certificate","nodeName","privateKey"],"stateInputs":{"description":"Input properties used for looking up and filtering Certifi resources.\n","properties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"expirationDate":{"type":"string","description":"The expiration date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"issuer":{"type":"string","description":"The issuer.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true},"publicKeySize":{"type":"integer","description":"The public key size.\n"},"publicKeyType":{"type":"string","description":"The public key type.\n"},"sslFingerprint":{"type":"string","description":"The SSL fingerprint.\n"},"startDate":{"type":"string","description":"The start date (RFC 3339).\n"},"subject":{"type":"string","description":"The subject.\n"},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The subject alternative names.\n"}},"type":"object"}},"proxmoxve:index/dNS:DNS":{"description":"Manages the DNS configuration for a specific node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/dNS:DNS first_node first-node\n```\n\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"required":["domain","nodeName"],"inputProperties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"requiredInputs":["domain","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering DNS resources.\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"type":"object"}},"proxmoxve:index/hosts:Hosts":{"description":"Manages the host entries on a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n firstNodeHostEntries:\n type: proxmoxve:Hosts\n properties:\n entries:\n - address: 127.0.0.1\n hostnames:\n - localhost\n - localhost.localdomain\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/hosts:Hosts first_node_host_entries first-node\n```\n\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"required":["addresses","digest","entries","entry","hostnames","nodeName"],"inputProperties":{"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"requiredInputs":["entry","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Hosts resources.\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object"}},"proxmoxve:index/time:Time":{"description":"Manages the time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeTime = new proxmoxve.Time(\"firstNodeTime\", {\n nodeName: \"first-node\",\n timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Time(\"firstNodeTime\",\n node_name=\"first-node\",\n time_zone=\"UTC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeTime = new ProxmoxVE.Time(\"firstNodeTime\", new()\n {\n NodeName = \"first-node\",\n TimeZone = \"UTC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewTime(ctx, \"firstNodeTime\", \u0026proxmoxve.TimeArgs{\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Time;\nimport com.pulumi.proxmoxve.TimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var firstNodeTime = new Time(\"firstNodeTime\", TimeArgs.builder()\n .nodeName(\"first-node\")\n .timeZone(\"UTC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n firstNodeTime:\n type: proxmoxve:Time\n properties:\n nodeName: first-node\n timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/time:Time first_node first-node\n```\n\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's local time formatted as UTC.\n"}},"required":["localTime","nodeName","timeZone","utcTime"],"inputProperties":{"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"}},"requiredInputs":["nodeName","timeZone"],"stateInputs":{"description":"Input properties used for looking up and filtering Time resources.\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's local time formatted as UTC.\n"}},"type":"object"}},"proxmoxve:index/vm2:Vm2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM resource using Plugin Framework.\u003cbr\u003e\u003cbr\u003eIt is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.\n\n\u003e Many attributes are marked as **optional** _and_ **computed** in the schema,\nhence you may seem added to the plan with \"(known after apply)\" status, even if they are not set in the configuration.\nThis is done to support the `clone` operation, when a VM is created from an existing VM or template,\nand the source attributes are copied to the clone.\u003cbr\u003e\u003cbr\u003e\nComputed attributes allow the provider to set those attributes without user input.\nThe attributes are also marked as optional to allow the practitioner to set (or overwrite) them if needed.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","name","nodeName","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Vm2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"type":"object"},"deprecationMessage":"proxmoxve.index/vm2.Vm2 has been deprecated in favor of proxmoxve.vm/virtualmachine2.VirtualMachine2"}},"functions":{"proxmoxve:Acme/getAccount:getAccount":{"description":"Retrieves information about a specific ACME account.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.Acme.getAccounts({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.Acme.getAccount({\n name: __value,\n}))));\nexport const dataProxmoxVirtualEnvironmentAcmeAccount = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.Acme.get_accounts()\nexample = [proxmoxve.Acme.get_account(name=__value) for __key, __value in all.accounts]\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.Acme.GetAccount.Invoke(new()\n {\n Name = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmeAccount\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := Acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = AcmeFunctions.getAccounts();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccount.\n","properties":{"name":{"type":"string","description":"The identifier of the ACME account to read.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAccount.\n","properties":{"account":{"$ref":"#/types/proxmoxve:Acme/getAccountAccount:getAccountAccount","description":"The ACME account information.\n"},"directory":{"description":"The directory URL of the ACME account.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"location":{"description":"The location URL of the ACME account.\n","type":"string"},"name":{"description":"The identifier of the ACME account to read.\n","type":"string"},"tos":{"description":"The URL of the terms of service of the ACME account.\n","type":"string"}},"required":["account","directory","location","tos","id"],"type":"object"}},"proxmoxve:Acme/getAccounts:getAccounts":{"description":"Retrieves the list of ACME accounts.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getAccounts({});\nexport const dataProxmoxVirtualEnvironmentAcmeAccounts = example.then(example =\u003e example.accounts);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_accounts()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.accounts)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmeAccounts\"] = example.Apply(getAccountsResult =\u003e getAccountsResult.Accounts),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.Accounts)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getAccounts();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.applyValue(getAccountsResult -\u003e getAccountsResult.accounts()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getAccounts\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentAcmeAccounts: ${example.accounts}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getAccounts.\n","properties":{"accounts":{"description":"The identifiers of the ACME accounts.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"}},"required":["accounts","id"],"type":"object"}},"proxmoxve:Acme/getPlugin:getPlugin":{"description":"Retrieves a single ACME plugin by plugin ID name.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugin({\n plugin: \"standalone\",\n});\nexport const dataProxmoxVirtualEnvironmentAcmePlugin = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugin(plugin=\"standalone\")\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetPlugin.Invoke(new()\n {\n Plugin = \"standalone\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmePlugin\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetPlugin(ctx, \u0026acme.GetPluginArgs{\n\t\t\tPlugin: \"standalone\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport com.pulumi.proxmoxve.Acme.inputs.GetPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getPlugin(GetPluginArgs.builder()\n .plugin(\"standalone\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example.applyValue(getPluginResult -\u003e getPluginResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getPlugin\n Arguments:\n plugin: standalone\noutputs:\n dataProxmoxVirtualEnvironmentAcmePlugin: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPlugin.\n","properties":{"plugin":{"type":"string","description":"ACME Plugin ID name.\n"}},"type":"object","required":["plugin"]},"outputs":{"description":"A collection of values returned by getPlugin.\n","properties":{"api":{"description":"API plugin name.\n","type":"string"},"data":{"additionalProperties":{"type":"string"},"description":"DNS plugin data.\n","type":"object"},"digest":{"description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"plugin":{"description":"ACME Plugin ID name.\n","type":"string"},"type":{"description":"ACME challenge type (dns, standalone).\n","type":"string"},"validationDelay":{"description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n","type":"integer"}},"required":["api","data","digest","plugin","type","validationDelay","id"],"type":"object"}},"proxmoxve:Acme/getPlugins:getPlugins":{"description":"Retrieves the list of ACME plugins.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugins({});\nexport const dataProxmoxVirtualEnvironmentAcmePlugins = example.then(example =\u003e example.plugins);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugins()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.plugins)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetPlugins.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmePlugins\"] = example.Apply(getPluginsResult =\u003e getPluginsResult.Plugins),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetPlugins(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.Plugins)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getPlugins();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.applyValue(getPluginsResult -\u003e getPluginsResult.plugins()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getPlugins\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentAcmePlugins: ${example.plugins}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPlugins.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"plugins":{"description":"List of ACME plugins\n","items":{"$ref":"#/types/proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin"},"type":"array"}},"required":["plugins","id"],"type":"object"}},"proxmoxve:Apt/getRepository:getRepository":{"description":"Retrieves an APT repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Apt.getRepository({\n filePath: \"/etc/apt/sources.list\",\n index: 0,\n node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.get_repository(file_path=\"/etc/apt/sources.list\",\n index=0,\n node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Apt.GetRepository.Invoke(new()\n {\n FilePath = \"/etc/apt/sources.list\",\n Index = 0,\n Node = \"pve\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentAptRepository\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Apt.GetRepository(ctx, \u0026apt.GetRepositoryArgs{\n\t\t\tFilePath: \"/etc/apt/sources.list\",\n\t\t\tIndex: 0,\n\t\t\tNode: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.AptFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AptFunctions.getRepository(GetRepositoryArgs.builder()\n .filePath(\"/etc/apt/sources.list\")\n .index(0)\n .node(\"pve\")\n .build());\n\n ctx.export(\"proxmoxVirtualEnvironmentAptRepository\", example.applyValue(getRepositoryResult -\u003e getRepositoryResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Apt:getRepository\n Arguments:\n filePath: /etc/apt/sources.list\n index: 0\n node: pve\noutputs:\n proxmoxVirtualEnvironmentAptRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["filePath","index","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"comment":{"description":"The associated comment.\n","type":"string"},"components":{"description":"The list of components.\n","items":{"type":"string"},"type":"array"},"enabled":{"description":"Indicates the activation status.\n","type":"boolean"},"filePath":{"description":"The absolute path of the source list file that contains this repository.\n","type":"string"},"fileType":{"description":"The format of the defining source list file.\n","type":"string"},"id":{"description":"The unique identifier of this APT repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"packageTypes":{"description":"The list of package types.\n","items":{"type":"string"},"type":"array"},"suites":{"description":"The list of package distributions.\n","items":{"type":"string"},"type":"array"},"uris":{"description":"The list of repository URIs.\n","items":{"type":"string"},"type":"array"}},"required":["comment","components","enabled","filePath","fileType","id","index","node","packageTypes","suites","uris"],"type":"object"}},"proxmoxve:Apt/standard/getRepository:getRepository":{"description":"Retrieves an APT standard repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Apt.standard.getRepository({\n handle: \"no-subscription\",\n node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptStandardRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.standard.get_repository(handle=\"no-subscription\",\n node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Apt.Standard.GetRepository.Invoke(new()\n {\n Handle = \"no-subscription\",\n Node = \"pve\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentAptStandardRepository\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Apt.GetRepository(ctx, \u0026standard.GetRepositoryArgs{\n\t\t\tHandle: \"no-subscription\",\n\t\t\tNode: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt_standard.Apt_standardFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Apt/standardFunctions.getRepository(GetRepositoryArgs.builder()\n .handle(\"no-subscription\")\n .node(\"pve\")\n .build());\n\n ctx.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example.applyValue(getRepositoryResult -\u003e getRepositoryResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Apt/standard:getRepository\n Arguments:\n handle: no-subscription\n node: pve\noutputs:\n proxmoxVirtualEnvironmentAptStandardRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"handle":{"type":"string","description":"The handle of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["handle","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"description":{"description":"The description of the APT standard repository.\n","type":"string"},"filePath":{"description":"The absolute path of the source list file that contains this standard repository.\n","type":"string"},"handle":{"description":"The handle of the APT standard repository.\n","type":"string"},"id":{"description":"The unique identifier of this APT standard repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"name":{"description":"The name of the APT standard repository.\n","type":"string"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"status":{"description":"Indicates the activation status.\n","type":"integer"}},"required":["description","filePath","handle","id","index","name","node","status"],"type":"object"}},"proxmoxve:Cluster/getNodes:getNodes":{"description":"Retrieves information about all available nodes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableNodes = proxmoxve.Cluster.getNodes({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_nodes = proxmoxve.Cluster.get_nodes()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableNodes = ProxmoxVE.Cluster.GetNodes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Cluster\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Cluster.GetNodes(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Cluster.ClusterFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableNodes = ClusterFunctions.getNodes();\n\n }\n}\n```\n```yaml\nvariables:\n availableNodes:\n fn::invoke:\n Function: proxmoxve:Cluster:getNodes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getNodes.\n","properties":{"cpuCounts":{"description":"The CPU count for each node.\n","items":{"type":"integer"},"type":"array"},"cpuUtilizations":{"description":"The CPU utilization on each node.\n","items":{"type":"number"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"memoryAvailables":{"description":"The memory available on each node.\n","items":{"type":"integer"},"type":"array"},"memoryUseds":{"description":"The memory used on each node.\n","items":{"type":"integer"},"type":"array"},"names":{"description":"The node names.\n","items":{"type":"string"},"type":"array"},"onlines":{"description":"Whether a node is online.\n","items":{"type":"boolean"},"type":"array"},"sslFingerprints":{"description":"The SSL fingerprint for each node.\n","items":{"type":"string"},"type":"array"},"supportLevels":{"description":"The support level for each node.\n","items":{"type":"string"},"type":"array"},"uptimes":{"description":"The uptime in seconds for each node.\n","items":{"type":"integer"},"type":"array"}},"required":["cpuCounts","cpuUtilizations","memoryAvailables","memoryUseds","names","onlines","sslFingerprints","supportLevels","uptimes","id"],"type":"object"}},"proxmoxve:HA/getHAGroup:getHAGroup":{"description":"Retrieves information about a specific High Availability group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.HA.getHAGroups({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.HA.getHAGroup({\n group: __value,\n}))));\nexport const proxmoxVirtualEnvironmentHagroupsFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.HA.get_ha_groups()\nexample = [proxmoxve.HA.get_ha_group(group=__value) for __key, __value in all.group_ids]\npulumi.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.HA.GetHAGroup.Invoke(new()\n {\n Group = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentHagroupsFull\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := HA.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"proxmoxVirtualEnvironmentHagroupsFull\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = HAFunctions.getHAGroups();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAGroup.\n","properties":{"group":{"type":"string","description":"The identifier of the High Availability group to read.\n"}},"type":"object","required":["group"]},"outputs":{"description":"A collection of values returned by getHAGroup.\n","properties":{"comment":{"description":"The comment associated with this group\n","type":"string"},"group":{"description":"The identifier of the High Availability group to read.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"noFailback":{"description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group.\n","type":"boolean"},"nodes":{"additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n","type":"object"},"restricted":{"description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group.\n","type":"boolean"}},"required":["comment","group","id","noFailback","nodes","restricted"],"type":"object"}},"proxmoxve:HA/getHAGroups:getHAGroups":{"description":"Retrieves the list of High Availability groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.HA.getHAGroups({});\nexport const dataProxmoxVirtualEnvironmentHagroups = example.then(example =\u003e example.groupIds);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.HA.get_ha_groups()\npulumi.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.group_ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHagroups\"] = example.Apply(getHAGroupsResult =\u003e getHAGroupsResult.GroupIds),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := HA.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHagroups\", example.GroupIds)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = HAFunctions.getHAGroups();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.applyValue(getHAGroupsResult -\u003e getHAGroupsResult.groupIds()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:HA:getHAGroups\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentHagroups: ${example.groupIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getHAGroups.\n","properties":{"groupIds":{"description":"The identifiers of the High Availability groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of this resource.\n","type":"string"}},"required":["groupIds","id"],"type":"object"}},"proxmoxve:HA/getHAResource:getHAResource":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.HA.getHAResources({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.HA.getHAResource({\n resourceId: __value,\n}))));\nexport const proxmoxVirtualEnvironmentHaresourcesFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.HA.get_ha_resources()\nexample = [proxmoxve.HA.get_ha_resource(resource_id=__value) for __key, __value in all.resource_ids]\npulumi.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.HA.GetHAResources.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.HA.GetHAResource.Invoke(new()\n {\n ResourceId = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentHaresourcesFull\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = HAFunctions.getHAResources();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResource.\n","properties":{"resourceId":{"type":"string","description":"The identifier of the Proxmox HA resource to read.\n"}},"type":"object","required":["resourceId"]},"outputs":{"description":"A collection of values returned by getHAResource.\n","properties":{"comment":{"description":"The comment associated with this resource.\n","type":"string"},"group":{"description":"The identifier of the High Availability group this resource is a member of.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"maxRelocate":{"description":"The maximal number of relocation attempts.\n","type":"integer"},"maxRestart":{"description":"The maximal number of restart attempts.\n","type":"integer"},"resourceId":{"description":"The identifier of the Proxmox HA resource to read.\n","type":"string"},"state":{"description":"The desired state of the resource.\n","type":"string"},"type":{"description":"The type of High Availability resource (`vm` or `ct`).\n","type":"string"}},"required":["comment","group","id","maxRelocate","maxRestart","resourceId","state","type"],"type":"object"}},"proxmoxve:HA/getHAResources:getHAResources":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst exampleAll = proxmoxve.HA.getHAResources({});\nconst exampleVm = proxmoxve.HA.getHAResources({\n type: \"vm\",\n});\nexport const dataProxmoxVirtualEnvironmentHaresources = {\n all: exampleAll.then(exampleAll =\u003e exampleAll.resourceIds),\n vms: exampleVm.then(exampleVm =\u003e exampleVm.resourceIds),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_all = proxmoxve.HA.get_ha_resources()\nexample_vm = proxmoxve.HA.get_ha_resources(type=\"vm\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHaresources\", {\n \"all\": example_all.resource_ids,\n \"vms\": example_vm.resource_ids,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleAll = ProxmoxVE.HA.GetHAResources.Invoke();\n\n var exampleVm = ProxmoxVE.HA.GetHAResources.Invoke(new()\n {\n Type = \"vm\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHaresources\"] = \n {\n { \"all\", exampleAll.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n { \"vms\", exampleVm.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nexampleAll, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\n}, nil);\nif err != nil {\nreturn err\n}\nexampleVm, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\nType: pulumi.StringRef(\"vm\"),\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"dataProxmoxVirtualEnvironmentHaresources\", interface{}Map{\n\"all\": exampleAll.ResourceIds,\n\"vms\": exampleVm.ResourceIds,\n})\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleAll = HAFunctions.getHAResources();\n\n final var exampleVm = HAFunctions.getHAResources(GetHAResourcesArgs.builder()\n .type(\"vm\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHaresources\", %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference));\n }\n}\n```\n```yaml\nvariables:\n exampleAll:\n fn::invoke:\n Function: proxmoxve:HA:getHAResources\n Arguments: {}\n exampleVm:\n fn::invoke:\n Function: proxmoxve:HA:getHAResources\n Arguments:\n type: vm\noutputs:\n dataProxmoxVirtualEnvironmentHaresources:\n all: ${exampleAll.resourceIds}\n vms: ${exampleVm.resourceIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResources.\n","properties":{"type":{"type":"string","description":"The type of High Availability resources to fetch (`vm` or `ct`). All resources will be fetched if this option is unset.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getHAResources.\n","properties":{"id":{"description":"The unique identifier of this resource.\n","type":"string"},"resourceIds":{"description":"The identifiers of the High Availability resources.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of High Availability resources to fetch (`vm` or `ct`). All resources will be fetched if this option is unset.\n","type":"string"}},"required":["id","resourceIds"],"type":"object"}},"proxmoxve:Hardware/getMappings:getMappings":{"description":"Retrieves a list of hardware mapping resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example-pci = proxmoxve.Hardware.getMappings({\n checkNode: \"pve\",\n type: \"pci\",\n});\nconst example-usb = proxmoxve.Hardware.getMappings({\n checkNode: \"pve\",\n type: \"usb\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsPci = example_pci;\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsUsb = example_usb;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_pci = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n type=\"pci\")\nexample_usb = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n type=\"usb\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_pci = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n {\n CheckNode = \"pve\",\n Type = \"pci\",\n });\n\n var example_usb = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n {\n CheckNode = \"pve\",\n Type = \"usb\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\"] = example_pci,\n [\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\"] = example_usb,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample_pci, err := Hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType: \"pci\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_usb, err := Hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType: \"usb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.HardwareFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example-pci = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n .checkNode(\"pve\")\n .type(\"pci\")\n .build());\n\n final var example-usb = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n .checkNode(\"pve\")\n .type(\"usb\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci);\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb);\n }\n}\n```\n```yaml\nvariables:\n example-pci:\n fn::invoke:\n Function: proxmoxve:Hardware:getMappings\n Arguments:\n checkNode: pve\n type: pci\n example-usb:\n fn::invoke:\n Function: proxmoxve:Hardware:getMappings\n Arguments:\n checkNode: pve\n type: usb\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingsPci: ${[\"example-pci\"]}\n dataProxmoxVirtualEnvironmentHardwareMappingsUsb: ${[\"example-usb\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMappings.\n","properties":{"checkNode":{"type":"string","description":"The name of the node whose configurations should be checked for correctness.\n"},"type":{"type":"string","description":"The type of the hardware mappings.\n"}},"type":"object","required":["type"]},"outputs":{"description":"A collection of values returned by getMappings.\n","properties":{"checkNode":{"description":"The name of the node whose configurations should be checked for correctness.\n","type":"string"},"checks":{"description":"Might contain relevant diagnostics about incorrect configurations.\n","items":{"$ref":"#/types/proxmoxve:Hardware/getMappingsCheck:getMappingsCheck"},"type":"array"},"id":{"description":"The unique identifier of this hardware mappings data source.\n","type":"string"},"ids":{"description":"The identifiers of the hardware mappings.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of the hardware mappings.\n","type":"string"}},"required":["checks","id","ids","type"],"type":"object"}},"proxmoxve:Hardware/mapping/getPci:getPci":{"description":"Retrieves a PCI hardware mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getPci({\n name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingPci = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_pci(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Hardware.Mapping.GetPci.Invoke(new()\n {\n Name = \"example\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingPci\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Hardware.GetPci(ctx, \u0026mapping.GetPciArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetPciArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Hardware/mappingFunctions.getPci(GetPciArgs.builder()\n .name(\"example\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example.applyValue(getPciResult -\u003e getPciResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Hardware/mapping:getPci\n Arguments:\n name: example\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingPci: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPci.\n","properties":{"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getPci.\n","properties":{"comment":{"description":"The comment of this PCI hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this PCI hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getPciMap:getPciMap"},"type":"array"},"mediatedDevices":{"description":"Indicates whether to use with mediated devices.\n","type":"boolean"},"name":{"description":"The name of this PCI hardware mapping.\n","type":"string"}},"required":["comment","id","maps","mediatedDevices","name"],"type":"object"}},"proxmoxve:Hardware/mapping/getUsb:getUsb":{"description":"Retrieves a USB hardware mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getUsb({\n name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingUsb = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_usb(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Hardware.Mapping.GetUsb.Invoke(new()\n {\n Name = \"example\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Hardware.GetUsb(ctx, \u0026mapping.GetUsbArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetUsbArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Hardware/mappingFunctions.getUsb(GetUsbArgs.builder()\n .name(\"example\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example.applyValue(getUsbResult -\u003e getUsbResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Hardware/mapping:getUsb\n Arguments:\n name: example\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingUsb: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUsb.\n","properties":{"name":{"type":"string","description":"The name of this USB hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getUsb.\n","properties":{"comment":{"description":"The comment of this USB hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this USB hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getUsbMap:getUsbMap"},"type":"array"},"name":{"description":"The name of this USB hardware mapping.\n","type":"string"}},"required":["comment","id","maps","name"],"type":"object"}},"proxmoxve:Network/getDNS:getDNS":{"description":"Retrieves the DNS configuration for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNode = proxmoxve.Network.getDNS({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Network.get_dns(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNode = ProxmoxVE.Network.GetDNS.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetDNS(ctx, \u0026network.GetDNSArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetDNSArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNode = NetworkFunctions.getDNS(GetDNSArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNode:\n fn::invoke:\n Function: proxmoxve:Network:getDNS\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDNS.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDNS.\n","properties":{"domain":{"description":"The DNS search domain.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"},"servers":{"description":"The DNS servers.\n","items":{"type":"string"},"type":"array"}},"required":["domain","nodeName","servers","id"],"type":"object"}},"proxmoxve:Network/getHosts:getHosts":{"description":"Retrieves all the host entries from a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNodeHostEntries = proxmoxve.Network.getHosts({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_host_entries = proxmoxve.Network.get_hosts(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeHostEntries = ProxmoxVE.Network.GetHosts.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetHosts(ctx, \u0026network.GetHostsArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetHostsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNodeHostEntries = NetworkFunctions.getHosts(GetHostsArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNodeHostEntries:\n fn::invoke:\n Function: proxmoxve:Network:getHosts\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHosts.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getHosts.\n","properties":{"addresses":{"description":"The IP addresses.\n","items":{"type":"string"},"type":"array"},"digest":{"description":"The SHA1 digest.\n","type":"string"},"entries":{"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n","items":{"$ref":"#/types/proxmoxve:Network/getHostsEntry:getHostsEntry"},"type":"array"},"hostnames":{"description":"The hostnames associated with each of the IP addresses.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"}},"required":["addresses","digest","entries","hostnames","nodeName","id"],"type":"object"}},"proxmoxve:Network/getTime:getTime":{"description":"Retrieves the current time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNodeTime = proxmoxve.Network.getTime({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Network.get_time(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeTime = ProxmoxVE.Network.GetTime.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetTime(ctx, \u0026network.GetTimeArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetTimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNodeTime = NetworkFunctions.getTime(GetTimeArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNodeTime:\n fn::invoke:\n Function: proxmoxve:Network:getTime\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTime.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getTime.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"localTime":{"description":"The node's local time.\n","type":"string"},"nodeName":{"type":"string"},"timeZone":{"description":"The node's time zone.\n","type":"string"},"utcTime":{"description":"The node's local time formatted as UTC.\n","type":"string"}},"required":["localTime","nodeName","timeZone","utcTime","id"],"type":"object"}},"proxmoxve:Network/getVersion:getVersion":{"description":"Retrieves API version details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Network.getVersion({});\nexport const dataProxmoxVirtualEnvironmentVersion = {\n release: example.then(example =\u003e example.release),\n repository_id: example.then(example =\u003e example.repositoryId),\n version: example.then(example =\u003e example.version),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Network.get_version()\npulumi.export(\"dataProxmoxVirtualEnvironmentVersion\", {\n \"release\": example.release,\n \"repository_id\": example.repository_id,\n \"version\": example.version,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Network.GetVersion.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentVersion\"] = \n {\n { \"release\", example.Apply(getVersionResult =\u003e getVersionResult.Release) },\n { \"repository_id\", example.Apply(getVersionResult =\u003e getVersionResult.RepositoryId) },\n { \"version\", example.Apply(getVersionResult =\u003e getVersionResult.Version) },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Network.GetVersion(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentVersion\", pulumi.StringMap{\n\t\t\t\"release\": example.Release,\n\t\t\t\"repository_id\": example.RepositoryId,\n\t\t\t\"version\": example.Version,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = NetworkFunctions.getVersion();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentVersion\", %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Network:getVersion\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentVersion:\n release: ${example.release}\n repository_id: ${example.repositoryId}\n version: ${example.version}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getVersion.\n","properties":{"id":{"description":"Placeholder identifier attribute.\n","type":"string"},"release":{"description":"The current Proxmox VE point release in `x.y` format.\n","type":"string"},"repositoryId":{"description":"The short git revision from which this version was build.\n","type":"string"},"version":{"description":"The full pve-manager package version of this node.\n","type":"string"}},"required":["id","release","repositoryId","version"],"type":"object"}},"proxmoxve:Permission/getGroup:getGroup":{"description":"Retrieves information about a specific user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsTeam = proxmoxve.Permission.getGroup({\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.Permission.get_group(group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = ProxmoxVE.Permission.GetGroup.Invoke(new()\n {\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetGroup(ctx, \u0026permission.GetGroupArgs{\n\t\t\tGroupId: \"operations-team\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsTeam = PermissionFunctions.getGroup(GetGroupArgs.builder()\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsTeam:\n fn::invoke:\n Function: proxmoxve:Permission:getGroup\n Arguments:\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGroup.\n","properties":{"groupId":{"type":"string","description":"The group identifier.\n"}},"type":"object","required":["groupId"]},"outputs":{"description":"A collection of values returned by getGroup.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getGroupAcl:getGroupAcl"},"type":"array"},"comment":{"description":"The group comment.\n","type":"string"},"groupId":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"members":{"description":"The group members as a list with `username@realm` entries.\n","items":{"type":"string"},"type":"array"}},"required":["acls","comment","groupId","members","id"],"type":"object"}},"proxmoxve:Permission/getGroups:getGroups":{"description":"Retrieves basic information about all available user groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableGroups = proxmoxve.Permission.getGroups({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_groups = proxmoxve.Permission.get_groups()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableGroups = ProxmoxVE.Permission.GetGroups.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableGroups = PermissionFunctions.getGroups();\n\n }\n}\n```\n```yaml\nvariables:\n availableGroups:\n fn::invoke:\n Function: proxmoxve:Permission:getGroups\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getGroups.\n","properties":{"comments":{"description":"The group comments.\n","items":{"type":"string"},"type":"array"},"groupIds":{"description":"The group identifiers.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"}},"required":["comments","groupIds","id"],"type":"object"}},"proxmoxve:Permission/getPool:getPool":{"description":"Retrieves information about a specific resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsPool = proxmoxve.Permission.getPool({\n poolId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.Permission.get_pool(pool_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = ProxmoxVE.Permission.GetPool.Invoke(new()\n {\n PoolId = \"operations\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetPool(ctx, \u0026permission.GetPoolArgs{\n\t\t\tPoolId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsPool = PermissionFunctions.getPool(GetPoolArgs.builder()\n .poolId(\"operations\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsPool:\n fn::invoke:\n Function: proxmoxve:Permission:getPool\n Arguments:\n poolId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPool.\n","properties":{"poolId":{"type":"string","description":"The pool identifier.\n"}},"type":"object","required":["poolId"]},"outputs":{"description":"A collection of values returned by getPool.\n","properties":{"comment":{"description":"The pool comment.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"members":{"description":"The pool members.\n","items":{"$ref":"#/types/proxmoxve:Permission/getPoolMember:getPoolMember"},"type":"array"},"poolId":{"type":"string"}},"required":["comment","members","poolId","id"],"type":"object"}},"proxmoxve:Permission/getPools:getPools":{"description":"Retrieves the identifiers for all the available resource pools.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availablePools = proxmoxve.Permission.getPools({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_pools = proxmoxve.Permission.get_pools()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availablePools = ProxmoxVE.Permission.GetPools.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetPools(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availablePools = PermissionFunctions.getPools();\n\n }\n}\n```\n```yaml\nvariables:\n availablePools:\n fn::invoke:\n Function: proxmoxve:Permission:getPools\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPools.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"poolIds":{"description":"The pool identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["poolIds","id"],"type":"object"}},"proxmoxve:Permission/getRole:getRole":{"description":"Retrieves information about a specific role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsRole = proxmoxve.Permission.getRole({\n roleId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_role = proxmoxve.Permission.get_role(role_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsRole = ProxmoxVE.Permission.GetRole.Invoke(new()\n {\n RoleId = \"operations\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetRole(ctx, \u0026permission.GetRoleArgs{\n\t\t\tRoleId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsRole = PermissionFunctions.getRole(GetRoleArgs.builder()\n .roleId(\"operations\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsRole:\n fn::invoke:\n Function: proxmoxve:Permission:getRole\n Arguments:\n roleId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRole.\n","properties":{"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["roleId"]},"outputs":{"description":"A collection of values returned by getRole.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"privileges":{"description":"The role privileges\n","items":{"type":"string"},"type":"array"},"roleId":{"type":"string"}},"required":["privileges","roleId","id"],"type":"object"}},"proxmoxve:Permission/getRoles:getRoles":{"description":"Retrieves information about all the available roles.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableRoles = proxmoxve.Permission.getRoles({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_roles = proxmoxve.Permission.get_roles()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableRoles = ProxmoxVE.Permission.GetRoles.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetRoles(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableRoles = PermissionFunctions.getRoles();\n\n }\n}\n```\n```yaml\nvariables:\n availableRoles:\n fn::invoke:\n Function: proxmoxve:Permission:getRoles\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getRoles.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"privileges":{"description":"The role privileges.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"roleIds":{"description":"The role identifiers.\n","items":{"type":"string"},"type":"array"},"specials":{"description":"Whether the role is special (built-in).\n","items":{"type":"boolean"},"type":"array"}},"required":["privileges","roleIds","specials","id"],"type":"object"}},"proxmoxve:Permission/getUser:getUser":{"description":"Retrieves information about a specific user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsUser = proxmoxve.Permission.getUser({\n userId: \"operation@pam\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_user = proxmoxve.Permission.get_user(user_id=\"operation@pam\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsUser = ProxmoxVE.Permission.GetUser.Invoke(new()\n {\n UserId = \"operation@pam\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetUser(ctx, \u0026permission.GetUserArgs{\n\t\t\tUserId: \"operation@pam\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsUser = PermissionFunctions.getUser(GetUserArgs.builder()\n .userId(\"operation@pam\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsUser:\n fn::invoke:\n Function: proxmoxve:Permission:getUser\n Arguments:\n userId: operation@pam\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUser.\n","properties":{"userId":{"type":"string","description":"The user identifier.\n"}},"type":"object","required":["userId"]},"outputs":{"description":"A collection of values returned by getUser.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getUserAcl:getUserAcl"},"type":"array"},"comment":{"description":"The user comment.\n","type":"string"},"email":{"description":"The user's email address.\n","type":"string"},"enabled":{"description":"Whether the user account is enabled.\n","type":"boolean"},"expirationDate":{"description":"The user account's expiration date (RFC 3339).\n","type":"string"},"firstName":{"description":"The user's first name.\n","type":"string"},"groups":{"description":"The user's groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"keys":{"description":"The user's keys.\n","type":"string"},"lastName":{"description":"The user's last name.\n","type":"string"},"userId":{"type":"string"}},"required":["acls","comment","email","enabled","expirationDate","firstName","groups","keys","lastName","userId","id"],"type":"object"}},"proxmoxve:Permission/getUsers:getUsers":{"description":"Retrieves information about all the available users.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableUsers = proxmoxve.Permission.getUsers({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_users = proxmoxve.Permission.get_users()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableUsers = ProxmoxVE.Permission.GetUsers.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetUsers(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableUsers = PermissionFunctions.getUsers();\n\n }\n}\n```\n```yaml\nvariables:\n availableUsers:\n fn::invoke:\n Function: proxmoxve:Permission:getUsers\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getUsers.\n","properties":{"comments":{"description":"The user comments.\n","items":{"type":"string"},"type":"array"},"emails":{"description":"The users' email addresses.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether a user account is enabled.\n","items":{"type":"boolean"},"type":"array"},"expirationDates":{"description":"The user accounts' expiration dates (RFC 3339).\n","items":{"type":"string"},"type":"array"},"firstNames":{"description":"The users' first names.\n","items":{"type":"string"},"type":"array"},"groups":{"description":"The users' groups.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"keys":{"description":"The users' keys.\n","items":{"type":"string"},"type":"array"},"lastNames":{"description":"The users' last names.\n","items":{"type":"string"},"type":"array"},"userIds":{"description":"The user identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["comments","emails","enableds","expirationDates","firstNames","groups","keys","lastNames","userIds","id"],"type":"object"}},"proxmoxve:Storage/getDatastores:getDatastores":{"description":"Retrieves information about all the datastores available to a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNode = proxmoxve.Storage.getDatastores({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Storage.get_datastores(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNode = ProxmoxVE.Storage.GetDatastores.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.GetDatastores(ctx, \u0026storage.GetDatastoresArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.StorageFunctions;\nimport com.pulumi.proxmoxve.Storage.inputs.GetDatastoresArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNode = StorageFunctions.getDatastores(GetDatastoresArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNode:\n fn::invoke:\n Function: proxmoxve:Storage:getDatastores\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDatastores.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDatastores.\n","properties":{"actives":{"description":"Whether the datastore is active.\n","items":{"type":"boolean"},"type":"array"},"contentTypes":{"description":"The allowed content types.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"datastoreIds":{"description":"The datastore identifiers.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether the datastore is enabled.\n","items":{"type":"boolean"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"},"shareds":{"description":"Whether the datastore is shared.\n","items":{"type":"boolean"},"type":"array"},"spaceAvailables":{"description":"The available space in bytes.\n","items":{"type":"integer"},"type":"array"},"spaceTotals":{"description":"The total space in bytes.\n","items":{"type":"integer"},"type":"array"},"spaceUseds":{"description":"The used space in bytes.\n","items":{"type":"integer"},"type":"array"},"types":{"description":"The storage types.\n","items":{"type":"string"},"type":"array"}},"required":["actives","contentTypes","datastoreIds","enableds","nodeName","shareds","spaceAvailables","spaceTotals","spaceUseds","types","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachine:getVirtualMachine":{"description":"Retrieves information about a specific VM.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst testVm = proxmoxve.VM.getVirtualMachine({\n nodeName: \"test\",\n vmId: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_vm = proxmoxve.VM.get_virtual_machine(node_name=\"test\",\n vm_id=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testVm = ProxmoxVE.VM.GetVirtualMachine.Invoke(new()\n {\n NodeName = \"test\",\n VmId = 100,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/VM\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := VM.GetVirtualMachine(ctx, \u0026vm.GetVirtualMachineArgs{\n\t\t\tNodeName: \"test\",\n\t\t\tVmId: 100,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testVm = VMFunctions.getVirtualMachine(GetVirtualMachineArgs.builder()\n .nodeName(\"test\")\n .vmId(100)\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n testVm:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachine\n Arguments:\n nodeName: test\n vmId: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachine.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"},"status":{"type":"string","description":"Status of the VM\n"},"template":{"type":"boolean","description":"Is VM a template (true) or a regular VM (false)\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["nodeName","vmId"]},"outputs":{"description":"A collection of values returned by getVirtualMachine.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"name":{"description":"The virtual machine name.\n","type":"string"},"nodeName":{"type":"string"},"status":{"description":"Status of the VM\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Is VM a template (true) or a regular VM (false)\n","type":"boolean"},"vmId":{"type":"integer"}},"required":["name","nodeName","tags","vmId","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachines:getVirtualMachines":{"description":"Retrieves information about all VMs in the Proxmox cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst ubuntuVms = proxmoxve.VM.getVirtualMachines({\n tags: [\"ubuntu\"],\n});\nconst ubuntuTemplates = proxmoxve.VM.getVirtualMachines({\n filters: [\n {\n name: \"template\",\n values: [\"true\"],\n },\n {\n name: \"status\",\n values: [\"stopped\"],\n },\n {\n name: \"name\",\n regex: true,\n values: [\"^ubuntu-20.*$\"],\n },\n {\n name: \"node_name\",\n regex: true,\n values: [\n \"node_us_[1-3]\",\n \"node_eu_[1-3]\",\n ],\n },\n ],\n tags: [\n \"template\",\n \"latest\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_vms = proxmoxve.VM.get_virtual_machines(tags=[\"ubuntu\"])\nubuntu_templates = proxmoxve.VM.get_virtual_machines(filters=[\n {\n \"name\": \"template\",\n \"values\": [\"true\"],\n },\n {\n \"name\": \"status\",\n \"values\": [\"stopped\"],\n },\n {\n \"name\": \"name\",\n \"regex\": True,\n \"values\": [\"^ubuntu-20.*$\"],\n },\n {\n \"name\": \"node_name\",\n \"regex\": True,\n \"values\": [\n \"node_us_[1-3]\",\n \"node_eu_[1-3]\",\n ],\n },\n ],\n tags=[\n \"template\",\n \"latest\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuVms = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n {\n Tags = new[]\n {\n \"ubuntu\",\n },\n });\n\n var ubuntuTemplates = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n {\n Filters = new[]\n {\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"template\",\n Values = new[]\n {\n \"true\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"status\",\n Values = new[]\n {\n \"stopped\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"name\",\n Regex = true,\n Values = new[]\n {\n \"^ubuntu-20.*$\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"node_name\",\n Regex = true,\n Values = new[]\n {\n \"node_us_[1-3]\",\n \"node_eu_[1-3]\",\n },\n },\n },\n Tags = new[]\n {\n \"template\",\n \"latest\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/VM\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := VM.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tTags: []string{\n\t\t\t\t\"ubuntu\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = VM.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tFilters: []vm.GetVirtualMachinesFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"template\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"status\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"stopped\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"^ubuntu-20.*$\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"node_name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"node_us_[1-3]\",\n\t\t\t\t\t\t\"node_eu_[1-3]\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: []string{\n\t\t\t\t\"template\",\n\t\t\t\t\"latest\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ubuntuVms = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n .tags(\"ubuntu\")\n .build());\n\n final var ubuntuTemplates = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n .filters( \n GetVirtualMachinesFilterArgs.builder()\n .name(\"template\")\n .values(true)\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"status\")\n .values(\"stopped\")\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"name\")\n .regex(true)\n .values(\"^ubuntu-20.*$\")\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"node_name\")\n .regex(true)\n .values( \n \"node_us_[1-3]\",\n \"node_eu_[1-3]\")\n .build())\n .tags( \n \"template\",\n \"latest\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n ubuntuVms:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachines\n Arguments:\n tags:\n - ubuntu\n ubuntuTemplates:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachines\n Arguments:\n filters:\n - name: template\n values:\n - true\n - name: status\n values:\n - stopped\n - name: name\n regex: true\n values:\n - ^ubuntu-20.*$\n - name: node_name\n regex: true\n values:\n - node_us_[1-3]\n - node_eu_[1-3]\n tags:\n - template\n - latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachines.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"description":"Filter blocks. The VM must satisfy all filter blocks to be included in the result.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the VMs. The VM must have all\nthe tags to be included in the result.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getVirtualMachines.\n","properties":{"filters":{"items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"description":"The node name.\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"vms":{"description":"The VMs list.\n","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm"},"type":"array"}},"required":["vms","id"],"type":"object"}},"proxmoxve:index/getNode:getNode":{"description":"Retrieves information about node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst node = proxmoxve.getNode({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nnode = proxmoxve.get_node()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var node = ProxmoxVE.GetNode.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.GetNode(ctx, \u0026proxmoxve.GetNodeArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetNodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var node = ProxmoxveFunctions.getNode();\n\n }\n}\n```\n```yaml\nvariables:\n node:\n fn::invoke:\n Function: proxmoxve:getNode\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNode.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getNode.\n","properties":{"cpuCount":{"description":"The CPU count on the node.\n","type":"integer"},"cpuModel":{"description":"The CPU model on the node.\n","type":"string"},"cpuSockets":{"description":"The CPU utilization on the node.\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"memoryAvailable":{"description":"The memory available on the node.\n","type":"integer"},"memoryTotal":{"description":"The total memory on the node.\n","type":"integer"},"memoryUsed":{"description":"The memory used on the node.\n","type":"integer"},"nodeName":{"type":"string"},"uptime":{"description":"The uptime in seconds on the node.\n","type":"integer"}},"required":["cpuCount","cpuModel","cpuSockets","memoryAvailable","memoryTotal","memoryUsed","nodeName","uptime","id"],"type":"object"}},"proxmoxve:index/getVm2:getVm2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM datasource using Plugin Framework.\n","inputs":{"description":"A collection of arguments for invoking getVm2.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:index/getVm2Clone:getVm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"id":{"type":"integer","description":"The unique identifier of the VM in the Proxmox cluster.\n"},"name":{"type":"string","description":"The name of the VM.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Whether the VM is a template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"type":"object","required":["id","nodeName"]},"outputs":{"description":"A collection of values returned by getVm2.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:index/getVm2Clone:getVm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"description":"The description of the VM.\n","type":"string"},"id":{"description":"The unique identifier of the VM in the Proxmox cluster.\n","type":"integer"},"name":{"description":"The name of the VM.\n","type":"string"},"nodeName":{"description":"The name of the node where the VM is provisioned.\n","type":"string"},"tags":{"description":"The tags assigned to the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Whether the VM is a template.\n","type":"boolean"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"required":["cpu","id","nodeName","tags","vga"],"type":"object"}}}} \ No newline at end of file +{"name":"proxmoxve","displayName":"Proxmox Virtual Environment (Proxmox VE)","version":"6.17.0-alpha.1732413947+221eec8a.dirty","description":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","keywords":["pulumi","proxmox","proxmoxve"],"homepage":"https://github.com/muhlba91/pulumi-proxmoxve","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`proxmox` Terraform Provider](https://github.com/bpg/terraform-provider-proxmox).","repository":"https://github.com/muhlba91/pulumi-proxmoxve","logoUrl":"https://raw.githubusercontent.com/muhlba91/pulumi-proxmoxve/main/assets/proxmox-logo.png","pluginDownloadURL":"github://api.github.com/muhlba91/pulumi-proxmoxve","publisher":"Daniel Muehlbachler-Pietrzykowski","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"proxmoxve":"ProxmoxVE"},"compatibility":"tfbridge20"},"go":{"importBasePath":"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve","generateResourceContainerTypes":true,"generateExtraInputTypes":true},"java":{"basePackage":"io.muehlbachler.pulumi","buildFiles":"","gradleNexusPublishPluginVersion":"","gradleTest":""},"nodejs":{"packageName":"@muhlba91/pulumi-proxmoxve","packageDescription":"A Pulumi package for creating and managing Proxmox Virtual Environment cloud resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","dependencies":{"@pulumi/pulumi":"^3.0.0"},"devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true},"python":{"packageName":"pulumi_proxmoxve","requires":{"pulumi":"\u003e=3.0.0,\u003c4.0.0"},"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/bpg/terraform-provider-proxmox)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-proxmoxve` repo](https://github.com/muhlba91/pulumi-proxmoxve/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-proxmox` repo](https://github.com/bpg/terraform-provider-proxmox/issues).","compatibility":"tfbridge20","pyproject":{}}},"config":{"variables":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:config/ssh:ssh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}}},"types":{"proxmoxve:Acme/getAccountAccount:getAccountAccount":{"properties":{"contacts":{"type":"array","items":{"type":"string"},"description":"An array of contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the account creation.\n"},"status":{"type":"string","description":"The status of the account. Can be one of `valid`, `deactivated` or `revoked`.\n"}},"type":"object","required":["contacts","createdAt","status"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin":{"properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"type":{"type":"string","description":"ACME challenge type (dns, standalone).\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object","required":["api","data","digest","plugin","type","validationDelay"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:CT/ContainerClone:ContainerClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the `node_name` argument).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source container.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:CT/ContainerConsole:ContainerConsole":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the console device (defaults\nto `true`).\n"},"ttyCount":{"type":"integer","description":"The number of available TTY (defaults to `2`).\n"},"type":{"type":"string","description":"The console mode (defaults to `tty`).\n"}},"type":"object"},"proxmoxve:CT/ContainerCpu:ContainerCpu":{"properties":{"architecture":{"type":"string","description":"The CPU architecture (defaults to `amd64`).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to `1`).\n"},"units":{"type":"integer","description":"The CPU units (defaults to `1024`).\n"}},"type":"object"},"proxmoxve:CT/ContainerDisk:ContainerDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ndisk in (defaults to `local`).\n","willReplaceOnChanges":true},"size":{"type":"integer","description":"The size of the root filesystem in gigabytes (defaults\nto `4`). Requires `datastore_id` to be set.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerFeatures:ContainerFeatures":{"properties":{"fuse":{"type":"boolean","description":"Whether the container supports FUSE mounts (defaults\nto `false`)\n"},"keyctl":{"type":"boolean","description":"Whether the container supports `keyctl()` system\ncall (defaults to `false`)\n"},"mounts":{"type":"array","items":{"type":"string"},"description":"List of allowed mount types (`cifs` or `nfs`)\n"},"nesting":{"type":"boolean","description":"Whether the container is nested (defaults\nto `false`)\n"}},"type":"object"},"proxmoxve:CT/ContainerInitialization:ContainerInitialization":{"properties":{"dns":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns","description":"The DNS configuration.\n"},"hostname":{"type":"string","description":"The hostname.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"userAccount":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount","description":"The user account configuration.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerInitializationDns:ContainerInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server. The `server` attribute is\ndeprecated and will be removed in a future release. Please use\nthe `servers` attribute instead.\n","deprecationMessage":"The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfig:ContainerInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6","description":"The IPv4 configuration.\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv4:ContainerInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address (use `dhcp` for auto-discovery).\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationIpConfigIpv6:ContainerInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address (use `dhcp` for auto-discovery).\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:CT/ContainerInitializationUserAccount:ContainerInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys for the root account.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The password for the root account.\n","secret":true,"willReplaceOnChanges":true}},"type":"object"},"proxmoxve:CT/ContainerMemory:ContainerMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults\nto `512`).\n"},"swap":{"type":"integer","description":"The swap size in megabytes (defaults to `0`).\n"}},"type":"object"},"proxmoxve:CT/ContainerMountPoint:ContainerMountPoint":{"properties":{"acl":{"type":"boolean","description":"Explicitly enable or disable ACL support.\n"},"backup":{"type":"boolean","description":"Whether to include the mount point in backups (only\nused for volume mount points, defaults to `false`).\n"},"mountOptions":{"type":"array","items":{"type":"string"},"description":"List of extra mount options.\n"},"path":{"type":"string","description":"Path to the mount point as seen from inside the\ncontainer.\n"},"quota":{"type":"boolean","description":"Enable user quotas inside the container (not supported\nwith ZFS subvolumes).\n"},"readOnly":{"type":"boolean","description":"Read-only mount point.\n"},"replicate":{"type":"boolean","description":"Will include this volume to a storage replica job.\n"},"shared":{"type":"boolean","description":"Mark this non-volume mount point as available on all\nnodes.\n"},"size":{"type":"string","description":"Volume size (only for volume mount points).\nCan be specified with a unit suffix (e.g. `10G`).\n"},"volume":{"type":"string","description":"Volume, device or directory to mount into the\ncontainer.\n"}},"type":"object","required":["path","volume"]},"proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults\nto `vmbr0`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults\nto `true`).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be\nused (defaults to `false`).\n"},"macAddress":{"type":"string","description":"The MAC address.\n"},"mtu":{"type":"integer","description":"Maximum transfer unit of the interface. Cannot be\nlarger than the bridge's MTU.\n"},"name":{"type":"string","description":"The network interface name.\n"},"rateLimit":{"type":"number","description":"The rate limit in megabytes per second.\n"},"vlanId":{"type":"integer","description":"The VLAN identifier.\n"}},"type":"object","required":["name"]},"proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem":{"properties":{"templateFileId":{"type":"string","description":"The identifier for an OS template file.\nThe ID format is `\u003cdatastore_id\u003e:\u003ccontent_type\u003e/\u003cfile_name\u003e`, for example `local:iso/jammy-server-cloudimg-amd64.tar.gz`.\nCan be also taken from `proxmoxve.Download.File` resource, or from the output of `pvesm list \u003cstorage\u003e`.\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The type (defaults to `unmanaged`).\n"}},"type":"object","required":["templateFileId"]},"proxmoxve:CT/ContainerStartup:ContainerStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next container is started.\n"}},"type":"object"},"proxmoxve:Cluster/OptionsNextId:OptionsNextId":{"properties":{"lower":{"type":"integer","description":"The minimum number for the next free VM ID. Must be higher or equal to 100\n"},"upper":{"type":"integer","description":"The maximum number for the next free VM ID. Must be less or equal to 999999999\n"}},"type":"object"},"proxmoxve:Cluster/OptionsNotify:OptionsNotify":{"properties":{"haFencingMode":{"type":"string","description":"Cluster-wide notification settings for the HA fencing mode. Must be `always` | `never`.\n"},"haFencingTarget":{"type":"string","description":"Cluster-wide notification settings for the HA fencing target.\n"},"packageUpdates":{"type":"string","description":"Cluster-wide notification settings for package updates. Must be `auto` | `always` | `never`.\n"},"packageUpdatesTarget":{"type":"string","description":"Cluster-wide notification settings for the package updates target.\n"},"replication":{"type":"string","description":"Cluster-wide notification settings for replication. Must be `always` | `never`.\n"},"replicationTarget":{"type":"string","description":"Cluster-wide notification settings for the replication target.\n"}},"type":"object"},"proxmoxve:Hardware/getMappingsCheck:getMappingsCheck":{"properties":{"mappingId":{"type":"string","description":"The corresponding hardware mapping ID of the node check diagnostic entry.\n"},"message":{"type":"string","description":"The message of the node check diagnostic entry.\n"},"severity":{"type":"string","description":"The severity of the node check diagnostic entry.\n"}},"type":"object","required":["mappingId","message","severity"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/PciMap:PciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set\n"}},"type":"object","required":["id","node","path"]},"proxmoxve:Hardware/mapping/UsbMap:UsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID of the map.\n"},"node":{"type":"string","description":"The node name of the map.\n"},"path":{"type":"string","description":"The path of the map. For hardware mappings of type USB the path is optional and indicates that the device is mapped through the device ID instead of ports.\n"}},"type":"object","required":["id","node"]},"proxmoxve:Hardware/mapping/getPciMap:getPciMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped PCI device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"iommuGroup":{"type":"integer","description":"The IOMMU group attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"},"subsystemId":{"type":"string","description":"The subsystem ID attribute of the map.Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set.\n"}},"type":"object","required":["comment","id","iommuGroup","node","path","subsystemId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Hardware/mapping/getUsbMap:getUsbMap":{"properties":{"comment":{"type":"string","description":"The comment of the mapped USB device.\n"},"id":{"type":"string","description":"The ID attribute of the map.\n"},"node":{"type":"string","description":"The node name attribute of the map.\n"},"path":{"type":"string","description":"The path attribute of the map.\n"}},"type":"object","required":["comment","id","node","path"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr":{"properties":{"comment":{"type":"string","description":"Arbitrary string annotation.\n","willReplaceOnChanges":true},"name":{"type":"string","description":"Network/IP specification in CIDR format.\n","willReplaceOnChanges":true},"nomatch":{"type":"boolean","description":"Entries marked as `nomatch` are skipped as if those\nwere not added to the set.\n","willReplaceOnChanges":true}},"type":"object","required":["name"]},"proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit":{"properties":{"burst":{"type":"integer","description":"Initial burst of packages which will always get\nlogged before the rate is applied (defaults to `5`).\n"},"enabled":{"type":"boolean","description":"Enable or disable the log rate limit.\n"},"rate":{"type":"string","description":"Frequency with which the burst bucket gets refilled\n(defaults to `1/second`).\n"}},"type":"object"},"proxmoxve:Network/FirewallRulesRule:FirewallRulesRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can\nrefer to a single IP address, an IP set ('+ipsetname') or an IP\nalias definition. You can also specify an address range\nlike `20.34.101.207-201.3.9.99`, or a list of IP addresses and\nnetworks (entries are separated by comma). Please do not mix IPv4\nand IPv6 addresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined\nin `/etc/services`. Port ranges can be specified with '\\d+:\\d+', for\nexample `80:85`, and you can use comma separated list to match\nseveral ports or ranges.\n"},"enabled":{"type":"boolean","description":"Enable this rule. Defaults to `true`.\n"},"iface":{"type":"string","description":"Network interface name. You have to use network\nconfiguration key names for VMs and containers ('net\\d+'). Host\nrelated rules can use arbitrary strings.\n"},"log":{"type":"string","description":"Log level for this rule (`emerg`, `alert`, `crit`,\n`err`, `warning`, `notice`, `info`, `debug`, `nolog`).\n"},"macro":{"type":"string","description":"Macro name. Use predefined standard macro\nfrom \u003chttps://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions\u003e\n"},"pos":{"type":"integer","description":"Position of the rule in the list.\n"},"proto":{"type":"string","description":"Restrict packet protocol. You can use protocol\nnames as defined in '/etc/protocols'.\n"},"securityGroup":{"type":"string","description":"Security group name.\n","willReplaceOnChanges":true},"source":{"type":"string","description":"Restrict packet source address. This can refer\nto a single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range\nlike `20.34.101.207-201.3.9.99`, or a list of IP addresses and\nnetworks (entries are separated by comma). Please do not mix IPv4\nand IPv6 addresses inside such lists.\n"},"sport":{"type":"string","description":"Restrict TCP/UDP source port. You can use\nservice names or simple numbers (0-65535), as defined\nin `/etc/services`. Port ranges can be specified with '\\d+:\\d+', for\nexample `80:85`, and you can use comma separated list to match\nseveral ports or ranges.\n- a security group insertion block, which includes the following arguments:\n"},"type":{"type":"string","description":"Rule type (`in`, `out`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule":{"properties":{"action":{"type":"string","description":"Rule action (`ACCEPT`, `DROP`, `REJECT`).\n"},"comment":{"type":"string","description":"Rule comment.\n"},"dest":{"type":"string","description":"Restrict packet destination address. This can refer to\na single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range like\n`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks\n(entries are separated by comma). Please do not mix IPv4 and IPv6\naddresses inside such lists.\n"},"dport":{"type":"string","description":"Restrict TCP/UDP destination port. You can use\nservice names or simple numbers (0-65535), as defined in '/etc/\nservices'. Port ranges can be specified with '\\d+:\\d+', for example\n`80:85`, and you can use comma separated list to match several ports or\nranges.\n"},"enabled":{"type":"boolean","description":"Enable rule\n"},"iface":{"type":"string","description":"Network interface name. You have to use network\nconfiguration key names for VMs and containers ('net\\d+'). Host related\nrules can use arbitrary strings.\n"},"log":{"type":"string","description":"Log level for this rule (`emerg`, `alert`, `crit`,\n`err`, `warning`, `notice`, `info`, `debug`, `nolog`).\n"},"macro":{"type":"string","description":"Macro name. Use predefined standard macro\nfrom \u003chttps://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions\u003e\n"},"pos":{"type":"integer","description":"Position of the rule in the list.\n"},"proto":{"type":"string","description":"Restrict packet protocol. You can use protocol names\nas defined in '/etc/protocols'.\n"},"securityGroup":{"type":"string","description":"Security group name\n","willReplaceOnChanges":true},"source":{"type":"string","description":"Restrict packet source address. This can refer\nto a single IP address, an IP set ('+ipsetname') or an IP alias\ndefinition. You can also specify an address range like\n`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks (\nentries are separated by comma). Please do not mix IPv4 and IPv6\naddresses inside such lists.\n"},"sport":{"type":"string","description":"Restrict TCP/UDP source port. You can use\nservice names or simple numbers (0-65535), as defined in '/etc/\nservices'. Port ranges can be specified with '\\d+:\\d+', for example\n`80:85`, and you can use comma separated list to match several ports or\nranges.\n"},"type":{"type":"string","description":"Rule type (`in`, `out`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["pos"]}}},"proxmoxve:Network/getHostsEntry:getHostsEntry":{"properties":{"address":{"type":"string","description":"The address\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames associated with each of the IP addresses.\n"}},"type":"object","required":["address","hostnames"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/GroupAcl:GroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/PoolMember:PoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["datastoreId","id","nodeName","type","vmId"]}}},"proxmoxve:Permission/UserAcl:UserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","roleId"]},"proxmoxve:Permission/getGroupAcl:getGroupAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getPoolMember:getPoolMember":{"properties":{"datastoreId":{"type":"string","description":"The datastore identifier.\n"},"id":{"type":"string","description":"The member identifier.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"type":{"type":"string","description":"The member type.\n"},"vmId":{"type":"integer","description":"The virtual machine identifier.\n"}},"type":"object","required":["datastoreId","id","nodeName","type","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Permission/getUserAcl:getUserAcl":{"properties":{"path":{"type":"string","description":"The path.\n"},"propagate":{"type":"boolean","description":"Whether to propagate to child paths.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["path","propagate","roleId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:Storage/FileSourceFile:FileSourceFile":{"properties":{"changed":{"type":"boolean","description":"Whether the source file has changed since the last run\n","willReplaceOnChanges":true},"checksum":{"type":"string","description":"The SHA256 checksum of the source file.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name to use instead of the source file\nname. Useful when the source file does not have a valid file extension,\nfor example when the source file is a URL referencing a `.qcow2` image.\n","willReplaceOnChanges":true},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step for\nHTTPS sources (defaults to `false`).\n","willReplaceOnChanges":true},"minTls":{"type":"string","description":"The minimum required TLS version for HTTPS\nsources. \"Supported values: `1.0|1.1|1.2|1.3` (defaults to `1.3`).\n","willReplaceOnChanges":true},"path":{"type":"string","description":"A path to a local file or a URL.\n","willReplaceOnChanges":true}},"type":"object","required":["path"]},"proxmoxve:Storage/FileSourceRaw:FileSourceRaw":{"properties":{"data":{"type":"string","description":"The raw data.\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name.\n","willReplaceOnChanges":true},"resize":{"type":"integer","description":"The number of bytes to resize the file to.\n","willReplaceOnChanges":true}},"type":"object","required":["data","fileName"]},"proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","retries"]}}},"proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based. For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture `\u003caarch64 | x86_64\u003e` (defaults to the host). Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to `1`).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags. Use `+FLAG` to enable, `-FLAG` to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to `0` which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to `false`).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only `vnc` is available. Migration with VNC clipboard is not supported by Proxmox.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type (defaults to `std`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the QEMU agent (defaults\nto `false`).\n"},"timeout":{"type":"string","description":"The maximum amount of time to wait for data from\nthe QEMU agent to become available ( defaults to `15m`).\n"},"trim":{"type":"boolean","description":"Whether to enable the FSTRIM feature in the QEMU agent\n(defaults to `false`).\n"},"type":{"type":"string","description":"The QEMU agent interface type (defaults to `virtio`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `intel-hda`).\n- `AC97` - Intel 82801AA AC97 Audio.\n- `ich9-intel-hda` - Intel HD Audio Controller (ich9).\n- `intel-hda` - Intel HD Audio.\n"},"driver":{"type":"string","description":"The driver (defaults to `spice`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the audio device (defaults\nto `true`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom":{"properties":{"enabled":{"type":"boolean","description":"Whether to enable the CDROM drive (defaults\nto `false`).\n"},"fileId":{"type":"string","description":"A file ID for an ISO file (defaults to `cdrom` as\nin the physical drive). Use `none` to leave the CDROM drive empty.\n"},"interface":{"type":"string","description":"A hardware interface to connect CDROM drive to,\nmust be `ideN` (defaults to `ide3`). Note that `q35` machine type only\nsupports `ide0` and `ide2`.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineClone:VirtualMachineClone":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n","willReplaceOnChanges":true},"full":{"type":"boolean","description":"Full or linked clone (defaults to `true`).\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The name of the source node (leave blank, if\nequal to the `node_name` argument).\n","willReplaceOnChanges":true},"retries":{"type":"integer","description":"Number of retries in Proxmox for clone vm.\nSometimes Proxmox errors with timeout when creating multiple clones at\nonce.\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The identifier for the source VM.\n","willReplaceOnChanges":true}},"type":"object","required":["vmId"]},"proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The\nvalue is a list of CPU IDs, separated by commas. The CPU IDs are zero-based.\nFor example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four\nCPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture (defaults to `x86_64`).\n"},"cores":{"type":"integer","description":"The number of CPU cores (defaults to `1`).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"The CPU flags.\n- `+aes`/`-aes` - Activate AES instruction set for HW acceleration.\n- `+amd-no-ssb`/`-amd-no-ssb` - Notifies guest OS that host is not\nvulnerable for Spectre on AMD CPUs.\n- `+amd-ssbd`/`-amd-ssbd` - Improves Spectre mitigation performance with\nAMD CPUs, best used with \"virt-ssbd\".\n- `+hv-evmcs`/`-hv-evmcs` - Improve performance for nested\nvirtualization (only supported on Intel CPUs).\n- `+hv-tlbflush`/`-hv-tlbflush` - Improve performance in overcommitted\nWindows guests (may lead to guest BSOD on old CPUs).\n- `+ibpb`/`-ibpb` - Allows improved Spectre mitigation on AMD CPUs.\n- `+md-clear`/`-md-clear` - Required to let the guest OS know if MDS is\nmitigated correctly.\n- `+pcid`/`-pcid` - Meltdown fix cost reduction on Westmere, Sandy- and\nIvy Bridge Intel CPUs.\n- `+pdpe1gb`/`-pdpe1gb` - Allows guest OS to use 1 GB size pages, if\nhost HW supports it.\n- `+spec-ctrl`/`-spec-ctrl` - Allows improved Spectre mitigation with\nIntel CPUs.\n- `+ssbd`/`-ssbd` - Protection for \"Speculative Store Bypass\" for Intel\nmodels.\n- `+virt-ssbd`/`-virt-ssbd` - Basis for \"Speculative Store Bypass\"\nprotection for AMD models.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults\nto `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage, `0...128`. (defaults to `0` -- no limit).\n"},"numa":{"type":"boolean","description":"Enable/disable NUMA. (default to `false`)\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"The emulated CPU type, it's recommended to\nuse `x86-64-v2-AES` (defaults to `qemu64`).\n"},"units":{"type":"integer","description":"The CPU units (defaults to `1024`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk":{"properties":{"aio":{"type":"string","description":"The disk AIO mode (defaults to `io_uring`).\n"},"backup":{"type":"boolean","description":"Whether the drive should be included when making backups (defaults to `true`).\n"},"cache":{"type":"string","description":"The cache type (defaults to `none`).\n"},"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"discard":{"type":"string","description":"Whether to pass discard/trim requests to the\nunderlying storage. Supported values are `on`/`ignore` (defaults\nto `ignore`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to `qcow2`).\n"},"fileId":{"type":"string","description":"The file ID for a disk image. The ID format is\n`\u003cdatastore_id\u003e:\u003ccontent_type\u003e/\u003cfile_name\u003e`, for example `local:iso/centos8.img`. Can be also taken from\n`proxmoxve.Download.File` resource.\n","willReplaceOnChanges":true},"interface":{"type":"string","description":"The disk interface for Proxmox, currently `scsi`,\n`sata` and `virtio` interfaces are supported. Append the disk index at\nthe end, for example, `virtio0` for the first virtio disk, `virtio1` for\nthe second, etc.\n"},"iothread":{"type":"boolean","description":"Whether to use iothreads for this disk (defaults\nto `false`).\n"},"pathInDatastore":{"type":"string","description":"The in-datastore path to the disk image.\n***Experimental.***Use to attach another VM's disks,\nor (as root only) host's filesystem paths (`datastore_id` empty string).\nSee \"*Example: Attached disks*\".\n"},"replicate":{"type":"boolean","description":"Whether the drive should be considered for replication jobs (defaults to `true`).\n"},"serial":{"type":"string","description":"The serial number of the disk, up to 20 bytes long.\n"},"size":{"type":"integer","description":"The disk size in gigabytes (defaults to `8`).\n"},"speed":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed","description":"The speed limits.\n"},"ssd":{"type":"boolean","description":"Whether to use an SSD emulation option for this disk (\ndefaults to `false`). Note that SSD emulation is not supported on VirtIO\nBlock drives.\n"}},"type":"object","required":["interface"],"language":{"nodejs":{"requiredOutputs":["fileFormat","interface","pathInDatastore"]}}},"proxmoxve:VM/VirtualMachineDiskSpeed:VirtualMachineDiskSpeed":{"properties":{"iopsRead":{"type":"integer","description":"The maximum read I/O in operations per second.\n"},"iopsReadBurstable":{"type":"integer","description":"The maximum unthrottled read I/O pool in operations per second.\n"},"iopsWrite":{"type":"integer","description":"The maximum write I/O in operations per second.\n"},"iopsWriteBurstable":{"type":"integer","description":"The maximum unthrottled write I/O pool in operations per second.\n"},"read":{"type":"integer","description":"The maximum read speed in megabytes per second.\n"},"readBurstable":{"type":"integer","description":"The maximum burstable read speed in\nmegabytes per second.\n"},"write":{"type":"integer","description":"The maximum write speed in megabytes per second.\n"},"writeBurstable":{"type":"integer","description":"The maximum burstable write speed in\nmegabytes per second.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"fileFormat":{"type":"string","description":"The file format (defaults to `raw`).\n","willReplaceOnChanges":true},"preEnrolledKeys":{"type":"boolean","description":"Use am EFI vars template with\ndistribution-specific and Microsoft Standard keys enrolled, if used with\nEFI type=`4m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults\nto `false`).\n","willReplaceOnChanges":true},"type":{"type":"string","description":"Size and type of the OVMF EFI disk. `4m` is newer and\nrecommended, and required for Secure Boot. For backwards compatibility\nuse `2m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults\nto `2m`).\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileFormat"]}}},"proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci":{"properties":{"device":{"type":"string","description":"The PCI device name for Proxmox, in form\nof `hostpciX` where `X` is a sequential number from 0 to 15.\n"},"id":{"type":"string","description":"The PCI device ID. This parameter is not compatible\nwith `api_token` and requires the root `username` and `password`\nconfigured in the proxmox provider. Use either this or `mapping`.\n"},"mapping":{"type":"string","description":"The resource mapping name of the device, for\nexample gpu. Use either this or `id`.\n"},"mdev":{"type":"string","description":"The mediated device ID to use.\n"},"pcie":{"type":"boolean","description":"Tells Proxmox to use a PCIe or PCI port. Some\nguests/device combination require PCIe rather than PCI. PCIe is only\navailable for q35 machine types.\n"},"romFile":{"type":"string","description":"A path to a ROM file for the device to use. This\nis a relative path under `/usr/share/kvm/`.\n"},"rombar":{"type":"boolean","description":"Makes the firmware ROM visible for the VM (defaults\nto `true`).\n"},"xvga":{"type":"boolean","description":"Marks the PCI(e) device as the primary GPU of the VM.\nWith this enabled the `vga` configuration argument will be ignored.\n"}},"type":"object","required":["device"]},"proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create the\ncloud-init disk in (defaults to `local-lvm`).\n"},"dns":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns","description":"The DNS configuration.\n"},"interface":{"type":"string","description":"The hardware interface to connect the cloud-init\nimage to. Must be one of `ide0..3`, `sata0..5`, `scsi0..30`. Will be\ndetected if the setting is missing but a cloud-init image is present,\notherwise defaults to `ide2`.\n"},"ipConfigs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig"},"description":"The IP configuration (one block per network\ndevice).\n"},"metaDataFileId":{"type":"string","description":"The identifier for a file containing\nall meta data passed to the VM via cloud-init.\n","willReplaceOnChanges":true},"networkDataFileId":{"type":"string","description":"The identifier for a file containing\nnetwork configuration data passed to the VM via cloud-init (conflicts\nwith `ip_config`).\n","willReplaceOnChanges":true},"type":{"type":"string","description":"The cloud-init configuration format\n","willReplaceOnChanges":true},"upgrade":{"type":"boolean","description":"Whether to do an automatic package upgrade after the first boot\n","deprecationMessage":"The `upgrade` attribute is deprecated and will be removed in a future release."},"userAccount":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount","description":"The user account configuration (conflicts\nwith `user_data_file_id`).\n","willReplaceOnChanges":true},"userDataFileId":{"type":"string","description":"The identifier for a file containing\ncustom user data (conflicts with `user_account`).\n","willReplaceOnChanges":true},"vendorDataFileId":{"type":"string","description":"The identifier for a file containing\nall vendor data passed to the VM via cloud-init.\n","willReplaceOnChanges":true}},"type":"object","language":{"nodejs":{"requiredOutputs":["upgrade"]}}},"proxmoxve:VM/VirtualMachineInitializationDns:VirtualMachineInitializationDns":{"properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"server":{"type":"string","description":"The DNS server. The `server` attribute is\ndeprecated and will be removed in a future release. Please use the\n`servers` attribute instead.\n","deprecationMessage":"The `server` attribute is deprecated and will be removed in a future release. Please use the `servers` attribute instead."},"servers":{"type":"array","items":{"type":"string"},"description":"The list of DNS servers.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfig:VirtualMachineInitializationIpConfig":{"properties":{"ipv4":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4","description":"The IPv4 configuration.\n"},"ipv6":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6","description":"The IPv6 configuration.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv4:VirtualMachineInitializationIpConfigIpv4":{"properties":{"address":{"type":"string","description":"The IPv4 address in CIDR notation\n(e.g. 192.168.2.2/24). Alternatively, set this to `dhcp` for\nautodiscovery.\n"},"gateway":{"type":"string","description":"The IPv4 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationIpConfigIpv6:VirtualMachineInitializationIpConfigIpv6":{"properties":{"address":{"type":"string","description":"The IPv6 address in CIDR notation\n(e.g. fd1c:000:0000::0000:000:7334/64). Alternatively, set this\nto `dhcp` for autodiscovery.\n"},"gateway":{"type":"string","description":"The IPv6 gateway (must be omitted\nwhen `dhcp` is used as the address).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineInitializationUserAccount:VirtualMachineInitializationUserAccount":{"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"The SSH keys.\n","willReplaceOnChanges":true},"password":{"type":"string","description":"The SSH password.\n","secret":true,"willReplaceOnChanges":true},"username":{"type":"string","description":"The SSH username.\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory":{"properties":{"dedicated":{"type":"integer","description":"The dedicated memory in megabytes (defaults to `512`).\n"},"floating":{"type":"integer","description":"The floating memory in megabytes. The default is `0`, which disables \"ballooning device\" for the VM.\nPlease note that Proxmox has ballooning enabled by default. To enable it, set `floating` to the same value as `dedicated`.\nSee [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_memory) section 10.2.6 for more information.\n"},"hugepages":{"type":"string","description":"Enable/disable hugepages memory (defaults to disable).\n"},"keepHugepages":{"type":"boolean","description":"Keep hugepages memory after the VM is stopped (defaults to `false`).\n\nSettings `hugepages` and `keep_hugepages` are only allowed for `root@pam` authenticated user.\nAnd required `cpu.numa` to be enabled.\n"},"shared":{"type":"integer","description":"The shared memory in megabytes (defaults to `0`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice":{"properties":{"bridge":{"type":"string","description":"The name of the network bridge (defaults to `vmbr0`).\n"},"disconnected":{"type":"boolean","description":"Whether to disconnect the network device from the network (defaults to `false`).\n"},"enabled":{"type":"boolean","description":"Whether to enable the network device (defaults to `true`).\n"},"firewall":{"type":"boolean","description":"Whether this interface's firewall rules should be used (defaults to `false`).\n"},"macAddress":{"type":"string","description":"The MAC address.\n"},"model":{"type":"string","description":"The network device model (defaults to `virtio`).\n"},"mtu":{"type":"integer","description":"Force MTU, for VirtIO only. Set to 1 to use the bridge MTU. Cannot be larger than the bridge MTU.\n"},"queues":{"type":"integer","description":"The number of queues for VirtIO (1..64).\n"},"rateLimit":{"type":"number","description":"The rate limit in megabytes per second.\n"},"trunks":{"type":"string","description":"String containing a `;` separated list of VLAN trunks\n(\"10;20;30\"). Note that the VLAN-aware feature need to be enabled on the PVE\nLinux Bridge to use trunks.\n"},"vlanId":{"type":"integer","description":"The VLAN identifier.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["macAddress"]}}},"proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma":{"properties":{"cpus":{"type":"string","description":"The CPU cores to assign to the NUMA node (format is `0-7;16-31`).\n"},"device":{"type":"string","description":"The NUMA device name for Proxmox, in form\nof `numaX` where `X` is a sequential number from 0 to 7.\n"},"hostnodes":{"type":"string","description":"The NUMA host nodes.\n"},"memory":{"type":"integer","description":"The memory in megabytes to assign to the NUMA node.\n"},"policy":{"type":"string","description":"The NUMA policy (defaults to `preferred`).\n"}},"type":"object","required":["cpus","device","memory"]},"proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem":{"properties":{"type":{"type":"string","description":"The type (defaults to `other`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice":{"properties":{"device":{"type":"string","description":"The device (defaults to `socket`).\n- `/dev/*` - A host serial device.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios":{"properties":{"family":{"type":"string","description":"The family string.\n"},"manufacturer":{"type":"string","description":"The manufacturer.\n"},"product":{"type":"string","description":"The product ID.\n"},"serial":{"type":"string","description":"The serial number.\n"},"sku":{"type":"string","description":"The SKU number.\n"},"uuid":{"type":"string","description":"The UUID (defaults to randomly generated UUID).\n"},"version":{"type":"string","description":"The version.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["uuid"]}}},"proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup":{"properties":{"downDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is shut down.\n"},"order":{"type":"integer","description":"A non-negative number defining the general startup\norder.\n"},"upDelay":{"type":"integer","description":"A non-negative number defining the delay in\nseconds before the next VM is started.\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState":{"properties":{"datastoreId":{"type":"string","description":"The identifier for the datastore to create\nthe disk in (defaults to `local-lvm`).\n"},"version":{"type":"string","description":"TPM state device version. Can be `v1.2` or `v2.0`.\n(defaults to `v2.0`).\n","willReplaceOnChanges":true}},"type":"object"},"proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb":{"properties":{"host":{"type":"string","description":"The Host USB device or port or the value `spice`. Use either this or `mapping`.\n"},"mapping":{"type":"string","description":"The cluster-wide resource mapping name of the device, for example \"usbdevice\". Use either this or `host`.\n"},"usb3":{"type":"boolean","description":"Makes the USB device a USB3 device for the VM\n(defaults to `false`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineVga:VirtualMachineVga":{"properties":{"clipboard":{"type":"string","description":"Enable VNC clipboard by setting to `vnc`. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (defaults to `16`).\n"},"type":{"type":"string","description":"The VGA type (defaults to `std`).\n"}},"type":"object"},"proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog":{"properties":{"action":{"type":"string","description":"The action to perform if after activation the guest fails to poll the watchdog in time (defaults to `none`).\n"},"enabled":{"type":"boolean","description":"Whether the watchdog is enabled (defaults to `false`).\n"},"model":{"type":"string","description":"The watchdog type to emulate (defaults to `i6300esb`).\n"}},"type":"object"},"proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter":{"properties":{"name":{"type":"string","description":"Name of the VM attribute to filter on. One of [`name`, `template`, `status`, `node_name`]\n"},"regex":{"type":"boolean","description":"Treat values as regex patterns\n"},"values":{"type":"array","items":{"type":"string"},"description":"List of values to pass the filter. VM's attribute should match at least one value in the list.\n"}},"type":"object","required":["name","values"]},"proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm":{"properties":{"name":{"type":"string","description":"The virtual machine name.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"status":{"type":"string","description":"Status of the VM\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the VMs. The VM must have all\nthe tags to be included in the result.\n"},"template":{"type":"boolean","description":"Is VM a template (true) or a regular VM (false)\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["name","nodeName","tags","vmId"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:config/ssh:ssh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the `private_key` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:config/sshNode:sshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` block.\n"}},"type":"object"},"proxmoxve:config/sshNode:sshNode":{"properties":{"address":{"type":"string","description":"The address of the Proxmox VE node.\n"},"name":{"type":"string","description":"The name of the Proxmox VE node.\n"},"port":{"type":"integer","description":"The port of the Proxmox VE node.\n"}},"type":"object","required":["address","name"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/HostsEntry:HostsEntry":{"properties":{"address":{"type":"string","description":"The IP address.\n"},"hostnames":{"type":"array","items":{"type":"string"},"description":"The hostnames.\n"}},"type":"object","required":["address","hostnames"]},"proxmoxve:index/ProviderSsh:ProviderSsh":{"properties":{"agent":{"type":"boolean","description":"Whether to use the SSH agent for authentication. Takes precedence over the `private_key` and `password` fields. Defaults to the value of the `PROXMOX_VE_SSH_AGENT` environment variable, or `false` if not set.\n"},"agentSocket":{"type":"string","description":"The path to the SSH agent socket. Defaults to the value of the `SSH_AUTH_SOCK` environment variable.\n"},"nodes":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/ProviderSshNode:ProviderSshNode"},"description":"Overrides for SSH connection configuration for a Proxmox VE node.\n"},"password":{"type":"string","description":"The password used for the SSH connection. Defaults to the value of the `password` field of the `provider` block.\n","secret":true},"privateKey":{"type":"string","description":"The unencrypted private key (in PEM format) used for the SSH connection. Defaults to the value of the `PROXMOX_VE_SSH_PRIVATE_KEY` environment variable.\n","secret":true},"socks5Password":{"type":"string","description":"The password for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_PASSWORD` environment variable.\n","secret":true},"socks5Server":{"type":"string","description":"The address:port of the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_SERVER` environment variable.\n"},"socks5Username":{"type":"string","description":"The username for the SOCKS5 proxy server. Defaults to the value of the `PROXMOX_VE_SSH_SOCKS5_USERNAME` environment variable.\n"},"username":{"type":"string","description":"The username used for the SSH connection. Defaults to the value of the `username` field of the `provider` block.\n"}},"type":"object"},"proxmoxve:index/ProviderSshNode:ProviderSshNode":{"properties":{"address":{"type":"string","description":"The address of the Proxmox VE node.\n"},"name":{"type":"string","description":"The name of the Proxmox VE node.\n"},"port":{"type":"integer","description":"The port of the Proxmox VE node.\n"}},"type":"object","required":["address","name"],"language":{"nodejs":{"requiredOutputs":[]}}},"proxmoxve:index/Vm2Cdrom:Vm2Cdrom":{"properties":{"fileId":{"type":"string","description":"The file ID of the CD-ROM, or `cdrom|none`. Defaults to `none` to leave the CD-ROM empty. Use `cdrom` to connect to the physical drive.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["fileId"]}}},"proxmoxve:index/Vm2Clone:Vm2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id"],"language":{"nodejs":{"requiredOutputs":["id","retries"]}}},"proxmoxve:index/Vm2Cpu:Vm2Cpu":{"properties":{"affinity":{"type":"string","description":"The CPU cores that are used to run the VM’s vCPU. The value is a list of CPU IDs, separated by commas. The CPU IDs are zero-based. For example, `0,1,2,3` (which also can be shortened to `0-3`) means that the VM’s vCPUs are run on the first four CPU cores. Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"architecture":{"type":"string","description":"The CPU architecture `\u003caarch64 | x86_64\u003e` (defaults to the host). Setting `affinity` is only allowed for `root@pam` authenticated user.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket (defaults to `1`).\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags. Use `+FLAG` to enable, `-FLAG` to disable a flag. Custom CPU models can specify any flag supported by QEMU/KVM, VM-specific flags must be from the following set for security reasons: `pcid`, `spec-ctrl`, `ibpb`, `ssbd`, `virt-ssbd`, `amd-ssbd`, `amd-no-ssb`, `pdpe1gb`, `md-clear`, `hv-tlbflush`, `hv-evmcs`, `aes`.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs (defaults to `0`).\n"},"limit":{"type":"integer","description":"Limit of CPU usage (defaults to `0` which means no limit).\n"},"numa":{"type":"boolean","description":"Enable NUMA (defaults to `false`).\n"},"sockets":{"type":"integer","description":"The number of CPU sockets (defaults to `1`).\n"},"type":{"type":"string","description":"Emulated CPU type, it's recommended to use `x86-64-v2-AES` or higher (defaults to `kvm64`). See https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm*virtual*machines_settings for more information.\n"},"units":{"type":"integer","description":"CPU weight for a VM. Argument is used in the kernel fair scheduler. The larger the number is, the more CPU time this VM gets. Number is relative to weights of all the other running VMs.\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"]}}},"proxmoxve:index/Vm2Timeouts:Vm2Timeouts":{"properties":{"create":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"},"delete":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.\n"},"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"},"update":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours).\n"}},"type":"object"},"proxmoxve:index/Vm2Vga:Vm2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard. If not set, depending on the display type the SPICE one will be added. Currently only `vnc` is available. Migration with VNC clipboard is not supported by Proxmox.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type (defaults to `std`).\n"}},"type":"object","language":{"nodejs":{"requiredOutputs":["clipboard","memory","type"]}}},"proxmoxve:index/getVm2Clone:getVm2Clone":{"properties":{"id":{"type":"integer","description":"The ID of the VM to clone.\n"},"retries":{"type":"integer","description":"The number of retries to perform when cloning the VM (default: 3).\n"}},"type":"object","required":["id","retries"],"language":{"nodejs":{"requiredInputs":["id"]}}},"proxmoxve:index/getVm2Cpu:getVm2Cpu":{"properties":{"affinity":{"type":"string","description":"List of host cores used to execute guest processes, for example: '0,5,8-11'\n"},"architecture":{"type":"string","description":"The CPU architecture.\n"},"cores":{"type":"integer","description":"The number of CPU cores per socket.\n"},"flags":{"type":"array","items":{"type":"string"},"description":"Set of additional CPU flags.\n"},"hotplugged":{"type":"integer","description":"The number of hotplugged vCPUs.\n"},"limit":{"type":"integer","description":"Limit of CPU usage.\n"},"numa":{"type":"boolean","description":"Enable NUMA.\n"},"sockets":{"type":"integer","description":"The number of CPU sockets.\n"},"type":{"type":"string","description":"Emulated CPU type.\n"},"units":{"type":"integer","description":"CPU weight for a VM\n"}},"type":"object","required":["affinity","architecture","cores","flags","hotplugged","limit","numa","sockets","type","units"],"language":{"nodejs":{"requiredInputs":[]}}},"proxmoxve:index/getVm2Timeouts:getVm2Timeouts":{"properties":{"read":{"type":"string","description":"A string that can be [parsed as a duration](https://pkg.go.dev/time#ParseDuration) consisting of numbers and unit suffixes, such as \"30s\" or \"2h45m\". Valid time units are \"s\" (seconds), \"m\" (minutes), \"h\" (hours). Read operations occur during any refresh or planning operation when refresh is enabled.\n"}},"type":"object"},"proxmoxve:index/getVm2Vga:getVm2Vga":{"properties":{"clipboard":{"type":"string","description":"Enable a specific clipboard.\n"},"memory":{"type":"integer","description":"The VGA memory in megabytes (4-512 MB). Has no effect with serial display.\n"},"type":{"type":"string","description":"The VGA type.\n"}},"type":"object","required":["clipboard","memory","type"],"language":{"nodejs":{"requiredInputs":[]}}}},"provider":{"description":"The provider type for the proxmox package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n","properties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}},"inputProperties":{"apiToken":{"type":"string","description":"The API token for the Proxmox VE API.\n","secret":true},"authTicket":{"type":"string","description":"The pre-authenticated Ticket for the Proxmox VE API.\n","secret":true},"csrfPreventionToken":{"type":"string","description":"The pre-authenticated CSRF Prevention Token for the Proxmox VE API.\n","secret":true},"endpoint":{"type":"string","description":"The endpoint for the Proxmox VE API.\n"},"insecure":{"type":"boolean","description":"Whether to skip the TLS verification step.\n"},"minTls":{"type":"string","description":"The minimum required TLS version for API calls.Supported values: `1.0|1.1|1.2|1.3`. Defaults to `1.3`.\n"},"otp":{"type":"string","description":"The one-time password for the Proxmox VE API.\n","deprecationMessage":"The `otp` attribute is deprecated and will be removed in a future release. Please use the `api_token` attribute instead."},"password":{"type":"string","description":"The password for the Proxmox VE API.\n","secret":true},"randomVmIdEnd":{"type":"integer","description":"The ending number for random VM / Container IDs.\n"},"randomVmIdStart":{"type":"integer","description":"The starting number for random VM / Container IDs.\n"},"randomVmIds":{"type":"boolean","description":"Whether to generate random VM / Container IDs.\n"},"ssh":{"$ref":"#/types/proxmoxve:index/ProviderSsh:ProviderSsh","description":"The SSH configuration for the Proxmox nodes.\n"},"tmpDir":{"type":"string","description":"The alternative temporary directory.\n"},"username":{"type":"string","description":"The username for the Proxmox VE API.\n"}}},"resources":{"proxmoxve:Apt/repository:Repository":{"description":"Manages an APT repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.apt.Repository(\"example\", {\n enabled: true,\n filePath: \"/etc/apt/sources.list\",\n index: 0,\n node: \"pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.apt.Repository(\"example\",\n enabled=True,\n file_path=\"/etc/apt/sources.list\",\n index=0,\n node=\"pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Apt.Repository(\"example\", new()\n {\n Enabled = true,\n FilePath = \"/etc/apt/sources.list\",\n Index = 0,\n Node = \"pve\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Apt.NewRepository(ctx, \"example\", \u0026Apt.RepositoryArgs{\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tFilePath: pulumi.String(\"/etc/apt/sources.list\"),\n\t\t\tIndex: pulumi.Int(0),\n\t\t\tNode: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.Repository;\nimport com.pulumi.proxmoxve.Apt.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Repository(\"example\", RepositoryArgs.builder()\n .enabled(true)\n .filePath(\"/etc/apt/sources.list\")\n .index(0)\n .node(\"pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Apt:Repository\n properties:\n enabled: true\n filePath: /etc/apt/sources.list\n index: 0\n node: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nthe absolute source list file path, and the index in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/repository:Repository example pve,/etc/apt/sources.list,0\n```\n\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"required":["comment","components","enabled","filePath","fileType","index","node","packageTypes","suites","uris"],"inputProperties":{"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"requiredInputs":["filePath","index","node"],"stateInputs":{"description":"Input properties used for looking up and filtering Repository resources.\n","properties":{"comment":{"type":"string","description":"The associated comment.\n"},"components":{"type":"array","items":{"type":"string"},"description":"The list of components.\n"},"enabled":{"type":"boolean","description":"Indicates the activation status.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"fileType":{"type":"string","description":"The format of the defining source list file.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"packageTypes":{"type":"array","items":{"type":"string"},"description":"The list of package types.\n"},"suites":{"type":"array","items":{"type":"string"},"description":"The list of package distributions.\n"},"uris":{"type":"array","items":{"type":"string"},"description":"The list of repository URIs.\n"}},"type":"object"}},"proxmoxve:Apt/standard/repository:Repository":{"description":"Manages an APT standard repository of a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst exampleRepository = new proxmoxve.apt.standard.Repository(\"exampleRepository\", {\n handle: \"no-subscription\",\n node: \"pve\",\n});\nconst exampleApt_repositoryRepository = new proxmoxve.apt.Repository(\"exampleApt/repositoryRepository\", {\n enabled: true,\n filePath: exampleRepository.filePath,\n index: exampleRepository.index,\n node: exampleRepository.node,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_repository = proxmoxve.apt.standard.Repository(\"exampleRepository\",\n handle=\"no-subscription\",\n node=\"pve\")\nexample_apt_repository_repository = proxmoxve.apt.Repository(\"exampleApt/repositoryRepository\",\n enabled=True,\n file_path=example_repository.file_path,\n index=example_repository.index,\n node=example_repository.node)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleRepository = new ProxmoxVE.Apt.Standard.Repository(\"exampleRepository\", new()\n {\n Handle = \"no-subscription\",\n Node = \"pve\",\n });\n\n var exampleApt_repositoryRepository = new ProxmoxVE.Apt.Repository(\"exampleApt/repositoryRepository\", new()\n {\n Enabled = true,\n FilePath = exampleRepository.FilePath,\n Index = exampleRepository.Index,\n Node = exampleRepository.Node,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleRepository, err := Apt.NewRepository(ctx, \"exampleRepository\", \u0026Apt.RepositoryArgs{\n\t\t\tHandle: pulumi.String(\"no-subscription\"),\n\t\t\tNode: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Apt.NewRepository(ctx, \"exampleApt/repositoryRepository\", \u0026Apt.RepositoryArgs{\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tFilePath: exampleRepository.FilePath,\n\t\t\tIndex: exampleRepository.Index,\n\t\t\tNode: exampleRepository.Node,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.Repository;\nimport com.pulumi.proxmoxve.Apt.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleRepository = new Repository(\"exampleRepository\", RepositoryArgs.builder()\n .handle(\"no-subscription\")\n .node(\"pve\")\n .build());\n\n var exampleApt_repositoryRepository = new Repository(\"exampleApt/repositoryRepository\", RepositoryArgs.builder()\n .enabled(true)\n .filePath(exampleRepository.filePath())\n .index(exampleRepository.index())\n .node(exampleRepository.node())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleRepository:\n type: proxmoxve:Apt/standard:Repository\n properties:\n handle: no-subscription\n node: pve\n exampleApt/repositoryRepository:\n type: proxmoxve:Apt:Repository\n properties:\n enabled: true\n filePath: ${exampleRepository.filePath}\n index: ${exampleRepository.index}\n node: ${exampleRepository.node}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nAn APT standard repository can be imported using a comma-separated list consisting of the name of the Proxmox VE node,\n\nand the standard repository handle in the exact same order, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Apt/standard/repository:Repository example pve,no-subscription\n```\n\n","properties":{"description":{"type":"string","description":"The description of the APT standard repository.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this standard repository.\n"},"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"name":{"type":"string","description":"The name of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"status":{"type":"integer","description":"Indicates the activation status.\n"}},"required":["description","filePath","handle","index","name","node","status"],"inputProperties":{"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"requiredInputs":["handle","node"],"stateInputs":{"description":"Input properties used for looking up and filtering Repository resources.\n","properties":{"description":{"type":"string","description":"The description of the APT standard repository.\n"},"filePath":{"type":"string","description":"The absolute path of the source list file that contains this standard repository.\n"},"handle":{"type":"string","description":"The handle of the APT standard repository. Must be `ceph-quincy-enterprise` | `ceph-quincy-no-subscription` | `ceph-quincy-test` | `ceph-reef-enterprise` | `ceph-reef-no-subscription` | `ceph-reef-test` | `enterprise` | `no-subscription` | `test`.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"name":{"type":"string","description":"The name of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"},"status":{"type":"integer","description":"Indicates the activation status.\n"}},"type":"object"}},"proxmoxve:CT/container:Container":{"description":"Manages a container.\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:CT/container:Container ubuntu_container first-node/1234\n```\n\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n"},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n"},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n"},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on\nthe host (defaults to `false`).\n"},"vmId":{"type":"integer","description":"The container identifier\n"}},"required":["nodeName","vmId"],"inputProperties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n","willReplaceOnChanges":true},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on\nthe host (defaults to `false`).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Container resources.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:CT/ContainerClone:ContainerClone","description":"The cloning configuration.\n"},"console":{"$ref":"#/types/proxmoxve:CT/ContainerConsole:ContainerConsole","description":"The console configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:CT/ContainerCpu:ContainerCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disk":{"$ref":"#/types/proxmoxve:CT/ContainerDisk:ContainerDisk","description":"The disk configuration.\n","willReplaceOnChanges":true},"features":{"$ref":"#/types/proxmoxve:CT/ContainerFeatures:ContainerFeatures","description":"The container feature flags. Changing flags (except nesting) is only allowed for `root@pam` authenticated user.\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"initialization":{"$ref":"#/types/proxmoxve:CT/ContainerInitialization:ContainerInitialization","description":"The initialization configuration.\n"},"memory":{"$ref":"#/types/proxmoxve:CT/ContainerMemory:ContainerMemory","description":"The memory configuration.\n"},"mountPoints":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerMountPoint:ContainerMountPoint"},"description":"A mount point\n"},"networkInterfaces":{"type":"array","items":{"$ref":"#/types/proxmoxve:CT/ContainerNetworkInterface:ContainerNetworkInterface"},"description":"A network interface (multiple blocks\nsupported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the container to.\n","willReplaceOnChanges":true},"operatingSystem":{"$ref":"#/types/proxmoxve:CT/ContainerOperatingSystem:ContainerOperatingSystem","description":"The Operating System configuration.\n","willReplaceOnChanges":true},"poolId":{"type":"string","description":"The identifier for a pool to assign the container to.\n","willReplaceOnChanges":true},"protection":{"type":"boolean","description":"Whether to set the protection flag of the container (defaults to `false`). This will prevent the container itself and its disk for remove/update operations.\n"},"startOnBoot":{"type":"boolean","description":"Automatically start container when the host\nsystem boots (defaults to `true`).\n"},"started":{"type":"boolean","description":"Whether to start the container (defaults to `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:CT/ContainerStartup:ContainerStartup","description":"Defines startup and shutdown behavior of the container.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags the container tags. This is only meta\ninformation (defaults to `[]`). Note: Proxmox always sorts the container tags.\nIf the list in template is not sorted, then Proxmox will always report a\ndifference on the resource. You may use the `ignore_changes` lifecycle\nmeta-argument to ignore changes to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a container in seconds (defaults to 1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a container in seconds (defaults to 1800).\n"},"timeoutDelete":{"type":"integer","description":"Timeout for deleting a container in seconds (defaults to 60).\n"},"timeoutStart":{"type":"integer","description":"Start container timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (`timeout_create` / `timeout_clone`) is used instead."},"timeoutUpdate":{"type":"integer","description":"Timeout for updating a container in seconds (defaults to 1800).\n"},"unprivileged":{"type":"boolean","description":"Whether the container runs as unprivileged on\nthe host (defaults to `false`).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The container identifier\n"}},"type":"object"}},"proxmoxve:Cluster/options:Options":{"description":"Manages Proxmox VE Cluster Datacenter options.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Cluster.Options;\nimport com.pulumi.proxmoxve.Cluster.OptionsArgs;\nimport com.pulumi.proxmoxve.Cluster.inputs.OptionsNextIdArgs;\nimport com.pulumi.proxmoxve.Cluster.inputs.OptionsNotifyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var options = new Options(\"options\", OptionsArgs.builder()\n .bandwidthLimitDefault(666666)\n .bandwidthLimitMigration(555555)\n .emailFrom(\"ged@gont.earthsea\")\n .keyboard(\"pl\")\n .language(\"en\")\n .maxWorkers(5)\n .migrationCidr(\"10.0.0.0/8\")\n .migrationType(\"secure\")\n .nextId(OptionsNextIdArgs.builder()\n .lower(100)\n .upper(999999999)\n .build())\n .notify(OptionsNotifyArgs.builder()\n .ha_fencing_mode(\"never\")\n .ha_fencing_target(\"default-matcher\")\n .package_replication(\"always\")\n .package_replication_target(\"default-matcher\")\n .package_updates(\"always\")\n .package_updates_target(\"default-matcher\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n options:\n type: proxmoxve:Cluster:Options\n properties:\n bandwidthLimitDefault: 666666\n bandwidthLimitMigration: 555555\n emailFrom: ged@gont.earthsea\n keyboard: pl\n language: en\n maxWorkers: 5\n migrationCidr: 10.0.0.0/8\n migrationType: secure\n nextId:\n lower: 100\n upper: 9.99999999e+08\n notify:\n ha_fencing_mode: never\n ha_fencing_target: default-matcher\n package_replication: always\n package_replication_target: default-matcher\n package_updates: always\n package_updates_target: default-matcher\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nCluster options are global and can be imported using e.g.:\n\n```sh\n$ pulumi import proxmoxve:Cluster/options:Options options cluster\n```\n\n","properties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be `applet` | `vv`| `html5` | `xtermjs`. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be `static` | `basic` (default is `basic`).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"required":["crsHa","macPrefix"],"inputProperties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be `applet` | `vv`| `html5` | `xtermjs`. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be `static` | `basic` (default is `basic`).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Options resources.\n","properties":{"bandwidthLimitClone":{"type":"integer","description":"Clone I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitDefault":{"type":"integer","description":"Default I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMigration":{"type":"integer","description":"Migration I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitMove":{"type":"integer","description":"Move I/O bandwidth limit in KiB/s.\n"},"bandwidthLimitRestore":{"type":"integer","description":"Restore I/O bandwidth limit in KiB/s.\n"},"console":{"type":"string","description":"Select the default Console viewer. Must be `applet` | `vv`| `html5` | `xtermjs`. You can either use the builtin java applet (VNC; deprecated and maps to html5), an external virt-viewer compatible application (SPICE), an HTML5 based vnc viewer (noVNC), or an HTML5 based console client (xtermjs). If the selected viewer is not available (e.g. SPICE not activated for the VM), the fallback is noVNC.\n"},"crsHa":{"type":"string","description":"Cluster resource scheduling setting for HA. Must be `static` | `basic` (default is `basic`).\n"},"crsHaRebalanceOnStart":{"type":"boolean","description":"Cluster resource scheduling setting for HA rebalance on start.\n"},"description":{"type":"string","description":"Datacenter description. Shown in the web-interface datacenter notes panel. This is saved as comment inside the configuration file.\n"},"emailFrom":{"type":"string","description":"email address to send notification from (default is root@$hostname).\n"},"haShutdownPolicy":{"type":"string","description":"Cluster wide HA shutdown policy (). Must be `freeze` | `failover` | `migrate` | `conditional` (default is `conditional`).\n"},"httpProxy":{"type":"string","description":"Specify external http proxy which is used for downloads (example: `http://username:password@host:port/`).\n"},"keyboard":{"type":"string","description":"Default keyboard layout for vnc server. Must be `de` | `de-ch` | `da` | `en-gb` | `en-us` | `es` | `fi` | `fr` | `fr-be` | `fr-ca` | `fr-ch` | `hu` | `is` | `it` | `ja` | `lt` | `mk` | `nl` | `no` | `pl` | `pt` | `pt-br` | `sv` | `sl` | `tr`.\n"},"language":{"type":"string","description":"Default GUI language. Must be `ca` | `da` | `de` | `en` | `es` | `eu` | `fa` | `fr` | `he` | `it` | `ja` | `nb` | `nn` | `pl` | `pt_BR` | `ru` | `sl` | `sv` | `tr` | `zh_CN` | `zh_TW`.\n"},"macPrefix":{"type":"string","description":"Prefix for autogenerated MAC addresses.\n"},"maxWorkers":{"type":"integer","description":"Defines how many workers (per node) are maximal started on actions like 'stopall VMs' or task from the ha-manager.\n"},"migrationCidr":{"type":"string","description":"Cluster wide migration network CIDR.\n"},"migrationType":{"type":"string","description":"Cluster wide migration type. Must be `secure` | `insecure` (default is `secure`).\n"},"nextId":{"$ref":"#/types/proxmoxve:Cluster/OptionsNextId:OptionsNextId","description":"The ranges for the next free VM ID auto-selection pool.\n"},"notify":{"$ref":"#/types/proxmoxve:Cluster/OptionsNotify:OptionsNotify","description":"Cluster-wide notification settings.\n"}},"type":"object"}},"proxmoxve:Download/file:File":{"description":"Manages files upload using PVE download-url API. It can be fully compatible and faster replacement for image files created using `proxmoxve.Storage.File`. Supports images for VMs (ISO images) and LXC (CT Templates).\n\n\u003e Besides the `Datastore.AllocateTemplate` privilege, this resource requires both the `Sys.Audit` and `Sys.Modify` privileges.\u003cbr\u003e\u003cbr\u003e\nFor more details, see the [`download-url`](https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/storage/{storage}/download-url) API documentation under the \"Required permissions\" section.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst release20231228Debian12BookwormQcow2Img = new proxmoxve.download.File(\"release20231228Debian12BookwormQcow2Img\", {\n checksum: \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n checksumAlgorithm: \"sha512\",\n contentType: \"iso\",\n datastoreId: \"local\",\n fileName: \"debian-12-generic-amd64-20231228-1609.img\",\n nodeName: \"pve\",\n url: \"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n});\nconst latestDebian12BookwormQcow2Img = new proxmoxve.download.File(\"latestDebian12BookwormQcow2Img\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n fileName: \"debian-12-generic-amd64.qcow2.img\",\n nodeName: \"pve\",\n url: \"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\",\n});\nconst latestUbuntu22JammyQcow2Img = new proxmoxve.download.File(\"latestUbuntu22JammyQcow2Img\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n url: \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n});\nconst latestStaticUbuntu24NobleQcow2Img = new proxmoxve.download.File(\"latestStaticUbuntu24NobleQcow2Img\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n overwrite: false,\n url: \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n});\nconst release20231211Ubuntu22JammyLxcImg = new proxmoxve.download.File(\"release20231211Ubuntu22JammyLxcImg\", {\n checksum: \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n checksumAlgorithm: \"sha256\",\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n uploadTimeout: 4444,\n url: \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n});\nconst latestUbuntu22JammyLxcImg = new proxmoxve.download.File(\"latestUbuntu22JammyLxcImg\", {\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n url: \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nrelease20231228_debian12_bookworm_qcow2_img = proxmoxve.download.File(\"release20231228Debian12BookwormQcow2Img\",\n checksum=\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n checksum_algorithm=\"sha512\",\n content_type=\"iso\",\n datastore_id=\"local\",\n file_name=\"debian-12-generic-amd64-20231228-1609.img\",\n node_name=\"pve\",\n url=\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\")\nlatest_debian12_bookworm_qcow2_img = proxmoxve.download.File(\"latestDebian12BookwormQcow2Img\",\n content_type=\"iso\",\n datastore_id=\"local\",\n file_name=\"debian-12-generic-amd64.qcow2.img\",\n node_name=\"pve\",\n url=\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\")\nlatest_ubuntu22_jammy_qcow2_img = proxmoxve.download.File(\"latestUbuntu22JammyQcow2Img\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n url=\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\")\nlatest_static_ubuntu24_noble_qcow2_img = proxmoxve.download.File(\"latestStaticUbuntu24NobleQcow2Img\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n overwrite=False,\n url=\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\nrelease20231211_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"release20231211Ubuntu22JammyLxcImg\",\n checksum=\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n checksum_algorithm=\"sha256\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"pve\",\n upload_timeout=4444,\n url=\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\nlatest_ubuntu22_jammy_lxc_img = proxmoxve.download.File(\"latestUbuntu22JammyLxcImg\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"pve\",\n url=\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var release20231228Debian12BookwormQcow2Img = new ProxmoxVE.Download.File(\"release20231228Debian12BookwormQcow2Img\", new()\n {\n Checksum = \"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\",\n ChecksumAlgorithm = \"sha512\",\n ContentType = \"iso\",\n DatastoreId = \"local\",\n FileName = \"debian-12-generic-amd64-20231228-1609.img\",\n NodeName = \"pve\",\n Url = \"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\",\n });\n\n var latestDebian12BookwormQcow2Img = new ProxmoxVE.Download.File(\"latestDebian12BookwormQcow2Img\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n FileName = \"debian-12-generic-amd64.qcow2.img\",\n NodeName = \"pve\",\n Url = \"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\",\n });\n\n var latestUbuntu22JammyQcow2Img = new ProxmoxVE.Download.File(\"latestUbuntu22JammyQcow2Img\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n Url = \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\",\n });\n\n var latestStaticUbuntu24NobleQcow2Img = new ProxmoxVE.Download.File(\"latestStaticUbuntu24NobleQcow2Img\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n Overwrite = false,\n Url = \"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\",\n });\n\n var release20231211Ubuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"release20231211Ubuntu22JammyLxcImg\", new()\n {\n Checksum = \"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\",\n ChecksumAlgorithm = \"sha256\",\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n UploadTimeout = 4444,\n Url = \"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\",\n });\n\n var latestUbuntu22JammyLxcImg = new ProxmoxVE.Download.File(\"latestUbuntu22JammyLxcImg\", new()\n {\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n Url = \"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Download\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Download.NewFile(ctx, \"release20231228Debian12BookwormQcow2Img\", \u0026Download.FileArgs{\n\t\t\tChecksum: pulumi.String(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha512\"),\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tFileName: pulumi.String(\"debian-12-generic-amd64-20231228-1609.img\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUrl: pulumi.String(\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestDebian12BookwormQcow2Img\", \u0026Download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tFileName: pulumi.String(\"debian-12-generic-amd64.qcow2.img\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUrl: pulumi.String(\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestUbuntu22JammyQcow2Img\", \u0026Download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestStaticUbuntu24NobleQcow2Img\", \u0026Download.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tOverwrite: pulumi.Bool(false),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"release20231211Ubuntu22JammyLxcImg\", \u0026Download.FileArgs{\n\t\t\tChecksum: pulumi.String(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\"),\n\t\t\tChecksumAlgorithm: pulumi.String(\"sha256\"),\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUploadTimeout: pulumi.Int(4444),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Download.NewFile(ctx, \"latestUbuntu22JammyLxcImg\", \u0026Download.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tUrl: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Download.File;\nimport com.pulumi.proxmoxve.Download.FileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var release20231228Debian12BookwormQcow2Img = new File(\"release20231228Debian12BookwormQcow2Img\", FileArgs.builder()\n .checksum(\"d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\")\n .checksumAlgorithm(\"sha512\")\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .fileName(\"debian-12-generic-amd64-20231228-1609.img\")\n .nodeName(\"pve\")\n .url(\"https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\")\n .build());\n\n var latestDebian12BookwormQcow2Img = new File(\"latestDebian12BookwormQcow2Img\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .fileName(\"debian-12-generic-amd64.qcow2.img\")\n .nodeName(\"pve\")\n .url(\"https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\")\n .build());\n\n var latestUbuntu22JammyQcow2Img = new File(\"latestUbuntu22JammyQcow2Img\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .url(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\")\n .build());\n\n var latestStaticUbuntu24NobleQcow2Img = new File(\"latestStaticUbuntu24NobleQcow2Img\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .overwrite(false)\n .url(\"https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\")\n .build());\n\n var release20231211Ubuntu22JammyLxcImg = new File(\"release20231211Ubuntu22JammyLxcImg\", FileArgs.builder()\n .checksum(\"c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\")\n .checksumAlgorithm(\"sha256\")\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .uploadTimeout(4444)\n .url(\"https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\")\n .build());\n\n var latestUbuntu22JammyLxcImg = new File(\"latestUbuntu22JammyLxcImg\", FileArgs.builder()\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .url(\"https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n release20231228Debian12BookwormQcow2Img:\n type: proxmoxve:Download:File\n properties:\n checksum: d2fbcf11fb28795842e91364d8c7b69f1870db09ff299eb94e4fbbfa510eb78d141e74c1f4bf6dfa0b7e33d0c3b66e6751886feadb4e9916f778bab1776bdf1b\n checksumAlgorithm: sha512\n contentType: iso\n datastoreId: local\n fileName: debian-12-generic-amd64-20231228-1609.img\n nodeName: pve\n url: https://cloud.debian.org/images/cloud/bookworm/20231228-1609/debian-12-generic-amd64-20231228-1609.qcow2\n latestDebian12BookwormQcow2Img:\n type: proxmoxve:Download:File\n properties:\n contentType: iso\n datastoreId: local\n fileName: debian-12-generic-amd64.qcow2.img\n nodeName: pve\n url: https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2\n latestUbuntu22JammyQcow2Img:\n type: proxmoxve:Download:File\n properties:\n contentType: iso\n datastoreId: local\n nodeName: pve\n url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img\n latestStaticUbuntu24NobleQcow2Img:\n type: proxmoxve:Download:File\n properties:\n contentType: iso\n datastoreId: local\n nodeName: pve\n overwrite: false\n url: https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img\n release20231211Ubuntu22JammyLxcImg:\n type: proxmoxve:Download:File\n properties:\n checksum: c9997dcfea5d826fd04871f960c513665f2e87dd7450bba99f68a97e60e4586e\n checksumAlgorithm: sha256\n contentType: vztmpl\n datastoreId: local\n nodeName: pve\n uploadTimeout: 4444\n url: https://cloud-images.ubuntu.com/releases/22.04/release-20231211/ubuntu-22.04-server-cloudimg-amd64-root.tar.xz\n latestUbuntu22JammyLxcImg:\n type: proxmoxve:Download:File\n properties:\n contentType: vztmpl\n datastoreId: local\n nodeName: pve\n url: https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, no SSL/TLS certificates will be verified.\n"}},"required":["contentType","datastoreId","fileName","nodeName","overwrite","overwriteUnmanaged","size","uploadTimeout","url","verify"],"inputProperties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, no SSL/TLS certificates will be verified.\n"}},"requiredInputs":["contentType","datastoreId","nodeName","url"],"stateInputs":{"description":"Input properties used for looking up and filtering File resources.\n","properties":{"checksum":{"type":"string","description":"The expected checksum of the file.\n"},"checksumAlgorithm":{"type":"string","description":"The algorithm to calculate the checksum of the file. Must be `md5` | `sha1` | `sha224` | `sha256` | `sha384` | `sha512`.\n"},"contentType":{"type":"string","description":"The file content type. Must be `iso` for VM images or `vztmpl` for LXC images.\n"},"datastoreId":{"type":"string","description":"The identifier for the target datastore.\n"},"decompressionAlgorithm":{"type":"string","description":"Decompress the downloaded file using the specified compression algorithm. Must be one of `gz` | `lzo` | `zst`.\n"},"fileName":{"type":"string","description":"The file name. If not provided, it is calculated using `url`. PVE will raise 'wrong file extension' error for some popular extensions file `.raw` or `.qcow2`. Workaround is to use e.g. `.img` instead.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"If `true` and size of uploaded file is different, than size from `url` Content-Length header, file will be downloaded again. If `false`, there will be no checks.\n"},"overwriteUnmanaged":{"type":"boolean","description":"If `true` and a file with the same name already exists in the datastore, it will be deleted and the new file will be downloaded. If `false` and the file already exists, an error will be returned.\n"},"size":{"type":"integer","description":"The file size.\n"},"uploadTimeout":{"type":"integer","description":"The file download timeout seconds. Default is 600 (10min).\n"},"url":{"type":"string","description":"The URL to download the file from. Format `https?://.*`.\n"},"verify":{"type":"boolean","description":"By default `true`. If `false`, no SSL/TLS certificates will be verified.\n"}},"type":"object"}},"proxmoxve:HA/hAGroup:HAGroup":{"description":"Manages a High Availability group in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAGroup(\"example\", {\n group: \"example\",\n comment: \"This is a comment.\",\n nodes: {\n node1: undefined,\n node2: 2,\n node3: 1,\n },\n restricted: true,\n noFailback: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAGroup(\"example\",\n group=\"example\",\n comment=\"This is a comment.\",\n nodes={\n \"node1\": None,\n \"node2\": 2,\n \"node3\": 1,\n },\n restricted=True,\n no_failback=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.HA.HAGroup(\"example\", new()\n {\n Group = \"example\",\n Comment = \"This is a comment.\",\n Nodes = \n {\n { \"node1\", null },\n { \"node2\", 2 },\n { \"node3\", 1 },\n },\n Restricted = true,\n NoFailback = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAGroup(ctx, \"example\", \u0026HA.HAGroupArgs{\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"This is a comment.\"),\n\t\t\tNodes: pulumi.IntMap{\n\t\t\t\t\"node1\": nil,\n\t\t\t\t\"node2\": pulumi.Int(2),\n\t\t\t\t\"node3\": pulumi.Int(1),\n\t\t\t},\n\t\t\tRestricted: pulumi.Bool(true),\n\t\t\tNoFailback: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAGroup;\nimport com.pulumi.proxmoxve.HA.HAGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAGroup(\"example\", HAGroupArgs.builder()\n .group(\"example\")\n .comment(\"This is a comment.\")\n .nodes(Map.ofEntries(\n Map.entry(\"node1\", null),\n Map.entry(\"node2\", 2),\n Map.entry(\"node3\", 1)\n ))\n .restricted(true)\n .noFailback(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAGroup\n properties:\n group: example\n comment: This is a comment.\n # Member nodes, with or without priority.\n nodes:\n node1: null\n node2: 2\n node3: 1\n restricted: true\n noFailback: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA groups can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAGroup:HAGroup example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to `false`.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to `false`.\n"}},"required":["group","noFailback","nodes","restricted"],"inputProperties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to `false`.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to `false`.\n"}},"requiredInputs":["group","nodes"],"stateInputs":{"description":"Input properties used for looking up and filtering HAGroup resources.\n","properties":{"comment":{"type":"string","description":"The comment associated with this group\n"},"group":{"type":"string","description":"The identifier of the High Availability group to manage.\n"},"noFailback":{"type":"boolean","description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group. Defaults to `false`.\n"},"nodes":{"type":"object","additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n"},"restricted":{"type":"boolean","description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group. Defaults to `false`.\n"}},"type":"object"}},"proxmoxve:HA/hAResource:HAResource":{"description":"Manages Proxmox HA resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAResource(\"example\", {\n resourceId: \"vm:123\",\n state: \"started\",\n group: \"example\",\n comment: \"Managed by Pulumi\",\n}, {\n dependsOn: [proxmox_virtual_environment_hagroup.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAResource(\"example\",\n resource_id=\"vm:123\",\n state=\"started\",\n group=\"example\",\n comment=\"Managed by Pulumi\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_hagroup[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.HA.HAResource(\"example\", new()\n {\n ResourceId = \"vm:123\",\n State = \"started\",\n Group = \"example\",\n Comment = \"Managed by Pulumi\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_hagroup.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAResource(ctx, \"example\", \u0026HA.HAResourceArgs{\n\t\t\tResourceId: pulumi.String(\"vm:123\"),\n\t\t\tState: pulumi.String(\"started\"),\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_hagroup.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAResource;\nimport com.pulumi.proxmoxve.HA.HAResourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAResource(\"example\", HAResourceArgs.builder()\n .resourceId(\"vm:123\")\n .state(\"started\")\n .group(\"example\")\n .comment(\"Managed by Pulumi\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_hagroup.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAResource\n properties:\n resourceId: vm:123\n state: started\n group: example\n comment: Managed by Pulumi\n options:\n dependson:\n - ${proxmox_virtual_environment_hagroup.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAResource:HAResource example vm:123\n```\n\n","properties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the `resource_id`.\n"}},"required":["resourceId","state","type"],"inputProperties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the `resource_id`.\n"}},"requiredInputs":["resourceId"],"stateInputs":{"description":"Input properties used for looking up and filtering HAResource resources.\n","properties":{"comment":{"type":"string","description":"The comment associated with this resource.\n"},"group":{"type":"string","description":"The identifier of the High Availability group this resource is a member of.\n"},"maxRelocate":{"type":"integer","description":"The maximal number of relocation attempts.\n"},"maxRestart":{"type":"integer","description":"The maximal number of restart attempts.\n"},"resourceId":{"type":"string","description":"The Proxmox HA resource identifier\n"},"state":{"type":"string","description":"The desired state of the resource.\n"},"type":{"type":"string","description":"The type of HA resources to create. If unset, it will be deduced from the `resource_id`.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/pci:Pci":{"description":"Manages a PCI hardware mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.Pci;\nimport com.pulumi.proxmoxve.Hardware.PciArgs;\nimport com.pulumi.proxmoxve.Hardware.inputs.PciMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Pci(\"example\", PciArgs.builder()\n .comment(\"This is a comment\")\n .maps(PciMapArgs.builder()\n .comment(\"This is a device specific comment\")\n .id(\"8086:5916\")\n .iommu_group(0)\n .node(\"pve\")\n .path(\"0000:00:02.0\")\n .subsystem_id(\"8086:2068\")\n .build())\n .mediatedDevices(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Hardware/mapping:Pci\n properties:\n comment: This is a comment\n # The actual map of devices.\n maps:\n - comment: This is a device specific comment\n id: 8086:5916\n iommu_group: 0\n node: pve\n path: 0000:00:02.0\n subsystem_id: 8086:2068\n mediatedDevices: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA PCI hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/pci:Pci example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"required":["maps","mediatedDevices","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Pci resources.\n","properties":{"comment":{"type":"string","description":"The comment of this PCI hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/PciMap:PciMap"},"description":"The actual map of devices for the PCI hardware mapping.\n"},"mediatedDevices":{"type":"boolean","description":"Indicates whether to enable mediated devices.\n"},"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object"}},"proxmoxve:Hardware/mapping/usb:Usb":{"description":"Manages a USB hardware mapping in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.hardware.mapping.Usb(\"example\", {\n comment: \"This is a comment\",\n maps: [{\n comment: \"This is a device specific comment\",\n id: \"8087:0a2b\",\n node: \"pve\",\n path: \"1-8.2\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.hardware.mapping.Usb(\"example\",\n comment=\"This is a comment\",\n maps=[{\n \"comment\": \"This is a device specific comment\",\n \"id\": \"8087:0a2b\",\n \"node\": \"pve\",\n \"path\": \"1-8.2\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Hardware.Mapping.Usb(\"example\", new()\n {\n Comment = \"This is a comment\",\n Maps = new[]\n {\n new ProxmoxVE.Hardware.Mapping.Inputs.UsbMapArgs\n {\n Comment = \"This is a device specific comment\",\n Id = \"8087:0a2b\",\n Node = \"pve\",\n Path = \"1-8.2\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Hardware.NewUsb(ctx, \"example\", \u0026Hardware.UsbArgs{\n\t\t\tComment: pulumi.String(\"This is a comment\"),\n\t\t\tMaps: mapping.UsbMapTypeArray{\n\t\t\t\t\u0026mapping.UsbMapTypeArgs{\n\t\t\t\t\tComment: pulumi.String(\"This is a device specific comment\"),\n\t\t\t\t\tId: pulumi.String(\"8087:0a2b\"),\n\t\t\t\t\tNode: pulumi.String(\"pve\"),\n\t\t\t\t\tPath: pulumi.String(\"1-8.2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.Usb;\nimport com.pulumi.proxmoxve.Hardware.UsbArgs;\nimport com.pulumi.proxmoxve.Hardware.inputs.UsbMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Usb(\"example\", UsbArgs.builder()\n .comment(\"This is a comment\")\n .maps(UsbMapArgs.builder()\n .comment(\"This is a device specific comment\")\n .id(\"8087:0a2b\")\n .node(\"pve\")\n .path(\"1-8.2\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Hardware/mapping:Usb\n properties:\n comment: This is a comment\n # The actual map of devices.\n maps:\n - comment: This is a device specific comment\n id: 8087:0a2b\n node: pve\n path: 1-8.2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nA USB hardware mapping can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:Hardware/mapping/usb:Usb example example\n```\n\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"required":["maps","name"],"inputProperties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"requiredInputs":["maps"],"stateInputs":{"description":"Input properties used for looking up and filtering Usb resources.\n","properties":{"comment":{"type":"string","description":"The comment of this USB hardware mapping.\n"},"maps":{"type":"array","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/UsbMap:UsbMap"},"description":"The actual map of devices for the hardware mapping.\n"},"name":{"type":"string","description":"The name of this hardware mapping.\n"}},"type":"object"}},"proxmoxve:Network/firewall:Firewall":{"description":"Manages firewall options on the cluster level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.Firewall(\"example\", {\n ebtables: false,\n enabled: false,\n inputPolicy: \"DROP\",\n logRatelimit: {\n burst: 10,\n enabled: false,\n rate: \"5/second\",\n },\n outputPolicy: \"ACCEPT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.Firewall(\"example\",\n ebtables=False,\n enabled=False,\n input_policy=\"DROP\",\n log_ratelimit={\n \"burst\": 10,\n \"enabled\": False,\n \"rate\": \"5/second\",\n },\n output_policy=\"ACCEPT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Network.Firewall(\"example\", new()\n {\n Ebtables = false,\n Enabled = false,\n InputPolicy = \"DROP\",\n LogRatelimit = new ProxmoxVE.Network.Inputs.FirewallLogRatelimitArgs\n {\n Burst = 10,\n Enabled = false,\n Rate = \"5/second\",\n },\n OutputPolicy = \"ACCEPT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewall(ctx, \"example\", \u0026Network.FirewallArgs{\n\t\t\tEbtables: pulumi.Bool(false),\n\t\t\tEnabled: pulumi.Bool(false),\n\t\t\tInputPolicy: pulumi.String(\"DROP\"),\n\t\t\tLogRatelimit: \u0026network.FirewallLogRatelimitArgs{\n\t\t\t\tBurst: pulumi.Int(10),\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\tRate: pulumi.String(\"5/second\"),\n\t\t\t},\n\t\t\tOutputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.Firewall;\nimport com.pulumi.proxmoxve.Network.FirewallArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallLogRatelimitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Firewall(\"example\", FirewallArgs.builder()\n .ebtables(false)\n .enabled(false)\n .inputPolicy(\"DROP\")\n .logRatelimit(FirewallLogRatelimitArgs.builder()\n .burst(10)\n .enabled(false)\n .rate(\"5/second\")\n .build())\n .outputPolicy(\"ACCEPT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Network:Firewall\n properties:\n ebtables: false\n enabled: false\n inputPolicy: DROP\n logRatelimit:\n burst: 10\n enabled: false\n rate: 5/second\n outputPolicy: ACCEPT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported without an ID, but you still need to pass one, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewall:Firewall example example\n```\n\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"inputProperties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Firewall resources.\n","properties":{"ebtables":{"type":"boolean","description":"Enable ebtables rules cluster wide.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall cluster wide.\n"},"inputPolicy":{"type":"string","description":"The default input policy (`ACCEPT`, `DROP`, `REJECT`).\n"},"logRatelimit":{"$ref":"#/types/proxmoxve:Network/FirewallLogRatelimit:FirewallLogRatelimit","description":"The log rate limit.\n"},"outputPolicy":{"type":"string","description":"The default output policy (`ACCEPT`, `DROP`, `REJECT`).\n"}},"type":"object"}},"proxmoxve:Network/firewallAlias:FirewallAlias":{"description":"Aliases are used to see what devices or group of devices are affected by a rule.\nWe can create aliases to identify an IP address or a network. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst localNetwork = new proxmoxve.network.FirewallAlias(\"localNetwork\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n cidr: \"192.168.0.0/23\",\n comment: \"Managed by Pulumi\",\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\nconst ubuntuVm = new proxmoxve.network.FirewallAlias(\"ubuntuVm\", {\n cidr: \"192.168.0.1\",\n comment: \"Managed by Pulumi\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nlocal_network = proxmoxve.network.FirewallAlias(\"localNetwork\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n cidr=\"192.168.0.0/23\",\n comment=\"Managed by Pulumi\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\nubuntu_vm = proxmoxve.network.FirewallAlias(\"ubuntuVm\",\n cidr=\"192.168.0.1\",\n comment=\"Managed by Pulumi\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var localNetwork = new ProxmoxVE.Network.FirewallAlias(\"localNetwork\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Cidr = \"192.168.0.0/23\",\n Comment = \"Managed by Pulumi\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n var ubuntuVm = new ProxmoxVE.Network.FirewallAlias(\"ubuntuVm\", new()\n {\n Cidr = \"192.168.0.1\",\n Comment = \"Managed by Pulumi\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallAlias(ctx, \"localNetwork\", \u0026Network.FirewallAliasArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tCidr: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewFirewallAlias(ctx, \"ubuntuVm\", \u0026Network.FirewallAliasArgs{\n\t\t\tCidr: pulumi.String(\"192.168.0.1\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallAlias;\nimport com.pulumi.proxmoxve.Network.FirewallAliasArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var localNetwork = new FirewallAlias(\"localNetwork\", FirewallAliasArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .cidr(\"192.168.0.0/23\")\n .comment(\"Managed by Pulumi\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n var ubuntuVm = new FirewallAlias(\"ubuntuVm\", FirewallAliasArgs.builder()\n .cidr(\"192.168.0.1\")\n .comment(\"Managed by Pulumi\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n localNetwork:\n type: proxmoxve:Network:FirewallAlias\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n cidr: 192.168.0.0/23\n comment: Managed by Pulumi\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n ubuntuVm:\n type: proxmoxve:Network:FirewallAlias\n properties:\n cidr: 192.168.0.1\n comment: Managed by Pulumi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["cidr","name"],"inputProperties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"requiredInputs":["cidr"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallAlias resources.\n","properties":{"cidr":{"type":"string","description":"Network/IP specification in CIDR format.\n"},"comment":{"type":"string","description":"Alias comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"Alias name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallIPSet:FirewallIPSet":{"description":"An IPSet allows us to group multiple IP addresses, IP subnets and aliases. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ipset = new proxmoxve.network.FirewallIPSet(\"ipset\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n comment: \"Managed by Pulumi\",\n cidrs: [\n {\n name: \"192.168.0.0/23\",\n comment: \"Local network 1\",\n },\n {\n name: \"192.168.0.1\",\n comment: \"Server 1\",\n nomatch: true,\n },\n {\n name: \"192.168.2.1\",\n comment: \"Server 1\",\n },\n ],\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nipset = proxmoxve.network.FirewallIPSet(\"ipset\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n comment=\"Managed by Pulumi\",\n cidrs=[\n {\n \"name\": \"192.168.0.0/23\",\n \"comment\": \"Local network 1\",\n },\n {\n \"name\": \"192.168.0.1\",\n \"comment\": \"Server 1\",\n \"nomatch\": True,\n },\n {\n \"name\": \"192.168.2.1\",\n \"comment\": \"Server 1\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ipset = new ProxmoxVE.Network.FirewallIPSet(\"ipset\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Comment = \"Managed by Pulumi\",\n Cidrs = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.0/23\",\n Comment = \"Local network 1\",\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.1\",\n Comment = \"Server 1\",\n Nomatch = true,\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.2.1\",\n Comment = \"Server 1\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallIPSet(ctx, \"ipset\", \u0026Network.FirewallIPSetArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tCidrs: network.FirewallIPSetCidrArray{\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.0/23\"),\n\t\t\t\t\tComment: pulumi.String(\"Local network 1\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t\tNomatch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.2.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallIPSet;\nimport com.pulumi.proxmoxve.Network.FirewallIPSetArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallIPSetCidrArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ipset = new FirewallIPSet(\"ipset\", FirewallIPSetArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .comment(\"Managed by Pulumi\")\n .cidrs( \n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.0/23\")\n .comment(\"Local network 1\")\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.1\")\n .comment(\"Server 1\")\n .nomatch(true)\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.2.1\")\n .comment(\"Server 1\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipset:\n type: proxmoxve:Network:FirewallIPSet\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n comment: Managed by Pulumi\n cidrs:\n - name: 192.168.0.0/23\n comment: Local network 1\n - name: 192.168.0.1\n comment: Server 1\n nomatch: true\n - name: 192.168.2.1\n comment: Server 1\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n"},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["name"],"inputProperties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering FirewallIPSet resources.\n","properties":{"cidrs":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallIPSetCidr:FirewallIPSetCidr"},"description":"IP/CIDR block (multiple blocks supported).\n","willReplaceOnChanges":true},"comment":{"type":"string","description":"IPSet comment.\n"},"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"name":{"type":"string","description":"IPSet name.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level aliases.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallOptions:FirewallOptions":{"description":"Manages firewall options on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.network.FirewallOptions(\"example\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n dhcp: true,\n enabled: false,\n ipfilter: true,\n logLevelIn: \"info\",\n logLevelOut: \"info\",\n macfilter: false,\n ndp: true,\n inputPolicy: \"ACCEPT\",\n outputPolicy: \"ACCEPT\",\n radv: true,\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.network.FirewallOptions(\"example\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n dhcp=True,\n enabled=False,\n ipfilter=True,\n log_level_in=\"info\",\n log_level_out=\"info\",\n macfilter=False,\n ndp=True,\n input_policy=\"ACCEPT\",\n output_policy=\"ACCEPT\",\n radv=True,\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.Network.FirewallOptions(\"example\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Dhcp = true,\n Enabled = false,\n Ipfilter = true,\n LogLevelIn = \"info\",\n LogLevelOut = \"info\",\n Macfilter = false,\n Ndp = true,\n InputPolicy = \"ACCEPT\",\n OutputPolicy = \"ACCEPT\",\n Radv = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallOptions(ctx, \"example\", \u0026Network.FirewallOptionsArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tDhcp: pulumi.Bool(true),\n\t\t\tEnabled: pulumi.Bool(false),\n\t\t\tIpfilter: pulumi.Bool(true),\n\t\t\tLogLevelIn: pulumi.String(\"info\"),\n\t\t\tLogLevelOut: pulumi.String(\"info\"),\n\t\t\tMacfilter: pulumi.Bool(false),\n\t\t\tNdp: pulumi.Bool(true),\n\t\t\tInputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t\tOutputPolicy: pulumi.String(\"ACCEPT\"),\n\t\t\tRadv: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallOptions;\nimport com.pulumi.proxmoxve.Network.FirewallOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new FirewallOptions(\"example\", FirewallOptionsArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .dhcp(true)\n .enabled(false)\n .ipfilter(true)\n .logLevelIn(\"info\")\n .logLevelOut(\"info\")\n .macfilter(false)\n .ndp(true)\n .inputPolicy(\"ACCEPT\")\n .outputPolicy(\"ACCEPT\")\n .radv(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:Network:FirewallOptions\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n dhcp: true\n enabled: false\n ipfilter: true\n logLevelIn: info\n logLevelOut: info\n macfilter: false\n ndp: true\n inputPolicy: ACCEPT\n outputPolicy: ACCEPT\n radv: true\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"required":["nodeName"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallOptions resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level aliases.\n"},"dhcp":{"type":"boolean","description":"Enable DHCP.\n"},"enabled":{"type":"boolean","description":"Enable or disable the firewall.\n"},"inputPolicy":{"type":"string","description":"The default input\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"ipfilter":{"type":"boolean","description":"Enable default IP filters. This is equivalent to\nadding an empty `ipfilter-net\u003cid\u003e` ipset for every interface. Such ipsets\nimplicitly contain sane default restrictions such as restricting IPv6 link\nlocal addresses to the one derived from the interface's MAC address. For\ncontainers the configured IP addresses will be implicitly added.\n"},"logLevelIn":{"type":"string","description":"Log level for incoming\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"logLevelOut":{"type":"string","description":"Log level for outgoing\npackets (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`,\n`debug`, `nolog`).\n"},"macfilter":{"type":"boolean","description":"Enable/disable MAC address filter.\n"},"ndp":{"type":"boolean","description":"Enable NDP (Neighbor Discovery Protocol).\n"},"nodeName":{"type":"string","description":"Node name.\n"},"outputPolicy":{"type":"string","description":"The default output\npolicy (`ACCEPT`, `DROP`, `REJECT`).\n"},"radv":{"type":"boolean","description":"Enable Router Advertisement.\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level aliases.\n"}},"type":"object"}},"proxmoxve:Network/firewallRules:FirewallRules":{"description":"A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports. Rules can be created on the cluster\nlevel, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst inbound = new proxmoxve.network.FirewallRules(\"inbound\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n rules: [\n {\n type: \"in\",\n action: \"ACCEPT\",\n comment: \"Allow HTTP\",\n dest: \"192.168.1.5\",\n dport: \"80\",\n proto: \"tcp\",\n log: \"info\",\n },\n {\n type: \"in\",\n action: \"ACCEPT\",\n comment: \"Allow HTTPS\",\n dest: \"192.168.1.5\",\n dport: \"443\",\n proto: \"tcp\",\n log: \"info\",\n },\n {\n securityGroup: proxmox_virtual_environment_cluster_firewall_security_group.example.name,\n comment: \"From security group\",\n iface: \"net0\",\n },\n ],\n}, {\n dependsOn: [\n proxmox_virtual_environment_vm.example,\n proxmox_virtual_environment_cluster_firewall_security_group.example,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ninbound = proxmoxve.network.FirewallRules(\"inbound\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n rules=[\n {\n \"type\": \"in\",\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTP\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"80\",\n \"proto\": \"tcp\",\n \"log\": \"info\",\n },\n {\n \"type\": \"in\",\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTPS\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"443\",\n \"proto\": \"tcp\",\n \"log\": \"info\",\n },\n {\n \"security_group\": proxmox_virtual_environment_cluster_firewall_security_group[\"example\"][\"name\"],\n \"comment\": \"From security group\",\n \"iface\": \"net0\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n proxmox_virtual_environment_vm[\"example\"],\n proxmox_virtual_environment_cluster_firewall_security_group[\"example\"],\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var inbound = new ProxmoxVE.Network.FirewallRules(\"inbound\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n Type = \"in\",\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Proto = \"tcp\",\n Log = \"info\",\n },\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n Type = \"in\",\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Proto = \"tcp\",\n Log = \"info\",\n },\n new ProxmoxVE.Network.Inputs.FirewallRulesRuleArgs\n {\n SecurityGroup = proxmox_virtual_environment_cluster_firewall_security_group.Example.Name,\n Comment = \"From security group\",\n Iface = \"net0\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n proxmox_virtual_environment_cluster_firewall_security_group.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallRules(ctx, \"inbound\", \u0026Network.FirewallRulesArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tRules: network.FirewallRulesRuleArray{\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"80\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"443\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallRulesRuleArgs{\n\t\t\t\t\tSecurityGroup: pulumi.Any(proxmox_virtual_environment_cluster_firewall_security_group.Example.Name),\n\t\t\t\t\tComment: pulumi.String(\"From security group\"),\n\t\t\t\t\tIface: pulumi.String(\"net0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t\tproxmox_virtual_environment_cluster_firewall_security_group.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallRules;\nimport com.pulumi.proxmoxve.Network.FirewallRulesArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallRulesRuleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var inbound = new FirewallRules(\"inbound\", FirewallRulesArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .rules( \n FirewallRulesRuleArgs.builder()\n .type(\"in\")\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .proto(\"tcp\")\n .log(\"info\")\n .build(),\n FirewallRulesRuleArgs.builder()\n .type(\"in\")\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .proto(\"tcp\")\n .log(\"info\")\n .build(),\n FirewallRulesRuleArgs.builder()\n .securityGroup(proxmox_virtual_environment_cluster_firewall_security_group.example().name())\n .comment(\"From security group\")\n .iface(\"net0\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n proxmox_virtual_environment_vm.example(),\n proxmox_virtual_environment_cluster_firewall_security_group.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inbound:\n type: proxmoxve:Network:FirewallRules\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n rules:\n - type: in\n action: ACCEPT\n comment: Allow HTTP\n dest: 192.168.1.5\n dport: '80'\n proto: tcp\n log: info\n - type: in\n action: ACCEPT\n comment: Allow HTTPS\n dest: 192.168.1.5\n dport: '443'\n proto: tcp\n log: info\n - securityGroup: ${proxmox_virtual_environment_cluster_firewall_security_group.example.name}\n comment: From security group\n iface: net0\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n - ${proxmox_virtual_environment_cluster_firewall_security_group.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n"},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"required":["rules"],"inputProperties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallRules resources.\n","properties":{"containerId":{"type":"integer","description":"Container ID. Leave empty for cluster level\nrules.\n"},"nodeName":{"type":"string","description":"Node name. Leave empty for cluster level rules.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallRulesRule:FirewallRulesRule"},"description":"Firewall rule block (multiple blocks supported).\nThe provider supports two types of the `rule` blocks:\n- A rule definition block, which includes the following arguments:\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"VM ID. Leave empty for cluster level rules.\n"}},"type":"object"}},"proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup":{"description":"A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst webserver = new proxmoxve.network.FirewallSecurityGroup(\"webserver\", {\n comment: \"Managed by Pulumi\",\n rules: [\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTP\",\n dest: \"192.168.1.5\",\n dport: \"80\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTPS\",\n dest: \"192.168.1.5\",\n dport: \"443\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwebserver = proxmoxve.network.FirewallSecurityGroup(\"webserver\",\n comment=\"Managed by Pulumi\",\n rules=[\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTP\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"80\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTPS\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"443\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webserver = new ProxmoxVE.Network.FirewallSecurityGroup(\"webserver\", new()\n {\n Comment = \"Managed by Pulumi\",\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallSecurityGroup(ctx, \"webserver\", \u0026Network.FirewallSecurityGroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tRules: network.FirewallSecurityGroupRuleArray{\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"80\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"443\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroup;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroupArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallSecurityGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webserver = new FirewallSecurityGroup(\"webserver\", FirewallSecurityGroupArgs.builder()\n .comment(\"Managed by Pulumi\")\n .rules( \n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build(),\n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webserver:\n type: proxmoxve:Network:FirewallSecurityGroup\n properties:\n comment: Managed by Pulumi\n rules:\n - action: ACCEPT\n comment: Allow HTTP\n dest: 192.168.1.5\n dport: '80'\n log: info\n proto: tcp\n type: in\n - action: ACCEPT\n comment: Allow HTTPS\n dest: 192.168.1.5\n dport: '443'\n log: info\n proto: tcp\n type: in\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup webserver webserver\n```\n\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n"},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"required":["name","rules"],"inputProperties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"requiredInputs":["rules"],"stateInputs":{"description":"Input properties used for looking up and filtering FirewallSecurityGroup resources.\n","properties":{"comment":{"type":"string","description":"Security group comment.\n"},"containerId":{"type":"integer","description":"The ID of the container to manage the firewall for.\n"},"name":{"type":"string","description":"Security group name.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"rules":{"type":"array","items":{"$ref":"#/types/proxmoxve:Network/FirewallSecurityGroupRule:FirewallSecurityGroupRule"},"description":"Firewall rule block (multiple blocks supported).\n","willReplaceOnChanges":true},"vmId":{"type":"integer","description":"The ID of the VM to manage the firewall for.\n"}},"type":"object"}},"proxmoxve:Network/networkBridge:NetworkBridge":{"description":"Manages a Linux Bridge network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {nodeName: \"pve\"});\n//# or alternatively, use custom name:\n// name = \"vlan_lab\"\n// interface = \"eno0\"\n// vlan = 98\nconst vmbr99 = new proxmoxve.network.NetworkBridge(\"vmbr99\", {\n nodeName: \"pve\",\n address: \"99.99.99.99/16\",\n comment: \"vmbr99 comment\",\n ports: [\"ens18.99\"],\n}, {\n dependsOn: [vlan99],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\", node_name=\"pve\")\n## or alternatively, use custom name:\n# name = \"vlan_lab\"\n# interface = \"eno0\"\n# vlan = 98\nvmbr99 = proxmoxve.network.NetworkBridge(\"vmbr99\",\n node_name=\"pve\",\n address=\"99.99.99.99/16\",\n comment=\"vmbr99 comment\",\n ports=[\"ens18.99\"],\n opts = pulumi.ResourceOptions(depends_on=[vlan99]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n {\n NodeName = \"pve\",\n });\n\n //# or alternatively, use custom name:\n // name = \"vlan_lab\"\n // interface = \"eno0\"\n // vlan = 98\n var vmbr99 = new ProxmoxVE.Network.NetworkBridge(\"vmbr99\", new()\n {\n NodeName = \"pve\",\n Address = \"99.99.99.99/16\",\n Comment = \"vmbr99 comment\",\n Ports = new[]\n {\n \"ens18.99\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vlan99,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvlan99, err := Network.NewNetworkVlan(ctx, \"vlan99\", \u0026Network.NetworkVlanArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewNetworkBridge(ctx, \"vmbr99\", \u0026Network.NetworkBridgeArgs{\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tAddress: pulumi.String(\"99.99.99.99/16\"),\n\t\t\tComment: pulumi.String(\"vmbr99 comment\"),\n\t\t\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ens18.99\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvlan99,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkVlan;\nimport com.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport com.pulumi.proxmoxve.Network.NetworkBridge;\nimport com.pulumi.proxmoxve.Network.NetworkBridgeArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n .nodeName(\"pve\")\n .build());\n\n //# or alternatively, use custom name:\n // name = \"vlan_lab\"\n // interface = \"eno0\"\n // vlan = 98\n var vmbr99 = new NetworkBridge(\"vmbr99\", NetworkBridgeArgs.builder()\n .nodeName(\"pve\")\n .address(\"99.99.99.99/16\")\n .comment(\"vmbr99 comment\")\n .ports(\"ens18.99\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vlan99)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmbr99:\n type: proxmoxve:Network:NetworkBridge\n properties:\n nodeName: pve\n address: 99.99.99.99/16\n comment: vmbr99 comment\n ports:\n - ens18.99\n options:\n dependson:\n - ${vlan99}\n vlan99:\n type: proxmoxve:Network:NetworkVlan\n properties:\n nodeName: pve\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkBridge:NetworkBridge vmbr99 pve:vmbr99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Must be `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"required":["autostart","name","nodeName","vlanAware"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Must be `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkBridge resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Must be `vmbrN`, where N is a number between 0 and 9999.\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"ports":{"type":"array","items":{"type":"string"},"description":"The interface bridge ports.\n"},"vlanAware":{"type":"boolean","description":"Whether the interface bridge is VLAN aware (defaults to `false`).\n"}},"type":"object"}},"proxmoxve:Network/networkVlan:NetworkVlan":{"description":"Manages a Linux VLAN network interface in a Proxmox VE node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// using VLAN tag\nconst vlan99 = new proxmoxve.network.NetworkVlan(\"vlan99\", {\n comment: \"VLAN 99\",\n nodeName: \"pve\",\n});\n// using custom network interface name\nconst vlan98 = new proxmoxve.network.NetworkVlan(\"vlan98\", {\n comment: \"VLAN 98\",\n \"interface\": \"eno0\",\n nodeName: \"pve\",\n vlan: 98,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# using VLAN tag\nvlan99 = proxmoxve.network.NetworkVlan(\"vlan99\",\n comment=\"VLAN 99\",\n node_name=\"pve\")\n# using custom network interface name\nvlan98 = proxmoxve.network.NetworkVlan(\"vlan98\",\n comment=\"VLAN 98\",\n interface=\"eno0\",\n node_name=\"pve\",\n vlan=98)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // using VLAN tag\n var vlan99 = new ProxmoxVE.Network.NetworkVlan(\"vlan99\", new()\n {\n Comment = \"VLAN 99\",\n NodeName = \"pve\",\n });\n\n // using custom network interface name\n var vlan98 = new ProxmoxVE.Network.NetworkVlan(\"vlan98\", new()\n {\n Comment = \"VLAN 98\",\n Interface = \"eno0\",\n NodeName = \"pve\",\n Vlan = 98,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// using VLAN tag\n\t\t_, err := Network.NewNetworkVlan(ctx, \"vlan99\", \u0026Network.NetworkVlanArgs{\n\t\t\tComment: pulumi.String(\"VLAN 99\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using custom network interface name\n\t\t_, err = Network.NewNetworkVlan(ctx, \"vlan98\", \u0026Network.NetworkVlanArgs{\n\t\t\tComment: pulumi.String(\"VLAN 98\"),\n\t\t\tInterface: pulumi.String(\"eno0\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tVlan: pulumi.Int(98),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkVlan;\nimport com.pulumi.proxmoxve.Network.NetworkVlanArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // using VLAN tag\n var vlan99 = new NetworkVlan(\"vlan99\", NetworkVlanArgs.builder()\n .comment(\"VLAN 99\")\n .nodeName(\"pve\")\n .build());\n\n // using custom network interface name\n var vlan98 = new NetworkVlan(\"vlan98\", NetworkVlanArgs.builder()\n .comment(\"VLAN 98\")\n .interface_(\"eno0\")\n .nodeName(\"pve\")\n .vlan(98)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # using VLAN tag\n vlan99:\n type: proxmoxve:Network:NetworkVlan\n properties:\n comment: VLAN 99\n nodeName: pve\n # using custom network interface name\n vlan98:\n type: proxmoxve:Network:NetworkVlan\n properties:\n comment: VLAN 98\n interface: eno0\n nodeName: pve\n vlan: 98\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Interfaces can be imported using the `node_name:iface` format, e.g.\n\n```sh\n$ pulumi import proxmoxve:Network/networkVlan:NetworkVlan vlan99 pve:vlan99\n```\n\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also `name`.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"required":["autostart","interface","name","nodeName","vlan"],"inputProperties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also `name`.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering NetworkVlan resources.\n","properties":{"address":{"type":"string","description":"The interface IPv4/CIDR address.\n"},"address6":{"type":"string","description":"The interface IPv6/CIDR address.\n"},"autostart":{"type":"boolean","description":"Automatically start interface on boot (defaults to `true`).\n"},"comment":{"type":"string","description":"Comment for the interface.\n"},"gateway":{"type":"string","description":"Default gateway address.\n"},"gateway6":{"type":"string","description":"Default IPv6 gateway address.\n"},"interface":{"type":"string","description":"The VLAN raw device. See also `name`.\n"},"mtu":{"type":"integer","description":"The interface MTU.\n"},"name":{"type":"string","description":"The interface name. Either add the VLAN tag number to an existing interface name, e.g. `ens18.21` (and do not set `interface` and `vlan`), or use custom name, e.g. `vlan_lab` (`interface` and `vlan` are then required).\n"},"nodeName":{"type":"string","description":"The name of the node.\n"},"vlan":{"type":"integer","description":"The VLAN tag. See also `name`.\n"}},"type":"object"}},"proxmoxve:Permission/group:Group":{"description":"Manages a user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsTeam = new proxmoxve.permission.Group(\"operationsTeam\", {\n comment: \"Managed by Pulumi\",\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.permission.Group(\"operationsTeam\",\n comment=\"Managed by Pulumi\",\n group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = new ProxmoxVE.Permission.Group(\"operationsTeam\", new()\n {\n Comment = \"Managed by Pulumi\",\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewGroup(ctx, \"operationsTeam\", \u0026Permission.GroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tGroupId: pulumi.String(\"operations-team\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Group;\nimport com.pulumi.proxmoxve.Permission.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsTeam = new Group(\"operationsTeam\", GroupArgs.builder()\n .comment(\"Managed by Pulumi\")\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsTeam:\n type: proxmoxve:Permission:Group\n properties:\n comment: Managed by Pulumi\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `group_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/group:Group operations_team operations-team\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n"},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"required":["groupId","members"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["groupId"],"stateInputs":{"description":"Input properties used for looking up and filtering Group resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/GroupAcl:GroupAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The group comment.\n"},"groupId":{"type":"string","description":"The group identifier.\n","willReplaceOnChanges":true},"members":{"type":"array","items":{"type":"string"},"description":"The group members as a list of `username@realm` entries\n"}},"type":"object"}},"proxmoxve:Permission/pool:Pool":{"description":"Manages a resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsPool = new proxmoxve.permission.Pool(\"operationsPool\", {\n comment: \"Managed by Pulumi\",\n poolId: \"operations-pool\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.permission.Pool(\"operationsPool\",\n comment=\"Managed by Pulumi\",\n pool_id=\"operations-pool\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = new ProxmoxVE.Permission.Pool(\"operationsPool\", new()\n {\n Comment = \"Managed by Pulumi\",\n PoolId = \"operations-pool\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewPool(ctx, \"operationsPool\", \u0026Permission.PoolArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPoolId: pulumi.String(\"operations-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Pool;\nimport com.pulumi.proxmoxve.Permission.PoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsPool = new Pool(\"operationsPool\", PoolArgs.builder()\n .comment(\"Managed by Pulumi\")\n .poolId(\"operations-pool\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsPool:\n type: proxmoxve:Permission:Pool\n properties:\n comment: Managed by Pulumi\n poolId: operations-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `pool_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/pool:Pool operations_pool operations-pool\n```\n\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n"}},"required":["members","poolId"],"inputProperties":{"comment":{"type":"string","description":"The pool comment.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["poolId"],"stateInputs":{"description":"Input properties used for looking up and filtering Pool resources.\n","properties":{"comment":{"type":"string","description":"The pool comment.\n"},"members":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/PoolMember:PoolMember"},"description":"The pool members.\n"},"poolId":{"type":"string","description":"The pool identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/role:Role":{"description":"Manages a role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n privileges: [\"VM.Monitor\"],\n roleId: \"operations-monitoring\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n privileges=[\"VM.Monitor\"],\n role_id=\"operations-monitoring\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n RoleId = \"operations-monitoring\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .privileges(\"VM.Monitor\")\n .roleId(\"operations-monitoring\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n privileges:\n - VM.Monitor\n roleId: operations-monitoring\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `role_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/role:Role operations_monitoring operations-monitoring\n```\n\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n"}},"required":["privileges","roleId"],"inputProperties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["privileges","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering Role resources.\n","properties":{"privileges":{"type":"array","items":{"type":"string"},"description":"The role privileges.\n"},"roleId":{"type":"string","description":"The role identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Permission/user:User":{"description":"Manages a user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n acls: [{\n path: \"/vms/1234\",\n propagate: true,\n roleId: operationsMonitoring.roleId,\n }],\n comment: \"Managed by Pulumi\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n acls=[{\n \"path\": \"/vms/1234\",\n \"propagate\": True,\n \"role_id\": operations_monitoring.role_id,\n }],\n comment=\"Managed by Pulumi\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Acls = new[]\n {\n new ProxmoxVE.Permission.Inputs.UserAclArgs\n {\n Path = \"/vms/1234\",\n Propagate = true,\n RoleId = operationsMonitoring.RoleId,\n },\n },\n Comment = \"Managed by Pulumi\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tAcls: permission.UserAclArray{\n\t\t\t\t\u0026permission.UserAclArgs{\n\t\t\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\t\t\tPropagate: pulumi.Bool(true),\n\t\t\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.inputs.UserAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .acls(UserAclArgs.builder()\n .path(\"/vms/1234\")\n .propagate(true)\n .roleId(operationsMonitoring.roleId())\n .build())\n .comment(\"Managed by Pulumi\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n acls:\n - path: /vms/1234\n propagate: true\n roleId: ${operationsMonitoring.roleId}\n comment: Managed by Pulumi\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `user_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/user:User operations_automation operations-automation@pve\n```\n\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n"}},"required":["userId"],"inputProperties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"requiredInputs":["userId"],"stateInputs":{"description":"Input properties used for looking up and filtering User resources.\n","properties":{"acls":{"type":"array","items":{"$ref":"#/types/proxmoxve:Permission/UserAcl:UserAcl"},"description":"The access control list (multiple blocks supported).\n"},"comment":{"type":"string","description":"The user comment.\n"},"email":{"type":"string","description":"The user's email address.\n"},"enabled":{"type":"boolean","description":"Whether the user account is enabled.\n"},"expirationDate":{"type":"string","description":"The user account's expiration date (RFC 3339).\n"},"firstName":{"type":"string","description":"The user's first name.\n"},"groups":{"type":"array","items":{"type":"string"},"description":"The user's groups.\n"},"keys":{"type":"string","description":"The user's keys.\n"},"lastName":{"type":"string","description":"The user's last name.\n"},"password":{"type":"string","description":"The user's password. Required for PVE or PAM realms.\n","secret":true},"userId":{"type":"string","description":"The user identifier.\n","willReplaceOnChanges":true}},"type":"object"}},"proxmoxve:Storage/file:File":{"description":"Use this resource to upload files to a Proxmox VE node. The file can be a backup, an ISO image, a snippet, or a container template depending on the `content_type` attribute.\n\n## Example Usage\n\n### Backups (`dump`)\n\n\u003e The resource with this content type uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n\u003e The provider currently does not support restoring backups. You can use the Proxmox VE web interface or the `qmrestore` / `pct restore` command to restore VM / Container from a backup.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst backup = new proxmoxve.storage.File(\"backup\", {\n contentType: \"dump\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nbackup = proxmoxve.storage.File(\"backup\",\n content_type=\"dump\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var backup = new ProxmoxVE.Storage.File(\"backup\", new()\n {\n ContentType = \"dump\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"vzdump-lxc-100-2023_11_08-23_10_05.tar\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"backup\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"dump\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var backup = new File(\"backup\", FileArgs.builder()\n .contentType(\"dump\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"vzdump-lxc-100-2023_11_08-23_10_05.tar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n backup:\n type: proxmoxve:Storage:File\n properties:\n contentType: dump\n datastoreId: local\n nodeName: pve\n sourceFile:\n path: vzdump-lxc-100-2023_11_08-23_10_05.tar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Images\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"iso\",\n datastoreId: \"local\",\n nodeName: \"pve\",\n sourceFile: {\n path: \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"iso\",\n datastore_id=\"local\",\n node_name=\"pve\",\n source_file={\n \"path\": \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"iso\",\n DatastoreId = \"local\",\n NodeName = \"pve\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"iso\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"pve\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"iso\")\n .datastoreId(\"local\")\n .nodeName(\"pve\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n properties:\n contentType: iso\n datastoreId: local\n nodeName: pve\n sourceFile:\n path: https://cloud-images.ubuntu.com/jammy/20230929/jammy-server-cloudimg-amd64-disk-kvm.img\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Container Template (`vztmpl`)\n\n\u003e Consider using `proxmoxve.Download.File` resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ubuntuContainerTemplate = new proxmoxve.storage.File(\"ubuntuContainerTemplate\", {\n contentType: \"vztmpl\",\n datastoreId: \"local\",\n nodeName: \"first-node\",\n sourceFile: {\n path: \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_container_template = proxmoxve.storage.File(\"ubuntuContainerTemplate\",\n content_type=\"vztmpl\",\n datastore_id=\"local\",\n node_name=\"first-node\",\n source_file={\n \"path\": \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuContainerTemplate = new ProxmoxVE.Storage.File(\"ubuntuContainerTemplate\", new()\n {\n ContentType = \"vztmpl\",\n DatastoreId = \"local\",\n NodeName = \"first-node\",\n SourceFile = new ProxmoxVE.Storage.Inputs.FileSourceFileArgs\n {\n Path = \"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.NewFile(ctx, \"ubuntuContainerTemplate\", \u0026Storage.FileArgs{\n\t\t\tContentType: pulumi.String(\"vztmpl\"),\n\t\t\tDatastoreId: pulumi.String(\"local\"),\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tSourceFile: \u0026storage.FileSourceFileArgs{\n\t\t\t\tPath: pulumi.String(\"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.File;\nimport com.pulumi.proxmoxve.Storage.FileArgs;\nimport com.pulumi.proxmoxve.Storage.inputs.FileSourceFileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ubuntuContainerTemplate = new File(\"ubuntuContainerTemplate\", FileArgs.builder()\n .contentType(\"vztmpl\")\n .datastoreId(\"local\")\n .nodeName(\"first-node\")\n .sourceFile(FileSourceFileArgs.builder()\n .path(\"https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ubuntuContainerTemplate:\n type: proxmoxve:Storage:File\n properties:\n contentType: vztmpl\n datastoreId: local\n nodeName: first-node\n sourceFile:\n path: https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nThe Proxmox VE API endpoint for file uploads does not support chunked transfer\nencoding, which means that we must first store the source file as a temporary\nfile locally before uploading it.\n\nYou must ensure that you have at least `Size-in-MB * 2 + 1` MB of storage space\navailable (twice the size plus overhead because a multipart payload needs to be\ncreated as another temporary file).\n\nBy default, if the specified file already exists, the resource will\nunconditionally replace it and take ownership of the resource. On destruction,\nthe file will be deleted as if it did not exist before. If you want to prevent\nthe resource from replacing the file, set `overwrite` to `false`.\n\n## Import\n\nInstances can be imported using the `node_name`, `datastore_id`, `content_type`\n\nand the `file_name` in the following format:\n\ntext\n\nnode_name:datastore_id/content_type/file_name\n\nExample:\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Storage/file:File cloud_config pve/local:snippets/example.cloud-config.yaml\n```\n\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n"},"datastoreId":{"type":"string","description":"The datastore id.\n"},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n"},"fileModificationDate":{"type":"string","description":"The file modification date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"fileSize":{"type":"integer","description":"The file size in bytes.\n"},"fileTag":{"type":"string","description":"The file tag.\n"},"nodeName":{"type":"string","description":"The node name.\n"},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n"},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n"},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"required":["contentType","datastoreId","fileModificationDate","fileName","fileSize","fileTag","nodeName"],"inputProperties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n","willReplaceOnChanges":true},"datastoreId":{"type":"string","description":"The datastore id.\n","willReplaceOnChanges":true},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"requiredInputs":["datastoreId","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering File resources.\n","properties":{"contentType":{"type":"string","description":"The content type. If not specified, the content\ntype will be inferred from the file extension. Valid values are:\n","willReplaceOnChanges":true},"datastoreId":{"type":"string","description":"The datastore id.\n","willReplaceOnChanges":true},"fileMode":{"type":"string","description":"The file mode in octal format, e.g. `0700` or `600`. Note that the prefixes `0o` and `0x` is not supported! Setting this attribute is also only allowed for `root@pam` authenticated user.\n","willReplaceOnChanges":true},"fileModificationDate":{"type":"string","description":"The file modification date (RFC 3339).\n","willReplaceOnChanges":true},"fileName":{"type":"string","description":"The file name.\n"},"fileSize":{"type":"integer","description":"The file size in bytes.\n","willReplaceOnChanges":true},"fileTag":{"type":"string","description":"The file tag.\n","willReplaceOnChanges":true},"nodeName":{"type":"string","description":"The node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing file (defaults to\n`true`).\n"},"sourceFile":{"$ref":"#/types/proxmoxve:Storage/FileSourceFile:FileSourceFile","description":"The source file (conflicts with `source_raw`),\ncould be a local file or a URL. If the source file is a URL, the file will\nbe downloaded and stored locally before uploading it to Proxmox VE.\n","willReplaceOnChanges":true},"sourceRaw":{"$ref":"#/types/proxmoxve:Storage/FileSourceRaw:FileSourceRaw","description":"The raw source (conflicts with `source_file`).\n","willReplaceOnChanges":true},"timeoutUpload":{"type":"integer","description":"Timeout for uploading ISO/VSTMPL files in\nseconds (defaults to 1800).\n"}},"type":"object"}},"proxmoxve:User/token:Token":{"description":"User API tokens.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// if creating a user token, the user must be created first\nconst user = new proxmoxve.permission.User(\"user\", {\n comment: \"Managed by Pulumi\",\n email: \"user@pve\",\n enabled: true,\n expirationDate: \"2034-01-01T22:00:00Z\",\n userId: \"user@pve\",\n});\nconst userToken = new proxmoxve.user.Token(\"userToken\", {\n comment: \"Managed by Pulumi\",\n expirationDate: \"2033-01-01T22:00:00Z\",\n tokenName: \"tk1\",\n userId: user.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# if creating a user token, the user must be created first\nuser = proxmoxve.permission.User(\"user\",\n comment=\"Managed by Pulumi\",\n email=\"user@pve\",\n enabled=True,\n expiration_date=\"2034-01-01T22:00:00Z\",\n user_id=\"user@pve\")\nuser_token = proxmoxve.user.Token(\"userToken\",\n comment=\"Managed by Pulumi\",\n expiration_date=\"2033-01-01T22:00:00Z\",\n token_name=\"tk1\",\n user_id=user.user_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // if creating a user token, the user must be created first\n var user = new ProxmoxVE.Permission.User(\"user\", new()\n {\n Comment = \"Managed by Pulumi\",\n Email = \"user@pve\",\n Enabled = true,\n ExpirationDate = \"2034-01-01T22:00:00Z\",\n UserId = \"user@pve\",\n });\n\n var userToken = new ProxmoxVE.User.Token(\"userToken\", new()\n {\n Comment = \"Managed by Pulumi\",\n ExpirationDate = \"2033-01-01T22:00:00Z\",\n TokenName = \"tk1\",\n UserId = user.UserId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/User\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// if creating a user token, the user must be created first\n\t\tuser, err := Permission.NewUser(ctx, \"user\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tEmail: pulumi.String(\"user@pve\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tExpirationDate: pulumi.String(\"2034-01-01T22:00:00Z\"),\n\t\t\tUserId: pulumi.String(\"user@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = User.NewToken(ctx, \"userToken\", \u0026User.TokenArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tExpirationDate: pulumi.String(\"2033-01-01T22:00:00Z\"),\n\t\t\tTokenName: pulumi.String(\"tk1\"),\n\t\t\tUserId: user.UserId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.User.Token;\nimport com.pulumi.proxmoxve.User.TokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // if creating a user token, the user must be created first\n var user = new User(\"user\", UserArgs.builder()\n .comment(\"Managed by Pulumi\")\n .email(\"user@pve\")\n .enabled(true)\n .expirationDate(\"2034-01-01T22:00:00Z\")\n .userId(\"user@pve\")\n .build());\n\n var userToken = new Token(\"userToken\", TokenArgs.builder()\n .comment(\"Managed by Pulumi\")\n .expirationDate(\"2033-01-01T22:00:00Z\")\n .tokenName(\"tk1\")\n .userId(user.userId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # if creating a user token, the user must be created first\n user:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Pulumi\n email: user@pve\n enabled: true\n expirationDate: 2034-01-01T22:00:00Z\n userId: user@pve\n userToken:\n type: proxmoxve:User:Token\n properties:\n comment: Managed by Pulumi\n expirationDate: 2033-01-01T22:00:00Z\n tokenName: tk1\n userId: ${user.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Tokens can be imported using they identifiers in format `user_id!token_name` format, e.g.:\n\n```sh\n$ pulumi import proxmoxve:User/token:Token token1 user@pve!token1\n```\n\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"required":["privilegesSeparation","tokenName","userId","value"],"inputProperties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"}},"requiredInputs":["tokenName","userId"],"stateInputs":{"description":"Input properties used for looking up and filtering Token resources.\n","properties":{"comment":{"type":"string","description":"Comment for the token.\n"},"expirationDate":{"type":"string","description":"Expiration date for the token.\n"},"privilegesSeparation":{"type":"boolean","description":"Restrict API token privileges with separate ACLs (default), or give full privileges of corresponding user.\n"},"tokenName":{"type":"string","description":"User-specific token identifier.\n"},"userId":{"type":"string","description":"User identifier.\n"},"value":{"type":"string","description":"API token value used for authentication. It is populated only when creating a new token, and can't be retrieved at import.\n","secret":true}},"type":"object"}},"proxmoxve:VM/virtualMachine2:VirtualMachine2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM resource using Plugin Framework.\u003cbr\u003e\u003cbr\u003eIt is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.\n\n\u003e Many attributes are marked as **optional** _and_ **computed** in the schema,\nhence you may seem added to the plan with \"(known after apply)\" status, even if they are not set in the configuration.\nThis is done to support the `clone` operation, when a VM is created from an existing VM or template,\nand the source attributes are copied to the clone.\u003cbr\u003e\u003cbr\u003e\nComputed attributes allow the provider to set those attributes without user input.\nThe attributes are also marked as optional to allow the practitioner to set (or overwrite) them if needed.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","name","nodeName","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cdrom:VirtualMachine2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Clone:VirtualMachine2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Cpu:VirtualMachine2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Timeouts:VirtualMachine2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachine2Vga:VirtualMachine2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"type":"object"},"aliases":[{"type":"proxmoxve:index/vm2:Vm2"}]},"proxmoxve:VM/virtualMachine:VirtualMachine":{"description":"Manages a virtual machine.\n\n\u003e This resource uses SSH access to the node. You might need to configure the `ssh` option in the `provider` section.\n\n## Import\n\nInstances can be imported using the `node_name` and the `vm_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:VM/virtualMachine:VirtualMachine ubuntu_vm first-node/4321\n```\n\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n"},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\n"},"ipv6Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv6 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is `false`)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n"},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n"},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"required":["ipv4Addresses","ipv6Addresses","macAddresses","name","networkInterfaceNames","nodeName","vmId"],"inputProperties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n","willReplaceOnChanges":true},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n","willReplaceOnChanges":true},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering VirtualMachine resources.\n","properties":{"acpi":{"type":"boolean","description":"Whether to enable ACPI (defaults to `true`).\n"},"agent":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAgent:VirtualMachineAgent","description":"The QEMU agent configuration.\n"},"audioDevice":{"$ref":"#/types/proxmoxve:VM/VirtualMachineAudioDevice:VirtualMachineAudioDevice","description":"An audio device.\n"},"bios":{"type":"string","description":"The BIOS implementation (defaults to `seabios`).\n"},"bootOrders":{"type":"array","items":{"type":"string"},"description":"Specify a list of devices to boot from in the order\nthey appear in the list (defaults to `[]`).\n"},"cdrom":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCdrom:VirtualMachineCdrom","description":"The CDROM configuration.\n"},"clone":{"$ref":"#/types/proxmoxve:VM/VirtualMachineClone:VirtualMachineClone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:VM/VirtualMachineCpu:VirtualMachineCpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description.\n"},"disks":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineDisk:VirtualMachineDisk"},"description":"A disk (multiple blocks supported).\n"},"efiDisk":{"$ref":"#/types/proxmoxve:VM/VirtualMachineEfiDisk:VirtualMachineEfiDisk","description":"The efi disk device (required if `bios` is set\nto `ovmf`)\n","willReplaceOnChanges":true},"hookScriptFileId":{"type":"string","description":"The identifier for a file containing a hook script (needs to be executable, e.g. by using the `proxmox_virtual_environment_file.file_mode` attribute).\n"},"hostpcis":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineHostpci:VirtualMachineHostpci"},"description":"A host PCI device mapping (multiple blocks supported).\n"},"initialization":{"$ref":"#/types/proxmoxve:VM/VirtualMachineInitialization:VirtualMachineInitialization","description":"The cloud-init configuration.\n"},"ipv4Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv4 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\n"},"ipv6Addresses":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The IPv6 addresses per network interface published by the\nQEMU agent (empty list when `agent.enabled` is `false`)\n"},"keyboardLayout":{"type":"string","description":"The keyboard layout (defaults to `en-us`).\n"},"kvmArguments":{"type":"string","description":"Arbitrary arguments passed to kvm.\n"},"macAddresses":{"type":"array","items":{"type":"string"},"description":"The MAC addresses published by the QEMU agent with fallback\nto the network device configuration, if the agent is disabled\n"},"machine":{"type":"string","description":"The VM machine type (defaults to `pc`).\n"},"memory":{"$ref":"#/types/proxmoxve:VM/VirtualMachineMemory:VirtualMachineMemory","description":"The memory configuration.\n"},"migrate":{"type":"boolean","description":"Migrate the VM on node change instead of re-creating\nit (defaults to `false`).\n"},"name":{"type":"string","description":"The virtual machine name.\n"},"networkDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNetworkDevice:VirtualMachineNetworkDevice"},"description":"A network device (multiple blocks supported).\n"},"networkInterfaceNames":{"type":"array","items":{"type":"string"},"description":"The network interface names published by the QEMU\nagent (empty list when `agent.enabled` is `false`)\n"},"nodeName":{"type":"string","description":"The name of the node to assign the virtual machine\nto.\n"},"numas":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineNuma:VirtualMachineNuma"},"description":"The NUMA configuration.\n"},"onBoot":{"type":"boolean","description":"Specifies whether a VM will be started during system\nboot. (defaults to `true`)\n"},"operatingSystem":{"$ref":"#/types/proxmoxve:VM/VirtualMachineOperatingSystem:VirtualMachineOperatingSystem","description":"The Operating System configuration.\n"},"poolId":{"type":"string","description":"The identifier for a pool to assign the virtual machine to.\n"},"protection":{"type":"boolean","description":"Sets the protection flag of the VM. This will disable the remove VM and remove disk operations (defaults to `false`).\n"},"reboot":{"type":"boolean","description":"Reboot the VM after initial creation. (defaults to `false`)\n"},"scsiHardware":{"type":"string","description":"The SCSI hardware type (defaults to\n`virtio-scsi-pci`).\n"},"serialDevices":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSerialDevice:VirtualMachineSerialDevice"},"description":"A serial device (multiple blocks supported).\n"},"smbios":{"$ref":"#/types/proxmoxve:VM/VirtualMachineSmbios:VirtualMachineSmbios","description":"The SMBIOS (type1) settings for the VM.\n"},"started":{"type":"boolean","description":"Whether to start the virtual machine (defaults\nto `true`).\n"},"startup":{"$ref":"#/types/proxmoxve:VM/VirtualMachineStartup:VirtualMachineStartup","description":"Defines startup and shutdown behavior of the VM.\n"},"stopOnDestroy":{"type":"boolean","description":"Whether to stop rather than shutdown on VM destroy (defaults to `false`)\n"},"tabletDevice":{"type":"boolean","description":"Whether to enable the USB tablet device (defaults\nto `true`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags of the VM. This is only meta information (\ndefaults to `[]`). Note: Proxmox always sorts the VM tags. If the list in\ntemplate is not sorted, then Proxmox will always report a difference on the\nresource. You may use the `ignore_changes` lifecycle meta-argument to ignore\nchanges to this attribute.\n"},"template":{"type":"boolean","description":"Whether to create a template (defaults to `false`).\n","willReplaceOnChanges":true},"timeoutClone":{"type":"integer","description":"Timeout for cloning a VM in seconds (defaults to\n1800).\n"},"timeoutCreate":{"type":"integer","description":"Timeout for creating a VM in seconds (defaults to\n1800).\n"},"timeoutMigrate":{"type":"integer","description":"Timeout for migrating the VM (defaults to\n1800).\n"},"timeoutMoveDisk":{"type":"integer","description":"MoveDisk timeout\n","deprecationMessage":"This field is deprecated and will be removed in a future release. An overall operation timeout (timeout_create / timeout_clone / timeout_migrate) is used instead."},"timeoutReboot":{"type":"integer","description":"Timeout for rebooting a VM in seconds (defaults\nto 1800).\n"},"timeoutShutdownVm":{"type":"integer","description":"Timeout for shutting down a VM in seconds (\ndefaults to 1800).\n"},"timeoutStartVm":{"type":"integer","description":"Timeout for starting a VM in seconds (defaults\nto 1800).\n"},"timeoutStopVm":{"type":"integer","description":"Timeout for stopping a VM in seconds (defaults\nto 300).\n"},"tpmState":{"$ref":"#/types/proxmoxve:VM/VirtualMachineTpmState:VirtualMachineTpmState","description":"The TPM state device.\n","willReplaceOnChanges":true},"usbs":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/VirtualMachineUsb:VirtualMachineUsb"},"description":"A host USB device mapping (multiple blocks supported).\n"},"vga":{"$ref":"#/types/proxmoxve:VM/VirtualMachineVga:VirtualMachineVga","description":"The VGA configuration.\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"},"watchdog":{"$ref":"#/types/proxmoxve:VM/VirtualMachineWatchdog:VirtualMachineWatchdog","description":"The watchdog configuration. Once enabled (by a guest action), the watchdog must be periodically polled by an agent inside the guest or else the watchdog will reset the guest (or execute the respective action specified).\n"}},"type":"object"}},"proxmoxve:index/acl:Acl":{"description":"Manages ACLs on the Proxmox cluster.\n\nACLs are used to control access to resources in the Proxmox cluster.\nEach ACL consists of a path, a user, group or token, a role, and a flag to allow propagation of permissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n comment: \"Managed by Pulumi\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomationMonitoring = new proxmoxve.Acl(\"operationsAutomationMonitoring\", {\n userId: operationsAutomation.userId,\n roleId: operationsMonitoring.roleId,\n path: \"/vms/1234\",\n propagate: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n comment=\"Managed by Pulumi\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation_monitoring = proxmoxve.Acl(\"operationsAutomationMonitoring\",\n user_id=operations_automation.user_id,\n role_id=operations_monitoring.role_id,\n path=\"/vms/1234\",\n propagate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Comment = \"Managed by Pulumi\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomationMonitoring = new ProxmoxVE.Acl(\"operationsAutomationMonitoring\", new()\n {\n UserId = operationsAutomation.UserId,\n RoleId = operationsMonitoring.RoleId,\n Path = \"/vms/1234\",\n Propagate = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsAutomation, err := Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.NewAcl(ctx, \"operationsAutomationMonitoring\", \u0026proxmoxve.AclArgs{\n\t\t\tUserId: operationsAutomation.UserId,\n\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\tPropagate: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Acl;\nimport com.pulumi.proxmoxve.AclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .comment(\"Managed by Pulumi\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomationMonitoring = new Acl(\"operationsAutomationMonitoring\", AclArgs.builder()\n .userId(operationsAutomation.userId())\n .roleId(operationsMonitoring.roleId())\n .path(\"/vms/1234\")\n .propagate(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Pulumi\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n operationsAutomationMonitoring:\n type: proxmoxve:Acl\n properties:\n userId: ${operationsAutomation.userId}\n roleId: ${operationsMonitoring.roleId}\n path: /vms/1234\n propagate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACL can be imported using its unique identifier, e.g.: {path}?{group|user@realm|user@realm!token}?{role}\n\n```sh\n$ pulumi import proxmoxve:index/acl:Acl operations_automation_monitoring /?monitor@pve?operations-monitoring\n```\n\n","properties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"required":["path","propagate","roleId"],"inputProperties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"requiredInputs":["path","roleId"],"stateInputs":{"description":"Input properties used for looking up and filtering Acl resources.\n","properties":{"groupId":{"type":"string","description":"The group the ACL should apply to (mutually exclusive with `token_id` and `user_id`)\n"},"path":{"type":"string","description":"Access control path\n"},"propagate":{"type":"boolean","description":"Allow to propagate (inherit) permissions.\n"},"roleId":{"type":"string","description":"The role to apply\n"},"tokenId":{"type":"string","description":"The token the ACL should apply to (mutually exclusive with `group_id` and `user_id`)\n"},"userId":{"type":"string","description":"The user the ACL should apply to (mutually exclusive with `group_id` and `token_id`)\n"}},"type":"object"}},"proxmoxve:index/acmeAccount:AcmeAccount":{"description":"Manages an ACME account in a Proxmox VE cluster.\n\n\u003e This resource requires `root@pam` authentication.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeAccount(\"example\", {\n contact: \"example@email.com\",\n directory: \"https://acme-staging-v02.api.letsencrypt.org/directory\",\n tos: \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeAccount(\"example\",\n contact=\"example@email.com\",\n directory=\"https://acme-staging-v02.api.letsencrypt.org/directory\",\n tos=\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.AcmeAccount(\"example\", new()\n {\n Contact = \"example@email.com\",\n Directory = \"https://acme-staging-v02.api.letsencrypt.org/directory\",\n Tos = \"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeAccount(ctx, \"example\", \u0026proxmoxve.AcmeAccountArgs{\n\t\t\tContact: pulumi.String(\"example@email.com\"),\n\t\t\tDirectory: pulumi.String(\"https://acme-staging-v02.api.letsencrypt.org/directory\"),\n\t\t\tTos: pulumi.String(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.AcmeAccount;\nimport com.pulumi.proxmoxve.AcmeAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AcmeAccount(\"example\", AcmeAccountArgs.builder()\n .contact(\"example@email.com\")\n .directory(\"https://acme-staging-v02.api.letsencrypt.org/directory\")\n .tos(\"https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:AcmeAccount\n properties:\n contact: example@email.com\n directory: https://acme-staging-v02.api.letsencrypt.org/directory\n tos: https://letsencrypt.org/documents/LE-SA-v1.3-September-21-2022.pdf\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeAccount:AcmeAccount example example\n```\n\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"required":["contact","createdAt","location","name"],"inputProperties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"requiredInputs":["contact"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeAccount resources.\n","properties":{"contact":{"type":"string","description":"The contact email addresses.\n"},"createdAt":{"type":"string","description":"The timestamp of the ACME account creation.\n"},"directory":{"type":"string","description":"The URL of the ACME CA directory endpoint.\n"},"eabHmacKey":{"type":"string","description":"The HMAC key for External Account Binding.\n"},"eabKid":{"type":"string","description":"The Key Identifier for External Account Binding.\n"},"location":{"type":"string","description":"The location of the ACME account.\n"},"name":{"type":"string","description":"The ACME account config file name.\n"},"tos":{"type":"string","description":"The URL of CA TermsOfService - setting this indicates agreement.\n"}},"type":"object"}},"proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin":{"description":"Manages an ACME plugin in a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.AcmeDnsPlugin(\"example\", {\n api: \"aws\",\n data: {\n AWS_ACCESS_KEY_ID: \"EXAMPLE\",\n AWS_SECRET_ACCESS_KEY: \"EXAMPLE\",\n },\n plugin: \"test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.AcmeDnsPlugin(\"example\",\n api=\"aws\",\n data={\n \"AWS_ACCESS_KEY_ID\": \"EXAMPLE\",\n \"AWS_SECRET_ACCESS_KEY\": \"EXAMPLE\",\n },\n plugin=\"test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.AcmeDnsPlugin(\"example\", new()\n {\n Api = \"aws\",\n Data = \n {\n { \"AWS_ACCESS_KEY_ID\", \"EXAMPLE\" },\n { \"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\" },\n },\n Plugin = \"test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewAcmeDnsPlugin(ctx, \"example\", \u0026proxmoxve.AcmeDnsPluginArgs{\n\t\t\tApi: pulumi.String(\"aws\"),\n\t\t\tData: pulumi.StringMap{\n\t\t\t\t\"AWS_ACCESS_KEY_ID\": pulumi.String(\"EXAMPLE\"),\n\t\t\t\t\"AWS_SECRET_ACCESS_KEY\": pulumi.String(\"EXAMPLE\"),\n\t\t\t},\n\t\t\tPlugin: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.AcmeDnsPlugin;\nimport com.pulumi.proxmoxve.AcmeDnsPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AcmeDnsPlugin(\"example\", AcmeDnsPluginArgs.builder()\n .api(\"aws\")\n .data(Map.ofEntries(\n Map.entry(\"AWS_ACCESS_KEY_ID\", \"EXAMPLE\"),\n Map.entry(\"AWS_SECRET_ACCESS_KEY\", \"EXAMPLE\")\n ))\n .plugin(\"test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:AcmeDnsPlugin\n properties:\n api: aws\n data:\n AWS_ACCESS_KEY_ID: EXAMPLE\n AWS_SECRET_ACCESS_KEY: EXAMPLE\n plugin: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACME accounts can be imported using their name, e.g.:\n\n```sh\n$ pulumi import proxmoxve:index/acmeDnsPlugin:AcmeDnsPlugin example test\n```\n\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"required":["api","digest","plugin","validationDelay"],"inputProperties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"requiredInputs":["api","plugin"],"stateInputs":{"description":"Input properties used for looking up and filtering AcmeDnsPlugin resources.\n","properties":{"api":{"type":"string","description":"API plugin name.\n"},"data":{"type":"object","additionalProperties":{"type":"string"},"description":"DNS plugin data.\n"},"digest":{"type":"string","description":"SHA1 digest of the current configuration. Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n"},"disable":{"type":"boolean","description":"Flag to disable the config.\n"},"plugin":{"type":"string","description":"ACME Plugin ID name.\n"},"validationDelay":{"type":"integer","description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n"}},"type":"object"}},"proxmoxve:index/certifi:Certifi":{"description":"Manages the custom SSL/TLS certificate for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example:\n type: proxmoxve:Certifi\n properties:\n certificate: ${proxmoxVirtualEnvironmentCertificateSelfSignedCert.certPem}\n nodeName: first-node\n privateKey: ${proxmoxVirtualEnvironmentCertificatePrivateKey.privateKeyPem}\n proxmoxVirtualEnvironmentCertificatePrivateKey:\n type: tls:PrivateKey\n properties:\n algorithm: RSA\n rsaBits: 2048\n proxmoxVirtualEnvironmentCertificateSelfSignedCert:\n type: tls:SelfSignedCert\n properties:\n keyAlgorithm: ${proxmoxVirtualEnvironmentCertificatePrivateKey.algorithm}\n privateKeyPem: ${proxmoxVirtualEnvironmentCertificatePrivateKey.privateKeyPem}\n subject:\n commonName: example.com\n organization: Terraform Provider for Proxmox\n validityPeriodHours: 8760\n allowedUses:\n - key_encipherment\n - digital_signature\n - server_auth\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"expirationDate":{"type":"string","description":"The expiration date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"issuer":{"type":"string","description":"The issuer.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true},"publicKeySize":{"type":"integer","description":"The public key size.\n"},"publicKeyType":{"type":"string","description":"The public key type.\n"},"sslFingerprint":{"type":"string","description":"The SSL fingerprint.\n"},"startDate":{"type":"string","description":"The start date (RFC 3339).\n"},"subject":{"type":"string","description":"The subject.\n"},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The subject alternative names.\n"}},"required":["certificate","expirationDate","fileName","issuer","nodeName","privateKey","publicKeySize","publicKeyType","sslFingerprint","startDate","subject","subjectAlternativeNames"],"inputProperties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true}},"requiredInputs":["certificate","nodeName","privateKey"],"stateInputs":{"description":"Input properties used for looking up and filtering Certifi resources.\n","properties":{"certificate":{"type":"string","description":"The PEM encoded certificate.\n"},"certificateChain":{"type":"string","description":"The PEM encoded certificate chain.\n"},"expirationDate":{"type":"string","description":"The expiration date (RFC 3339).\n"},"fileName":{"type":"string","description":"The file name.\n"},"issuer":{"type":"string","description":"The issuer.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"overwrite":{"type":"boolean","description":"Whether to overwrite an existing certificate\n"},"privateKey":{"type":"string","description":"The PEM encoded private key.\n","secret":true},"publicKeySize":{"type":"integer","description":"The public key size.\n"},"publicKeyType":{"type":"string","description":"The public key type.\n"},"sslFingerprint":{"type":"string","description":"The SSL fingerprint.\n"},"startDate":{"type":"string","description":"The start date (RFC 3339).\n"},"subject":{"type":"string","description":"The subject.\n"},"subjectAlternativeNames":{"type":"array","items":{"type":"string"},"description":"The subject alternative names.\n"}},"type":"object"}},"proxmoxve:index/dNS:DNS":{"description":"Manages the DNS configuration for a specific node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/dNS:DNS first_node first-node\n```\n\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"required":["domain","nodeName"],"inputProperties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"requiredInputs":["domain","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering DNS resources.\n","properties":{"domain":{"type":"string","description":"The DNS search domain.\n"},"nodeName":{"type":"string","description":"A node name.\n","willReplaceOnChanges":true},"servers":{"type":"array","items":{"type":"string"},"description":"The DNS servers.\n"}},"type":"object"}},"proxmoxve:index/hosts:Hosts":{"description":"Manages the host entries on a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n firstNodeHostEntries:\n type: proxmoxve:Hosts\n properties:\n entries:\n - address: 127.0.0.1\n hostnames:\n - localhost\n - localhost.localdomain\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Important Notes\n\nBe careful not to use this resource multiple times for the same node.\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/hosts:Hosts first_node_host_entries first-node\n```\n\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"required":["addresses","digest","entries","entry","hostnames","nodeName"],"inputProperties":{"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"requiredInputs":["entry","nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Hosts resources.\n","properties":{"addresses":{"type":"array","items":{"type":"string"},"description":"The IP addresses.\n"},"digest":{"type":"string","description":"The SHA1 digest.\n"},"entries":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n"},"entry":{"type":"array","items":{"$ref":"#/types/proxmoxve:index/HostsEntry:HostsEntry"},"description":"A host entry (multiple blocks supported).\n"},"hostnames":{"type":"array","items":{"type":"array","items":{"type":"string"}},"description":"The hostnames associated with each of the IP addresses.\n"},"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object"}},"proxmoxve:index/time:Time":{"description":"Manages the time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst firstNodeTime = new proxmoxve.Time(\"firstNodeTime\", {\n nodeName: \"first-node\",\n timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Time(\"firstNodeTime\",\n node_name=\"first-node\",\n time_zone=\"UTC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeTime = new ProxmoxVE.Time(\"firstNodeTime\", new()\n {\n NodeName = \"first-node\",\n TimeZone = \"UTC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.NewTime(ctx, \"firstNodeTime\", \u0026proxmoxve.TimeArgs{\n\t\t\tNodeName: pulumi.String(\"first-node\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Time;\nimport com.pulumi.proxmoxve.TimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var firstNodeTime = new Time(\"firstNodeTime\", TimeArgs.builder()\n .nodeName(\"first-node\")\n .timeZone(\"UTC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n firstNodeTime:\n type: proxmoxve:Time\n properties:\n nodeName: first-node\n timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `node_name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:index/time:Time first_node first-node\n```\n\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's local time formatted as UTC.\n"}},"required":["localTime","nodeName","timeZone","utcTime"],"inputProperties":{"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"}},"requiredInputs":["nodeName","timeZone"],"stateInputs":{"description":"Input properties used for looking up and filtering Time resources.\n","properties":{"localTime":{"type":"string","description":"The node's local time.\n"},"nodeName":{"type":"string","description":"A node name.\n"},"timeZone":{"type":"string","description":"The node's time zone.\n"},"utcTime":{"type":"string","description":"The node's local time formatted as UTC.\n"}},"type":"object"}},"proxmoxve:index/vm2:Vm2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM resource using Plugin Framework.\u003cbr\u003e\u003cbr\u003eIt is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.\n\n\u003e Many attributes are marked as **optional** _and_ **computed** in the schema,\nhence you may seem added to the plan with \"(known after apply)\" status, even if they are not set in the configuration.\nThis is done to support the `clone` operation, when a VM is created from an existing VM or template,\nand the source attributes are copied to the clone.\u003cbr\u003e\u003cbr\u003e\nComputed attributes allow the provider to set those attributes without user input.\nThe attributes are also marked as optional to allow the practitioner to set (or overwrite) them if needed.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"required":["cdrom","cpu","name","nodeName","stopOnDestroy","tags","vga"],"inputProperties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"requiredInputs":["nodeName"],"stateInputs":{"description":"Input properties used for looking up and filtering Vm2 resources.\n","properties":{"cdrom":{"type":"object","additionalProperties":{"$ref":"#/types/proxmoxve:index/Vm2Cdrom:Vm2Cdrom"},"description":"The CD-ROM configuration. The key is the interface of the CD-ROM, could be one of `ideN`, `sataN`, `scsiN`, where N is the index of the interface. Note that `q35` machine type only supports `ide0` and `ide2` of IDE interfaces.\n"},"clone":{"$ref":"#/types/proxmoxve:index/Vm2Clone:Vm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/Vm2Cpu:Vm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"name":{"type":"string","description":"The name of the VM. Doesn't have to be unique.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"stopOnDestroy":{"type":"boolean","description":"Set to true to stop (rather than shutdown) the VM on destroy (defaults to `false`).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Set to true to create a VM template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/Vm2Timeouts:Vm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/Vm2Vga:Vm2Vga","description":"Configure the VGA Hardware. If you want to use high resolution modes (\u003e= 1280x1024x16) you may need to increase the vga memory option. Since QEMU 2.9 the default VGA display type is `std` for all OS types besides some Windows versions (XP and older) which use `cirrus`. The `qxl` option enables the SPICE display server. For win* OS you can select how many independent displays you want, Linux guests can add displays themself. You can also run without any graphic card, using a serial device as terminal. See the [Proxmox documentation](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_virtual_machines_settings) section 10.2.8 for more information and available configuration parameters.\n"}},"type":"object"},"deprecationMessage":"proxmoxve.index/vm2.Vm2 has been deprecated in favor of proxmoxve.vm/virtualmachine2.VirtualMachine2"}},"functions":{"proxmoxve:Acme/getAccount:getAccount":{"description":"Retrieves information about a specific ACME account.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.Acme.getAccounts({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.Acme.getAccount({\n name: __value,\n}))));\nexport const dataProxmoxVirtualEnvironmentAcmeAccount = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.Acme.get_accounts()\nexample = [proxmoxve.Acme.get_account(name=__value) for __key, __value in all.accounts]\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.Acme.GetAccount.Invoke(new()\n {\n Name = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmeAccount\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := Acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = AcmeFunctions.getAccounts();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccount\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getAccount.\n","properties":{"name":{"type":"string","description":"The identifier of the ACME account to read.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getAccount.\n","properties":{"account":{"$ref":"#/types/proxmoxve:Acme/getAccountAccount:getAccountAccount","description":"The ACME account information.\n"},"directory":{"description":"The directory URL of the ACME account.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"location":{"description":"The location URL of the ACME account.\n","type":"string"},"name":{"description":"The identifier of the ACME account to read.\n","type":"string"},"tos":{"description":"The URL of the terms of service of the ACME account.\n","type":"string"}},"required":["account","directory","location","tos","id"],"type":"object"}},"proxmoxve:Acme/getAccounts:getAccounts":{"description":"Retrieves the list of ACME accounts.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getAccounts({});\nexport const dataProxmoxVirtualEnvironmentAcmeAccounts = example.then(example =\u003e example.accounts);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_accounts()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.accounts)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetAccounts.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmeAccounts\"] = example.Apply(getAccountsResult =\u003e getAccountsResult.Accounts),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetAccounts(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.Accounts)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getAccounts();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmeAccounts\", example.applyValue(getAccountsResult -\u003e getAccountsResult.accounts()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getAccounts\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentAcmeAccounts: ${example.accounts}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getAccounts.\n","properties":{"accounts":{"description":"The identifiers of the ACME accounts.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"}},"required":["accounts","id"],"type":"object"}},"proxmoxve:Acme/getPlugin:getPlugin":{"description":"Retrieves a single ACME plugin by plugin ID name.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugin({\n plugin: \"standalone\",\n});\nexport const dataProxmoxVirtualEnvironmentAcmePlugin = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugin(plugin=\"standalone\")\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetPlugin.Invoke(new()\n {\n Plugin = \"standalone\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmePlugin\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetPlugin(ctx, \u0026acme.GetPluginArgs{\n\t\t\tPlugin: \"standalone\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport com.pulumi.proxmoxve.Acme.inputs.GetPluginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getPlugin(GetPluginArgs.builder()\n .plugin(\"standalone\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugin\", example.applyValue(getPluginResult -\u003e getPluginResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getPlugin\n Arguments:\n plugin: standalone\noutputs:\n dataProxmoxVirtualEnvironmentAcmePlugin: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPlugin.\n","properties":{"plugin":{"type":"string","description":"ACME Plugin ID name.\n"}},"type":"object","required":["plugin"]},"outputs":{"description":"A collection of values returned by getPlugin.\n","properties":{"api":{"description":"API plugin name.\n","type":"string"},"data":{"additionalProperties":{"type":"string"},"description":"DNS plugin data.\n","type":"object"},"digest":{"description":"Prevent changes if current configuration file has a different digest. This can be used to prevent concurrent modifications.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"plugin":{"description":"ACME Plugin ID name.\n","type":"string"},"type":{"description":"ACME challenge type (dns, standalone).\n","type":"string"},"validationDelay":{"description":"Extra delay in seconds to wait before requesting validation. Allows to cope with a long TTL of DNS records (0 - 172800).\n","type":"integer"}},"required":["api","data","digest","plugin","type","validationDelay","id"],"type":"object"}},"proxmoxve:Acme/getPlugins:getPlugins":{"description":"Retrieves the list of ACME plugins.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Acme.getPlugins({});\nexport const dataProxmoxVirtualEnvironmentAcmePlugins = example.then(example =\u003e example.plugins);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Acme.get_plugins()\npulumi.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.plugins)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Acme.GetPlugins.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentAcmePlugins\"] = example.Apply(getPluginsResult =\u003e getPluginsResult.Plugins),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Acme\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Acme.GetPlugins(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.Plugins)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Acme.AcmeFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AcmeFunctions.getPlugins();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentAcmePlugins\", example.applyValue(getPluginsResult -\u003e getPluginsResult.plugins()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Acme:getPlugins\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentAcmePlugins: ${example.plugins}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPlugins.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"plugins":{"description":"List of ACME plugins\n","items":{"$ref":"#/types/proxmoxve:Acme/getPluginsPlugin:getPluginsPlugin"},"type":"array"}},"required":["plugins","id"],"type":"object"}},"proxmoxve:Apt/getRepository:getRepository":{"description":"Retrieves an APT repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Apt.getRepository({\n filePath: \"/etc/apt/sources.list\",\n index: 0,\n node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.get_repository(file_path=\"/etc/apt/sources.list\",\n index=0,\n node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Apt.GetRepository.Invoke(new()\n {\n FilePath = \"/etc/apt/sources.list\",\n Index = 0,\n Node = \"pve\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentAptRepository\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Apt.GetRepository(ctx, \u0026apt.GetRepositoryArgs{\n\t\t\tFilePath: \"/etc/apt/sources.list\",\n\t\t\tIndex: 0,\n\t\t\tNode: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt.AptFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AptFunctions.getRepository(GetRepositoryArgs.builder()\n .filePath(\"/etc/apt/sources.list\")\n .index(0)\n .node(\"pve\")\n .build());\n\n ctx.export(\"proxmoxVirtualEnvironmentAptRepository\", example.applyValue(getRepositoryResult -\u003e getRepositoryResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Apt:getRepository\n Arguments:\n filePath: /etc/apt/sources.list\n index: 0\n node: pve\noutputs:\n proxmoxVirtualEnvironmentAptRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"filePath":{"type":"string","description":"The absolute path of the source list file that contains this repository.\n"},"index":{"type":"integer","description":"The index within the defining source list file.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["filePath","index","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"comment":{"description":"The associated comment.\n","type":"string"},"components":{"description":"The list of components.\n","items":{"type":"string"},"type":"array"},"enabled":{"description":"Indicates the activation status.\n","type":"boolean"},"filePath":{"description":"The absolute path of the source list file that contains this repository.\n","type":"string"},"fileType":{"description":"The format of the defining source list file.\n","type":"string"},"id":{"description":"The unique identifier of this APT repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"packageTypes":{"description":"The list of package types.\n","items":{"type":"string"},"type":"array"},"suites":{"description":"The list of package distributions.\n","items":{"type":"string"},"type":"array"},"uris":{"description":"The list of repository URIs.\n","items":{"type":"string"},"type":"array"}},"required":["comment","components","enabled","filePath","fileType","id","index","node","packageTypes","suites","uris"],"type":"object"}},"proxmoxve:Apt/standard/getRepository:getRepository":{"description":"Retrieves an APT standard repository from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Apt.standard.getRepository({\n handle: \"no-subscription\",\n node: \"pve\",\n});\nexport const proxmoxVirtualEnvironmentAptStandardRepository = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Apt.standard.get_repository(handle=\"no-subscription\",\n node=\"pve\")\npulumi.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Apt.Standard.GetRepository.Invoke(new()\n {\n Handle = \"no-subscription\",\n Node = \"pve\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentAptStandardRepository\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Apt\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Apt.GetRepository(ctx, \u0026standard.GetRepositoryArgs{\n\t\t\tHandle: \"no-subscription\",\n\t\t\tNode: \"pve\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Apt_standard.Apt_standardFunctions;\nimport com.pulumi.proxmoxve.Apt.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Apt/standardFunctions.getRepository(GetRepositoryArgs.builder()\n .handle(\"no-subscription\")\n .node(\"pve\")\n .build());\n\n ctx.export(\"proxmoxVirtualEnvironmentAptStandardRepository\", example.applyValue(getRepositoryResult -\u003e getRepositoryResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Apt/standard:getRepository\n Arguments:\n handle: no-subscription\n node: pve\noutputs:\n proxmoxVirtualEnvironmentAptStandardRepository: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRepository.\n","properties":{"handle":{"type":"string","description":"The handle of the APT standard repository.\n"},"node":{"type":"string","description":"The name of the target Proxmox VE node.\n"}},"type":"object","required":["handle","node"]},"outputs":{"description":"A collection of values returned by getRepository.\n","properties":{"description":{"description":"The description of the APT standard repository.\n","type":"string"},"filePath":{"description":"The absolute path of the source list file that contains this standard repository.\n","type":"string"},"handle":{"description":"The handle of the APT standard repository.\n","type":"string"},"id":{"description":"The unique identifier of this APT standard repository data source.\n","type":"string"},"index":{"description":"The index within the defining source list file.\n","type":"integer"},"name":{"description":"The name of the APT standard repository.\n","type":"string"},"node":{"description":"The name of the target Proxmox VE node.\n","type":"string"},"status":{"description":"Indicates the activation status.\n","type":"integer"}},"required":["description","filePath","handle","id","index","name","node","status"],"type":"object"}},"proxmoxve:Cluster/getNodes:getNodes":{"description":"Retrieves information about all available nodes.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableNodes = proxmoxve.Cluster.getNodes({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_nodes = proxmoxve.Cluster.get_nodes()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableNodes = ProxmoxVE.Cluster.GetNodes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Cluster\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Cluster.GetNodes(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Cluster.ClusterFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableNodes = ClusterFunctions.getNodes();\n\n }\n}\n```\n```yaml\nvariables:\n availableNodes:\n fn::invoke:\n Function: proxmoxve:Cluster:getNodes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getNodes.\n","properties":{"cpuCounts":{"description":"The CPU count for each node.\n","items":{"type":"integer"},"type":"array"},"cpuUtilizations":{"description":"The CPU utilization on each node.\n","items":{"type":"number"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"memoryAvailables":{"description":"The memory available on each node.\n","items":{"type":"integer"},"type":"array"},"memoryUseds":{"description":"The memory used on each node.\n","items":{"type":"integer"},"type":"array"},"names":{"description":"The node names.\n","items":{"type":"string"},"type":"array"},"onlines":{"description":"Whether a node is online.\n","items":{"type":"boolean"},"type":"array"},"sslFingerprints":{"description":"The SSL fingerprint for each node.\n","items":{"type":"string"},"type":"array"},"supportLevels":{"description":"The support level for each node.\n","items":{"type":"string"},"type":"array"},"uptimes":{"description":"The uptime in seconds for each node.\n","items":{"type":"integer"},"type":"array"}},"required":["cpuCounts","cpuUtilizations","memoryAvailables","memoryUseds","names","onlines","sslFingerprints","supportLevels","uptimes","id"],"type":"object"}},"proxmoxve:HA/getHAGroup:getHAGroup":{"description":"Retrieves information about a specific High Availability group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.HA.getHAGroups({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.HA.getHAGroup({\n group: __value,\n}))));\nexport const proxmoxVirtualEnvironmentHagroupsFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.HA.get_ha_groups()\nexample = [proxmoxve.HA.get_ha_group(group=__value) for __key, __value in all.group_ids]\npulumi.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.HA.GetHAGroup.Invoke(new()\n {\n Group = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentHagroupsFull\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := HA.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"proxmoxVirtualEnvironmentHagroupsFull\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = HAFunctions.getHAGroups();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"proxmoxVirtualEnvironmentHagroupsFull\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAGroup.\n","properties":{"group":{"type":"string","description":"The identifier of the High Availability group to read.\n"}},"type":"object","required":["group"]},"outputs":{"description":"A collection of values returned by getHAGroup.\n","properties":{"comment":{"description":"The comment associated with this group\n","type":"string"},"group":{"description":"The identifier of the High Availability group to read.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"noFailback":{"description":"A flag that indicates that failing back to a higher priority node is disabled for this HA group.\n","type":"boolean"},"nodes":{"additionalProperties":{"type":"integer"},"description":"The member nodes for this group. They are provided as a map, where the keys are the node names and the values represent their priority: integers for known priorities or `null` for unset priorities.\n","type":"object"},"restricted":{"description":"A flag that indicates that other nodes may not be used to run resources associated to this HA group.\n","type":"boolean"}},"required":["comment","group","id","noFailback","nodes","restricted"],"type":"object"}},"proxmoxve:HA/getHAGroups:getHAGroups":{"description":"Retrieves the list of High Availability groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.HA.getHAGroups({});\nexport const dataProxmoxVirtualEnvironmentHagroups = example.then(example =\u003e example.groupIds);\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.HA.get_ha_groups()\npulumi.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.group_ids)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.HA.GetHAGroups.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHagroups\"] = example.Apply(getHAGroupsResult =\u003e getHAGroupsResult.GroupIds),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := HA.GetHAGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHagroups\", example.GroupIds)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = HAFunctions.getHAGroups();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHagroups\", example.applyValue(getHAGroupsResult -\u003e getHAGroupsResult.groupIds()));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:HA:getHAGroups\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentHagroups: ${example.groupIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getHAGroups.\n","properties":{"groupIds":{"description":"The identifiers of the High Availability groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The unique identifier of this resource.\n","type":"string"}},"required":["groupIds","id"],"type":"object"}},"proxmoxve:HA/getHAResource:getHAResource":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst all = proxmoxve.HA.getHAResources({});\nconst example = all.then(all =\u003e .map(([, ]) =\u003e (proxmoxve.HA.getHAResource({\n resourceId: __value,\n}))));\nexport const proxmoxVirtualEnvironmentHaresourcesFull = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nall = proxmoxve.HA.get_ha_resources()\nexample = [proxmoxve.HA.get_ha_resource(resource_id=__value) for __key, __value in all.resource_ids]\npulumi.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = ProxmoxVE.HA.GetHAResources.Invoke();\n\n var example = .Select(__value =\u003e \n {\n return ProxmoxVE.HA.GetHAResource.Invoke(new()\n {\n ResourceId = __value,\n });\n }).ToList();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"proxmoxVirtualEnvironmentHaresourcesFull\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample := \"TODO: For expression\"\n\t\tctx.Export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = HAFunctions.getHAResources();\n\n final var example = \"TODO: ForExpression\";\n\n ctx.export(\"proxmoxVirtualEnvironmentHaresourcesFull\", example);\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResource.\n","properties":{"resourceId":{"type":"string","description":"The identifier of the Proxmox HA resource to read.\n"}},"type":"object","required":["resourceId"]},"outputs":{"description":"A collection of values returned by getHAResource.\n","properties":{"comment":{"description":"The comment associated with this resource.\n","type":"string"},"group":{"description":"The identifier of the High Availability group this resource is a member of.\n","type":"string"},"id":{"description":"The unique identifier of this resource.\n","type":"string"},"maxRelocate":{"description":"The maximal number of relocation attempts.\n","type":"integer"},"maxRestart":{"description":"The maximal number of restart attempts.\n","type":"integer"},"resourceId":{"description":"The identifier of the Proxmox HA resource to read.\n","type":"string"},"state":{"description":"The desired state of the resource.\n","type":"string"},"type":{"description":"The type of High Availability resource (`vm` or `ct`).\n","type":"string"}},"required":["comment","group","id","maxRelocate","maxRestart","resourceId","state","type"],"type":"object"}},"proxmoxve:HA/getHAResources:getHAResources":{"description":"Retrieves the list of High Availability resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst exampleAll = proxmoxve.HA.getHAResources({});\nconst exampleVm = proxmoxve.HA.getHAResources({\n type: \"vm\",\n});\nexport const dataProxmoxVirtualEnvironmentHaresources = {\n all: exampleAll.then(exampleAll =\u003e exampleAll.resourceIds),\n vms: exampleVm.then(exampleVm =\u003e exampleVm.resourceIds),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_all = proxmoxve.HA.get_ha_resources()\nexample_vm = proxmoxve.HA.get_ha_resources(type=\"vm\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHaresources\", {\n \"all\": example_all.resource_ids,\n \"vms\": example_vm.resource_ids,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleAll = ProxmoxVE.HA.GetHAResources.Invoke();\n\n var exampleVm = ProxmoxVE.HA.GetHAResources.Invoke(new()\n {\n Type = \"vm\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHaresources\"] = \n {\n { \"all\", exampleAll.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n { \"vms\", exampleVm.Apply(getHAResourcesResult =\u003e getHAResourcesResult.ResourceIds) },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nexampleAll, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\n}, nil);\nif err != nil {\nreturn err\n}\nexampleVm, err := HA.GetHAResources(ctx, \u0026ha.GetHAResourcesArgs{\nType: pulumi.StringRef(\"vm\"),\n}, nil);\nif err != nil {\nreturn err\n}\nctx.Export(\"dataProxmoxVirtualEnvironmentHaresources\", interface{}Map{\n\"all\": exampleAll.ResourceIds,\n\"vms\": exampleVm.ResourceIds,\n})\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAFunctions;\nimport com.pulumi.proxmoxve.HA.inputs.GetHAResourcesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleAll = HAFunctions.getHAResources();\n\n final var exampleVm = HAFunctions.getHAResources(GetHAResourcesArgs.builder()\n .type(\"vm\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHaresources\", %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference));\n }\n}\n```\n```yaml\nvariables:\n exampleAll:\n fn::invoke:\n Function: proxmoxve:HA:getHAResources\n Arguments: {}\n exampleVm:\n fn::invoke:\n Function: proxmoxve:HA:getHAResources\n Arguments:\n type: vm\noutputs:\n dataProxmoxVirtualEnvironmentHaresources:\n all: ${exampleAll.resourceIds}\n vms: ${exampleVm.resourceIds}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHAResources.\n","properties":{"type":{"type":"string","description":"The type of High Availability resources to fetch (`vm` or `ct`). All resources will be fetched if this option is unset.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getHAResources.\n","properties":{"id":{"description":"The unique identifier of this resource.\n","type":"string"},"resourceIds":{"description":"The identifiers of the High Availability resources.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of High Availability resources to fetch (`vm` or `ct`). All resources will be fetched if this option is unset.\n","type":"string"}},"required":["id","resourceIds"],"type":"object"}},"proxmoxve:Hardware/getMappings:getMappings":{"description":"Retrieves a list of hardware mapping resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example-pci = proxmoxve.Hardware.getMappings({\n checkNode: \"pve\",\n type: \"pci\",\n});\nconst example-usb = proxmoxve.Hardware.getMappings({\n checkNode: \"pve\",\n type: \"usb\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsPci = example_pci;\nexport const dataProxmoxVirtualEnvironmentHardwareMappingsUsb = example_usb;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample_pci = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n type=\"pci\")\nexample_usb = proxmoxve.Hardware.get_mappings(check_node=\"pve\",\n type=\"usb\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_pci = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n {\n CheckNode = \"pve\",\n Type = \"pci\",\n });\n\n var example_usb = ProxmoxVE.Hardware.GetMappings.Invoke(new()\n {\n CheckNode = \"pve\",\n Type = \"usb\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\"] = example_pci,\n [\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\"] = example_usb,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample_pci, err := Hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType: \"pci\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_usb, err := Hardware.GetMappings(ctx, \u0026hardware.GetMappingsArgs{\n\t\t\tCheckNode: pulumi.StringRef(\"pve\"),\n\t\t\tType: \"usb\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci)\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware.HardwareFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetMappingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example-pci = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n .checkNode(\"pve\")\n .type(\"pci\")\n .build());\n\n final var example-usb = HardwareFunctions.getMappings(GetMappingsArgs.builder()\n .checkNode(\"pve\")\n .type(\"usb\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsPci\", example_pci);\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingsUsb\", example_usb);\n }\n}\n```\n```yaml\nvariables:\n example-pci:\n fn::invoke:\n Function: proxmoxve:Hardware:getMappings\n Arguments:\n checkNode: pve\n type: pci\n example-usb:\n fn::invoke:\n Function: proxmoxve:Hardware:getMappings\n Arguments:\n checkNode: pve\n type: usb\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingsPci: ${[\"example-pci\"]}\n dataProxmoxVirtualEnvironmentHardwareMappingsUsb: ${[\"example-usb\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getMappings.\n","properties":{"checkNode":{"type":"string","description":"The name of the node whose configurations should be checked for correctness.\n"},"type":{"type":"string","description":"The type of the hardware mappings.\n"}},"type":"object","required":["type"]},"outputs":{"description":"A collection of values returned by getMappings.\n","properties":{"checkNode":{"description":"The name of the node whose configurations should be checked for correctness.\n","type":"string"},"checks":{"description":"Might contain relevant diagnostics about incorrect configurations.\n","items":{"$ref":"#/types/proxmoxve:Hardware/getMappingsCheck:getMappingsCheck"},"type":"array"},"id":{"description":"The unique identifier of this hardware mappings data source.\n","type":"string"},"ids":{"description":"The identifiers of the hardware mappings.\n","items":{"type":"string"},"type":"array"},"type":{"description":"The type of the hardware mappings.\n","type":"string"}},"required":["checks","id","ids","type"],"type":"object"}},"proxmoxve:Hardware/mapping/getPci:getPci":{"description":"Retrieves a PCI hardware mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getPci({\n name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingPci = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_pci(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Hardware.Mapping.GetPci.Invoke(new()\n {\n Name = \"example\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingPci\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Hardware.GetPci(ctx, \u0026mapping.GetPciArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetPciArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Hardware/mappingFunctions.getPci(GetPciArgs.builder()\n .name(\"example\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingPci\", example.applyValue(getPciResult -\u003e getPciResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Hardware/mapping:getPci\n Arguments:\n name: example\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingPci: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPci.\n","properties":{"name":{"type":"string","description":"The name of this PCI hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getPci.\n","properties":{"comment":{"description":"The comment of this PCI hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this PCI hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getPciMap:getPciMap"},"type":"array"},"mediatedDevices":{"description":"Indicates whether to use with mediated devices.\n","type":"boolean"},"name":{"description":"The name of this PCI hardware mapping.\n","type":"string"}},"required":["comment","id","maps","mediatedDevices","name"],"type":"object"}},"proxmoxve:Hardware/mapping/getUsb:getUsb":{"description":"Retrieves a USB hardware mapping from a Proxmox VE cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Hardware.mapping.getUsb({\n name: \"example\",\n});\nexport const dataProxmoxVirtualEnvironmentHardwareMappingUsb = example;\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Hardware.mapping.get_usb(name=\"example\")\npulumi.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Hardware.Mapping.GetUsb.Invoke(new()\n {\n Name = \"example\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\"] = example,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Hardware\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Hardware.GetUsb(ctx, \u0026mapping.GetUsbArgs{\n\t\t\tName: \"example\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Hardware_mapping.Hardware_mappingFunctions;\nimport com.pulumi.proxmoxve.Hardware.inputs.GetUsbArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = Hardware/mappingFunctions.getUsb(GetUsbArgs.builder()\n .name(\"example\")\n .build());\n\n ctx.export(\"dataProxmoxVirtualEnvironmentHardwareMappingUsb\", example.applyValue(getUsbResult -\u003e getUsbResult));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Hardware/mapping:getUsb\n Arguments:\n name: example\noutputs:\n dataProxmoxVirtualEnvironmentHardwareMappingUsb: ${example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUsb.\n","properties":{"name":{"type":"string","description":"The name of this USB hardware mapping.\n"}},"type":"object","required":["name"]},"outputs":{"description":"A collection of values returned by getUsb.\n","properties":{"comment":{"description":"The comment of this USB hardware mapping.\n","type":"string"},"id":{"description":"The unique identifier of this USB hardware mapping data source.\n","type":"string"},"maps":{"description":"The actual map of devices for the hardware mapping.\n","items":{"$ref":"#/types/proxmoxve:Hardware/mapping/getUsbMap:getUsbMap"},"type":"array"},"name":{"description":"The name of this USB hardware mapping.\n","type":"string"}},"required":["comment","id","maps","name"],"type":"object"}},"proxmoxve:Network/getDNS:getDNS":{"description":"Retrieves the DNS configuration for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNode = proxmoxve.Network.getDNS({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Network.get_dns(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNode = ProxmoxVE.Network.GetDNS.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetDNS(ctx, \u0026network.GetDNSArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetDNSArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNode = NetworkFunctions.getDNS(GetDNSArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNode:\n fn::invoke:\n Function: proxmoxve:Network:getDNS\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDNS.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDNS.\n","properties":{"domain":{"description":"The DNS search domain.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"},"servers":{"description":"The DNS servers.\n","items":{"type":"string"},"type":"array"}},"required":["domain","nodeName","servers","id"],"type":"object"}},"proxmoxve:Network/getHosts:getHosts":{"description":"Retrieves all the host entries from a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNodeHostEntries = proxmoxve.Network.getHosts({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_host_entries = proxmoxve.Network.get_hosts(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeHostEntries = ProxmoxVE.Network.GetHosts.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetHosts(ctx, \u0026network.GetHostsArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetHostsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNodeHostEntries = NetworkFunctions.getHosts(GetHostsArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNodeHostEntries:\n fn::invoke:\n Function: proxmoxve:Network:getHosts\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getHosts.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getHosts.\n","properties":{"addresses":{"description":"The IP addresses.\n","items":{"type":"string"},"type":"array"},"digest":{"description":"The SHA1 digest.\n","type":"string"},"entries":{"description":"The host entries (conversion of `addresses` and `hostnames` into\nobjects).\n","items":{"$ref":"#/types/proxmoxve:Network/getHostsEntry:getHostsEntry"},"type":"array"},"hostnames":{"description":"The hostnames associated with each of the IP addresses.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"}},"required":["addresses","digest","entries","hostnames","nodeName","id"],"type":"object"}},"proxmoxve:Network/getTime:getTime":{"description":"Retrieves the current time for a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNodeTime = proxmoxve.Network.getTime({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node_time = proxmoxve.Network.get_time(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNodeTime = ProxmoxVE.Network.GetTime.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.GetTime(ctx, \u0026network.GetTimeArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport com.pulumi.proxmoxve.Network.inputs.GetTimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNodeTime = NetworkFunctions.getTime(GetTimeArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNodeTime:\n fn::invoke:\n Function: proxmoxve:Network:getTime\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getTime.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getTime.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"localTime":{"description":"The node's local time.\n","type":"string"},"nodeName":{"type":"string"},"timeZone":{"description":"The node's time zone.\n","type":"string"},"utcTime":{"description":"The node's local time formatted as UTC.\n","type":"string"}},"required":["localTime","nodeName","timeZone","utcTime","id"],"type":"object"}},"proxmoxve:Network/getVersion:getVersion":{"description":"Retrieves API version details.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst example = proxmoxve.Network.getVersion({});\nexport const dataProxmoxVirtualEnvironmentVersion = {\n release: example.then(example =\u003e example.release),\n repository_id: example.then(example =\u003e example.repositoryId),\n version: example.then(example =\u003e example.version),\n};\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.Network.get_version()\npulumi.export(\"dataProxmoxVirtualEnvironmentVersion\", {\n \"release\": example.release,\n \"repository_id\": example.repository_id,\n \"version\": example.version,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = ProxmoxVE.Network.GetVersion.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"dataProxmoxVirtualEnvironmentVersion\"] = \n {\n { \"release\", example.Apply(getVersionResult =\u003e getVersionResult.Release) },\n { \"repository_id\", example.Apply(getVersionResult =\u003e getVersionResult.RepositoryId) },\n { \"version\", example.Apply(getVersionResult =\u003e getVersionResult.Version) },\n },\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := Network.GetVersion(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"dataProxmoxVirtualEnvironmentVersion\", pulumi.StringMap{\n\t\t\t\"release\": example.Release,\n\t\t\t\"repository_id\": example.RepositoryId,\n\t\t\t\"version\": example.Version,\n\t\t})\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.NetworkFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = NetworkFunctions.getVersion();\n\n ctx.export(\"dataProxmoxVirtualEnvironmentVersion\", %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference));\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: proxmoxve:Network:getVersion\n Arguments: {}\noutputs:\n dataProxmoxVirtualEnvironmentVersion:\n release: ${example.release}\n repository_id: ${example.repositoryId}\n version: ${example.version}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getVersion.\n","properties":{"id":{"description":"Placeholder identifier attribute.\n","type":"string"},"release":{"description":"The current Proxmox VE point release in `x.y` format.\n","type":"string"},"repositoryId":{"description":"The short git revision from which this version was build.\n","type":"string"},"version":{"description":"The full pve-manager package version of this node.\n","type":"string"}},"required":["id","release","repositoryId","version"],"type":"object"}},"proxmoxve:Permission/getGroup:getGroup":{"description":"Retrieves information about a specific user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsTeam = proxmoxve.Permission.getGroup({\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.Permission.get_group(group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = ProxmoxVE.Permission.GetGroup.Invoke(new()\n {\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetGroup(ctx, \u0026permission.GetGroupArgs{\n\t\t\tGroupId: \"operations-team\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsTeam = PermissionFunctions.getGroup(GetGroupArgs.builder()\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsTeam:\n fn::invoke:\n Function: proxmoxve:Permission:getGroup\n Arguments:\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getGroup.\n","properties":{"groupId":{"type":"string","description":"The group identifier.\n"}},"type":"object","required":["groupId"]},"outputs":{"description":"A collection of values returned by getGroup.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getGroupAcl:getGroupAcl"},"type":"array"},"comment":{"description":"The group comment.\n","type":"string"},"groupId":{"type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"members":{"description":"The group members as a list with `username@realm` entries.\n","items":{"type":"string"},"type":"array"}},"required":["acls","comment","groupId","members","id"],"type":"object"}},"proxmoxve:Permission/getGroups:getGroups":{"description":"Retrieves basic information about all available user groups.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableGroups = proxmoxve.Permission.getGroups({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_groups = proxmoxve.Permission.get_groups()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableGroups = ProxmoxVE.Permission.GetGroups.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetGroups(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableGroups = PermissionFunctions.getGroups();\n\n }\n}\n```\n```yaml\nvariables:\n availableGroups:\n fn::invoke:\n Function: proxmoxve:Permission:getGroups\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getGroups.\n","properties":{"comments":{"description":"The group comments.\n","items":{"type":"string"},"type":"array"},"groupIds":{"description":"The group identifiers.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"}},"required":["comments","groupIds","id"],"type":"object"}},"proxmoxve:Permission/getPool:getPool":{"description":"Retrieves information about a specific resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsPool = proxmoxve.Permission.getPool({\n poolId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.Permission.get_pool(pool_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = ProxmoxVE.Permission.GetPool.Invoke(new()\n {\n PoolId = \"operations\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetPool(ctx, \u0026permission.GetPoolArgs{\n\t\t\tPoolId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetPoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsPool = PermissionFunctions.getPool(GetPoolArgs.builder()\n .poolId(\"operations\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsPool:\n fn::invoke:\n Function: proxmoxve:Permission:getPool\n Arguments:\n poolId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getPool.\n","properties":{"poolId":{"type":"string","description":"The pool identifier.\n"}},"type":"object","required":["poolId"]},"outputs":{"description":"A collection of values returned by getPool.\n","properties":{"comment":{"description":"The pool comment.\n","type":"string"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"members":{"description":"The pool members.\n","items":{"$ref":"#/types/proxmoxve:Permission/getPoolMember:getPoolMember"},"type":"array"},"poolId":{"type":"string"}},"required":["comment","members","poolId","id"],"type":"object"}},"proxmoxve:Permission/getPools:getPools":{"description":"Retrieves the identifiers for all the available resource pools.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availablePools = proxmoxve.Permission.getPools({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_pools = proxmoxve.Permission.get_pools()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availablePools = ProxmoxVE.Permission.GetPools.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetPools(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availablePools = PermissionFunctions.getPools();\n\n }\n}\n```\n```yaml\nvariables:\n availablePools:\n fn::invoke:\n Function: proxmoxve:Permission:getPools\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getPools.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"poolIds":{"description":"The pool identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["poolIds","id"],"type":"object"}},"proxmoxve:Permission/getRole:getRole":{"description":"Retrieves information about a specific role.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsRole = proxmoxve.Permission.getRole({\n roleId: \"operations\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_role = proxmoxve.Permission.get_role(role_id=\"operations\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsRole = ProxmoxVE.Permission.GetRole.Invoke(new()\n {\n RoleId = \"operations\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetRole(ctx, \u0026permission.GetRoleArgs{\n\t\t\tRoleId: \"operations\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsRole = PermissionFunctions.getRole(GetRoleArgs.builder()\n .roleId(\"operations\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsRole:\n fn::invoke:\n Function: proxmoxve:Permission:getRole\n Arguments:\n roleId: operations\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getRole.\n","properties":{"roleId":{"type":"string","description":"The role identifier.\n"}},"type":"object","required":["roleId"]},"outputs":{"description":"A collection of values returned by getRole.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"privileges":{"description":"The role privileges\n","items":{"type":"string"},"type":"array"},"roleId":{"type":"string"}},"required":["privileges","roleId","id"],"type":"object"}},"proxmoxve:Permission/getRoles:getRoles":{"description":"Retrieves information about all the available roles.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableRoles = proxmoxve.Permission.getRoles({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_roles = proxmoxve.Permission.get_roles()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableRoles = ProxmoxVE.Permission.GetRoles.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetRoles(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableRoles = PermissionFunctions.getRoles();\n\n }\n}\n```\n```yaml\nvariables:\n availableRoles:\n fn::invoke:\n Function: proxmoxve:Permission:getRoles\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getRoles.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"privileges":{"description":"The role privileges.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"roleIds":{"description":"The role identifiers.\n","items":{"type":"string"},"type":"array"},"specials":{"description":"Whether the role is special (built-in).\n","items":{"type":"boolean"},"type":"array"}},"required":["privileges","roleIds","specials","id"],"type":"object"}},"proxmoxve:Permission/getUser:getUser":{"description":"Retrieves information about a specific user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst operationsUser = proxmoxve.Permission.getUser({\n userId: \"operation@pam\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_user = proxmoxve.Permission.get_user(user_id=\"operation@pam\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsUser = ProxmoxVE.Permission.GetUser.Invoke(new()\n {\n UserId = \"operation@pam\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetUser(ctx, \u0026permission.GetUserArgs{\n\t\t\tUserId: \"operation@pam\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport com.pulumi.proxmoxve.Permission.inputs.GetUserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var operationsUser = PermissionFunctions.getUser(GetUserArgs.builder()\n .userId(\"operation@pam\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n operationsUser:\n fn::invoke:\n Function: proxmoxve:Permission:getUser\n Arguments:\n userId: operation@pam\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getUser.\n","properties":{"userId":{"type":"string","description":"The user identifier.\n"}},"type":"object","required":["userId"]},"outputs":{"description":"A collection of values returned by getUser.\n","properties":{"acls":{"description":"The access control list.\n","items":{"$ref":"#/types/proxmoxve:Permission/getUserAcl:getUserAcl"},"type":"array"},"comment":{"description":"The user comment.\n","type":"string"},"email":{"description":"The user's email address.\n","type":"string"},"enabled":{"description":"Whether the user account is enabled.\n","type":"boolean"},"expirationDate":{"description":"The user account's expiration date (RFC 3339).\n","type":"string"},"firstName":{"description":"The user's first name.\n","type":"string"},"groups":{"description":"The user's groups.\n","items":{"type":"string"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"keys":{"description":"The user's keys.\n","type":"string"},"lastName":{"description":"The user's last name.\n","type":"string"},"userId":{"type":"string"}},"required":["acls","comment","email","enabled","expirationDate","firstName","groups","keys","lastName","userId","id"],"type":"object"}},"proxmoxve:Permission/getUsers:getUsers":{"description":"Retrieves information about all the available users.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst availableUsers = proxmoxve.Permission.getUsers({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\navailable_users = proxmoxve.Permission.get_users()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var availableUsers = ProxmoxVE.Permission.GetUsers.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.GetUsers(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.PermissionFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var availableUsers = PermissionFunctions.getUsers();\n\n }\n}\n```\n```yaml\nvariables:\n availableUsers:\n fn::invoke:\n Function: proxmoxve:Permission:getUsers\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","outputs":{"description":"A collection of values returned by getUsers.\n","properties":{"comments":{"description":"The user comments.\n","items":{"type":"string"},"type":"array"},"emails":{"description":"The users' email addresses.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether a user account is enabled.\n","items":{"type":"boolean"},"type":"array"},"expirationDates":{"description":"The user accounts' expiration dates (RFC 3339).\n","items":{"type":"string"},"type":"array"},"firstNames":{"description":"The users' first names.\n","items":{"type":"string"},"type":"array"},"groups":{"description":"The users' groups.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"keys":{"description":"The users' keys.\n","items":{"type":"string"},"type":"array"},"lastNames":{"description":"The users' last names.\n","items":{"type":"string"},"type":"array"},"userIds":{"description":"The user identifiers.\n","items":{"type":"string"},"type":"array"}},"required":["comments","emails","enableds","expirationDates","firstNames","groups","keys","lastNames","userIds","id"],"type":"object"}},"proxmoxve:Storage/getDatastores:getDatastores":{"description":"Retrieves information about all the datastores available to a specific node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst firstNode = proxmoxve.Storage.getDatastores({\n nodeName: \"first-node\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nfirst_node = proxmoxve.Storage.get_datastores(node_name=\"first-node\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var firstNode = ProxmoxVE.Storage.GetDatastores.Invoke(new()\n {\n NodeName = \"first-node\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Storage.GetDatastores(ctx, \u0026storage.GetDatastoresArgs{\n\t\t\tNodeName: \"first-node\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Storage.StorageFunctions;\nimport com.pulumi.proxmoxve.Storage.inputs.GetDatastoresArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var firstNode = StorageFunctions.getDatastores(GetDatastoresArgs.builder()\n .nodeName(\"first-node\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n firstNode:\n fn::invoke:\n Function: proxmoxve:Storage:getDatastores\n Arguments:\n nodeName: first-node\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getDatastores.\n","properties":{"nodeName":{"type":"string","description":"A node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getDatastores.\n","properties":{"actives":{"description":"Whether the datastore is active.\n","items":{"type":"boolean"},"type":"array"},"contentTypes":{"description":"The allowed content types.\n","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"datastoreIds":{"description":"The datastore identifiers.\n","items":{"type":"string"},"type":"array"},"enableds":{"description":"Whether the datastore is enabled.\n","items":{"type":"boolean"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"type":"string"},"shareds":{"description":"Whether the datastore is shared.\n","items":{"type":"boolean"},"type":"array"},"spaceAvailables":{"description":"The available space in bytes.\n","items":{"type":"integer"},"type":"array"},"spaceTotals":{"description":"The total space in bytes.\n","items":{"type":"integer"},"type":"array"},"spaceUseds":{"description":"The used space in bytes.\n","items":{"type":"integer"},"type":"array"},"types":{"description":"The storage types.\n","items":{"type":"string"},"type":"array"}},"required":["actives","contentTypes","datastoreIds","enableds","nodeName","shareds","spaceAvailables","spaceTotals","spaceUseds","types","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachine:getVirtualMachine":{"description":"Retrieves information about a specific VM.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst testVm = proxmoxve.VM.getVirtualMachine({\n nodeName: \"test\",\n vmId: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\ntest_vm = proxmoxve.VM.get_virtual_machine(node_name=\"test\",\n vm_id=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testVm = ProxmoxVE.VM.GetVirtualMachine.Invoke(new()\n {\n NodeName = \"test\",\n VmId = 100,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/VM\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := VM.GetVirtualMachine(ctx, \u0026vm.GetVirtualMachineArgs{\n\t\t\tNodeName: \"test\",\n\t\t\tVmId: 100,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testVm = VMFunctions.getVirtualMachine(GetVirtualMachineArgs.builder()\n .nodeName(\"test\")\n .vmId(100)\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n testVm:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachine\n Arguments:\n nodeName: test\n vmId: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachine.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"},"status":{"type":"string","description":"Status of the VM\n"},"template":{"type":"boolean","description":"Is VM a template (true) or a regular VM (false)\n"},"vmId":{"type":"integer","description":"The VM identifier.\n"}},"type":"object","required":["nodeName","vmId"]},"outputs":{"description":"A collection of values returned by getVirtualMachine.\n","properties":{"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"name":{"description":"The virtual machine name.\n","type":"string"},"nodeName":{"type":"string"},"status":{"description":"Status of the VM\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Is VM a template (true) or a regular VM (false)\n","type":"boolean"},"vmId":{"type":"integer"}},"required":["name","nodeName","tags","vmId","id"],"type":"object"}},"proxmoxve:VM/getVirtualMachines:getVirtualMachines":{"description":"Retrieves information about all VMs in the Proxmox cluster.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst ubuntuVms = proxmoxve.VM.getVirtualMachines({\n tags: [\"ubuntu\"],\n});\nconst ubuntuTemplates = proxmoxve.VM.getVirtualMachines({\n filters: [\n {\n name: \"template\",\n values: [\"true\"],\n },\n {\n name: \"status\",\n values: [\"stopped\"],\n },\n {\n name: \"name\",\n regex: true,\n values: [\"^ubuntu-20.*$\"],\n },\n {\n name: \"node_name\",\n regex: true,\n values: [\n \"node_us_[1-3]\",\n \"node_eu_[1-3]\",\n ],\n },\n ],\n tags: [\n \"template\",\n \"latest\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nubuntu_vms = proxmoxve.VM.get_virtual_machines(tags=[\"ubuntu\"])\nubuntu_templates = proxmoxve.VM.get_virtual_machines(filters=[\n {\n \"name\": \"template\",\n \"values\": [\"true\"],\n },\n {\n \"name\": \"status\",\n \"values\": [\"stopped\"],\n },\n {\n \"name\": \"name\",\n \"regex\": True,\n \"values\": [\"^ubuntu-20.*$\"],\n },\n {\n \"name\": \"node_name\",\n \"regex\": True,\n \"values\": [\n \"node_us_[1-3]\",\n \"node_eu_[1-3]\",\n ],\n },\n ],\n tags=[\n \"template\",\n \"latest\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ubuntuVms = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n {\n Tags = new[]\n {\n \"ubuntu\",\n },\n });\n\n var ubuntuTemplates = ProxmoxVE.VM.GetVirtualMachines.Invoke(new()\n {\n Filters = new[]\n {\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"template\",\n Values = new[]\n {\n \"true\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"status\",\n Values = new[]\n {\n \"stopped\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"name\",\n Regex = true,\n Values = new[]\n {\n \"^ubuntu-20.*$\",\n },\n },\n new ProxmoxVE.VM.Inputs.GetVirtualMachinesFilterInputArgs\n {\n Name = \"node_name\",\n Regex = true,\n Values = new[]\n {\n \"node_us_[1-3]\",\n \"node_eu_[1-3]\",\n },\n },\n },\n Tags = new[]\n {\n \"template\",\n \"latest\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/VM\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := VM.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tTags: []string{\n\t\t\t\t\"ubuntu\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = VM.GetVirtualMachines(ctx, \u0026vm.GetVirtualMachinesArgs{\n\t\t\tFilters: []vm.GetVirtualMachinesFilter{\n\t\t\t\t{\n\t\t\t\t\tName: \"template\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"true\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"status\",\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"stopped\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"^ubuntu-20.*$\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tName: \"node_name\",\n\t\t\t\t\tRegex: pulumi.BoolRef(true),\n\t\t\t\t\tValues: []string{\n\t\t\t\t\t\t\"node_us_[1-3]\",\n\t\t\t\t\t\t\"node_eu_[1-3]\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTags: []string{\n\t\t\t\t\"template\",\n\t\t\t\t\"latest\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.VM.VMFunctions;\nimport com.pulumi.proxmoxve.VM.inputs.GetVirtualMachinesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ubuntuVms = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n .tags(\"ubuntu\")\n .build());\n\n final var ubuntuTemplates = VMFunctions.getVirtualMachines(GetVirtualMachinesArgs.builder()\n .filters( \n GetVirtualMachinesFilterArgs.builder()\n .name(\"template\")\n .values(true)\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"status\")\n .values(\"stopped\")\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"name\")\n .regex(true)\n .values(\"^ubuntu-20.*$\")\n .build(),\n GetVirtualMachinesFilterArgs.builder()\n .name(\"node_name\")\n .regex(true)\n .values( \n \"node_us_[1-3]\",\n \"node_eu_[1-3]\")\n .build())\n .tags( \n \"template\",\n \"latest\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n ubuntuVms:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachines\n Arguments:\n tags:\n - ubuntu\n ubuntuTemplates:\n fn::invoke:\n Function: proxmoxve:VM:getVirtualMachines\n Arguments:\n filters:\n - name: template\n values:\n - true\n - name: status\n values:\n - stopped\n - name: name\n regex: true\n values:\n - ^ubuntu-20.*$\n - name: node_name\n regex: true\n values:\n - node_us_[1-3]\n - node_eu_[1-3]\n tags:\n - template\n - latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getVirtualMachines.\n","properties":{"filters":{"type":"array","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"description":"Filter blocks. The VM must satisfy all filter blocks to be included in the result.\n"},"nodeName":{"type":"string","description":"The node name. All cluster nodes will be queried in case this is omitted\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of tags to filter the VMs. The VM must have all\nthe tags to be included in the result.\n"}},"type":"object"},"outputs":{"description":"A collection of values returned by getVirtualMachines.\n","properties":{"filters":{"items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesFilter:getVirtualMachinesFilter"},"type":"array"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"nodeName":{"description":"The node name.\n","type":"string"},"tags":{"description":"A list of tags of the VM.\n","items":{"type":"string"},"type":"array"},"vms":{"description":"The VMs list.\n","items":{"$ref":"#/types/proxmoxve:VM/getVirtualMachinesVm:getVirtualMachinesVm"},"type":"array"}},"required":["vms","id"],"type":"object"}},"proxmoxve:index/getNode:getNode":{"description":"Retrieves information about node.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@pulumi/proxmoxve\";\n\nconst node = proxmoxve.getNode({});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nnode = proxmoxve.get_node()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var node = ProxmoxVE.GetNode.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := proxmoxve.GetNode(ctx, \u0026proxmoxve.GetNodeArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.ProxmoxveFunctions;\nimport com.pulumi.proxmoxve.inputs.GetNodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var node = ProxmoxveFunctions.getNode();\n\n }\n}\n```\n```yaml\nvariables:\n node:\n fn::invoke:\n Function: proxmoxve:getNode\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","inputs":{"description":"A collection of arguments for invoking getNode.\n","properties":{"nodeName":{"type":"string","description":"The node name.\n"}},"type":"object","required":["nodeName"]},"outputs":{"description":"A collection of values returned by getNode.\n","properties":{"cpuCount":{"description":"The CPU count on the node.\n","type":"integer"},"cpuModel":{"description":"The CPU model on the node.\n","type":"string"},"cpuSockets":{"description":"The CPU utilization on the node.\n","type":"integer"},"id":{"description":"The provider-assigned unique ID for this managed resource.\n","type":"string"},"memoryAvailable":{"description":"The memory available on the node.\n","type":"integer"},"memoryTotal":{"description":"The total memory on the node.\n","type":"integer"},"memoryUsed":{"description":"The memory used on the node.\n","type":"integer"},"nodeName":{"type":"string"},"uptime":{"description":"The uptime in seconds on the node.\n","type":"integer"}},"required":["cpuCount","cpuModel","cpuSockets","memoryAvailable","memoryTotal","memoryUsed","nodeName","uptime","id"],"type":"object"}},"proxmoxve:index/getVm2:getVm2":{"description":"!\u003e **DO NOT USE**\nThis is an experimental implementation of a Proxmox VM datasource using Plugin Framework.\n","inputs":{"description":"A collection of arguments for invoking getVm2.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:index/getVm2Clone:getVm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"type":"string","description":"The description of the VM.\n"},"id":{"type":"integer","description":"The unique identifier of the VM in the Proxmox cluster.\n"},"name":{"type":"string","description":"The name of the VM.\n"},"nodeName":{"type":"string","description":"The name of the node where the VM is provisioned.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"The tags assigned to the VM.\n"},"template":{"type":"boolean","description":"Whether the VM is a template.\n"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"type":"object","required":["id","nodeName"]},"outputs":{"description":"A collection of values returned by getVm2.\n","properties":{"clone":{"$ref":"#/types/proxmoxve:index/getVm2Clone:getVm2Clone","description":"The cloning configuration.\n"},"cpu":{"$ref":"#/types/proxmoxve:index/getVm2Cpu:getVm2Cpu","description":"The CPU configuration.\n"},"description":{"description":"The description of the VM.\n","type":"string"},"id":{"description":"The unique identifier of the VM in the Proxmox cluster.\n","type":"integer"},"name":{"description":"The name of the VM.\n","type":"string"},"nodeName":{"description":"The name of the node where the VM is provisioned.\n","type":"string"},"tags":{"description":"The tags assigned to the VM.\n","items":{"type":"string"},"type":"array"},"template":{"description":"Whether the VM is a template.\n","type":"boolean"},"timeouts":{"$ref":"#/types/proxmoxve:index/getVm2Timeouts:getVm2Timeouts"},"vga":{"$ref":"#/types/proxmoxve:index/getVm2Vga:getVm2Vga","description":"The VGA configuration.\n"}},"required":["cpu","id","nodeName","tags","vga"],"type":"object"}}}} \ No newline at end of file diff --git a/provider/cmd/pulumi-resource-proxmoxve/schema.json b/provider/cmd/pulumi-resource-proxmoxve/schema.json index 3df8819f..dcd95dd2 100644 --- a/provider/cmd/pulumi-resource-proxmoxve/schema.json +++ b/provider/cmd/pulumi-resource-proxmoxve/schema.json @@ -3851,7 +3851,7 @@ } }, "proxmoxve:HA/hAResource:HAResource": { - "description": "Manages Proxmox HA resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAResource(\"example\", {\n resourceId: \"vm:123\",\n state: \"started\",\n group: \"example\",\n comment: \"Managed by Terraform\",\n}, {\n dependsOn: [proxmox_virtual_environment_hagroup.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAResource(\"example\",\n resource_id=\"vm:123\",\n state=\"started\",\n group=\"example\",\n comment=\"Managed by Terraform\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_hagroup[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.HA.HAResource(\"example\", new()\n {\n ResourceId = \"vm:123\",\n State = \"started\",\n Group = \"example\",\n Comment = \"Managed by Terraform\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_hagroup.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAResource(ctx, \"example\", \u0026HA.HAResourceArgs{\n\t\t\tResourceId: pulumi.String(\"vm:123\"),\n\t\t\tState: pulumi.String(\"started\"),\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_hagroup.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAResource;\nimport com.pulumi.proxmoxve.HA.HAResourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAResource(\"example\", HAResourceArgs.builder()\n .resourceId(\"vm:123\")\n .state(\"started\")\n .group(\"example\")\n .comment(\"Managed by Terraform\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_hagroup.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAResource\n properties:\n resourceId: vm:123\n state: started\n group: example\n comment: Managed by Terraform\n options:\n dependson:\n - ${proxmox_virtual_environment_hagroup.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAResource:HAResource example vm:123\n```\n\n", + "description": "Manages Proxmox HA resources.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst example = new proxmoxve.ha.HAResource(\"example\", {\n resourceId: \"vm:123\",\n state: \"started\",\n group: \"example\",\n comment: \"Managed by Pulumi\",\n}, {\n dependsOn: [proxmox_virtual_environment_hagroup.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nexample = proxmoxve.ha.HAResource(\"example\",\n resource_id=\"vm:123\",\n state=\"started\",\n group=\"example\",\n comment=\"Managed by Pulumi\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_hagroup[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new ProxmoxVE.HA.HAResource(\"example\", new()\n {\n ResourceId = \"vm:123\",\n State = \"started\",\n Group = \"example\",\n Comment = \"Managed by Pulumi\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_hagroup.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/HA\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := HA.NewHAResource(ctx, \"example\", \u0026HA.HAResourceArgs{\n\t\t\tResourceId: pulumi.String(\"vm:123\"),\n\t\t\tState: pulumi.String(\"started\"),\n\t\t\tGroup: pulumi.String(\"example\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_hagroup.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.HA.HAResource;\nimport com.pulumi.proxmoxve.HA.HAResourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new HAResource(\"example\", HAResourceArgs.builder()\n .resourceId(\"vm:123\")\n .state(\"started\")\n .group(\"example\")\n .comment(\"Managed by Pulumi\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_hagroup.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: proxmoxve:HA:HAResource\n properties:\n resourceId: vm:123\n state: started\n group: example\n comment: Managed by Pulumi\n options:\n dependson:\n - ${proxmox_virtual_environment_hagroup.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nHA resources can be imported using their identifiers, e.g.:\n\n```sh\n$ pulumi import proxmoxve:HA/hAResource:HAResource example vm:123\n```\n\n", "properties": { "comment": { "type": "string", @@ -4172,7 +4172,7 @@ } }, "proxmoxve:Network/firewallAlias:FirewallAlias": { - "description": "Aliases are used to see what devices or group of devices are affected by a rule.\nWe can create aliases to identify an IP address or a network. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst localNetwork = new proxmoxve.network.FirewallAlias(\"localNetwork\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n cidr: \"192.168.0.0/23\",\n comment: \"Managed by Terraform\",\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\nconst ubuntuVm = new proxmoxve.network.FirewallAlias(\"ubuntuVm\", {\n cidr: \"192.168.0.1\",\n comment: \"Managed by Terraform\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nlocal_network = proxmoxve.network.FirewallAlias(\"localNetwork\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n cidr=\"192.168.0.0/23\",\n comment=\"Managed by Terraform\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\nubuntu_vm = proxmoxve.network.FirewallAlias(\"ubuntuVm\",\n cidr=\"192.168.0.1\",\n comment=\"Managed by Terraform\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var localNetwork = new ProxmoxVE.Network.FirewallAlias(\"localNetwork\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Cidr = \"192.168.0.0/23\",\n Comment = \"Managed by Terraform\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n var ubuntuVm = new ProxmoxVE.Network.FirewallAlias(\"ubuntuVm\", new()\n {\n Cidr = \"192.168.0.1\",\n Comment = \"Managed by Terraform\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallAlias(ctx, \"localNetwork\", \u0026Network.FirewallAliasArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tCidr: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewFirewallAlias(ctx, \"ubuntuVm\", \u0026Network.FirewallAliasArgs{\n\t\t\tCidr: pulumi.String(\"192.168.0.1\"),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallAlias;\nimport com.pulumi.proxmoxve.Network.FirewallAliasArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var localNetwork = new FirewallAlias(\"localNetwork\", FirewallAliasArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .cidr(\"192.168.0.0/23\")\n .comment(\"Managed by Terraform\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n var ubuntuVm = new FirewallAlias(\"ubuntuVm\", FirewallAliasArgs.builder()\n .cidr(\"192.168.0.1\")\n .comment(\"Managed by Terraform\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n localNetwork:\n type: proxmoxve:Network:FirewallAlias\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n cidr: 192.168.0.0/23\n comment: Managed by Terraform\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n ubuntuVm:\n type: proxmoxve:Network:FirewallAlias\n properties:\n cidr: 192.168.0.1\n comment: Managed by Terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Aliases are used to see what devices or group of devices are affected by a rule.\nWe can create aliases to identify an IP address or a network. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst localNetwork = new proxmoxve.network.FirewallAlias(\"localNetwork\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n cidr: \"192.168.0.0/23\",\n comment: \"Managed by Pulumi\",\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\nconst ubuntuVm = new proxmoxve.network.FirewallAlias(\"ubuntuVm\", {\n cidr: \"192.168.0.1\",\n comment: \"Managed by Pulumi\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nlocal_network = proxmoxve.network.FirewallAlias(\"localNetwork\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n cidr=\"192.168.0.0/23\",\n comment=\"Managed by Pulumi\",\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\nubuntu_vm = proxmoxve.network.FirewallAlias(\"ubuntuVm\",\n cidr=\"192.168.0.1\",\n comment=\"Managed by Pulumi\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var localNetwork = new ProxmoxVE.Network.FirewallAlias(\"localNetwork\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Cidr = \"192.168.0.0/23\",\n Comment = \"Managed by Pulumi\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n var ubuntuVm = new ProxmoxVE.Network.FirewallAlias(\"ubuntuVm\", new()\n {\n Cidr = \"192.168.0.1\",\n Comment = \"Managed by Pulumi\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallAlias(ctx, \"localNetwork\", \u0026Network.FirewallAliasArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tCidr: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Network.NewFirewallAlias(ctx, \"ubuntuVm\", \u0026Network.FirewallAliasArgs{\n\t\t\tCidr: pulumi.String(\"192.168.0.1\"),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallAlias;\nimport com.pulumi.proxmoxve.Network.FirewallAliasArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var localNetwork = new FirewallAlias(\"localNetwork\", FirewallAliasArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .cidr(\"192.168.0.0/23\")\n .comment(\"Managed by Pulumi\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n var ubuntuVm = new FirewallAlias(\"ubuntuVm\", FirewallAliasArgs.builder()\n .cidr(\"192.168.0.1\")\n .comment(\"Managed by Pulumi\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n localNetwork:\n type: proxmoxve:Network:FirewallAlias\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n cidr: 192.168.0.0/23\n comment: Managed by Pulumi\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n ubuntuVm:\n type: proxmoxve:Network:FirewallAlias\n properties:\n cidr: 192.168.0.1\n comment: Managed by Pulumi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "cidr": { "type": "string", @@ -4264,7 +4264,7 @@ } }, "proxmoxve:Network/firewallIPSet:FirewallIPSet": { - "description": "An IPSet allows us to group multiple IP addresses, IP subnets and aliases. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ipset = new proxmoxve.network.FirewallIPSet(\"ipset\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n comment: \"Managed by Terraform\",\n cidrs: [\n {\n name: \"192.168.0.0/23\",\n comment: \"Local network 1\",\n },\n {\n name: \"192.168.0.1\",\n comment: \"Server 1\",\n nomatch: true,\n },\n {\n name: \"192.168.2.1\",\n comment: \"Server 1\",\n },\n ],\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nipset = proxmoxve.network.FirewallIPSet(\"ipset\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n comment=\"Managed by Terraform\",\n cidrs=[\n {\n \"name\": \"192.168.0.0/23\",\n \"comment\": \"Local network 1\",\n },\n {\n \"name\": \"192.168.0.1\",\n \"comment\": \"Server 1\",\n \"nomatch\": True,\n },\n {\n \"name\": \"192.168.2.1\",\n \"comment\": \"Server 1\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ipset = new ProxmoxVE.Network.FirewallIPSet(\"ipset\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Comment = \"Managed by Terraform\",\n Cidrs = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.0/23\",\n Comment = \"Local network 1\",\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.1\",\n Comment = \"Server 1\",\n Nomatch = true,\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.2.1\",\n Comment = \"Server 1\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallIPSet(ctx, \"ipset\", \u0026Network.FirewallIPSetArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tCidrs: network.FirewallIPSetCidrArray{\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.0/23\"),\n\t\t\t\t\tComment: pulumi.String(\"Local network 1\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t\tNomatch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.2.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallIPSet;\nimport com.pulumi.proxmoxve.Network.FirewallIPSetArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallIPSetCidrArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ipset = new FirewallIPSet(\"ipset\", FirewallIPSetArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .comment(\"Managed by Terraform\")\n .cidrs( \n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.0/23\")\n .comment(\"Local network 1\")\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.1\")\n .comment(\"Server 1\")\n .nomatch(true)\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.2.1\")\n .comment(\"Server 1\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipset:\n type: proxmoxve:Network:FirewallIPSet\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n comment: Managed by Terraform\n cidrs:\n - name: 192.168.0.0/23\n comment: Local network 1\n - name: 192.168.0.1\n comment: Server 1\n nomatch: true\n - name: 192.168.2.1\n comment: Server 1\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "An IPSet allows us to group multiple IP addresses, IP subnets and aliases. Aliases can be\ncreated on the cluster level, on VM / Container level.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst ipset = new proxmoxve.network.FirewallIPSet(\"ipset\", {\n nodeName: proxmox_virtual_environment_vm.example.node_name,\n vmId: proxmox_virtual_environment_vm.example.vm_id,\n comment: \"Managed by Pulumi\",\n cidrs: [\n {\n name: \"192.168.0.0/23\",\n comment: \"Local network 1\",\n },\n {\n name: \"192.168.0.1\",\n comment: \"Server 1\",\n nomatch: true,\n },\n {\n name: \"192.168.2.1\",\n comment: \"Server 1\",\n },\n ],\n}, {\n dependsOn: [proxmox_virtual_environment_vm.example],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nipset = proxmoxve.network.FirewallIPSet(\"ipset\",\n node_name=proxmox_virtual_environment_vm[\"example\"][\"node_name\"],\n vm_id=proxmox_virtual_environment_vm[\"example\"][\"vm_id\"],\n comment=\"Managed by Pulumi\",\n cidrs=[\n {\n \"name\": \"192.168.0.0/23\",\n \"comment\": \"Local network 1\",\n },\n {\n \"name\": \"192.168.0.1\",\n \"comment\": \"Server 1\",\n \"nomatch\": True,\n },\n {\n \"name\": \"192.168.2.1\",\n \"comment\": \"Server 1\",\n },\n ],\n opts = pulumi.ResourceOptions(depends_on=[proxmox_virtual_environment_vm[\"example\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ipset = new ProxmoxVE.Network.FirewallIPSet(\"ipset\", new()\n {\n NodeName = proxmox_virtual_environment_vm.Example.Node_name,\n VmId = proxmox_virtual_environment_vm.Example.Vm_id,\n Comment = \"Managed by Pulumi\",\n Cidrs = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.0/23\",\n Comment = \"Local network 1\",\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.0.1\",\n Comment = \"Server 1\",\n Nomatch = true,\n },\n new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs\n {\n Name = \"192.168.2.1\",\n Comment = \"Server 1\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxmox_virtual_environment_vm.Example,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallIPSet(ctx, \"ipset\", \u0026Network.FirewallIPSetArgs{\n\t\t\tNodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name),\n\t\t\tVmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id),\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tCidrs: network.FirewallIPSetCidrArray{\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.0/23\"),\n\t\t\t\t\tComment: pulumi.String(\"Local network 1\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.0.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t\tNomatch: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallIPSetCidrArgs{\n\t\t\t\t\tName: pulumi.String(\"192.168.2.1\"),\n\t\t\t\t\tComment: pulumi.String(\"Server 1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxmox_virtual_environment_vm.Example,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallIPSet;\nimport com.pulumi.proxmoxve.Network.FirewallIPSetArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallIPSetCidrArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ipset = new FirewallIPSet(\"ipset\", FirewallIPSetArgs.builder()\n .nodeName(proxmox_virtual_environment_vm.example().node_name())\n .vmId(proxmox_virtual_environment_vm.example().vm_id())\n .comment(\"Managed by Pulumi\")\n .cidrs( \n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.0/23\")\n .comment(\"Local network 1\")\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.0.1\")\n .comment(\"Server 1\")\n .nomatch(true)\n .build(),\n FirewallIPSetCidrArgs.builder()\n .name(\"192.168.2.1\")\n .comment(\"Server 1\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxmox_virtual_environment_vm.example())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipset:\n type: proxmoxve:Network:FirewallIPSet\n properties:\n nodeName: ${proxmox_virtual_environment_vm.example.node_name}\n vmId: ${proxmox_virtual_environment_vm.example.vm_id}\n comment: Managed by Pulumi\n cidrs:\n - name: 192.168.0.0/23\n comment: Local network 1\n - name: 192.168.0.1\n comment: Server 1\n nomatch: true\n - name: 192.168.2.1\n comment: Server 1\n options:\n dependson:\n - ${proxmox_virtual_environment_vm.example}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "cidrs": { "type": "array", @@ -4616,7 +4616,7 @@ } }, "proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup": { - "description": "A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst webserver = new proxmoxve.network.FirewallSecurityGroup(\"webserver\", {\n comment: \"Managed by Terraform\",\n rules: [\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTP\",\n dest: \"192.168.1.5\",\n dport: \"80\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTPS\",\n dest: \"192.168.1.5\",\n dport: \"443\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwebserver = proxmoxve.network.FirewallSecurityGroup(\"webserver\",\n comment=\"Managed by Terraform\",\n rules=[\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTP\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"80\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTPS\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"443\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webserver = new ProxmoxVE.Network.FirewallSecurityGroup(\"webserver\", new()\n {\n Comment = \"Managed by Terraform\",\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallSecurityGroup(ctx, \"webserver\", \u0026Network.FirewallSecurityGroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tRules: network.FirewallSecurityGroupRuleArray{\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"80\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"443\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroup;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroupArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallSecurityGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webserver = new FirewallSecurityGroup(\"webserver\", FirewallSecurityGroupArgs.builder()\n .comment(\"Managed by Terraform\")\n .rules( \n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build(),\n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webserver:\n type: proxmoxve:Network:FirewallSecurityGroup\n properties:\n comment: Managed by Terraform\n rules:\n - action: ACCEPT\n comment: Allow HTTP\n dest: 192.168.1.5\n dport: '80'\n log: info\n proto: tcp\n type: in\n - action: ACCEPT\n comment: Allow HTTPS\n dest: 192.168.1.5\n dport: '443'\n log: info\n proto: tcp\n type: in\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup webserver webserver\n```\n\n", + "description": "A security group is a collection of rules, defined at cluster level, which can\nbe used in all VMs' rules. For example, you can define a group named “webserver”\nwith rules to open the http and https ports.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst webserver = new proxmoxve.network.FirewallSecurityGroup(\"webserver\", {\n comment: \"Managed by Pulumi\",\n rules: [\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTP\",\n dest: \"192.168.1.5\",\n dport: \"80\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n {\n action: \"ACCEPT\",\n comment: \"Allow HTTPS\",\n dest: \"192.168.1.5\",\n dport: \"443\",\n log: \"info\",\n proto: \"tcp\",\n type: \"in\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\nwebserver = proxmoxve.network.FirewallSecurityGroup(\"webserver\",\n comment=\"Managed by Pulumi\",\n rules=[\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTP\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"80\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n {\n \"action\": \"ACCEPT\",\n \"comment\": \"Allow HTTPS\",\n \"dest\": \"192.168.1.5\",\n \"dport\": \"443\",\n \"log\": \"info\",\n \"proto\": \"tcp\",\n \"type\": \"in\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webserver = new ProxmoxVE.Network.FirewallSecurityGroup(\"webserver\", new()\n {\n Comment = \"Managed by Pulumi\",\n Rules = new[]\n {\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTP\",\n Dest = \"192.168.1.5\",\n Dport = \"80\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs\n {\n Action = \"ACCEPT\",\n Comment = \"Allow HTTPS\",\n Dest = \"192.168.1.5\",\n Dport = \"443\",\n Log = \"info\",\n Proto = \"tcp\",\n Type = \"in\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Network\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Network.NewFirewallSecurityGroup(ctx, \"webserver\", \u0026Network.FirewallSecurityGroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tRules: network.FirewallSecurityGroupRuleArray{\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTP\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"80\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t\t\u0026network.FirewallSecurityGroupRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"ACCEPT\"),\n\t\t\t\t\tComment: pulumi.String(\"Allow HTTPS\"),\n\t\t\t\t\tDest: pulumi.String(\"192.168.1.5\"),\n\t\t\t\t\tDport: pulumi.String(\"443\"),\n\t\t\t\t\tLog: pulumi.String(\"info\"),\n\t\t\t\t\tProto: pulumi.String(\"tcp\"),\n\t\t\t\t\tType: pulumi.String(\"in\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroup;\nimport com.pulumi.proxmoxve.Network.FirewallSecurityGroupArgs;\nimport com.pulumi.proxmoxve.Network.inputs.FirewallSecurityGroupRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webserver = new FirewallSecurityGroup(\"webserver\", FirewallSecurityGroupArgs.builder()\n .comment(\"Managed by Pulumi\")\n .rules( \n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTP\")\n .dest(\"192.168.1.5\")\n .dport(\"80\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build(),\n FirewallSecurityGroupRuleArgs.builder()\n .action(\"ACCEPT\")\n .comment(\"Allow HTTPS\")\n .dest(\"192.168.1.5\")\n .dport(\"443\")\n .log(\"info\")\n .proto(\"tcp\")\n .type(\"in\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webserver:\n type: proxmoxve:Network:FirewallSecurityGroup\n properties:\n comment: Managed by Pulumi\n rules:\n - action: ACCEPT\n comment: Allow HTTP\n dest: 192.168.1.5\n dport: '80'\n log: info\n proto: tcp\n type: in\n - action: ACCEPT\n comment: Allow HTTPS\n dest: 192.168.1.5\n dport: '443'\n log: info\n proto: tcp\n type: in\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `name`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Network/firewallSecurityGroup:FirewallSecurityGroup webserver webserver\n```\n\n", "properties": { "comment": { "type": "string", @@ -5037,7 +5037,7 @@ } }, "proxmoxve:Permission/group:Group": { - "description": "Manages a user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsTeam = new proxmoxve.permission.Group(\"operationsTeam\", {\n comment: \"Managed by Terraform\",\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.permission.Group(\"operationsTeam\",\n comment=\"Managed by Terraform\",\n group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = new ProxmoxVE.Permission.Group(\"operationsTeam\", new()\n {\n Comment = \"Managed by Terraform\",\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewGroup(ctx, \"operationsTeam\", \u0026Permission.GroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tGroupId: pulumi.String(\"operations-team\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Group;\nimport com.pulumi.proxmoxve.Permission.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsTeam = new Group(\"operationsTeam\", GroupArgs.builder()\n .comment(\"Managed by Terraform\")\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsTeam:\n type: proxmoxve:Permission:Group\n properties:\n comment: Managed by Terraform\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `group_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/group:Group operations_team operations-team\n```\n\n", + "description": "Manages a user group.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsTeam = new proxmoxve.permission.Group(\"operationsTeam\", {\n comment: \"Managed by Pulumi\",\n groupId: \"operations-team\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_team = proxmoxve.permission.Group(\"operationsTeam\",\n comment=\"Managed by Pulumi\",\n group_id=\"operations-team\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsTeam = new ProxmoxVE.Permission.Group(\"operationsTeam\", new()\n {\n Comment = \"Managed by Pulumi\",\n GroupId = \"operations-team\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewGroup(ctx, \"operationsTeam\", \u0026Permission.GroupArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tGroupId: pulumi.String(\"operations-team\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Group;\nimport com.pulumi.proxmoxve.Permission.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsTeam = new Group(\"operationsTeam\", GroupArgs.builder()\n .comment(\"Managed by Pulumi\")\n .groupId(\"operations-team\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsTeam:\n type: proxmoxve:Permission:Group\n properties:\n comment: Managed by Pulumi\n groupId: operations-team\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `group_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/group:Group operations_team operations-team\n```\n\n", "properties": { "acls": { "type": "array", @@ -5118,7 +5118,7 @@ } }, "proxmoxve:Permission/pool:Pool": { - "description": "Manages a resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsPool = new proxmoxve.permission.Pool(\"operationsPool\", {\n comment: \"Managed by Terraform\",\n poolId: \"operations-pool\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.permission.Pool(\"operationsPool\",\n comment=\"Managed by Terraform\",\n pool_id=\"operations-pool\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = new ProxmoxVE.Permission.Pool(\"operationsPool\", new()\n {\n Comment = \"Managed by Terraform\",\n PoolId = \"operations-pool\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewPool(ctx, \"operationsPool\", \u0026Permission.PoolArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tPoolId: pulumi.String(\"operations-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Pool;\nimport com.pulumi.proxmoxve.Permission.PoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsPool = new Pool(\"operationsPool\", PoolArgs.builder()\n .comment(\"Managed by Terraform\")\n .poolId(\"operations-pool\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsPool:\n type: proxmoxve:Permission:Pool\n properties:\n comment: Managed by Terraform\n poolId: operations-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `pool_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/pool:Pool operations_pool operations-pool\n```\n\n", + "description": "Manages a resource pool.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsPool = new proxmoxve.permission.Pool(\"operationsPool\", {\n comment: \"Managed by Pulumi\",\n poolId: \"operations-pool\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_pool = proxmoxve.permission.Pool(\"operationsPool\",\n comment=\"Managed by Pulumi\",\n pool_id=\"operations-pool\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsPool = new ProxmoxVE.Permission.Pool(\"operationsPool\", new()\n {\n Comment = \"Managed by Pulumi\",\n PoolId = \"operations-pool\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := Permission.NewPool(ctx, \"operationsPool\", \u0026Permission.PoolArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPoolId: pulumi.String(\"operations-pool\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Pool;\nimport com.pulumi.proxmoxve.Permission.PoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsPool = new Pool(\"operationsPool\", PoolArgs.builder()\n .comment(\"Managed by Pulumi\")\n .poolId(\"operations-pool\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsPool:\n type: proxmoxve:Permission:Pool\n properties:\n comment: Managed by Pulumi\n poolId: operations-pool\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `pool_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/pool:Pool operations_pool operations-pool\n```\n\n", "properties": { "comment": { "type": "string", @@ -5234,7 +5234,7 @@ } }, "proxmoxve:Permission/user:User": { - "description": "Manages a user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n acls: [{\n path: \"/vms/1234\",\n propagate: true,\n roleId: operationsMonitoring.roleId,\n }],\n comment: \"Managed by Terraform\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n acls=[{\n \"path\": \"/vms/1234\",\n \"propagate\": True,\n \"role_id\": operations_monitoring.role_id,\n }],\n comment=\"Managed by Terraform\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Acls = new[]\n {\n new ProxmoxVE.Permission.Inputs.UserAclArgs\n {\n Path = \"/vms/1234\",\n Propagate = true,\n RoleId = operationsMonitoring.RoleId,\n },\n },\n Comment = \"Managed by Terraform\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tAcls: permission.UserAclArray{\n\t\t\t\t\u0026permission.UserAclArgs{\n\t\t\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\t\t\tPropagate: pulumi.Bool(true),\n\t\t\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.inputs.UserAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .acls(UserAclArgs.builder()\n .path(\"/vms/1234\")\n .propagate(true)\n .roleId(operationsMonitoring.roleId())\n .build())\n .comment(\"Managed by Terraform\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n acls:\n - path: /vms/1234\n propagate: true\n roleId: ${operationsMonitoring.roleId}\n comment: Managed by Terraform\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `user_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/user:User operations_automation operations-automation@pve\n```\n\n", + "description": "Manages a user.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n acls: [{\n path: \"/vms/1234\",\n propagate: true,\n roleId: operationsMonitoring.roleId,\n }],\n comment: \"Managed by Pulumi\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n acls=[{\n \"path\": \"/vms/1234\",\n \"propagate\": True,\n \"role_id\": operations_monitoring.role_id,\n }],\n comment=\"Managed by Pulumi\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Acls = new[]\n {\n new ProxmoxVE.Permission.Inputs.UserAclArgs\n {\n Path = \"/vms/1234\",\n Propagate = true,\n RoleId = operationsMonitoring.RoleId,\n },\n },\n Comment = \"Managed by Pulumi\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tAcls: permission.UserAclArray{\n\t\t\t\t\u0026permission.UserAclArgs{\n\t\t\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\t\t\tPropagate: pulumi.Bool(true),\n\t\t\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\t\t},\n\t\t\t},\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.inputs.UserAclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .acls(UserAclArgs.builder()\n .path(\"/vms/1234\")\n .propagate(true)\n .roleId(operationsMonitoring.roleId())\n .build())\n .comment(\"Managed by Pulumi\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n acls:\n - path: /vms/1234\n propagate: true\n roleId: ${operationsMonitoring.roleId}\n comment: Managed by Pulumi\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using the `user_id`, e.g.,\n\nbash\n\n```sh\n$ pulumi import proxmoxve:Permission/user:User operations_automation operations-automation@pve\n```\n\n", "properties": { "acls": { "type": "array", @@ -5577,7 +5577,7 @@ } }, "proxmoxve:User/token:Token": { - "description": "User API tokens.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// if creating a user token, the user must be created first\nconst user = new proxmoxve.permission.User(\"user\", {\n comment: \"Managed by Terraform\",\n email: \"user@pve\",\n enabled: true,\n expirationDate: \"2034-01-01T22:00:00Z\",\n userId: \"user@pve\",\n});\nconst userToken = new proxmoxve.user.Token(\"userToken\", {\n comment: \"Managed by Terraform\",\n expirationDate: \"2033-01-01T22:00:00Z\",\n tokenName: \"tk1\",\n userId: user.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# if creating a user token, the user must be created first\nuser = proxmoxve.permission.User(\"user\",\n comment=\"Managed by Terraform\",\n email=\"user@pve\",\n enabled=True,\n expiration_date=\"2034-01-01T22:00:00Z\",\n user_id=\"user@pve\")\nuser_token = proxmoxve.user.Token(\"userToken\",\n comment=\"Managed by Terraform\",\n expiration_date=\"2033-01-01T22:00:00Z\",\n token_name=\"tk1\",\n user_id=user.user_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // if creating a user token, the user must be created first\n var user = new ProxmoxVE.Permission.User(\"user\", new()\n {\n Comment = \"Managed by Terraform\",\n Email = \"user@pve\",\n Enabled = true,\n ExpirationDate = \"2034-01-01T22:00:00Z\",\n UserId = \"user@pve\",\n });\n\n var userToken = new ProxmoxVE.User.Token(\"userToken\", new()\n {\n Comment = \"Managed by Terraform\",\n ExpirationDate = \"2033-01-01T22:00:00Z\",\n TokenName = \"tk1\",\n UserId = user.UserId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/User\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// if creating a user token, the user must be created first\n\t\tuser, err := Permission.NewUser(ctx, \"user\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tEmail: pulumi.String(\"user@pve\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tExpirationDate: pulumi.String(\"2034-01-01T22:00:00Z\"),\n\t\t\tUserId: pulumi.String(\"user@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = User.NewToken(ctx, \"userToken\", \u0026User.TokenArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tExpirationDate: pulumi.String(\"2033-01-01T22:00:00Z\"),\n\t\t\tTokenName: pulumi.String(\"tk1\"),\n\t\t\tUserId: user.UserId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.User.Token;\nimport com.pulumi.proxmoxve.User.TokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // if creating a user token, the user must be created first\n var user = new User(\"user\", UserArgs.builder()\n .comment(\"Managed by Terraform\")\n .email(\"user@pve\")\n .enabled(true)\n .expirationDate(\"2034-01-01T22:00:00Z\")\n .userId(\"user@pve\")\n .build());\n\n var userToken = new Token(\"userToken\", TokenArgs.builder()\n .comment(\"Managed by Terraform\")\n .expirationDate(\"2033-01-01T22:00:00Z\")\n .tokenName(\"tk1\")\n .userId(user.userId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # if creating a user token, the user must be created first\n user:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Terraform\n email: user@pve\n enabled: true\n expirationDate: 2034-01-01T22:00:00Z\n userId: user@pve\n userToken:\n type: proxmoxve:User:Token\n properties:\n comment: Managed by Terraform\n expirationDate: 2033-01-01T22:00:00Z\n tokenName: tk1\n userId: ${user.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Tokens can be imported using they identifiers in format `user_id!token_name` format, e.g.:\n\n```sh\n$ pulumi import proxmoxve:User/token:Token token1 user@pve!token1\n```\n\n", + "description": "User API tokens.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\n// if creating a user token, the user must be created first\nconst user = new proxmoxve.permission.User(\"user\", {\n comment: \"Managed by Pulumi\",\n email: \"user@pve\",\n enabled: true,\n expirationDate: \"2034-01-01T22:00:00Z\",\n userId: \"user@pve\",\n});\nconst userToken = new proxmoxve.user.Token(\"userToken\", {\n comment: \"Managed by Pulumi\",\n expirationDate: \"2033-01-01T22:00:00Z\",\n tokenName: \"tk1\",\n userId: user.userId,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\n# if creating a user token, the user must be created first\nuser = proxmoxve.permission.User(\"user\",\n comment=\"Managed by Pulumi\",\n email=\"user@pve\",\n enabled=True,\n expiration_date=\"2034-01-01T22:00:00Z\",\n user_id=\"user@pve\")\nuser_token = proxmoxve.user.Token(\"userToken\",\n comment=\"Managed by Pulumi\",\n expiration_date=\"2033-01-01T22:00:00Z\",\n token_name=\"tk1\",\n user_id=user.user_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // if creating a user token, the user must be created first\n var user = new ProxmoxVE.Permission.User(\"user\", new()\n {\n Comment = \"Managed by Pulumi\",\n Email = \"user@pve\",\n Enabled = true,\n ExpirationDate = \"2034-01-01T22:00:00Z\",\n UserId = \"user@pve\",\n });\n\n var userToken = new ProxmoxVE.User.Token(\"userToken\", new()\n {\n Comment = \"Managed by Pulumi\",\n ExpirationDate = \"2033-01-01T22:00:00Z\",\n TokenName = \"tk1\",\n UserId = user.UserId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/User\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// if creating a user token, the user must be created first\n\t\tuser, err := Permission.NewUser(ctx, \"user\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tEmail: pulumi.String(\"user@pve\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tExpirationDate: pulumi.String(\"2034-01-01T22:00:00Z\"),\n\t\t\tUserId: pulumi.String(\"user@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = User.NewToken(ctx, \"userToken\", \u0026User.TokenArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tExpirationDate: pulumi.String(\"2033-01-01T22:00:00Z\"),\n\t\t\tTokenName: pulumi.String(\"tk1\"),\n\t\t\tUserId: user.UserId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.User.Token;\nimport com.pulumi.proxmoxve.User.TokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // if creating a user token, the user must be created first\n var user = new User(\"user\", UserArgs.builder()\n .comment(\"Managed by Pulumi\")\n .email(\"user@pve\")\n .enabled(true)\n .expirationDate(\"2034-01-01T22:00:00Z\")\n .userId(\"user@pve\")\n .build());\n\n var userToken = new Token(\"userToken\", TokenArgs.builder()\n .comment(\"Managed by Pulumi\")\n .expirationDate(\"2033-01-01T22:00:00Z\")\n .tokenName(\"tk1\")\n .userId(user.userId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # if creating a user token, the user must be created first\n user:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Pulumi\n email: user@pve\n enabled: true\n expirationDate: 2034-01-01T22:00:00Z\n userId: user@pve\n userToken:\n type: proxmoxve:User:Token\n properties:\n comment: Managed by Pulumi\n expirationDate: 2033-01-01T22:00:00Z\n tokenName: tk1\n userId: ${user.userId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\n#Tokens can be imported using they identifiers in format `user_id!token_name` format, e.g.:\n\n```sh\n$ pulumi import proxmoxve:User/token:Token token1 user@pve!token1\n```\n\n", "properties": { "comment": { "type": "string", @@ -6628,7 +6628,7 @@ } }, "proxmoxve:index/acl:Acl": { - "description": "Manages ACLs on the Proxmox cluster.\n\nACLs are used to control access to resources in the Proxmox cluster.\nEach ACL consists of a path, a user, group or token, a role, and a flag to allow propagation of permissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n comment: \"Managed by Terraform\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomationMonitoring = new proxmoxve.Acl(\"operationsAutomationMonitoring\", {\n userId: operationsAutomation.userId,\n roleId: operationsMonitoring.roleId,\n path: \"/vms/1234\",\n propagate: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n comment=\"Managed by Terraform\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation_monitoring = proxmoxve.Acl(\"operationsAutomationMonitoring\",\n user_id=operations_automation.user_id,\n role_id=operations_monitoring.role_id,\n path=\"/vms/1234\",\n propagate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Comment = \"Managed by Terraform\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomationMonitoring = new ProxmoxVE.Acl(\"operationsAutomationMonitoring\", new()\n {\n UserId = operationsAutomation.UserId,\n RoleId = operationsMonitoring.RoleId,\n Path = \"/vms/1234\",\n Propagate = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsAutomation, err := Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Terraform\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.NewAcl(ctx, \"operationsAutomationMonitoring\", \u0026proxmoxve.AclArgs{\n\t\t\tUserId: operationsAutomation.UserId,\n\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\tPropagate: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Acl;\nimport com.pulumi.proxmoxve.AclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .comment(\"Managed by Terraform\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomationMonitoring = new Acl(\"operationsAutomationMonitoring\", AclArgs.builder()\n .userId(operationsAutomation.userId())\n .roleId(operationsMonitoring.roleId())\n .path(\"/vms/1234\")\n .propagate(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Terraform\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n operationsAutomationMonitoring:\n type: proxmoxve:Acl\n properties:\n userId: ${operationsAutomation.userId}\n roleId: ${operationsMonitoring.roleId}\n path: /vms/1234\n propagate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACL can be imported using its unique identifier, e.g.: {path}?{group|user@realm|user@realm!token}?{role}\n\n```sh\n$ pulumi import proxmoxve:index/acl:Acl operations_automation_monitoring /?monitor@pve?operations-monitoring\n```\n\n", + "description": "Manages ACLs on the Proxmox cluster.\n\nACLs are used to control access to resources in the Proxmox cluster.\nEach ACL consists of a path, a user, group or token, a role, and a flag to allow propagation of permissions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as proxmoxve from \"@muhlba91/pulumi-proxmoxve\";\n\nconst operationsAutomation = new proxmoxve.permission.User(\"operationsAutomation\", {\n comment: \"Managed by Pulumi\",\n password: \"a-strong-password\",\n userId: \"operations-automation@pve\",\n});\nconst operationsMonitoring = new proxmoxve.permission.Role(\"operationsMonitoring\", {\n roleId: \"operations-monitoring\",\n privileges: [\"VM.Monitor\"],\n});\nconst operationsAutomationMonitoring = new proxmoxve.Acl(\"operationsAutomationMonitoring\", {\n userId: operationsAutomation.userId,\n roleId: operationsMonitoring.roleId,\n path: \"/vms/1234\",\n propagate: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_proxmoxve as proxmoxve\n\noperations_automation = proxmoxve.permission.User(\"operationsAutomation\",\n comment=\"Managed by Pulumi\",\n password=\"a-strong-password\",\n user_id=\"operations-automation@pve\")\noperations_monitoring = proxmoxve.permission.Role(\"operationsMonitoring\",\n role_id=\"operations-monitoring\",\n privileges=[\"VM.Monitor\"])\noperations_automation_monitoring = proxmoxve.Acl(\"operationsAutomationMonitoring\",\n user_id=operations_automation.user_id,\n role_id=operations_monitoring.role_id,\n path=\"/vms/1234\",\n propagate=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing ProxmoxVE = Pulumi.ProxmoxVE;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var operationsAutomation = new ProxmoxVE.Permission.User(\"operationsAutomation\", new()\n {\n Comment = \"Managed by Pulumi\",\n Password = \"a-strong-password\",\n UserId = \"operations-automation@pve\",\n });\n\n var operationsMonitoring = new ProxmoxVE.Permission.Role(\"operationsMonitoring\", new()\n {\n RoleId = \"operations-monitoring\",\n Privileges = new[]\n {\n \"VM.Monitor\",\n },\n });\n\n var operationsAutomationMonitoring = new ProxmoxVE.Acl(\"operationsAutomationMonitoring\", new()\n {\n UserId = operationsAutomation.UserId,\n RoleId = operationsMonitoring.RoleId,\n Path = \"/vms/1234\",\n Propagate = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve\"\n\t\"github.com/muhlba91/pulumi-proxmoxve/sdk/v6/go/proxmoxve/Permission\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\toperationsAutomation, err := Permission.NewUser(ctx, \"operationsAutomation\", \u0026Permission.UserArgs{\n\t\t\tComment: pulumi.String(\"Managed by Pulumi\"),\n\t\t\tPassword: pulumi.String(\"a-strong-password\"),\n\t\t\tUserId: pulumi.String(\"operations-automation@pve\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toperationsMonitoring, err := Permission.NewRole(ctx, \"operationsMonitoring\", \u0026Permission.RoleArgs{\n\t\t\tRoleId: pulumi.String(\"operations-monitoring\"),\n\t\t\tPrivileges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"VM.Monitor\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = proxmoxve.NewAcl(ctx, \"operationsAutomationMonitoring\", \u0026proxmoxve.AclArgs{\n\t\t\tUserId: operationsAutomation.UserId,\n\t\t\tRoleId: operationsMonitoring.RoleId,\n\t\t\tPath: pulumi.String(\"/vms/1234\"),\n\t\t\tPropagate: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.proxmoxve.Permission.User;\nimport com.pulumi.proxmoxve.Permission.UserArgs;\nimport com.pulumi.proxmoxve.Permission.Role;\nimport com.pulumi.proxmoxve.Permission.RoleArgs;\nimport com.pulumi.proxmoxve.Acl;\nimport com.pulumi.proxmoxve.AclArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var operationsAutomation = new User(\"operationsAutomation\", UserArgs.builder()\n .comment(\"Managed by Pulumi\")\n .password(\"a-strong-password\")\n .userId(\"operations-automation@pve\")\n .build());\n\n var operationsMonitoring = new Role(\"operationsMonitoring\", RoleArgs.builder()\n .roleId(\"operations-monitoring\")\n .privileges(\"VM.Monitor\")\n .build());\n\n var operationsAutomationMonitoring = new Acl(\"operationsAutomationMonitoring\", AclArgs.builder()\n .userId(operationsAutomation.userId())\n .roleId(operationsMonitoring.roleId())\n .path(\"/vms/1234\")\n .propagate(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n operationsAutomation:\n type: proxmoxve:Permission:User\n properties:\n comment: Managed by Pulumi\n password: a-strong-password\n userId: operations-automation@pve\n operationsMonitoring:\n type: proxmoxve:Permission:Role\n properties:\n roleId: operations-monitoring\n privileges:\n - VM.Monitor\n operationsAutomationMonitoring:\n type: proxmoxve:Acl\n properties:\n userId: ${operationsAutomation.userId}\n roleId: ${operationsMonitoring.roleId}\n path: /vms/1234\n propagate: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n#!/usr/bin/env sh\n\nACL can be imported using its unique identifier, e.g.: {path}?{group|user@realm|user@realm!token}?{role}\n\n```sh\n$ pulumi import proxmoxve:index/acl:Acl operations_automation_monitoring /?monitor@pve?operations-monitoring\n```\n\n", "properties": { "groupId": { "type": "string", diff --git a/provider/cmd/pulumi-tfgen-proxmoxve/main.go b/provider/cmd/pulumi-tfgen-proxmoxve/main.go index 5df5c475..55b44678 100644 --- a/provider/cmd/pulumi-tfgen-proxmoxve/main.go +++ b/provider/cmd/pulumi-tfgen-proxmoxve/main.go @@ -16,7 +16,7 @@ package main import ( proxmoxve "github.com/muhlba91/pulumi-proxmoxve/provider" - "github.com/pulumi/pulumi-terraform-bridge/pf/tfgen" + "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfgen" ) func main() { diff --git a/provider/go.mod b/provider/go.mod index 2f4a562d..73ffbe68 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -7,7 +7,6 @@ replace github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraf require ( github.com/bpg/terraform-provider-proxmox v0.67.1 github.com/ettle/strcase v0.2.0 - github.com/pulumi/pulumi-terraform-bridge/pf v0.48.0 github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.0 github.com/pulumi/pulumi/sdk/v3 v3.141.0 ) @@ -50,6 +49,7 @@ require ( github.com/emirpasic/gods v1.18.1 // indirect github.com/fatih/color v1.16.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/frankban/quicktest v1.14.4 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-git/v5 v5.12.0 // indirect @@ -154,6 +154,7 @@ require ( github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/teekennedy/goldmark-markdown v0.3.0 // indirect github.com/texttheater/golang-levenshtein v1.0.1 // indirect github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect diff --git a/provider/go.sum b/provider/go.sum index 3b506c11..23da0a01 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1914,28 +1914,14 @@ github.com/pulumi/inflector v0.1.1 h1:dvlxlWtXwOJTUUtcYDvwnl6Mpg33prhK+7mzeF+Sob github.com/pulumi/inflector v0.1.1/go.mod h1:HUFCjcPTz96YtTuUlwG3i3EZG4WlniBvR9bd+iJxCUY= github.com/pulumi/providertest v0.1.3 h1:GpNKRy/haNjRHiUA9bi4diU4Op2zf3axYXbga5AepHg= github.com/pulumi/providertest v0.1.3/go.mod h1:GcsqEGgSngwaNOD+kICJPIUQlnA911fGBU8HDlJvVL0= -github.com/pulumi/pulumi-java/pkg v0.16.1 h1:orHnDWFbpOERwaBLry9f+6nqPX7x0MsrIkaa5QDGAns= -github.com/pulumi/pulumi-java/pkg v0.16.1/go.mod h1:QH0DihZkWYle9XFc+LJ76m4hUo+fA3RdyaM90pqOaSM= github.com/pulumi/pulumi-java/pkg v0.17.0 h1:KmaVLrVmlkzShOfaJNJDlckorbFm8dM/C7L4hj6LX8U= github.com/pulumi/pulumi-java/pkg v0.17.0/go.mod h1:ji4U4H7t81X4aaE88D9+z5CmKH/QoLwQi9N1iGl+2KQ= -github.com/pulumi/pulumi-terraform-bridge/pf v0.48.0 h1:wbE7jVvIYE2QmQh9st9a1oBRCj9yc6EPeAIoDHcpUsw= -github.com/pulumi/pulumi-terraform-bridge/pf v0.48.0/go.mod h1:Bw6XabsWSw4gjk9q94MZHorvpx7bp710DWJgMQCAaJE= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.95.0 h1:zChnIrzR89muOosXFxcd/HTnOw7lkbm7EXKiXQI0/2Y= -github.com/pulumi/pulumi-terraform-bridge/v3 v3.95.0/go.mod h1:1d07wF5+u3d9xOtzuX/3K9+QF4/ISp0QKdC/orX0abI= github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.0 h1:uJB3tM1j+9SKeXLCAx3DBVHsYk4ddXNrVoiqpgXal2Q= github.com/pulumi/pulumi-terraform-bridge/v3 v3.96.0/go.mod h1:WnOTAfdtm5+kW3rIU0rLhxFSEHtJIMf19FdOU6NFXG0= -github.com/pulumi/pulumi-yaml v1.11.1 h1:ULUL9fpb2Bwgf3jJHx0FamKYm0ld0KxBQr/uSAslRLk= -github.com/pulumi/pulumi-yaml v1.11.1/go.mod h1:RdXRBupRGGAD1kbYNG1V1h6pyFnXisvQsl0AANvVjGI= github.com/pulumi/pulumi-yaml v1.11.2 h1:MU7TTNbruGCSgNHhaBygjIbLWm3WSbd1q98GpMIgQzE= github.com/pulumi/pulumi-yaml v1.11.2/go.mod h1:RdXRBupRGGAD1kbYNG1V1h6pyFnXisvQsl0AANvVjGI= -github.com/pulumi/pulumi/pkg/v3 v3.137.0 h1:/KPFQQaB5W0/GhVxSTGnEzv3ZW5uieGN5Q2q+Lsr+Zw= -github.com/pulumi/pulumi/pkg/v3 v3.137.0/go.mod h1:ZQXJUTysDwq/mtilutRBKguH6DI+3b2WgNcOrs0whJ0= github.com/pulumi/pulumi/pkg/v3 v3.140.0 h1:/bvHa19HY/6qHWvuAOVII8qr72MDGGczBWlPYlPo3j0= github.com/pulumi/pulumi/pkg/v3 v3.140.0/go.mod h1:rcTtSyisd7BzZTugNk/s9zlYgX9S0S10+pha3Tko6yM= -github.com/pulumi/pulumi/sdk/v3 v3.138.0 h1:1feN0YU1dHnbNw+cHaenmx3AgU0DEiKQbvjxaGQuShk= -github.com/pulumi/pulumi/sdk/v3 v3.138.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= -github.com/pulumi/pulumi/sdk/v3 v3.140.0 h1:+Z/RBvdYg7tBNkBwk4p/FzlV7niBT3TbLAICq/Y0LDU= -github.com/pulumi/pulumi/sdk/v3 v3.140.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= github.com/pulumi/pulumi/sdk/v3 v3.141.0 h1:ojJlof5h2ZoqxSgpEKXJzW1efUtHAKdzdqj6v5R2wTA= github.com/pulumi/pulumi/sdk/v3 v3.141.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo= diff --git a/provider/resources.go b/provider/resources.go index 62f83a0d..947cb4fa 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -26,7 +26,7 @@ import ( "github.com/bpg/terraform-provider-proxmox/proxmoxtf/provider" "github.com/ettle/strcase" "github.com/muhlba91/pulumi-proxmoxve/provider/pkg/version" - pf "github.com/pulumi/pulumi-terraform-bridge/pf/tfbridge" + pf "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/pf/tfbridge" "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge" shim "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim" shimv2 "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2" diff --git a/sdk/dotnet/Acl.cs b/sdk/dotnet/Acl.cs index 632952b5..486d3f24 100644 --- a/sdk/dotnet/Acl.cs +++ b/sdk/dotnet/Acl.cs @@ -27,7 +27,7 @@ namespace Pulumi.ProxmoxVE /// { /// var operationsAutomation = new ProxmoxVE.Permission.User("operationsAutomation", new() /// { - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// Password = "a-strong-password", /// UserId = "operations-automation@pve", /// }); diff --git a/sdk/dotnet/HA/Haresource.cs b/sdk/dotnet/HA/Haresource.cs index 44c6ec4c..08182329 100644 --- a/sdk/dotnet/HA/Haresource.cs +++ b/sdk/dotnet/HA/Haresource.cs @@ -27,7 +27,7 @@ namespace Pulumi.ProxmoxVE.HA /// ResourceId = "vm:123", /// State = "started", /// Group = "example", - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// }, new CustomResourceOptions /// { /// DependsOn = diff --git a/sdk/dotnet/Network/FirewallAlias.cs b/sdk/dotnet/Network/FirewallAlias.cs index ef2645d5..7103dddd 100644 --- a/sdk/dotnet/Network/FirewallAlias.cs +++ b/sdk/dotnet/Network/FirewallAlias.cs @@ -29,7 +29,7 @@ namespace Pulumi.ProxmoxVE.Network /// NodeName = proxmox_virtual_environment_vm.Example.Node_name, /// VmId = proxmox_virtual_environment_vm.Example.Vm_id, /// Cidr = "192.168.0.0/23", - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// }, new CustomResourceOptions /// { /// DependsOn = @@ -41,7 +41,7 @@ namespace Pulumi.ProxmoxVE.Network /// var ubuntuVm = new ProxmoxVE.Network.FirewallAlias("ubuntuVm", new() /// { /// Cidr = "192.168.0.1", - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// }); /// /// }); diff --git a/sdk/dotnet/Network/FirewallIPSet.cs b/sdk/dotnet/Network/FirewallIPSet.cs index 8c2d3486..35b43f8b 100644 --- a/sdk/dotnet/Network/FirewallIPSet.cs +++ b/sdk/dotnet/Network/FirewallIPSet.cs @@ -27,7 +27,7 @@ namespace Pulumi.ProxmoxVE.Network /// { /// NodeName = proxmox_virtual_environment_vm.Example.Node_name, /// VmId = proxmox_virtual_environment_vm.Example.Vm_id, - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// Cidrs = new[] /// { /// new ProxmoxVE.Network.Inputs.FirewallIPSetCidrArgs diff --git a/sdk/dotnet/Network/FirewallSecurityGroup.cs b/sdk/dotnet/Network/FirewallSecurityGroup.cs index 0d0773b7..118ad3af 100644 --- a/sdk/dotnet/Network/FirewallSecurityGroup.cs +++ b/sdk/dotnet/Network/FirewallSecurityGroup.cs @@ -26,7 +26,7 @@ namespace Pulumi.ProxmoxVE.Network /// { /// var webserver = new ProxmoxVE.Network.FirewallSecurityGroup("webserver", new() /// { - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// Rules = new[] /// { /// new ProxmoxVE.Network.Inputs.FirewallSecurityGroupRuleArgs diff --git a/sdk/dotnet/Permission/Group.cs b/sdk/dotnet/Permission/Group.cs index 46a772cb..08128068 100644 --- a/sdk/dotnet/Permission/Group.cs +++ b/sdk/dotnet/Permission/Group.cs @@ -24,7 +24,7 @@ namespace Pulumi.ProxmoxVE.Permission /// { /// var operationsTeam = new ProxmoxVE.Permission.Group("operationsTeam", new() /// { - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// GroupId = "operations-team", /// }); /// diff --git a/sdk/dotnet/Permission/Pool.cs b/sdk/dotnet/Permission/Pool.cs index 7ac97abc..c014f87d 100644 --- a/sdk/dotnet/Permission/Pool.cs +++ b/sdk/dotnet/Permission/Pool.cs @@ -24,7 +24,7 @@ namespace Pulumi.ProxmoxVE.Permission /// { /// var operationsPool = new ProxmoxVE.Permission.Pool("operationsPool", new() /// { - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// PoolId = "operations-pool", /// }); /// diff --git a/sdk/dotnet/Permission/User.cs b/sdk/dotnet/Permission/User.cs index db1e6499..2b30bff0 100644 --- a/sdk/dotnet/Permission/User.cs +++ b/sdk/dotnet/Permission/User.cs @@ -42,7 +42,7 @@ namespace Pulumi.ProxmoxVE.Permission /// RoleId = operationsMonitoring.RoleId, /// }, /// }, - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// Password = "a-strong-password", /// UserId = "operations-automation@pve", /// }); diff --git a/sdk/dotnet/User/Token.cs b/sdk/dotnet/User/Token.cs index 15d4f7aa..cb2918e1 100644 --- a/sdk/dotnet/User/Token.cs +++ b/sdk/dotnet/User/Token.cs @@ -25,7 +25,7 @@ namespace Pulumi.ProxmoxVE.User /// // if creating a user token, the user must be created first /// var user = new ProxmoxVE.Permission.User("user", new() /// { - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// Email = "user@pve", /// Enabled = true, /// ExpirationDate = "2034-01-01T22:00:00Z", @@ -34,7 +34,7 @@ namespace Pulumi.ProxmoxVE.User /// /// var userToken = new ProxmoxVE.User.Token("userToken", new() /// { - /// Comment = "Managed by Terraform", + /// Comment = "Managed by Pulumi", /// ExpirationDate = "2033-01-01T22:00:00Z", /// TokenName = "tk1", /// UserId = user.UserId, diff --git a/sdk/go/proxmoxve/acl.go b/sdk/go/proxmoxve/acl.go index a62569e3..ab6f5e16 100644 --- a/sdk/go/proxmoxve/acl.go +++ b/sdk/go/proxmoxve/acl.go @@ -33,7 +33,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // operationsAutomation, err := Permission.NewUser(ctx, "operationsAutomation", &Permission.UserArgs{ -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // Password: pulumi.String("a-strong-password"), // UserId: pulumi.String("operations-automation@pve"), // }) diff --git a/sdk/go/proxmoxve/ha/haresource.go b/sdk/go/proxmoxve/ha/haresource.go index 6139e4de..4dda2251 100644 --- a/sdk/go/proxmoxve/ha/haresource.go +++ b/sdk/go/proxmoxve/ha/haresource.go @@ -32,7 +32,7 @@ import ( // ResourceId: pulumi.String("vm:123"), // State: pulumi.String("started"), // Group: pulumi.String("example"), -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // }, pulumi.DependsOn([]pulumi.Resource{ // proxmox_virtual_environment_hagroup.Example, // })) diff --git a/sdk/go/proxmoxve/network/firewallAlias.go b/sdk/go/proxmoxve/network/firewallAlias.go index ed9d97ae..c8d5fc57 100644 --- a/sdk/go/proxmoxve/network/firewallAlias.go +++ b/sdk/go/proxmoxve/network/firewallAlias.go @@ -34,7 +34,7 @@ import ( // NodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name), // VmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id), // Cidr: pulumi.String("192.168.0.0/23"), -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // }, pulumi.DependsOn([]pulumi.Resource{ // proxmox_virtual_environment_vm.Example, // })) @@ -43,7 +43,7 @@ import ( // } // _, err = Network.NewFirewallAlias(ctx, "ubuntuVm", &Network.FirewallAliasArgs{ // Cidr: pulumi.String("192.168.0.1"), -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // }) // if err != nil { // return err diff --git a/sdk/go/proxmoxve/network/firewallIPSet.go b/sdk/go/proxmoxve/network/firewallIPSet.go index bc98ea48..ea98a117 100644 --- a/sdk/go/proxmoxve/network/firewallIPSet.go +++ b/sdk/go/proxmoxve/network/firewallIPSet.go @@ -31,7 +31,7 @@ import ( // _, err := Network.NewFirewallIPSet(ctx, "ipset", &Network.FirewallIPSetArgs{ // NodeName: pulumi.Any(proxmox_virtual_environment_vm.Example.Node_name), // VmId: pulumi.Any(proxmox_virtual_environment_vm.Example.Vm_id), -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // Cidrs: network.FirewallIPSetCidrArray{ // &network.FirewallIPSetCidrArgs{ // Name: pulumi.String("192.168.0.0/23"), diff --git a/sdk/go/proxmoxve/network/firewallSecurityGroup.go b/sdk/go/proxmoxve/network/firewallSecurityGroup.go index ea3ff2e2..e43d0666 100644 --- a/sdk/go/proxmoxve/network/firewallSecurityGroup.go +++ b/sdk/go/proxmoxve/network/firewallSecurityGroup.go @@ -31,7 +31,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := Network.NewFirewallSecurityGroup(ctx, "webserver", &Network.FirewallSecurityGroupArgs{ -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // Rules: network.FirewallSecurityGroupRuleArray{ // &network.FirewallSecurityGroupRuleArgs{ // Action: pulumi.String("ACCEPT"), diff --git a/sdk/go/proxmoxve/permission/group.go b/sdk/go/proxmoxve/permission/group.go index f2a79e19..74bd218c 100644 --- a/sdk/go/proxmoxve/permission/group.go +++ b/sdk/go/proxmoxve/permission/group.go @@ -29,7 +29,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := Permission.NewGroup(ctx, "operationsTeam", &Permission.GroupArgs{ -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // GroupId: pulumi.String("operations-team"), // }) // if err != nil { diff --git a/sdk/go/proxmoxve/permission/pool.go b/sdk/go/proxmoxve/permission/pool.go index ec8243b7..39328fdd 100644 --- a/sdk/go/proxmoxve/permission/pool.go +++ b/sdk/go/proxmoxve/permission/pool.go @@ -29,7 +29,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := Permission.NewPool(ctx, "operationsPool", &Permission.PoolArgs{ -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // PoolId: pulumi.String("operations-pool"), // }) // if err != nil { diff --git a/sdk/go/proxmoxve/permission/user.go b/sdk/go/proxmoxve/permission/user.go index 34738087..567ca6cc 100644 --- a/sdk/go/proxmoxve/permission/user.go +++ b/sdk/go/proxmoxve/permission/user.go @@ -45,7 +45,7 @@ import ( // RoleId: operationsMonitoring.RoleId, // }, // }, -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // Password: pulumi.String("a-strong-password"), // UserId: pulumi.String("operations-automation@pve"), // }) diff --git a/sdk/go/proxmoxve/user/token.go b/sdk/go/proxmoxve/user/token.go index e7ab8ff2..89595039 100644 --- a/sdk/go/proxmoxve/user/token.go +++ b/sdk/go/proxmoxve/user/token.go @@ -31,7 +31,7 @@ import ( // pulumi.Run(func(ctx *pulumi.Context) error { // // if creating a user token, the user must be created first // user, err := Permission.NewUser(ctx, "user", &Permission.UserArgs{ -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // Email: pulumi.String("user@pve"), // Enabled: pulumi.Bool(true), // ExpirationDate: pulumi.String("2034-01-01T22:00:00Z"), @@ -41,7 +41,7 @@ import ( // return err // } // _, err = User.NewToken(ctx, "userToken", &User.TokenArgs{ -// Comment: pulumi.String("Managed by Terraform"), +// Comment: pulumi.String("Managed by Pulumi"), // ExpirationDate: pulumi.String("2033-01-01T22:00:00Z"), // TokenName: pulumi.String("tk1"), // UserId: user.UserId, diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/Acl.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/Acl.java index 2def325b..49d4d56f 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/Acl.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/Acl.java @@ -51,7 +51,7 @@ * * public static void stack(Context ctx) }{{@code * var operationsAutomation = new User("operationsAutomation", UserArgs.builder() - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .password("a-strong-password") * .userId("operations-automation}{@literal @}{@code pve") * .build()); diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/HA/Haresource.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/HA/Haresource.java index 2aa7b08d..7055eb70 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/HA/Haresource.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/HA/Haresource.java @@ -48,7 +48,7 @@ * .resourceId("vm:123") * .state("started") * .group("example") - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .build(), CustomResourceOptions.builder() * .dependsOn(proxmox_virtual_environment_hagroup.example()) * .build()); diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/User/Token.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/User/Token.java index c51745cf..1ded8976 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/User/Token.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/User/Token.java @@ -48,7 +48,7 @@ * public static void stack(Context ctx) }{{@code * // if creating a user token, the user must be created first * var user = new User("user", UserArgs.builder() - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .email("user}{@literal @}{@code pve") * .enabled(true) * .expirationDate("2034-01-01T22:00:00Z") @@ -56,7 +56,7 @@ * .build()); * * var userToken = new Token("userToken", TokenArgs.builder() - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .expirationDate("2033-01-01T22:00:00Z") * .tokenName("tk1") * .userId(user.userId()) diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallAlias.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallAlias.java index f46ff1c5..a2707992 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallAlias.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallAlias.java @@ -50,14 +50,14 @@ * .nodeName(proxmox_virtual_environment_vm.example().node_name()) * .vmId(proxmox_virtual_environment_vm.example().vm_id()) * .cidr("192.168.0.0/23") - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .build(), CustomResourceOptions.builder() * .dependsOn(proxmox_virtual_environment_vm.example()) * .build()); * * var ubuntuVm = new FirewallAlias("ubuntuVm", FirewallAliasArgs.builder() * .cidr("192.168.0.1") - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .build()); * * } diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallIPSet.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallIPSet.java index a3c6d155..d2728ba2 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallIPSet.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallIPSet.java @@ -51,7 +51,7 @@ * var ipset = new FirewallIPSet("ipset", FirewallIPSetArgs.builder() * .nodeName(proxmox_virtual_environment_vm.example().node_name()) * .vmId(proxmox_virtual_environment_vm.example().vm_id()) - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .cidrs( * FirewallIPSetCidrArgs.builder() * .name("192.168.0.0/23") diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallSecurityGroup.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallSecurityGroup.java index 95581fd7..8305e0ab 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallSecurityGroup.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/network/FirewallSecurityGroup.java @@ -49,7 +49,7 @@ * * public static void stack(Context ctx) { * var webserver = new FirewallSecurityGroup("webserver", FirewallSecurityGroupArgs.builder() - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .rules( * FirewallSecurityGroupRuleArgs.builder() * .action("ACCEPT") diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/Group.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/Group.java index 440c563b..c834d7a8 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/Group.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/Group.java @@ -45,7 +45,7 @@ * * public static void stack(Context ctx) { * var operationsTeam = new Group("operationsTeam", GroupArgs.builder() - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .groupId("operations-team") * .build()); * diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/Pool.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/Pool.java index 8011d243..72c381e2 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/Pool.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/Pool.java @@ -45,7 +45,7 @@ * * public static void stack(Context ctx) { * var operationsPool = new Pool("operationsPool", PoolArgs.builder() - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .poolId("operations-pool") * .build()); * diff --git a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/User.java b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/User.java index 29930d14..a5169c52 100644 --- a/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/User.java +++ b/sdk/java/src/main/java/io/muehlbachler/pulumi/proxmoxve/permission/User.java @@ -59,7 +59,7 @@ * .propagate(true) * .roleId(operationsMonitoring.roleId()) * .build()) - * .comment("Managed by Terraform") + * .comment("Managed by Pulumi") * .password("a-strong-password") * .userId("operations-automation}{@literal @}{@code pve") * .build()); diff --git a/sdk/nodejs/.pnp.cjs b/sdk/nodejs/.pnp.cjs index 29ea4360..e2e15702 100755 --- a/sdk/nodejs/.pnp.cjs +++ b/sdk/nodejs/.pnp.cjs @@ -27,7 +27,7 @@ const RAW_RUNTIME_STATE = [null, {\ "packageLocation": "./",\ "packageDependencies": [\ - ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.140.0"],\ + ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.141.0"],\ ["@types/mime", "npm:2.0.3"],\ ["@types/node", "npm:10.17.60"],\ ["typescript", "patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587"]\ @@ -115,7 +115,7 @@ const RAW_RUNTIME_STATE = "packageLocation": "./",\ "packageDependencies": [\ ["@muhlba91/pulumi-proxmoxve", "workspace:."],\ - ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.140.0"],\ + ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.141.0"],\ ["@types/mime", "npm:2.0.3"],\ ["@types/node", "npm:10.17.60"],\ ["typescript", "patch:typescript@npm%3A4.9.5#optional!builtin::version=4.9.5&hash=289587"]\ @@ -352,10 +352,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-context-async-hooks-virtual-7fbbe0a919/5/.yarn/berry/cache/@opentelemetry-context-async-hooks-npm-1.28.0-dcf82a01db-10c0.zip/node_modules/@opentelemetry/context-async-hooks/",\ + ["virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-context-async-hooks-virtual-a514f7df40/5/.yarn/berry/cache/@opentelemetry-context-async-hooks-npm-1.28.0-dcf82a01db-10c0.zip/node_modules/@opentelemetry/context-async-hooks/",\ "packageDependencies": [\ - ["@opentelemetry/context-async-hooks", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\ + ["@opentelemetry/context-async-hooks", "virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0"],\ ["@opentelemetry/api", "npm:1.9.0"],\ ["@types/opentelemetry__api", null]\ ],\ @@ -374,10 +374,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-core-virtual-536aac6209/5/.yarn/berry/cache/@opentelemetry-core-npm-1.28.0-593c4f6113-10c0.zip/node_modules/@opentelemetry/core/",\ + ["virtual:01952816289d5e41523317c441cb2fe9a5601c378842e145dd701653ed4b33615b58957f5952e1a5281cd1394f5566355cf36e53954ffd5f405147dd277bf489#npm:1.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-core-virtual-ef813139f9/5/.yarn/berry/cache/@opentelemetry-core-npm-1.28.0-593c4f6113-10c0.zip/node_modules/@opentelemetry/core/",\ "packageDependencies": [\ - ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\ + ["@opentelemetry/core", "virtual:01952816289d5e41523317c441cb2fe9a5601c378842e145dd701653ed4b33615b58957f5952e1a5281cd1394f5566355cf36e53954ffd5f405147dd277bf489#npm:1.28.0"],\ ["@opentelemetry/api", "npm:1.9.0"],\ ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\ ["@types/opentelemetry__api", null]\ @@ -397,14 +397,14 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-exporter-zipkin-virtual-4f773213e2/5/.yarn/berry/cache/@opentelemetry-exporter-zipkin-npm-1.28.0-4fb10f68be-10c0.zip/node_modules/@opentelemetry/exporter-zipkin/",\ + ["virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-exporter-zipkin-virtual-0195281628/5/.yarn/berry/cache/@opentelemetry-exporter-zipkin-npm-1.28.0-4fb10f68be-10c0.zip/node_modules/@opentelemetry/exporter-zipkin/",\ "packageDependencies": [\ - ["@opentelemetry/exporter-zipkin", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ + ["@opentelemetry/exporter-zipkin", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ ["@opentelemetry/api", "npm:1.9.0"],\ - ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\ - ["@opentelemetry/resources", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ - ["@opentelemetry/sdk-trace-base", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ + ["@opentelemetry/core", "virtual:01952816289d5e41523317c441cb2fe9a5601c378842e145dd701653ed4b33615b58957f5952e1a5281cd1394f5566355cf36e53954ffd5f405147dd277bf489#npm:1.28.0"],\ + ["@opentelemetry/resources", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ + ["@opentelemetry/sdk-trace-base", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\ ["@types/opentelemetry__api", null]\ ],\ @@ -423,10 +423,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-virtual-70cc711748/5/.yarn/berry/cache/@opentelemetry-instrumentation-npm-0.52.1-8477b6362c-10c0.zip/node_modules/@opentelemetry/instrumentation/",\ + ["virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:0.52.1", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-virtual-12ee61cdec/5/.yarn/berry/cache/@opentelemetry-instrumentation-npm-0.52.1-8477b6362c-10c0.zip/node_modules/@opentelemetry/instrumentation/",\ "packageDependencies": [\ - ["@opentelemetry/instrumentation", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\ + ["@opentelemetry/instrumentation", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:0.52.1"],\ ["@opentelemetry/api", "npm:1.9.0"],\ ["@opentelemetry/api-logs", "npm:0.52.1"],\ ["@types/opentelemetry__api", null],\ @@ -451,12 +451,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-grpc-virtual-d2bd75db66/5/.yarn/berry/cache/@opentelemetry-instrumentation-grpc-npm-0.52.1-22a7f03e76-10c0.zip/node_modules/@opentelemetry/instrumentation-grpc/",\ + ["virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:0.52.1", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-instrumentation-grpc-virtual-fd76747114/5/.yarn/berry/cache/@opentelemetry-instrumentation-grpc-npm-0.52.1-22a7f03e76-10c0.zip/node_modules/@opentelemetry/instrumentation-grpc/",\ "packageDependencies": [\ - ["@opentelemetry/instrumentation-grpc", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\ + ["@opentelemetry/instrumentation-grpc", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:0.52.1"],\ ["@opentelemetry/api", "npm:1.9.0"],\ - ["@opentelemetry/instrumentation", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\ + ["@opentelemetry/instrumentation", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:0.52.1"],\ ["@opentelemetry/semantic-conventions", "npm:1.25.1"],\ ["@types/opentelemetry__api", null]\ ],\ @@ -475,12 +475,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-propagator-b3-virtual-76927c669c/5/.yarn/berry/cache/@opentelemetry-propagator-b3-npm-1.28.0-188d48c20e-10c0.zip/node_modules/@opentelemetry/propagator-b3/",\ + ["virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-propagator-b3-virtual-7aff7d8125/5/.yarn/berry/cache/@opentelemetry-propagator-b3-npm-1.28.0-188d48c20e-10c0.zip/node_modules/@opentelemetry/propagator-b3/",\ "packageDependencies": [\ - ["@opentelemetry/propagator-b3", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\ + ["@opentelemetry/propagator-b3", "virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0"],\ ["@opentelemetry/api", "npm:1.9.0"],\ - ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\ + ["@opentelemetry/core", "virtual:01952816289d5e41523317c441cb2fe9a5601c378842e145dd701653ed4b33615b58957f5952e1a5281cd1394f5566355cf36e53954ffd5f405147dd277bf489#npm:1.28.0"],\ ["@types/opentelemetry__api", null]\ ],\ "packagePeers": [\ @@ -498,12 +498,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-propagator-jaeger-virtual-0b88e2a7c2/5/.yarn/berry/cache/@opentelemetry-propagator-jaeger-npm-1.28.0-26a359a4d6-10c0.zip/node_modules/@opentelemetry/propagator-jaeger/",\ + ["virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-propagator-jaeger-virtual-163add5149/5/.yarn/berry/cache/@opentelemetry-propagator-jaeger-npm-1.28.0-26a359a4d6-10c0.zip/node_modules/@opentelemetry/propagator-jaeger/",\ "packageDependencies": [\ - ["@opentelemetry/propagator-jaeger", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\ + ["@opentelemetry/propagator-jaeger", "virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0"],\ ["@opentelemetry/api", "npm:1.9.0"],\ - ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\ + ["@opentelemetry/core", "virtual:01952816289d5e41523317c441cb2fe9a5601c378842e145dd701653ed4b33615b58957f5952e1a5281cd1394f5566355cf36e53954ffd5f405147dd277bf489#npm:1.28.0"],\ ["@types/opentelemetry__api", null]\ ],\ "packagePeers": [\ @@ -521,12 +521,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-resources-virtual-2814f67cec/5/.yarn/berry/cache/@opentelemetry-resources-npm-1.28.0-e58d33dd8c-10c0.zip/node_modules/@opentelemetry/resources/",\ + ["virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-resources-virtual-e32aae2668/5/.yarn/berry/cache/@opentelemetry-resources-npm-1.28.0-e58d33dd8c-10c0.zip/node_modules/@opentelemetry/resources/",\ "packageDependencies": [\ - ["@opentelemetry/resources", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ + ["@opentelemetry/resources", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ ["@opentelemetry/api", "npm:1.9.0"],\ - ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\ + ["@opentelemetry/core", "virtual:01952816289d5e41523317c441cb2fe9a5601c378842e145dd701653ed4b33615b58957f5952e1a5281cd1394f5566355cf36e53954ffd5f405147dd277bf489#npm:1.28.0"],\ ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\ ["@types/opentelemetry__api", null]\ ],\ @@ -545,13 +545,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-sdk-trace-base-virtual-e7255e5453/5/.yarn/berry/cache/@opentelemetry-sdk-trace-base-npm-1.28.0-c8c368de42-10c0.zip/node_modules/@opentelemetry/sdk-trace-base/",\ + ["virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-sdk-trace-base-virtual-bf58467ef0/5/.yarn/berry/cache/@opentelemetry-sdk-trace-base-npm-1.28.0-c8c368de42-10c0.zip/node_modules/@opentelemetry/sdk-trace-base/",\ "packageDependencies": [\ - ["@opentelemetry/sdk-trace-base", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ + ["@opentelemetry/sdk-trace-base", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ ["@opentelemetry/api", "npm:1.9.0"],\ - ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\ - ["@opentelemetry/resources", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ + ["@opentelemetry/core", "virtual:01952816289d5e41523317c441cb2fe9a5601c378842e145dd701653ed4b33615b58957f5952e1a5281cd1394f5566355cf36e53954ffd5f405147dd277bf489#npm:1.28.0"],\ + ["@opentelemetry/resources", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ ["@opentelemetry/semantic-conventions", "npm:1.27.0"],\ ["@types/opentelemetry__api", null]\ ],\ @@ -570,16 +570,16 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0", {\ - "packageLocation": "./.yarn/__virtual__/@opentelemetry-sdk-trace-node-virtual-ca901c00b7/5/.yarn/berry/cache/@opentelemetry-sdk-trace-node-npm-1.28.0-cc3e74e593-10c0.zip/node_modules/@opentelemetry/sdk-trace-node/",\ + ["virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0", {\ + "packageLocation": "./.yarn/__virtual__/@opentelemetry-sdk-trace-node-virtual-f894e61cb0/5/.yarn/berry/cache/@opentelemetry-sdk-trace-node-npm-1.28.0-cc3e74e593-10c0.zip/node_modules/@opentelemetry/sdk-trace-node/",\ "packageDependencies": [\ - ["@opentelemetry/sdk-trace-node", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ + ["@opentelemetry/sdk-trace-node", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ ["@opentelemetry/api", "npm:1.9.0"],\ - ["@opentelemetry/context-async-hooks", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\ - ["@opentelemetry/core", "virtual:4f773213e2ca90eee6c6e9e908193db7004308929ff48e6255797dbac99b1bceecde467517565c697dfa4b01eb1159c5b024a0b2b352b44d6fce4ef71ff0fa80#npm:1.28.0"],\ - ["@opentelemetry/propagator-b3", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\ - ["@opentelemetry/propagator-jaeger", "virtual:ca901c00b76dc0d25acca0dd1a4d1133c23444a1151941818089f7776a93c3e62bf05d6cd1aae94f923ff76e4767d5ec1dcbcf836f66ebf00cc7e3e2a05840ac#npm:1.28.0"],\ - ["@opentelemetry/sdk-trace-base", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ + ["@opentelemetry/context-async-hooks", "virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0"],\ + ["@opentelemetry/core", "virtual:01952816289d5e41523317c441cb2fe9a5601c378842e145dd701653ed4b33615b58957f5952e1a5281cd1394f5566355cf36e53954ffd5f405147dd277bf489#npm:1.28.0"],\ + ["@opentelemetry/propagator-b3", "virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0"],\ + ["@opentelemetry/propagator-jaeger", "virtual:f894e61cb0943ef0e35f4312d5e92aaf07cc93522b2616e233df0e1e83df8988313010c6e9a65d52c8908210d22ace945aa3023d25bb7d4f7ae112f5a82f3e94#npm:1.28.0"],\ + ["@opentelemetry/sdk-trace-base", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ ["@types/opentelemetry__api", null],\ ["semver", "npm:7.6.3"]\ ],\ @@ -715,27 +715,27 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@pulumi/pulumi", [\ - ["npm:3.140.0", {\ - "packageLocation": "../../../../.yarn/berry/cache/@pulumi-pulumi-npm-3.140.0-97b1b59c57-10c0.zip/node_modules/@pulumi/pulumi/",\ + ["npm:3.141.0", {\ + "packageLocation": "../../../../.yarn/berry/cache/@pulumi-pulumi-npm-3.141.0-a5240779bf-10c0.zip/node_modules/@pulumi/pulumi/",\ "packageDependencies": [\ - ["@pulumi/pulumi", "npm:3.140.0"]\ + ["@pulumi/pulumi", "npm:3.141.0"]\ ],\ "linkType": "SOFT"\ }],\ - ["virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.140.0", {\ - "packageLocation": "./.yarn/__virtual__/@pulumi-pulumi-virtual-82f6736238/5/.yarn/berry/cache/@pulumi-pulumi-npm-3.140.0-97b1b59c57-10c0.zip/node_modules/@pulumi/pulumi/",\ + ["virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.141.0", {\ + "packageLocation": "./.yarn/__virtual__/@pulumi-pulumi-virtual-8a9ae22411/5/.yarn/berry/cache/@pulumi-pulumi-npm-3.141.0-a5240779bf-10c0.zip/node_modules/@pulumi/pulumi/",\ "packageDependencies": [\ - ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.140.0"],\ + ["@pulumi/pulumi", "virtual:e3ea5596057613f291e16aefd182df0dffbcd648afc59958478e10ea0ea51a3f83e06f13f67e87917b0e48034bc768eb4bbff7fe0fb77981a25950767a2254e6#npm:3.141.0"],\ ["@grpc/grpc-js", "npm:1.12.2"],\ ["@logdna/tail-file", "npm:2.2.0"],\ ["@npmcli/arborist", "npm:7.5.4"],\ ["@opentelemetry/api", "npm:1.9.0"],\ - ["@opentelemetry/exporter-zipkin", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ - ["@opentelemetry/instrumentation", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\ - ["@opentelemetry/instrumentation-grpc", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:0.52.1"],\ - ["@opentelemetry/resources", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ - ["@opentelemetry/sdk-trace-base", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ - ["@opentelemetry/sdk-trace-node", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:1.28.0"],\ + ["@opentelemetry/exporter-zipkin", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ + ["@opentelemetry/instrumentation", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:0.52.1"],\ + ["@opentelemetry/instrumentation-grpc", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:0.52.1"],\ + ["@opentelemetry/resources", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ + ["@opentelemetry/sdk-trace-base", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ + ["@opentelemetry/sdk-trace-node", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:1.28.0"],\ ["@opentelemetry/semantic-conventions", "npm:1.28.0"],\ ["@pulumi/query", "npm:0.3.0"],\ ["@types/google-protobuf", "npm:3.15.12"],\ @@ -744,7 +744,7 @@ const RAW_RUNTIME_STATE = ["@types/ts-node", null],\ ["@types/typescript", null],\ ["execa", "npm:5.1.1"],\ - ["fdir", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:6.4.2"],\ + ["fdir", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:6.4.2"],\ ["google-protobuf", "npm:3.21.4"],\ ["got", "npm:11.8.6"],\ ["ini", "npm:2.0.0"],\ @@ -891,7 +891,7 @@ const RAW_RUNTIME_STATE = ["@types/cacheable-request", "npm:6.0.3"],\ ["@types/http-cache-semantics", "npm:4.0.4"],\ ["@types/keyv", "npm:3.1.4"],\ - ["@types/node", "npm:22.9.1"],\ + ["@types/node", "npm:22.9.3"],\ ["@types/responselike", "npm:1.0.3"]\ ],\ "linkType": "HARD"\ @@ -920,7 +920,7 @@ const RAW_RUNTIME_STATE = "packageLocation": "../../../../.yarn/berry/cache/@types-keyv-npm-3.1.4-a8082ea56b-10c0.zip/node_modules/@types/keyv/",\ "packageDependencies": [\ ["@types/keyv", "npm:3.1.4"],\ - ["@types/node", "npm:22.9.1"]\ + ["@types/node", "npm:22.9.3"]\ ],\ "linkType": "HARD"\ }]\ @@ -942,10 +942,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["npm:22.9.1", {\ - "packageLocation": "../../../../.yarn/berry/cache/@types-node-npm-22.9.1-b841ba9c2c-10c0.zip/node_modules/@types/node/",\ + ["npm:22.9.3", {\ + "packageLocation": "../../../../.yarn/berry/cache/@types-node-npm-22.9.3-bc9b3f960a-10c0.zip/node_modules/@types/node/",\ "packageDependencies": [\ - ["@types/node", "npm:22.9.1"],\ + ["@types/node", "npm:22.9.3"],\ ["undici-types", "npm:6.19.8"]\ ],\ "linkType": "HARD"\ @@ -956,7 +956,7 @@ const RAW_RUNTIME_STATE = "packageLocation": "../../../../.yarn/berry/cache/@types-responselike-npm-1.0.3-de0150f03d-10c0.zip/node_modules/@types/responselike/",\ "packageDependencies": [\ ["@types/responselike", "npm:1.0.3"],\ - ["@types/node", "npm:22.9.1"]\ + ["@types/node", "npm:22.9.3"]\ ],\ "linkType": "HARD"\ }]\ @@ -1444,10 +1444,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:6.4.2", {\ - "packageLocation": "./.yarn/__virtual__/fdir-virtual-04b6228803/5/.yarn/berry/cache/fdir-npm-6.4.2-83cd21b34c-10c0.zip/node_modules/fdir/",\ + ["virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:6.4.2", {\ + "packageLocation": "./.yarn/__virtual__/fdir-virtual-c7834c9bae/5/.yarn/berry/cache/fdir-npm-6.4.2-83cd21b34c-10c0.zip/node_modules/fdir/",\ "packageDependencies": [\ - ["fdir", "virtual:82f67362382d135ea6a7cca9421c5692e90e5b4573921dcc66ce02705be41f3f0db514e75241300951cd969e45229bef500f873a505408b00e68044be8ddc487#npm:6.4.2"],\ + ["fdir", "virtual:8a9ae2241160aae0329c6ec717fa85e5f5de91815a362afc6674ed9e3acd53eb6e499de011e96d90b892f0f866f86a8b0fdbbbbaa3724029f6d9d587ba0ca253#npm:6.4.2"],\ ["@types/picomatch", null],\ ["picomatch", "npm:3.0.1"]\ ],\ @@ -2527,7 +2527,7 @@ const RAW_RUNTIME_STATE = ["@protobufjs/path", "npm:1.1.2"],\ ["@protobufjs/pool", "npm:1.1.0"],\ ["@protobufjs/utf8", "npm:1.1.0"],\ - ["@types/node", "npm:22.9.1"],\ + ["@types/node", "npm:22.9.3"],\ ["long", "npm:5.2.3"]\ ],\ "linkType": "HARD"\ diff --git a/sdk/nodejs/.yarn/install-state.gz b/sdk/nodejs/.yarn/install-state.gz index 752dd6df2c2a82c237c856ec2771dac62b89c020..c9de574d9a06341bd4601641fd260f5712be6f31 100644 GIT binary patch delta 224345 zcmV(yKKlvZ}$KU?=pMUz}|MdCuAOG!-|D*r(%kO^v>Bryl|Ml~a|Lm7v zfBsYd-H-qHFO;nAP}8JSrt40A{UXoZ@A6r1pAbH2^Ct5)-6}hOvSvC-kH7x% zcYphz{P@>@{8LZ=>3{v{kH7zizyJF#`tdJ+{SSX^`p5tD$G`l;?|#XjfBdWdKY#s` z=db_c?|%CA-~IT1ul_gx<-h;kPxZT>{{G+phd=(ifBc(&{F@*D@n78Sx#nIQ_jS4K z5})$)RHNE@a#6?aW;>iEubHhQO#3`ueKTJ#E27;~^ej6m-O_V!-j|ncUC&pZ2)~z9 zG=!e|+(+DBe!R_IzT~-^6xDgQBwkwb_&YDmnftZvwDxF!p|_16KPrw=%NsKl*CdU1 zuDbUfTa+_R@&Zq@?ml;yAJf{0=M*>3(%W|U%a7-Wh2FE66DOa_tqs{_O8Eq z8L?hy#bTZ~#iFcwtYc0)?_kS#M(;T9)_qEQ^-*o_ym2Gl+Pu$}W6R>4J3VId<;Qz_ zcPc)ZV=qXPK>|Kg<3*piJ}Xxb`<9FUzG=xE79l@vT-Q~?1)tHnB0{>VpRrqR&&zdb zG3P$3h4hwH;Nv$}e8JA=UFerIOiSnbS$7N7mG||>8@}2*hAQOQabAv-(gJCJvF?^f zhuub{n#1ot!?{`O_2GzkRDC&9{5L<|kN^A+Ki5C}zJJ?OF3xj(d*xxSeXNIzL}_iE zw}j>B+@7}Wr}8evkDIjb+LP~G6Dy_MYt<^M;5Is}eh8Od`t2Zcol4P6uRe93U!xkU zUH|`2`Qu;x@#kND{oPN${OZ4d|NW2u=BJ;l|IPpVXaC**=TH9jZ~nOsqE$p;TSqN% ze)g0k_hVnRMk#2z9-Wjmj7P+IIyKblekv$-%q*?m)!R;-(h~ChR;*Vl*H>=gp?)Vy zPuRgPJ96U-^yODMOVh6|@h+c7S87>2b4{ICbL6SF-o}f1AD^wMyE|!r)@_xedGHe7 zy?hIwS4TK6-F?@w*SfX$Yo^)fvd`TVJ2lTaboM>p9s+JJ)rh{-l{>dD;_@qU*`1C| zsQHbvySDf~*T`x=U7;CQui9F;2Hm!~w}~wpzRxJ}3Y?`8nd_d6p1Y-UwY+;uNR#GM@e08r8ackcai|5-&FK51YtS#H6&RDH$ zeWN$~^sMyQYffPzsI9X$(Rq^NxaqgasI*&5bA4lHYPs_LG+btzWE9yl_hIh?T zS{_Hy>dKinn-72cXd%vHr1Wx+J?d9w zcTLMVKD+Dg#l4=m-;=l52;f*u&f9Y7NEgfSnyX6YJM2Y;Xsb|2*(e19xL&G==# zXH{i$dg-+1A#7H1ql;ce50h?rnxsu*x#rt1r_Ey46VLhHHInr5#J;lls42}QxxTeI zo6Td@U53{%_cg&z*vYn?f1Kk8o8CC5tgTG8I>&ee^C;Js<8se&)xGfDu3g{0)|KM& z-P%jvTZb!gmY8mi4v(>OM&#P%QyMwvzWuNjj_g&R6>p2Q~byh_4~ zwb$6$H!e{r+3^>8blYz~TK=;AVh6F2aZX!UIZ5u+2js~frMuFEf4)|n8@%u#AFN&V z&Yg6_DfFJLeB$QU4^!}YNqW>DC14u0T4(g!p6idTC&gm?-nTjS-sEeluRjbz z8>6TAGFo@xe_wu8C3)?4h1SWta$WU1fw6-ybplT8wUeDmU&>zY-t7)tbSd)(jk1$3 z2qJ%Yt8=8I`)s8ZbR~~0yLD0zw@K#O>G&(7;2}wTi+17fO#qECL+7wOqI2DV`|NXo z)a>&{dSyAiE0Oo&*U;oKRnp#1zYPJWSLMqP5_}_um`^eHu1Q z#B$QaNNIU@p76Vp#Z4Y}pQZZ+uj!S#J!OBctn-WxSulXC?wG7|zP>-$-7bnv^hB#? z-dl9mnZ3i-U~!vwwJ>L&%ARnIYUe~YqnyRu5hK6;4DUUe;bCQkz| zbX4X!?z)z}Z$rR!dpVsW!tQ`WlWn=;ZG67@CTC#i2S!N7vZI@U-}X7zI_2_mGQNMM zu{x!<6t;#wIwVhC-F6mEPty-4p`I~HvPA9M12)USZp-;%+cKGv@+w~9VdEF~c3d~Q zi}Gz+_Tp)tz3F&}$K5-*%Vhcp_u02~=pH{(%zMoZ?MSvWPh`{U+;K*#*OIS4-m|x< zZJ)plWs$er-ezw-^FaXDGa8chPDy{$ISLTeC#>D|tz+U^kCR^Crg)1su`17YP%$@o z)eG$TJWO(j>y`T6tdG9UPY|DH9Mt|&C;e4c)ZU9uw0*b)J~pxWZhxJ%c1NCtvvloH zJJ;LBpYd;>oS;GoYv0ti-5GzkXtb+) z?TLMLtoL!2;JuF9do64AbE7&zWR{U(?>wL>^oT@z1!M4844_p@dCuDuAT~A`6~*-N z9$)(P3AEMqVik=AR8O|}-QgtX0}-{+uGf0@0D=Jc*LL69xozaG*v@lH?)WPorvwIk zZ$1k3wd5FX0OiWJH^$pVxtM>O>z(}ecTX>=cOQyU590WPRV%%XEcQr?;;+ck@5=z2wVMbj>4p*eng-)DcRtL(j1%Jlpx z_q`Wk59+@VrtX?$l)^5AgBe(@&Wi*CvM&A0ns$ijeR$s12zDs}J8 zj79uLkm`GBakO;3@&tcbbk*_!D$SSl`N+UIoqZ+jt?1Wpy%d+GJ(rC2Hi_1mBiZlt zm0;kK9$qfrUUldBzUH}(_e$#f?&>#n*&{>z;;vKg(0l400?qIiEjniQicdv4*?I`S)#<}Z zhfbcP7Z(RF;jFMn;7^a74p#BWXg;&YG`RM{bFRK8_Mw|c-c`P}CQnP+8|7D6-kPhR&0dL$#=isbgNfp}ni8Th`fz)wM3o+sWm}Ybxs4*$LrEvF=w7S5Y=Ud0^1Ly+54S%DJS@jb-bc>gPmT zW3IQ;KJ>b+uP)D$ee>cHxsAIn0^Gdq&<`@aPo;|M0tJ73&g(0#_>}zA0bIqTF77^- zak}5~Z@-*?3yA6Rn>u^-603*db64qW02koT?z$#2bFY^<-nVDYFW!kem0suh#d4vv znq@oz2-|-B=uR&>{r0ovkAUgl_7jPL@XL?areP`<^nC8U0Vj>&V*_5T8d=FN_X273 za&%)3&^&)Cz%BOZS>+j^-eV3P{hb@{R6MW6wL-jxuN+n(Z{1cp01CFP`1Z+pb1}ss zh(r|RkG-bYU1U(T%x9{hGs-6^_R8e zop~;g_M@uH7jWbHIanL6OT&RirhtFlUwo%jLhrMC%4#v~FmWsAW#Z3R zZh$EhzpD<&B^g_~wDcD4di6;2DtaOJUPutu@pzNzuLG;d%QVzBEha_8j)bMF-@45bf)yqh1-^1Y!Se zYEysn?)45X1t8ozW4sJ(KA5ffofl})cES%Px;!S^J2#}QajAMKA>+@ z%@VyCRQ_D-@-4v#>NGRGd*!`n;l6Wz)iHmyFDq~AwH;$k+{Q^;q{9-wS)}$C0`yn# zqZ=<-!f^_#tK*9qi!oB#1)OweRe|R+`p93+_ZtH8^hTFmjdS!kNoT04$EnfSm{~dw z^(r~+peZh!-TmIy!b|aO9H#GWhrIASt3I?Ilynrpp@m$`51*#=ERMC_%_zQQCc}S` zOHb5bX@Xj^p1#m{`_$=@1yNL+;MV{^I62xK!0BR{F0THzPPBuAmO(Wj2hh1kr=9W# zNv~ZU@$QV+h6$xXzMeXd*@k+0g#u%7!4wMwkgfJr%3`j0B+M9zqHG6g?|f4PIC*g{ zzTYM~)eO+dJ#D?WgOis{lDFk->pETyoK0`dl@D_+dG9ch%k2=H{6lj9JLRf2>C8w2 zUSn_WzOg&)X6BoB!I<%_{T?^5y!!Svv6-so@jUZK1~n&SA(y=bAmur36f3$HpPjGw zIjkV33F@D7-r4&3Sd*X-E`KB0HL+d-rr}=h;g8>nE3G8~4)ZO!N_$J|Il;C~L+cu~ zo_0y~(~o==KKrCIVkPXV6e;v=nCY$wJMZdqjZSE&rMC6r={S=&($;N><)O7n3h&nf zGFpe<@mL{!`$);!_D;XzO6WuK2()N@r#{Oq-qzfDeBqCHMM-@fMSqhU;{~*tSZ}P; zaxc>o3SOsYPmUj1S8Pc_jx9DPX2Zw%wIUl40Mlc%K~uC-R5s^5ta8bw0J(| zO$AXdROrjI@5|7Z5o&v5>)g5ej`urtd?M!BjeY@o`?Pt;kZ09LD`K;HT$bi_`OOE- zU-p!_U&p#pD|j}UEn0gpK@vV9ZTdKi(zf(HBJZtroK@a!{D0uwwezkGUCFAbpzEz7 zbA8vnt2Aac*qr1Cz)CO3)#Pqno4yUlKoXc*baY^F2)p>f=H7E^fk&dsU}bW{6OH1kjbQ{*}Io9!+aO+PO~#ztuPBk{W12NsN|PN8Pd4Q>n8qJ#}z$HW(*fJE?kc ziD_{>YyV6T3h^@W%d@MUJ$>D6);8~UGUr=Rf~O3o9L;mE&6WZ@_561Jz)_wzuXvJ zBmex>1FZ?O7TX&I8?`QjjH}mkk9zO6C^z?GmtL(W`k(-gj8Y-lQkL8@^X)MQXXGw> z7-ilSOf~P_+hTT9V8%HVFHg=~*U9xL>tyP)uzxdWx5$Jo4%u+m5w)%tkbPN2$Qi$u z8@lw9q4+0K?5?$G@uI&LjrQF6t~=)Yux1eR*0()U?hcsEmbz>`FYTHJ-HJVZFw>aQ z$^cR!djSc5ahc<6==l22Trd209e^tds*7`%t#Vt;L8;#cgZ*r*qjGHX1U7k#IPi4N zoquLp9p!K6B*9ono6fbDOp9!k*sl->L`Z@ppbMJ)L6E_7@Sl}?eYt2x%uDUygZYR%E>vws;Rx zU9UpsaMBw8%|EJyj`IB~1M zJW7w2MMg5YFIdRsjh&~b*3lP!;g*H_88;E!3c`~^b6I4)u1K{OD~N{wN(+bkXzp!3 zZ^1PPK`xt~5PQ*hF<0}hWY=IV`WQ!S)qEfeKYo?<7?1Pt;p<-(hn zkUH~|UIt}mj^?Pz(rtGoouV*F)`v~B*3Jo`{uWw#SSq>ZEjtThTbe-4X z5SPnIuL&;8dVIRxm8FlNQKt)4Fy7h%B&pMfo(jtfERwlz^FH%(q{89We*4~-jBkHy z*mk8fSZR|QQ1hZP8+xZxvW-@)_^?Kx)(W^lV7KTEB|eKlR|~d{uM^KX&-Ag4e zbQ|@i$w92g6951+pW)8-sg~Pt@z{UdJ9qnD3Y|`O#cH~8=)Q0B7H`)!dMy;2S>Ryg zBEEJinAbhDXr+@o({&KIkkdTEnv9PuVF0BP@s0{(jM0scoQUqiti1U= zz7wk_9YVY3>ee;?0!4nf$uQjYnsbOxXceypLScmT3D3L zi&>sRSo@xQds&ioT}S(;&Vkzpvb_Tol^`GiakiM|=(AIbF>ZhR(>t_!^lg8-Sz&a2>UEz3wCniU4Lzx@ zJU5VM^Q;yiMCeCV-g(>f$*mFG2hSRd)60$|UPy_9n5$PEyB3Cb`Nd1@`Qgjn*KOr_ zW#aBMHXDwM=RzJ|8FesW(eAB0&68m=6PrF(c0?#{#1`0u|=W$!Ot9`daF?()uycVwq z7R{cl_{d!WTc{#w&TN$y6hZ>Z3c{(Yiyg9On%ew6e0L%(vA+G?+Yez|=LVt)vD-;B zLth{Y!RS%-R4>BU5r1YcZZnt`hmIL~d!zu7mY*G`b~L9pv_V1V^+(RPp@02=;85NM z71sIoUd!j(lLZ_pe;~B5)?JUu;Wb+WY4@VBVN7P+8?t6(cIbiMGDqLZ{(stJ5WZCGr_UaNC*|u)(pKX&ZEX1ti7?L2)wn2U2U6mY zLHTIq4u)!BWVN3qRNwyY!GeoeH%$2@r@2ZDi3dP@hH#UUe+duFD&8aOioN>@0t(S9 zh`abGqVLLh`$?R)WMq5p!=kg~c2%mwEI)-Oe1rFRTljq2%!;Kg+{V&61EHaiJjHBj zn5LF)@ijyzmho79@XFvP8yOUkW-YNzFEM~s^y!@3GeF*i;udU_2hjo1P(tUaEik^E z*7E*#T;pthe@#~zTHgu8+Ues=Gbrx52xsM79z(+ETX=D&ax{988vGAJVGrqrhvTjp zUBcYpp#Ux+@pUyaQ%RScN1)0u90g0q*Mn|lV=*{MX&;C8;R?V&4~OJAL4_0)I0Z%m zNt!$e$*~J5$O%XXn@@u3z3f{{^T19BCjR8*$4W?se|u*=Puw-J$z5;3*Yj;KqUu9R z8msxXPs*F|sgI9;bJ0cqEggY>l^as~x0_|d=dy=#TzVz*+jdwtD-V=~mjiOHI= zhe+sK^bz=yZ%X9*LZ10;emaTnYOo5%aE+G@lz@`F?gzQMo4UJhTG47m_DzR)E;Wek zo7W5?RQ#slKRba@4El29jWC4vyn647c!B-h_-VbfF4dC$`pkKk>TF)O^Qs(Y{-j4y zj>3K=T~Hk&7}|Gf6;g64?cJKFKl@&h*O(R$9-o7d+t>z$*OPu8V}D2+<0F9h>I3P| zseDw|V@p` z(ib!mLSf7=_{yhmjy=v3rCa(yfg`;8>mkz#8FJO$GfReSJ2+IFoKJkQJvy~_A`@-) zns|E}r|bd5v%Q#c|VMSlQ-`8LN8=>nrz^i1l!XIgi|O>_i_S|q+NY=C<)1j%>3bD1H`EhP+e-H0{? zAZkJpCK zQe32QQ6G}E-nTb~x3o**)lCw@l?TmA5PxUGySEGMbgmtL#-9(vXbyUoNuGt0r#s~xTggKy){pR}FLw}s= z+b?G;V|pwh1@!k4F*}b+mVZ)CRvB`2w;{_6oO|Nyv`#eKk!Hp1$S%6?&OMzE!a_Rs zDe8$j2UFW~PD|Uo8xfj32!vIp?`N9Fy5zLh&CMCU)`QJ?U4)aXO&BusMu7^1|B^nReZ^wv*l?Uw^yzzx-223mTH1u%^IC<>1W+OcgtJbzFh! zgsj8>iV1t_MqvKJiXL6aZeW*Bs%Bh>kKZvxRT;SFdqdX^^wwA**$4F|8(mDz&xF5z zw2;)u(b)73t#c55Tt%cj{(+YdaG&uDn-|$eDC;K_6MBJ7&{M7WRALkip6tipJAbJE zfK=yGTm$CvAr&WI53;}a+`XM3Q~EZ?07UYN`h~t_FjDU}RLR{+zph!y&bIto-)2-cSe|F77?P$8rQ@g;*??u*0&TLfJ(gl zNQy)2**f-hCA^+1$Yir2RL6webK%X)d9;w=y}j3X)j;8)VaT(E_2@qEknR>B2RY0( zBTK{PNrV7Z^E6W~SLTg>)qgsSZ(K;g4yVaqe>`2_AjgsQCM~FFx{2@}lpAb^Vs0a8 z`KWBX#Q^ISu-T=9dO!xLP{{K>xhf1VBM%*FCR$klFKF)&{){_l4mxSP;1BS#zMexN zyX#>uLm9%7A)g!Hl*S=*t7SYH5S7MF%13?*#WvL z3HyCV8ZtyQQ3&zvqvdRdh!zVEyo8E|zm1IQ1J?Gbq8=|#!{y-k5RJkPs4p|XqeQ&k zZKS=uLPgNUN)+DLj-WL|)Z3MCp!7N#h~q@IuU6i#3;k`J;D63w$4N*WsPfBWaW1|w zEKGO5LaNfJtDzOL^lfR!NSqrf!Wgj>VSY&8^~DUEn@Vt%BkNS14Vx8bergo+ImQ;c z{_T?!z$-HKP$dHqST>qRI3u2KK}Bi@qM$791Utg_DE#<(ad=0xA|*~2I%LMsm1jD3 zuu&D-=8$YqA%7?lUJh&WCtakv#%S_}2cej31HCL|_0ynt1g)w_oO%w$)PdGG z3E9s8(FMC|nj$e@!$9P*POCi2S-V!#AryR&E4KahIa)QKk=dO{u7IBI>)g6yfJfb? z_@jVHk^MHTmU!YoWnB9NT%%?{)vP-WaW2ot(C_i~Ab+b~KNc3*AIB-;md)NrD2Hjr z_b8+=xH^lLAR^$|-rwf;)?!+F?RUU6l&rX@{nfEo`oSCG9z>Yjy#oHl3#|$y5w`Zl zN9RXxm-;n)?yxd!q%B*XC3A<+$i-l>A*YMWbI}l#4xw|+2S+L@;LeP`#qa1- zs)ybS1b@e)(xUd0ol`4b9m}Kp-2!ris?p+yvg5lGJbNW>L(+@*-fn%vmAcVQ$DEx7 zbtq#ahC}n)8$&$>J!{aGu1S8QwtTS8u6-IscMp=`4B4D$1VSbu-q(P{@vUyico8Kw zY_4JZRU>p^J=E?Q!yV!8?B#vYU?QKUka#Zh+kbt~zd3!^(F0SPc#mP572E7yd!Ms4 z9C8hm;jj!|Sri(>6^n#WXS0q+qYe=(_|Jx|*)LcIg?4Mv9DLRGtsI}3cidNftjBA8 z-+jpv>fZd2=UFmh*gfNF*KlnxKhRPywEYHI7wj)=OwU5X3G9hcsu#Bti>9 zVt>cv5%Zh3egt4dlYD}rR-~RT+fUFLRN2hr^+6ObYtl4=M&eH?&c*e%p2`-Ke zKIs!Od|vTF3|1a;LSo-K_gNgdbzj4Yv}Caqiq&;=UzC5?h$(#h{MJ7CPj&zP^9^P6 z(XGhlZLpBSyfyO-y7fJZ0&s*VuIn(QeSdlqkaac`g*NIrHL!Dg`b1t3&1gnNjGZnW zz_@EQ7xRr*ko-XDf((A&G5fbCoBmd;#qAO}0z&c-98c7T*OEL2|K8G2RQ{c2#MB%? z>9j5IN~~xhD`XO6dJ_yf{K^`BDhCV^mXN0M4l|@0$>!Ur_u$X#T=aD{?)`M;xPOU- zU8G;@%S9gv(Z(kRETvKG-t5V|kp&5dBI4a<>YCmGI7DbSQJQnlV-v`@3VrJiEzg5% zE)Qb(#ZnQp%wEu*eS2d7W~aU$)SG9E#_YPC?e7*tP@RdSS|q8rBNEvu?~?T%4HpcH z>%&ko3cLrf{c72JR>J0wbQ4%os(*NI>UoN6V%;YUcE&s3CZESp4GP$n`=8iLduyz);^O9i>$Mx|!?<1jhgn6>g-XC1-gG1{RYYi?@$JOr8Fq zUlo!$-w*ai)gl_3&hyNW>YFp`q^e;Uak|k12&^E58{Ef}i3k&jv9{r=w||B|8n!Qh znypw``EsMMR8XTD5NpA9>3c)4%17TAov(-Lw+D-+S(X zG(*%cO9+@ueua}>*VRFh8=e~^KjrJBhraa2UA_Y8 zBoor53)uDf{GaHoe6C9#B^O4TvI^je)NwQJ_zIlFmLoW!2qPLP&}ZW8ydI3cfJC~dlofPJ3u2MssvO+ku&kg&K@w%Furf*ux=vCK z0yWToayGGj{nN`fVy$ztXTuJK>kLGSb^=@xgvuz@ctKQN$mq;S0J+R9ilNU;p$#!4ZHkF@SjcoQVq=9hCz31I|?)@G2tRd%<&$ zP$(879%Ms6?593vF{OhCIf1r=ilVA@*(nhx*&CJUc;}%FY!tT0`SwWdC{bZW<7w3v zhwBv-qNh8DT+Y3?nT;Uko&O3c6oKNcm5?wPy&PT_+utfp$MA5rHzew;*;Pb#9 zKni7(J;P;vcSxi0XVH!udO~G|cdy>JNUhrI6HR#KuYb@}b#|cj`*V;zL4cYe&tV6G zj~DM9r+h@Ap+KuvYY?puT!K#X0W1cAq>(@=Da%yl za=tF~zs_iY714Dse*5==Jh;!MC0u(|oPA*I_4^6==f;iZacAHKMx}4^L8Dy81x!k` zU}O>4y?+zBI6^JLCH;gGFfgZA8x|G)`o+K*pjCU%x^Uz5N4D<`UlX$MO?IQ(e8EYB zWz_^c3Z^VDW38yER5}@(P-Q6SLroC6{umj=NXahyoLBFHSYkhDS z;dS;Um4RjuR$G{qlD@8lm+RWJk=>i(ejvU_=xT1klUgvk0bR2dF)aaq(Er2RyX0E8 z?C5p2p{iYQ4}2@GxIjjb@krNHRzY0|MvzcKQl_9333Cpno?F6MJ5U|FX zCW3f|gNaIgM&fRGDVA`5Il}Agv+TCZ_>)*D)x^gXbcNdaxp*t&0U%q@sq;$=NHqI^ z%$oW(=YEt#mPf6X2hIJ_D4z^@Z&RM)_(`0XpNcTu(rD=(t`j=LEX*z9rLITgH=60q+5b($TWkx9444Kb{PUvxFu0C^lvqDn^RyFF!f|PWjL5 zpU;~EWGi!~2MFiGSeQ=BG3kAPoy5=-JpfY0um0 zY3Dxs+KcSWL-XaT%Jp*e{g)r0f2aH>=h<8EN8b%2mLoD7B zcs;~C`Q~{Ggze9*KTUlDOQk2&&@E4t_MrU`q56bxYpDyk2X6qAXE{mYjx%FgYq9oN zL>~I&T;N!LkLDj-vkv{FhC5$WTXb?J*7(}l$Pn(oUef>jKBMD~r!e84=wTdq(!Jj@>n;({8!=40MjuJZ&C?kh?3vy-3_RU7XbgoL?0Uy6r2;2<*D>40 za4Fx+7RoOacD`O_@lwd?00PitXC zL&MyE_c^qIC*w|p3`<_$eLdh7i=yFp{5j_&CV^$@cw@)gQ$qVOH$PwdgGo&QVy!88 z^2wE1<%oW#?UQ&Z+9J{X>j_1!`f5;79nDE^V^D3njucuhH9SJM-4|qkJ+=WsM%aS@ zb)iMRc3u<`c4AQ5w!7#HAtFYlTA8_RAKr-^HSgLijyfoCQCf3cir15Bf zbd(K2?SERQJA8W8O1pjVv0d}UKKynrvk)D>o(`g?cMo)Kn^j44Q_ITJ$6AS>P;2#^ zcvNx0tx#5!ea(XrjaQ%8I$P{BJJy^7$FKC@QPOyUxGrtCHxNs^-#a-bmD{=XbJBut z-c09~7c1ppKDikP-FdC*RI5$<@V6f&5j}D1*XCZ#A2YqC9!poD^rq?Y9dp(y9Wt z`sG#p!^QJZfvf)5BKaeF3y&Qkg3FDD9h?hhdA*(MvdCaA)qfsU;$EugG9UGSwAL3b z*S^?kS(*h;fOUG{m9A!WtDZjw)t=5(D!3HEZ&4CJ=7&x6XV(TgXPu$o9q6q zec0M=Ndv?!Eg%=v$8siuyj~Mmy~Ymz66Ny$E+?R>=Vl6A38e%lAn_n zPR3ht0z#V&<_vSRD~JDUuSoeI$adke<~@D8bzfAqJC%)hIgLwU=MxxzXppnIO*3Qi zvF2i!d$Tv4izD_9>6=5|OjdZYgq{RMuiH+iX`` z;}U%7*hcMixAk54Hd(;7NQj2Qi_gK|`Oq7@>-9c;D?65cat7JNUmwaUlCE0V>;{oq zl8j4=jJ{Eyv@~4Hm-}CTMIv&6)CO+H?r?ox z7V6}!Yv>238DmI*H*jFk{hJ5UThv9Bj{9%#KR>lFEwh?;45LDSe_Om73{+%nodeC? z)VKwY_2zhd3j0~bF<_Xs+52c`hpEfA?dn&+N^B6UZ>_fbxB?LQz{Nt^$6s+0cB=97 zwUJ@CCew(?l+ouNkksq|?m{5J29vq`amNK>)mQe{7;;`e9C^4n1a5T3712@EJ+Pkp z1cI9t_xdzQpCSc+&s@SlU#+Y6*FPRe-~0TH`Nmcm({C~Ufj750_I)hZt z3_D493`85{hZZrKoohtSt^A-61vz@^txhSL4C2GVw8o-^wmFEN-hTb#&3m5s<-Oi6 zG7Opf!U1{7*Nh-c*(RpaoNWmlD0-tRIS{*aB=z}x(E-kX-0Pe;%>W@r3(GV;XSYg@ z4_b9BSupK7-guMz`o?fBN%qwq;Rd1uyC5w;j;q7)JcA(acx06ZJSl2Pu0To0<41XoP7>qp zeczZ1wF7d^5qNn|9fcQ6TZB53|J?sVR|-}Rx3JNF_Sx5R7oHQCD{YGm+c9>Dos>Hg znQk9_rKq4E8uY1rLRdD_dk5HqDV+h0ERp>^B`6xB#Bid&|y-YtQ{pL=kt$O_M~ zY)2%2%ZygrRvtjLzy9%FezrO3Z{BtE=r_a?*>)fjbQ#jFw3%Rs?)x79j6=@@ATRR` zs-}Uhj#Kl4@Frbi<1c1F+;*Eo?%cwjbomSiID6+kZP(9RZ>1eCxqa94A|H`we|Ok{ zrG0ikCvP2o`OLC!QC=HivkX=)fu=^xkln9;O#R&K^RA6H?CF6%f8iy2s!H~}@)>K# z^JYJf3GNmpbDoXZ%+%4a&6(3(si9yF+^&95>jI8wbmOkBOmFQ7uYoZ}%+%gEh+eu@ zPNeXjmt;N+G&^gIw)V`qB~Z6--kG(3{p75vHwIt@U-e?YEwXNT!`iYE$Uu`%4Qb1N zbc^*_dA>GVLVgDVk4m}iyPD3;5dqy2Zx;}{d+vJ=vwJ&YI^NQGa;L3zw4a~PS_U$* z2RL=JlvRZZGL@?6gF>VJaq<4}-mTqzjOxY4KUlQaS9bm|Kv{y6uTmqJUesJDLpwC4 zGwuWac8QJK)0cdu?dOjc&@t>F8}h7w^DVKWzwAx)1vcPkj2gPa%b5GFr41m12B)+lWMQ+*O4sqtS(FS~w_X+{{Cq!uF;H%s-3TjjrjQNP-U_0` z=)1+4_P#0ELy!U4mq-2fLYd<75YydGMAUb`>~I}2*m{dySHC9YW7&{tg2SPI$hjV$ z>XP!{~jr zf=`o7+pHV4RanYlE&UO~R+GS+=0Csh-OIVZWFFLji&6BJrV{3>7~~=%jk*VRL`N&{ zrzO~TzodAVwwR-7V#;nknTaNU@O!HpWP$pQae_~y1hk;upr=z*bx;SJN5c~{p~8NIUc!{m^9rGD>1;`IeY-QZs*23)7L3j zkKdj}36@yrMKtsGxAluEuO{(MjXp*D3yLWtftEF~!CdG=LF!KFW13ihFJ&rm*UgOD z`wl9qMhNMxG&g>RRWh{Q)Ab3JfB8D$M*H|u>a(-t=P!m;llW`&uQa92VdGoe>(O+Qlw{&!R>&LW?vBi>_BT^?vAB93j+lgkas^#W~`zo@F_=R zwOIbK>yd;d(HW^IP1KS%IDW@(At#O4%P{VtBc=G%R)zCV6?KjSXG zHu}l1NlT7~fN8Wo90-(y?uvbHE9lFwthB6qe0leio6kA^!Q>Ri4D7}#N(FmbZ0t&)^&W29QT4_ zfA&Rs>H<-BekFK9PyC+lwO_WyW0GeiKuhgL(v2VQQ<~y}hUr;6Q=J+6bNt|i2R(jGSd&>_a43Hwm3M^oR?55KoGW>dsd+aoN(BLF^65?}<^1CJ- zoH#A&8q9}?#`K&@-^u&@+FSePqgp!m>hdnX8E+Ni!Qs23zlQ2IuqaZJ-W^IsvM+sa zyZDTsd#=Mj-ruW1Ghr`DV(k21rDg`%YubRq{Vf@U*F%ecPL?9)8_w`{b5{az-A~g1 z8q1cq4F`z^g|EY5J8&mvH^lT+I%?bdbsahxn$S4tpNEde`4b|ZCwZ(8A$SB(XT4&L ztHMQsdt5Ez$U$KF8pf%&;Ia2KX0@01XN$hkCHrK~veGtfosjLz`@DL8PPIHWXJS|j zaGMf~sSo9UC(t0${KXh^?c03efKe7m$aY=F5y!6B`k7ieJ0lG+iE^Gh{6riggXQ$> z3wL*7?`vm5uts@duYMgJ*nOe%Dru9j*Wm-U9AHZy;DDr$T{q#cZ2S5(fGzuo)@|YD zX{#4B0ANeH# zC*Sw;>ul`tQK(TG@6)YxT2C4nobrEaKhc^7BHix3!r{QtO_ry&^+!mrJjC6?PtD6(grH zy0>{XVE!*@t6gND=FRqtT#mVq!J9NVLopHhQe<-}Rq z+c!t9+^8eNsRkLhhcnoi$iS-`FK^a-Z?v0#2;(d1r3cpOB@OUoW2(djaQtGZdly&`@^knZ31(AeI~eFU=tgr`uuKx!)#4H!(pDqxfFRL zL(nf=(SI()Ts!jm6<8VIA_VU}_stsG=FM7nveAsB*|j=uD90W+#wZTUSH_-fl^;_- ze1whZAJ{-?Hr9$m(mz$Ut4%%euJz1+A#OW=J%pE5C3{C_UUyZwo6$3zS9L!b#DW2% z3-U_?U)@yuTrXuO*M+l)6xX15XF!b(fcRrpO32nWZ$gT98 z@^x>OO8-Zqq0Dg#u`N*$B#nj{=&qr4yGdKpK^4GCLjZ1w$D)+NYsl7n{_|^|C%`p_Trq`c-;%Igtbq9!wn#7x*r}ac`nre^Bdn;j@219AX+UGL<2DMx&b+U zO6#LsY>&tHDm|9wB@x9$QdJMUwq9_l7{w&8n+w*w)nUeQ%CoXHOb zg7b{2G1T`EUZhLnxiZ{-dpp)byWudK|sF0O+GPn^yy<(`ecXO z=3UoV`*O*gu@C**ZZ$I1uKeYP>)-jkWC77HT5pBy+rY+mg4OSXS(0}6@Z{sIja**0 zy04%vmAI{YxkNEws@(^DzlY(re|N5f#6=decbRPC?|NSIk)0*Fe5d{8#>3zDQ!egu z@`8CMu@0i{OI~zfoX2kxOuBaK4lYCwQw12W_c z-Da=AJ>x*fSg+2%hiR5Rw66Ldo$%FOdv>jR>w;vv@9sT%{Q8h8{efwDT*s-N8pcn& zb$5?KFnE{=C$M;s^6lNzOA#B*L$t|c++u^@OP93c5MM_-Q&Pg-j{e>R{s}8CrOu>d zf7*s0;_uhjdp&(LeSym5e+1*BJk~y=D-Rg-Dt@Amho%XEB*RWm1L%+) zTE!hJTHCM%De2;-P*wu)^QEn%60kR+C`GdH>*37hH?4j6VUNBCFT)NLqJ|w^#^IGC zx80i&sk>TX$&lYuA0t!giNhfMh*uY-B*VmPbqN#sl_xV^lwuME2S6(>MK- zDcL-F$nKqW<`wy{=b>5l>+jyDU#~$%zP|!P)7wJU+w63!ro@g8Zk+YT8VIZ2EPd;W zb!Kbqg4>(D^B{FBe=7c{3>Wo@TX*sZ-3g;M&+cGFG_Z5l=eYej4y--ic=EK}=%deh z&)0a~tu;Cw%eHhc4lIdx@9u5i@Ol}6ays)+YL`(Mx7Nj@ak;&{8`x;wb%3<42EuR# zcdKLUmn?ri7$qNIHB_Oabo9E_PaGeQY(yQBNU!uZxjSe3f66+2)w^OE3-DZ<-AP(} zlhH!5J&zoQSIV=PYp&b8$R$%Rn8*tSI><`BU&ol1P1e+--KY`pkMH-O9KHI7Je$4^ z3~+QV#^VF`U5M5E9O%cE@y@h+HCMk$kGN7tPFcH6Tvb>6>WY2}sW$bykY(@Qxqm&i zZ%CC_TOvx>e`n|j(Rmas7S4<+864d1DJSJJquyJY73T#!k^Dr=fb$#exqLXbHnPL| zPGHw7xPiSz#X;wAM#N&#kAJ?shW))Ol(4Lf_Se@k~?R0i|cv#0pBLACh-h7N6s z!Ce9C`Y|l$HyJ*J7w$`M<6E&E;{!Ld6*7U1tf=L82;XM`H=6S%B@ldu$M0~&XsTzG zpSIvk=iY7o`pNmOF=n!6jrCW9CN8k^Yv?FTmn&hIZ8MZh>;MlHYuz{A-rffHsE%uQ z?>F{)f2N?!(&_g=DM(6YY0yEep;?BaiX;t?PX()_%UN z-UJ?m<;WJZ>+~|{YhF;o!t(m+zCza1KV`IBfBIrsuzH-QCdqBiGr1Llil$ZDoL7Z+ z&G*}(;9+sk_Z8UpRR)7}`|E>>zxv@+Mw}VU!QP#vvFXCfxLAqqNGBOstpuFHP$m_G z%9oOG0gb{su`#VuhB$k42pkv&0zV<8q6+DJVz3`=gAQci zkIzDn%UJ-;iR6EMktyw%2`toVvF98ye`X|vnC$U$1g%}12RB{|MLU0x!db$OnoKR9 zC2L#n?F^q^@;2h3T;^>D5_>}Ld}kPW^4@Cna!Ll$GG`x@jS>dc^Lga%T~9~N-b&|R zANc;&Lzz@^N)~NfJ23-k`_!HP9roDd^Ny@biR0nddOc)B`zYQ>fLi##O)2v9e-nGG zG-ejBh-4kMrLc^y?R{xZ9AkkomPqyXYl!Kj$d@~$PmYNo*ZIkM_gwvrDU)Eu1k2t> zx-;@#OtSA04A2z%-VO>N=LGL^7MTnxdIxE~eQmYd+CXvm;R=fKwTZjP&r3(L@t<;o zSxsiA^VX*E?2r2((SqxwqWF2Ke@Oi!%j9l8`w{%J+I>fq0P5}3sLoPgf_Nzh1k+9Z z$dMaefBl_(PH=vhF@H|C#+jlb?sUTUVePOVABdccg>|Z5jDf$tF)Zws)tijdf9qwy58rn? zvx1R~@6r*6Ie<(sEt?hYS56uJCX0zXXEcI>#1nE)!jNTf7ARj~T3m%}d7cJD0 zhj{AbZCAGu!X?jYqgytRQc{r|#ydkpWYI%U#BHCIbh<#>(I zyj!Dx3y-NkIN?6ze7-SUsr~2Cc{&+mJy--PSSy+Ua=g6H7;Y6Yabd4_d032X_Bo*2 zh+=%S*vFrD%le(Nb?wytXjVI&ibx&1Uu}dY=MHMNo$7poq#yC~Ip^&;$@#G4L79?U z1#3u`K?Q$ktH)&Me^i|1`gVdae;boIL+z=j^X{usC3IFVeiiuL0(quZL*aEj* zr#%H}1i8Ha`ZE46UuSEzL&Hd7B+dhHW$%RU>iG_p_xBo+-r{r<AsJ>apSZES|-aEWxi6KU!T1{mL^B~7FDj>5yU+hK<8s&&`YG%TGG9p*}ekV zl|8lIoW-$Vf9am>*^%5ymQWWIhi1S2@fI8sct^0t`QK7b-cxc;qe#=P~x$ zH}LW8bpUIuHL~q?$CY}M0Ob|;+@{Mvo^{q`-ZUOm<;BtkE~e};2;${+!6T9sGqW1L2bD5RQ|bWblCPnly_?v^jk8LRHzSQ&$) z@`Gf5UCHf#%EWWE#(<%sqrE){NS}M|LW{Wke=6Fp{L1QR$+NYc5qqW2rqnEE62GDb z_eht0)v0~icr-Sdh|%Vuj~Qp+nOI>m*D3DZ$psj_yV^Ww+Y_Kz3NLuyR%bdgYarg75X{8u)8T?*t}X;}3B* ze}PgX26d2IwtYul1W{*sdil$(OP$>;ea$hAyGuvR)cO4|wM?EQd%P{NfPdkRsx{6E zfp;Bo(2f~wy@66}5v0GTdH<57SS|Pgso{u`s+rF0o5K63$w=Ji9PiVY`0FYQN_{&> zilHJA<^J%eZ=d~IAHzqR!fLI&bnY?Qe?xys6=?OQ;nbOXqBZ?+$lzp4>Hh+V9sFzd z;*H#lwR-OM#=#_FJ=)e`Mmy@|+>K`gs^0fe7jAb=lf};&jCS_{rHSjd#>jaAv+F8w z6%e%Fu=)KX6jX{HC67I)pQeXD`?w|M{>txxFUh6&9qX!{iO+UJoA9db{o)xsfA`Tb zvVM^%U;(TxkBye2N?#WebH}VaGyA=l+vnAftN7jvSi(4q?BsYp6ha2$`L0`8eR>ov zDFRxw$dS*h=^Kye(lEJ-hCXWXUp=}_@pd*k)ogJ__X4cA-b{+kFdSnKY9*$ZlKlAf9^3gz<97c195LUzXDqctf9!p-uu-mS z2X{qi0VO}VM)GSOvw2@&>p&;yAYHt!^CuWxPd9F)pm#x>kvf~XKrhW~^2c0Jqf2zc zckbeSIFF{0aQcA-CmMo&R2qXe8x7j6Rjhpm%i#Ax)5ezl`dkY9hI$t|&miF4H`y@T zC<(^ga`{!du84aTnoLr~e@~nQWEN%i2>DX4``-DiYtiYJ#oHj6ZQ+p_>k*j{M)M~p zYUn+OIA<0c(&+aYkkZPQ9*=D^1s3}9X;Y0ZWQL@EIr{8;^IL%NuqU~`Z^S+DHs&j< zcru2|o>mvgcAL8cPMdMoT8120W4|a%{z`@A#=YA+u!{H6a_k_hf9sW=3!D-^)$6YN z+56VBV|6XFv-5PCR>dFU&gnZ5+uHNmv{a!~d^DWWdq@R4unc?sD-8&XvEG+n0?^^3 zgDmnX_g>^qcU-c;r=QE1>Y0;RoS`Je4 z@E|`0s^+#`FLi$re<=l*RU4n{Nkdsb$KHdt^^yIMxeNG-^Y+`z&nCLPjZVvO8@%h# zB{a?p!)R0ys2lw~ro9`;{6RLe1@NTrwkXFVt0HnSeO)6+tF+V?#^PfcK6Y~qoQ}{~ zSbr>B6x}bkWi)!Yy#ZYTCp~+&p?(;~(>E%hhpgo4#7omLf8?&*Umk3N7u9-DR5!q9 zwyc9_CvW~l@yj`31(jS0e{#^)Et+!m%~(R zoXI1$^K!7GTXZP@^O+F(WMk=f=+&_fOkl%zbLDWH2VL1tlQpk(MQfilIieJm9opZG z$QBvye&vVfv>>rA^>@1go7|+G6pT!(Ip%GLZSi~@zcxpfyk!}g-j|cKS2KV7Iel~K zCE#Lta<2Qmrrx{rhKcc~0dC@t72YchfSTVjcBxpk?1fnMEJ1L{9xyO?j($BLr!_m< zW}|ex`i!QPO1+c#6pivNE<0E%8W4#4+`l*F9-XPP`bOG!?)@x0l(>2T&ATk##(KQ1 z{9Rw$C(IUrvh54XK{YPla?Wd1xq16p4eM5SmYK+mu?aq_YSVw>J1l@5zyJv4F7fF5o#&ZL^*NKr`+!q%G zntXZA0&r|+z1gnJ90`tEI;i7T{cy!4Apd4?!Xk`p1KrD8cv{z#_PwUSJBQ?%m%{CQ z*Z_K0l1ba~!8G3$u))sEixDTTE8h|A=*7kX4QXy9VCFvRmUnY~ULr$OW4OG!^#y+x zE)bL6EyND?=RX1%7Y+)Ai6JlAminN7+AI24wUhd`MeFKk&zYu*6h|HU4xRd3>R=0n z?+|U)=I=1tUR?a%Jv$rk2uhrCW{#$Uq=uea>$^wBlDn2i1nIN_F<{rG*0g_q)&(;y zrLGevJ_4f>o=LRR(Ko-ZSoZe5yNyDlwU8muNOCh{}-LXF}MA@sw1M^gt038=p6i*8yYjy<#sL%$jcRokMGpqhcu5krck$ z=IzRbdfo!r;<7F((9Oz+<=(l$9EoVkVRklR`ipscGHs>Y7gaIiJ^#KA@Ufd;+??qi{CChrA z!_N)9mtalJV+b*YUjE=#px^QJUBt&cqJllyE7sn_pu zBETYv0*^x-=9G_8AC1!&Y@pb)B{JD(%be%Jmpo^#L=I)Qu?9^gg0dv}V{FKWt@Zca zap+{C5eBPzCPtz*p7E|YQdQYg?-;H;2u_0gg+c8JPk9P zw4r%B+&M?vo2p3%yQ1@}M~{)@ySZx6w$sTJ8}VLug2MZF^OOt58HdUjA0$Xkyx{8c zc*VP$i9Z^3+Psn3QFU-5G~|u`w{OwQHQi8elJ!q zgiq`wa+wbQZ6%`-e?D6yT8c4haV|W@dxjHw+YeFveNaKBd^IlV@ixoZ?01s>+YVX@ z7VF0|__9;OlQbNRw_#o2=Y4V4=gAp+jaR6`syDl1R1-OHV~p=vNfD-#tBytKTv-$S7n-csQf&}XGZZ@FA$#qzw~F@S zaZdQvSIW0szEFTDqfEjBr!AW!`A=;hgit?)g1&em0|_v;_fBW?t$!#@F3c#KuLHRw z6oZ&myYPo#mVOs@<6@^6d+=|rG2EYWotAf_Eoi||;q%l!XFD02M@2a<*Z6ra`qR_z zU47mAw7!%bahOSMxfZy)UmTh%UY|w1198??<`Vwv|lSE>qe`A{u zoapX0otNqGed`r|7KrX^ZJilo&df|cF18o|oRXRhT$h`TGG^7M5F!YwlWUNt@Ar!{G zXL6pSK_aycnP>Lg^O_x6$t{Q;dE+7J>Dvt)1rr8$o7j0@l zViu<>okGg-l2c1-*y32&G_J5BHhd0jPsItIgS8FBhWjAIO5?X+;|uu$5rb>L7AGCnswgNe3Wf4)#_-I5y3VC28J zYeQdRr^9dIoLY3?4@iOg!KavsdDxzj{Mt1s1GKXcv&gqh-TLY~m>oZ3wdI?$*Xn5A zPugQ=ofYHrB0Tt1ZLP0+AVnst*KSg}M}B_@xhiy)kLrEsOzPHmMj}D%{0mQ2hke-J zI-CAF6?Nk`A)q_&eIPPZ7VHMS*pIkZCXg2ou(lwz8dop!jVYQ0&iMu|owZ6Gl9%JAz?v?p~Tk!B- zV~h(Yf~J(zE#i06I7wA~Px0OTQ9ETP42Y;kKV277f6mMonlj8~%=rb(Uf(j)gd8sL z)@V-}_-^QC!$n2!Aw(+UFeYIbIfb*#C&wVlA!F=F8glmllM(Pkk9 zz8dKk_r2`RZ#R{N7=AO9lw{`oj>Pg;H5SZ)WmH1t%skA;8?~%23ME~XsZ}+p!)fn@;XQC z7P7DMRA40y4~Th)@f7fl&!D!Nje9t73B<%PsdICt2~M40|5baNEEPtd?482G`8bC0 zuFfqpWD>;kezUcsH_~B)*;p8~MU1wIc-sB%a&R+rmUL`8)KW!(vG&sby{4EX%e)gv*2*O}<1mx) ze|8~hZX+AzC~1ZfF&r#EFLzR;Ih;@RJ0J8ro#aEX*Dea!Jdm7ZY|nk?Q%*YjJb1l} zWy+k!JHph#d6ng16p8678XGC=D>BOV9>wT}L84YtFui6tn-E}fCd{WYFoClR`eCkg+Kf0DimEo=1~A1J*ijZo$Bu6fpZ8|5s=>er5B9E0gj zVs$D@ZMI)$`GJx=U|=fcXj&S}o5otnQz5B(0kFQjDI1OiXyr22U~Sq-_kd^Vy-B8> zse8eW90{1H_W~J>VWNIX>Xoi<7pw1qYI`Hp${27lDobBS{eftFZ~)pCE{-PUF<(PnKMkeN(0()ZI} zGbneiAi|)J>%2B8M;h}MkMz!O!9}yEb6~DVLS1iWB2@0_XcX91EWHk1e}&P+Q;zs- zCzefzlZJDyjPK&y$xD6W!j-0^uNnKMemcR}{M}~E%Rvj>@%%zXcUa*X*`W2%@B&B2 z4X`Dn2?w6+>+v5xfLiS`ee}KHE64!bipMmjnU1+3^n88Gn#|lbcX*@$4@gFS+4pA< zqi#hL+oV48pv03~!TCm*W3-e@F*o0M1xH#-1o3&;nZR6$nRedfiod66d#Ohk<1tOx0yanL1k|M)EQNxs)d5O3#fV3Cdal`Ym0zSg-5jjLMY z|F=J?3wK)B!(__7vkhyY0e>r^n0qkCgF6}>lr{610Sxf1>!chQH2EEEwk71Vrz0@s zdk)W%G9Me{Z`Sm_;lxIj*7ujS-p${ajq2^mpuZw+WJg-Epqm{w&xgd$sc(+`_=xpf zJmhDNy}2heHax)T1_+XEaKz+W%E;+*>CmudV9;|#28LaN!z73vVt+k9c0o;Z>Ku!xDk5c#c=`{zOmWk0fZaO?FBuST=HCql4v$ zrw%(}F*Ruc^It4G{(rL0@wFp3^?lX3TIg6)_qq9CNVG}xd*72OtM_b|o5)y?I9aI7 zRdFya4m4|pUFSiSX9vxR&SlwlDlU44Q+>IF7dL3r(c04fL4K&l-ZzQoPr~xnS>|r=_!-o(VSrC}0rCWkY7tlGfcf zYr=0Upno7agg%96*4W1mHe0Yuco5U0(QnY6@M+~ci7u9~3yLemnmFA4&W$8Ycc&%J z6&B_Yh%b4{${gw}$=l^;Ba_Q{VS=}-_^2?Cr|qGMID(M9IMwB?yI%?3|NCCpq4iDO zcb^?|#>T&U_h|L5z9SrV;7&S;Wqz-nMBtbtM1Kl?ev%-%9~=1afOe%PkSBs!3i30<#|Ad}YAz0IRUpm#e& zU|aA$jVIH;a>6l|@sU+`73EX@dxOUr$zQPpie|R1jU~{~>7zCFEpG`A_e=^HTsXE# zM1LLJO%tk_ZVaT@@4&5`V{K*PTE|^ep_Ghv@akHopuT9u5U^u$o|glRyWblXmySZ_+k;+A#S(3#ZnB zH^Wis?L!7=a(qedtw!1Hwtm?W09~r?WPh$sj>#bV0FStceNl`>-0^O%=T>+u0ao{3 zK8 zr-G67b!V4$8d%%}zN-KD)Dy_T&yUqHro^Nl$q2B~3z z_ z%Tr&jsx~v`ckqAFm2Y*M-o1O|vwv+YS(={d?%MlV&$HIbi2J@SJme%)89srEyYRG` z1Ra2t@0`>t5hRX#`z&X7&ETJYpA24~gGEA3se5d>T_)g1DyC=EEiWwDyTOMvV*>VG zUkiV9^HZEYAe@6{?0(pcsJcPpC6lyWQnN#Hx~oIk=nX;tA75H37$y30p<%qce)k#W%Yn#d$- zBV)0SlLRQ%hTIA`0a@#9O@Hd{BjTo&&as{+W}4CZiham}2hmbTkQAC@dGfL+`w->4FC_ z=mk>3WwkMI#{)1dWSJ;|)UjTdZZSw#s@QxNCavn(>N<@rxiLpVN`Ic!cxU1kv8<4% zcTNe!MwA+!@T%lMw)sD_*I@9$hG_P^sM|B=8Nkej)BoL<{3m5tV51pz?pEK|v9z0T zzqHI=xSKm1oKg@IzGG15T@(E2Ges$7k5@oo#-)YXuJ|i{ULqdVy3N@sqB8D$Jz%CA zlU(MRku}{Fv0(I z5;$|Oga2mjIXiDZt^_RU27=(J&O}me?()`5$_O~?JoD`-W$~edb>&41NW&#YzqltX zPPe;ve=8qn@}l5inV0i=aBd&k2%7E7X=;`JYCNE**rV6ObAQcx7g;4*HIQsdVaMB5 zbvgP7OWFJ8#?%MR9K;l}xgH0{y@*^=fL?{=L1mB=gA~|CYAeQAg(_2w_q(Y+mZ+kj z=>Ua6B$6fA<7tc6!|hgy=2Ng@l&2 zUZ_kMj98Xv|kzB|YIy?LuH1yc^lQ!4*sac_J5zOj3wBHEUPt#Z5}Kw3@_ zg6_@2$EmMdYlRIdqE6sU{5}{scpqFr1cO88CDEG8)`nPd*VGoqW9BGL9B#LZ*g7Q{ z?0>vu2UdfIWVAJw)y-4Cp7Zb#0O|_R2z%jyYlZYU1zv{6*x+~8<33HB#UWcIynl@J zYQ)SzIGIfE6*B4~$GwE+Zf-~jd*$vt?Jt}Hl3>>xa2YWoJ1-A-J0)3iQH*SZ##RTQ|KXaAb)GTkDR?|yr1ASmUVPrZPhUF6l?u+Y)e55#P^JNxw(ssBl8+MQ7W5rEG%!uA~U4gf-8P>tOaY^Gb4r`QoAC($q%F99Bq<%y6`*cEXLxD2(miu-_Gy|6m=Ga+8OX@;bsC93Cql$_XZD*!iR@VV8BZ%!joU5vyW}V% z67|+Pd|t+;Od@IhnR@E0XtYOEAF~!hr)=B+;XGa! zE&NO9>i~{t*^FNlYxY5WY`*aW3dF2UptWJJpmti{rMu;AWyb3k+inj@+-W-=DQ{G& z{LOhc1kCMG?bNE|{Yg;}&dz6?9mxx6p&7f-4fR=fW2AiHD;e|9Ng{z4stLJcQ7@`? znN{!C5^=?G$M&IXTYsKAr4hjdUTa+k2~OiJXhJ&(iLj$i+woJ-GpTumWDp(>t=d)0#~cFj{Mf2}&D^EG8ebT)&l&cT;#s2gbMG~&g(D#`4IcU#xc8qu1YCV;F zCgsRVW^(OWlYbUU?@j5?3l*@%>jm~-P!%-Hs*0|4^F=P5h&(VHyzCOxo%oe487rYz zC=|4XbfCg^B5IngHS+z1W3_~5pE?NWbi2aE}Eix!R6>}j2l9!=V=rSA7BoY&etg_19jgEx0%Q>(isaQNEC2xLQ)Gx;O4d6<nnd8Bo}P>!$VT8CuApzFQH zXqh#-03!y6$Io^blbB~{hpbY8gcj$czGK3?<9`O-yw#F>RwqSnMH;`y0!;CKggHUy z<+&bS*riL;G%L%Fj(Rx^W-m0^c7iFb8+whn^?v$<8mp5PKQR^hmL}{Jz-r7o->1L` zpzwm+HZS1Xd-`BBUhd+ho%i1xPM(4`mynwxh+Eq(HOaEo_BxAud)}4&!@AQ`ytrJh zjDKq7P%a1sn8fwn?cAWA+d7Xan@=$WS>(b8BZb14LbGT}j?N;-S)M_ZV^U9lB5~6s z1*EX$%%Rv!KOrOWgCM&qM=M>~sG8*Rf*JteOn;v!dv0zxL%juEW-02!SNGM#EkZ)aEohOl%7j!n#)0_O6I*lNys@|_L@ugCII5wjc@LER5Vw8ut!e)u|Q<3(vNEa|Ipx$oPa(tEBzm8Sa-i~ zIry*CFsi7v)+G;qu;7=iark_JF@M+9<3*bM@X>Xcw){el_qsQ+Or4y=+XfI0v;)#Y zBcWZ;+gOE4Vcm$Lv}jHPUEbssL?8hU&C7Hu zV~eX+DT7;bM+r0@9aAUxH7SP;WIa&4Cx;n`cssXyxeVs;aSN{&G{oP%Zhvm!?f%^t zq{r!SIqCOUvBojECX$!IaTY0J^KpsDsB_nyYgx+%jtCKnHRuOt&&aFXcotolEaM15 zyhB))r1K;gN^SLo6R4 z!j03^X={{8v@n2hu-^XAX@B@F;Chnl65gfoHKs&WqmOm+h|QN}8JovETa8JzOrB$z zaholq&^}#Oy!;rM6;%K439OOvk>5E+Gwn@|Ud6LtikT1{Ry$ zGhpSNhZ|iG0?WCZ1u>Kkl$F&lVrr~a0V=91b87IjfQ$Qz4tU_5Mr6!f-bmk{MG}CLN{0QI|gplnlPLuMK1IR}oSD8PEOTCxPd3Mswj5vr3TnM{Q zY!BQzB#3(yah1mYK=!o%Q2__FXn)XabVd$!5b| z4Yz=|q< z5jar6K<)N0#1nTB{GGFDpm6iTDOPJy7>%9mc7JK)Ol2iD6PiPjmi#7k`)pZZo>6T( zQX7e8nWGz+E}U$5Hj=Rd&9*g0bPVQ!%BKG_!C!y;G3$X*` z)ncPO!9V4W%CvsJXw^953O%_Co^;qefrta{d4HLY72OWVQMxzNefD153HVdWyp>hA zu)1TdKRAlt_s(wGHpw~&qO;2xGle8Uk+ZC|oxHooeXCL`8B#bVpHZ_JfBGDYEk{l! zdaV~KgmPs$)F{GAlVAs7eS|&S=ooS;)fYdHkL?Q!g9A2dQKMLZ) zxqlFobSv#g7Au)Zwe*+;?7m&U2U$zGZL>2K+HPjlo2*LZmioN zb8Q9g2ncYiya8|;6TA~n554Q6T~8`Y7H>^BfR0yXT^+)ZKzT-}tL#aZi@x$A|9==O zwL8g5L@J~uC)2u}+Apw(!UX8nP|XT8mtKbD_$a&=qRe_{Ss6${WLDzP?WM^!btI!< zCY_93yi|rXh4?~PiKIlHsH;@I@|||2lhT?^iPo5ALTlE+C0g@3U|Oc|t*MOi0_p7B z9Av=er0UwFMTY5ED*!zRYJv&21b^PZa$#ce&#JPk zCV;cYnl7)KLT0LmRFe%F##`Sj?sJ{VZ1iylZ5o6E)T#SZU_=+p%xsp3%73#%)ta-G zk>o9`&dI)aKx zmFt_n@|qzqHZEKKs*8Y$E`QeK)|_w6GIj7gSzDgW+b?IQ9-Sw;^K2&SC=5(nHwHWp zBt#CpDevx=`~L1NfQO;{P=C~0mqyNW43&Dl_n^CU>kf6AzayqiXwX2v0uw=-I@7DN zj2ggejbb@()2nZc3ry(>_cw+eXtM4ss2=F$MD0Ky_DjP$YkblIOlkN<7>~@Pe_b}t z?z;MzBNhly#zX?25n8}W_?aDxD`BvFl_fSq>(a7%J}-G5h3yL}ZpKCeE7 zNfUTH?^~4O=*7N(nT22Agaoo1`tUtRJ;nG}8&&!15rL-W>}R@r)4oUqDI3yzc*2#0 zvQUUq6CPI7ZH*VgH5X@>6Ix+lrN|Bn#r*K+IxpR&Fj*<5)bLnN}y9V%v6& zQmiu!UK~Se+gVYl!hfTOCIUSk!oLA-E0J}v%y6Mf7lY3WxlA6US@sjA8=ay^3}p z&!#~Eq4E62<`Mk*VGG~)UGQ6Z@+{NS;j;qeE|S+gq4y9>vW#jR)y212ew0{p`gj2*G1gD#kFQ$*lK!f8P=EyAC5)Z+xoEJ_vZmm2pk-Z7;bgnQC zE)9xpPRDrpIej)t6{RE*is zL;n*s3{k%uTy|!X*)|hHY()@gIO|WR9#lTtE;bH02C4gU3;eTZOI*9AC@$N!LV_g1m7eUKYSmW)S zixws%5Aa+A&W2FuVL8jDyuWhL16{Kba0c<{_cWA=L1gr=+yhL+@n zT%OTLh+2On?MAv?ILg|tNMuU`_&B%TxQs{ApkpuH9=vGmGM`i+=*`(NYPn^3kFnZz z4^FK$cUxifU-%=S2kIrE9Ut^)@?LIBfg&j*w2V?usWV8Up8I}!95?LJtt%4>6)>K% z2T!6)pu1@C4fcjZQr&fqa`0K!T~Ky(dMsxit2=*Rcpybd^R@T7l#JNI_Ipnm@R_D| zvp8w|B{*}PBm*$K&1}?Un9)`y`HXAIe5O!}TAN1x6{DDUs2p`j{-L;7z_nl(Z*LO6 zt7nH3Q300a36jxiiIYUROkShaVi_DDGx z?KOWIaU5Ig+7pAO!*1H#Q*y8O;wA^rQTDzPGwUv8o$QrT?t(Okj|1XGTTM0=jYL)f z>V{Gr{WxGbb)SVliQ63QZhqOcXZGCZ80WxdD7hdSTkL3P(e>fOa?r)UvD$*kc0`E% zO(6ktCoIPP;^ZGyxK_`$#-?+FgTNEh9({j!F*D`9s3@BhzA2ku@;sd&t&MZZdPCu? zPaMrxti7)zNk|41mCn1p1G;1CsYnk2%-qInnF?_`P}58BW3fB{9NCv|oN!q2kf)R1 zH{XrgM#6IjiU3ny#(QrR#?#mmn`hzA@P3qJ1g19TuiU%Jrjyr_u-njG-Oye0_I!Wo zgi^fWXSRFNw(aG@H#o{Rqi-n_gmdRk%K!s%avbSK%51$a%d1Msj0H#h*I zlX%|?bU43Z~}x$0ffFy+|< z=`Qt{$}J?c%8MQ~!Z|283l@m?qg**IqY_XM0x{g6c@y7X76s`EC}l8b5U9Z24n;&X z=v#{cTw7~%8FaamDJPi+oXCHd>_`foJb3SUgbv5lyFQw*WmSC);K|&{v>tG$T%;?t zDk|AJ$H>#_xm?Gt+>+>J7xt382@y3$etjP;AlD32w?(qI7Qi}8Pm!L6-M!q_*i zIf#$g$dtbFf+|uNni)46p;h3dpQuv24&BVre1udKecLx*!z*!WYc%A@sIlI}B!l^# zL{>6TrHc<93vb2KQspGbKoqb1$WzC zrR-B)^r;c?}hyaE70EuI-%oM0wF8)dJvx6+_1@m3MXHb&u3w z<9P4H0C$zy2%>S6LHtLQhol?daF7F@{h*yfR$4tzBaY@?If;>8umJ1Vup$Olq&+vh z?!%wH*YtrcIL}aUk1`$b1Ua9r1n97x7=lSy%MTOe{YBYt4wiq6dlguqI12dTHRN2p zEK=Hfhf3&aQC*qQ#k`|)fPtkJbgk5?z_%u|yz1zrs|l|wv1=m|hnR`PZ-NnQSKg|0 z#Y+q6!x`{X!v4HIK;k40!O&AXzR5U73J*};19Gt?a`s3E+Lhi#4Gtwe*Nyv2b=^>M z`sBTF#pAfDm)(C?*Lmc;euO1TcdS@BS?n#|G}(QV{==5(W6ZTr?Td=9aPWo=gF&iv zfD~12O2$-P|48W%L+IBa~FtCMZi zK}xjf*m;7e;%;v(Og}+~R|TR8MJ*3YCX)SyZwEV)5<`D41j$&HtR@7dv_fnqeAeYU zPQ6>+kFrt$ulN$m2Cv+ie$@lXj>v^BxnxSQ7&8E%yOs?(u=t zP)niZyJZ8f?{CC0!H#Hs=N+t9|2i15f0Iqb*Pn%=@z@A0685+nDy6$92j2QR*fDCkOy41~mT1!MV`9*!VF~8RU17>lqg%7Nv~+j&wvEWK@q_Kc&v^pR;WRZZ zr^|n3Y10~i$|{%l?9mZ%mY&;coKg=f;4A=#9>Dv301KugdH<{6X(#K9y{WRz_x3Pa zTQDoZ{zmc~fp@_n;|=Zfu{aiZXl&h`f#-k1N46$ zK&K2SZ;5tba@Z&Mot;E{sco#~NV-l)*>0(Ya)q^crNT%+vZG5Opb1*}z*$xwJty^OKx4NQ-+3oM9Y-UA8Y#*zIh z$PXIG4Z0UpXQLCTI8aevl1*+E^Wt_-%RR2&voSV}MmU8Lm*O6+yN;UBJWQ8z?FoO5 zY44}ug=+4y7uexMbVo%)@vJ+(k2{yzcsXc62MHe1`nij+`C0W~{m2zNOI93+@SSIQ zK^Gx&^`eyQPA#FjF!+OH0qmMtjO5W)>MBa!i=Z`Bqc-booYb(P$X?28 z!)v|ohFuALh{bb>yyH4;6!37jPnX`xnRWENy;mb-n-_V*Xy9-zZO6`cF9*W1QMj3? zuq+r5kqn1{7Z%>-QKok{)`$3?cvjTB^jCBM+`jfWZaj7csGe=@DZCL2ATNKC7cZHM zs>7a`tCWk@YLGL_=G{@A7(Ej~$)}UXsm?xTMxP8?>OAW-W;48jAciK_qAf=RYQOi3 z;25a~9+6O|sr2NO_0xS#17>5dM>Z~W1^qC;EN3Gg0Dlxza`LL0TL-xXe479gxnY>p z1?{O!W=;p!(7bG2SRS1Ztl)p*(T)KJvDazFMs1br;6&l9M1PK_lV|Yky)XvaBS^fM zN#)qF)sNtdeMt8x(FbXfHrver_5o~^Jd`hE%R|x82u=Iz(3MU6AHqh>X}b+V1xJ_? zC#%5AY{oEPv6ZE|--hd;3ozkpwVRZbAS=O>lFomI7h)7lV#L$W$(0Bsn zZm#1}@&&kfDmd#VjE2hB-ZST7vOq*p?Qr8HbD0|VRk@L2&)(8A6 z*g{w?I#*T(Qsw4~t=XR_k)alj3;w%+4DXh`4`P`oA)2t*W67Ft!8`A*b9#QnZ!zU^ zD=1g$aYeUs>?MD4Hr&J=8&10RjVXMgkbI(X`XqHPWH^3__ov^;F-I}p$zncjb%Mp=-o%DDl(Vq*5G-dZ2{ z7cZ~2&U{4?ba(WJV}k)&K$^;&NWq?Sb2k_sMRT)ggU3NAp%^%^qQ;WG-bL+^=FI3^ zvoZT~3{~6>3*Uw?{~R*B$TT77OY1WcJtC>J>u8>~# zz61KZ5OR*r>iOxR+4V;w*4HYq9CE?k)&}!YUX2eZ(qh0*aC5<6yB*ra;TQssaDun) zKz)D5;ZUApfEmEYeSx_c zE?eKFwbNO365}{e=fvCx>T_ZB&>x%!*#O}o(w?Z1DvK@do3VwIqD0HOdAb$ouyi9c(**O?>UE$iEIo-@CPj)Yl=OUmgCf%28N&oN!!UQ|82oErE9f;G?Z6H zzkqYN8&I~I^d7Da-0WQ|Jj2euvEY9c)xoYhNbKSVDrfJ+VmGy>%y*PoB_FA{NZq1L zx=P)aXZ{lJujRE{7o&1D^T{foA+_i7NxG~r|o@M zbXw#5IaVpD^#h#MF%Wvu2?vSd8vk_F9!oFOIOcDYavKlb&be!GoI;GrQoMgJzuVcV znmP9)W*5BFVT4eOBwO04IEQ_{lvk1wYNhv5-p;!04k3)EQY}-72h`d4-QiEUyn451 zet6Au7Jy(kct@Hbxb+Dcx1*y3hQy}amJoY~o-ycWY_``pt_!%+XIgRYfz#*fP0`kd z=1E}Ao6yyFfE9byI`!f3smp)N9*mm^ny#MItWW#c&fGzbVLfs9u)aYG%)lWFWWEzG zdUiACm59I|hoMI*hV{V7dcny^g~qRW!)bW!v$1K#z|+>EQ?c*V7Dz2_CM$0zJNkXR zt%Hq}c{>xb*ps<`f(}gf>#!yk)Ulifi`eD?Sqe&b-sc|6I|r)@%+7x+b{re*_GyzNK@zcbcU=utwy)P}( zdHsHj9(K4}T}g|Eg9L#u!CEChM0Bw_RU%`fF}WM$sq9u*fwZA5DyiH8jYFauEs5K-pKO&Xo3Le!C`acsGD;Wl9w2Etv> z0Bk%6RgPsohx%lZ!RtB)GSA`Ak?H|p;8hA>0N8c)CT`Ro3kWdyqQ~x{8a*a!!okcD z=*IJ!Lj4CwS4S6pOqx38J6lbbe0?7S>sIhCfO0hs2bIZ*AXtB4?JC)QRSsN!dO3%Q zQ770B$Z2kh)355ytq_WFp{bT7v=dUSw}T->6+v>X*Xn41g3NlB5N;ZD50=8OBiz9; z_)?gM-6G{y$T5@#V5{OkBOlmuf}*a-=xb^`+$dOPc9-orQcbER+V>`LloORPO(DAH zaGc+MjU~_B1kPySc=gz=?m!MVMo$4>U-Rskh3*ic%(qD?jP5lSZX(ce*r-?OgQqNc zimU(p|M`ET;R^HzI#vD|ame0V*wU5s-o>JdPm3zUjy z53B0DctALNyQQW5!W!)B84aiqApzeOUE6cMBQAf4-0%DRfW$f0GkYiHL9GjfDmEgB z=%k1&dAZ{vf@-@n<*tLOh!xeic+QoF-0X0sI6J@bClkpt85!YeB$>OpV*;r`!S<-8 zZ+uIj^xk!3J|`SJzhq5J0q!!q;k>@kQWF2f9bp@X5{%l(gCp`fym7{3gsdx~w;KTh zP8)w9O^6N5gO2Y$iaqKGWF~#-10o#bNu`<;`s%e%OFF#E@CU~m4Y^{);olS9q<^cb3L*>Qoz zTOXHnOB&gxn{trU#H=skt_vW|SB>%zDArU-?oi`pEn)<5Jvu`|6P(pu0 z_ITy?11W{SE*QVXc_`aC-1bjUw8;=&BiF7IR^8zMyId^+5YuA-`hL%un}AE@f;dsxaRT~JzWi*#X$gI=Y znhamDj&3A71IDVTygZJ^WW~qy7f63ZY$-4ppsOPRmztMLYw3pkdLs&jl@^cvuTxBU z2hJ2i&eYM_`|S&`gbbSy__C3#B)L~(v=0j<&sI?r}QT*!HlUADUW|l{O${& zDcH{xs0N&V6ucP44NcNPgy8DZp~#9$beWGXBu(+gcwa-jX`hgw1Cgc zC&^$ery_#}q6AS(z0LZn+}^M1IHPTh54_?1Pw$Wxgb7CJ6MAMvcs6)9kyUS&n;1bs z-qJoH96OmHg`tiVxMkE@Q<#~PCza_X+A7-opeJ)qu}QE$9iqBerR_fl4SBo|-~Z~b zzP|C@&;N)0^snFUX?RH7r=G42pUGBqz%YULaME*~um0>i z`!;^{kAL{>H^2S%>#u(J@%z8|_WQs2ck!!#cz^#v{_Q)m=?6RUFMfahfB*UWPzmKKgqI%i6bTd^ct_-|RXYv-LBD!TJ`8)@@6fsO>`n0` zs5rLL*nLc5$+vIi(Zzg!jXC<18nwe9)OVx0r5>b?we9)IHP&&00lOO0bw|>WLoNz3 zQ#dH*#98kKmpj@H_Fij{EogH=4cKo+Q5qz3M16fw-RXb4>}^0Ox;KG?D@18ITHJBa zk?dnGW?_4O1 zD=;c+^p9(qw=5!Js9}O>(5A2x4gNohOWo|jbd+;`cUk}Z=fC|Se){FA{@J%*fBU)L z>X-iP{_vXC-(S7y|z)p?3iP{R--WrP!Yp|H^ z(vXXCtkvs*yiA|8C7$``#dtbrTyh``qXi9C{p6ai*)cAx<7St>*UkycNWB_7oid~+ z81UiiSSMT}KzAqd-qVgyP~rFnO{bv6d!n9j&O-b34q7MnUvBWTDP7mjt%85?WPJXb ze)oU<{oFPE(x2V$@4xSwO8E~L)ox987R2eq3u6k#btt?U-3VEjLV2G1f7Mf#JeaB84~d;#x_ zjBB9>H`u=U%SA1}T+V;+uI;;&pS!4E__O=nMg5mQ*w5!*|BL_dXZ>Hl`{CRFLI35y zYQNTB_y7KPbF%-=fBW?}KY#t*|9rmx_6PgzyBlP1?61FUmMMkU~!x zw|civf8YPV`YL?s&+ZTJ+3&i4TvOgBJtKK9cqJ{Qv&F^*CAE#6E_`oXF+txJh`emY zF<&s`;H8GY{{&ByZbH{R1$O4*>8UQ;rw!8|33foSO4ax&t26o{ONsi*Z#GXU(36!r6hmhDQHg) zw;<&Xs_}$bPzOACRvAglvM7Zi0&-@9{mtO_6sgz7=%u5|YkmZB_(cRUEZDX6DTIya zX;Z=M_ekias@WObc zE&@0wFN>NUk8gK-Kai~u?(u(lcbd;DDyjZ{bTB{o{af=l-~Z-*XTMz7zxvs}{^qOv z`kT)^kiYaN_{T3<<6T+WWqVS;@&Z`z$rh%}&O1EAN%T(_I4QW`eD+@WFV~z5T|aF< znVKm5Rk*%PQ4bNfAbT=U9zJJS3Ik)4!+e!ULt?!iQ?3TCUctJ$aZMRw5*fqV8`;L%%_oc!GphPwXoUP~j%(45RdN^kuAa^pF z-TeKT_baB8K$&6dz>&NN0`m$3a{R!1F{`%6VA!P=D10n1b=RGm0^P(> zeZd3;5v>yuPBQLn<2uT_u5uStm-a7zxgGD13k#AMpKp;mYd-I++Z6Vn6q@&jT+i~}6I)lX11s!kjd-Bc zbwu(!;VtR5)R7^pNgjOE^)#CY!m*u8ioFq}>vTh$#@`>^i&eGnSV>I0_Xe{ce83Dt zLYcPBMeZW4TS$M4DUHr;_nhi!Yj;QfNz2N*QREnNLAYzZ8k!D*V?|&GSgkdm6>TmY zt%I-4-+5vGQT)vh-~ae?{P@+s|N4i&{`$MmUF0wPasKWi|J5%SxqiGzt!{7^nvB64 zovC1>17giK94F~;CqjsR>=@PCJvM*(F6<}w2j2oBT?l{G?^Rq8exm~FgSKq8TiLix zCTQBJP0d25f5snOW%$iD0p*-Ft}%BYC#-$Ic(^^gB0?8NvexS0Fw3uyZ4;kq02WBc zuc~EHsgO<@(Wris(aTl_Ifxs8? zk+_5kr&%iyHOusc8+~m$eo#bnozw#Zc$?k*5iT6H_0`&^V`q2TC-%D0AdxF~!CUBy z5KTOu)+G?jWf}G^BUN51-BJ)h<#eeK7*W>e>0K<^)N2TF*uFL`ldJXV;Q6pALC(si(h-Q0 z<*I+QOy-KWy1mel_5^`M?A)u0*6}=t#{cnFf@wr3Nm;NCC#0`7X4HtK6hfe5NYuTk3B6Ih-c;w4k z#LC4nCh2nlMyu>HR)+&P{HJqusK~oXkQS;uxa>354gGTFr=k@)EKi$9n>gONr#8+-VeRd}Og+I+dagm$z;G%y4 zThYJ6=k?Ke8BMtstGhuGM7u-AuaDB!To1xCE0%^b1_c1#j$W-+42$wWb;97@cSXv* z$QBZH<28W=X(CIL^67XZMw~&-;cPIN;V29+JF8m8`mhcb??RH*O!8rMF1*{(U+e-Q zTPNy{JJz4@<}AYOQqY_eNp`z!s7`-yc;I^%&jA~&>-dko$bVu;{iQ$6KXH+fwvL{h z7co;@P^J}|5cH9=m{PZV9Q}LUTKcijau;|$ zn!d(fnt~#>*p8yY#-~T(NK|$E$t7r+t%w~)<8oqhCAzAs zyEj5Cs|3{{(u6T_8zJ;)r&yI$>6{m9NV*_Uv!6R~*vq~Rwh_1>lrz`f2?jb} z@k$WK!CED&eR4O!?7#50+!b;O+&cqo!a$ao4GC1D5u>&$G0X-9k%mmcI@mep{Q^PD zqz4K9T65*4PC(*k%V~e}vx~!j^qcR$|IIf+h~ww){kQqK%lm~t#y^}!>#wE%vSgrr zPX=1AV%HhKIbQGbzG1h}C1Wst`M>9O><25X%7xu@@9ah1N%?<~2VW;3>-U)mbuUeE zl6o+9wV!izAB>_5ryzIJbw7K3|Kg|k_TR;ipS!GI z_|yAzVA+3}MDH`(g@e=ANH@LFg(S0=nP@$vUzjEpR98T1Asl=QAh3R!>SMLZdzc(x z!4*v63=`L;YXpB2_*uJ=j}8UCiUnw&Xv}8Er^n!BNnWhORWr!Wk9fT;->;FZqCgek zS1Wpt?*aH)m(Uk(knpU;8fCppULsx!7B3-IrwT7<&kvX?N@;gua6I=6H}))_y{doj z=Wl=b>^AVresrJSi0dzxGzHGrEm5iGw@t}V%D{wC6yJ?;sEECq}fi?$^?O{2T zy6pI5!~1{d@i%eob0f(w{IUJvg3&lNMNxi?SP;@K0K`7qPH_XVh}Nx; ztGB>Ft1F9c3MS@zhuXTIE`n-THqnD$PB^?j2|7B6729i%g4^NYGRebRB8@lPzHFDb?9-5Q>yP*@(TF@HZW8r$tncx&lXskI|- zSnk(du-l+A83h4AM~l58`zoLeK3(;I+Oe#w%t{*(tTo)RIHwR8>u$C)g2`kZELUJ2&VL`q^nYu@>Jj*&FgRtzoruot%iE{p-z_&Q zII`Pv3ig ze-Bn~82rYP#I3QIYb+w4!_QbMBzcZEL-V@xaIZ&2HHUZ>)K{Z_@UC~nG0V}f!~41@ zxoL3EduD6MYi!XR+}_HNm>V9{r*j4jhb$bc?cpN8RNIrjs$qZarTxM$A&@)3KES3s zJ&k^7BaTR07Xc=aY(wJmgh|5`By^rVM-h+AnxSj(@{9maOU~79+9%iduYUOYeE%)^ z?$6zYzwk%*$L*hwqs&e3VLroR!n1FKN*o%<&6GniMc%yxg(?okeW1|WY9~u?>pm5* zLpo1?bfw+Iaut8{p#-6YuG$vL(XYF|SvA8Wy)-Y&rvpLSoediXG<%_?HSYv)cFyPk zN6gPLWV(}g$_|va+5YfiCLA|%jhy>h_V&S1t`+|ej>J;$lW0|32!!b16V{oiS{6a0 zPv4RL{ttiso3B29HvQ5c+^4g^-~C2y19a3Yez&4OB(i_uD?1|CD0{Db*<5ROH1gtB zoU`+?&C+nridhjS1x~CQw@y$SwDVU;1fS0s_)aE3ii8 zY|w-;7p#IEaQMfj(1i)%C>5TtAOq1FNN`AN5cDcy!M-5715o1K5wiH`Lje>;&3S>r zV10)r!?S-4({t_XlMDJ!evE(n+pm9&uky$5zy0c`pMU)NyWf27eENky#6Nxs{`j>v zgn*QEM+d74T}VAp4q_OGxTfM_qmv2&u-E~rC@Ge#Rz1X-oV zs)14h3&qj3Wz3D50rXYI^>u5W2``>`D>?OfXG58q?7a#%?TUl&lZ*SO2lrq4bNl1L z{YSFNigQ>7F|0D^9(3l*bK1~~FVpUop?T(QPGgMZyH3oZuz=Qd^`3XMW(AW@skF)$ zu~>htb=PJssi?`}fH*2n9CvG&E~`uVqrrW1@0{%~18${Pzl{I>~WTVQG z)-+I`m0qz12c&wa;a*!~R@qqkcFNkxJR8uSt`c zLYa>neD7U6I-kyEOn5GafH=^rCU}2B1thnd_PhCU4-$#Pd}0~er2glQ|%p#@FE}}QcC)+m%CoQkn<>@T(I?zNL^FzzXBd(&c z1hw591n-9D_$b8F@3i5RF;232#_#a^i1=T8{gc`G-Ny94`FK70>YMM6eG^~3D(a7) z4WoVGPxDV*<@;1`9rRg3D?5Kav5B>cGA=v*I)Is(@SF-R8;lf7U9ION{xigCtX>w} zaw}_UV0`H-k)iRIuGWg%wEvg8ck8h%InFGB9-$>ll)5$S3#KvsGVei{-`#(XnYnpY zhp>7jf|coh_TKJhpRLvVg>POnK_GwjYc%clp|vY1 zy2^~b_JlCo4I=6FJsMY553xJdCC_~!n1n>b#|onS><4@jqNHUuG!zDKt{XX)Y%h@T zozK?{g|>wc35H#xl>63z)_*wnLT8U&y4&mO&z-k8F{j{9ub7aD?v&N5F@;)7Rr(lJ zV4E(@2OjY1E7h8*i<^J(eW;Yq{j93BNmW4Bc)-Tkle8nI#SXZ;99+9cPxW2W>00Y; zTRivWaY~$1a$(?mr#PTO(~7dO-me8ZvH0Fa7$Ns7TqXyGa1@sEFO#g&swv{uQ!w3=F9%3{vu*K?I?vsrszyV>ScGF-;}t^Oy@#y^94 z?r!gcm+^JsDSyi>W$g0cy9ttL%Q({V1Ui!FsCO|j(wamxldqWRcgXC`9{YA+DdS8gL6oWFS5t| z?fu>R_@aOO>D`AX*LVKYJBX@xLrjld%iHVi_qVla=Q@!C{0;f!Qurq9+zWM92pqzM zSdS)f?5uxOwOt4>7x*yFWRbBmr9gelbDd#0Ycs@%JZjp77K`VZQ0*q3QJFYo%l}DLpZ0-ogr|jxnLF={MN-c`V$PZ6Xh4Vvc!dRJrg}ipFb<6{D zlxdELHc64S>1Ro6qrlCC-!$rc;{*Jk`QKmbQRjc-yM4EQ@#uwot0~JPKU10@H1qVD z$Hr4!5*4`&x^L{ceT~);OLT1VMB`{ow<$1cb6vgWJuIsx-=e;Px2JYUlB9f>P_-x5 zgWPQLw&@dF$17%qcq_Kn(o#B;-teByj%Mhia7sJK?2)&&es)WP@Y?Y3zPfuRQxTv$ z+CG06Uy+ksHH(~6p8bq1hq3CsFDgWbZ|J9KS(o+U=Z3)T2s|?!Pe1(m-hKDc3-}fk zERJe!F?D-l5Q^4`Vj|8l(J2s`-hE}P@Z}08z?R4AS&jym_knBha9mw8)t*x#@K9lH z!eU5{=@Xvi99N*n=!XonD$pTc<%Fpbi4A|9Xfw4W%Ju7DhlSLE8bG?wnr*f+Q{kh^ zPq^x-nEZ@EEG8gIG2+$?a&aD;?!4Bka1aaneybE72$yqmEe;W=$^DJ}?f28wzkI$s zPWk9Xd@GE24*lVpWvomQV4LREL2B-cD!S&xG;yhh_i+|rCe^Zl3owgfpyW^O-l;JDw-A|HT+_vqB5Vapy@*As;bANN+ z9Nl>I>b<@iecjc8^+P90!vxNy=QMwaU>BWu+qt~~xmn(F67U%@c8XS#C4g%(G6GVJ zp9MY-JXSK!fbtzc&dFgYLuxsItfLF1)5wh{(DLnp3dLklxIqLzDA~cC;A7N`{}1fc zf&LL5Y340lO0(9b#a8(GQOFM$14SbP;?Smn)V1{DXs1dFA<7bc7Whl?)nk8=D{ff3 zzpMZ8CARuq7|DZ|@6Ata6DXxin5x|#OmSIcVR{Q&G`QixH8J|EBZCR(UYD&|wfm0H z;T@%f&SHvYw2y+WeB>R(dirD{WwI@tT7{b@(~R&Dz1~I=yUJKKoRQdA(6XYslq2($ zDkF+BM@q*aG(Zw`nHdL^mYB%NjeicfwAjk@`1E;49rWG5B-&e z+5SQe#yXhLDnwAik>^m{rCHH7ev4skh2mCkay4m`GH}G10~-V~Qyzb_+hPXRU4bUr zydXUXy%0s=JCh9EGFowNE`^8_zKnyvc5mx-L9K)Vk&>3ImH58++FiWnP_0oVMhE}a z^M$GH*5UO;F8f&awr=AT_Wa@L-SdY(+`H92dg*QV~gs z3-spjJW9tPb#-n**qo>qZ1mw6wxlVe6(irqDO_Fs$GbJ;2QPozO^A5@UVdM`hKMf> zhAD3OF?R2a_@wKlQQRekFv)bpYs_KI89^LKanoR)K7fZ_%Y#-faj$^Ylm|*j`0yA* zr;j)W2B53^9Na(#B8vxj@+(mopmbdS|2wA5NhjM0h)wv0a6jiro(4{1^ZD{{6=fPx`?F zF!<9Oji5)b;%$rId!PcVHMUXAG3mld^Lom`nogK4m3cvM3VBDfBokh91bxm^lMif1 zM0rY)y!^6iZgI^Zeyd;2t>CIY(E*nV^28dSjB&ckZIgfYoLFlXFwj|MOpmG_eQhrl zbi=?lUt8xcTOb(pnpv(K-by4SALnwp$;gL%e??BbJ5KR6RsjdE7*BVf0Q%RVxVW@o zrMG(9r2S7ne*F9;_R|l~U!I;noR9a)iw|DF*DMz@5`Tpt&CIyBuXuU+_;MFQ z@ZjZqtBQ=9q!%1y6$QEQBfg}TeHc;6rG0{TXeCNAl_cE;vfI<}fG*53jWs>9_cK(-o6%!mF$Mnr}WHEc=1y#?e=tRmF6AOD+OFmrmUKl;TPPL4C!z?6?fVE z_XmF`A+9dtLc~aNif=3JJs?u>&qVyB9h7y!PiD1VF^7?xS`3I2DIcSxT&M5bwA;1K zU)#9P=g&_cp8ejp_tA^^x_|riFh%IO3u-hG1?lr&mtK}c$`iq`jE#) zzJd-tqY9*$GtW?lKsDD&+IQ#}s#Zr{Bn*FIwVuwZn{S6US$f(QFRwnmQR^7Z)@;nA z8(<@b4hN{6g6osIVH=Hbex$y~5M+xbqYMwF z*2py(;Z#*($|b*wlmF)3%TG^l9j6|>bgv-h`TKi$!SMqfJ1b`SMZw&c4~(2;jmdvI z1*XniC!qrjS0BsgOi@!5(UqF_9>tDm=HxeVB4q^5^Ljpp&IG!4wj>KwGXUU`PAVd| zwt>VQaO$L+*JC?EsD>>%u)Pn@%zDo=S{n@XFi%`#TbrCtQ-# zy$kADR3euwDGeEo*>yi5h(1@8B)5O><=}kXDIoybGR%_PphIL(=NNsxtP|#Kg~!DsWaxNw&s*XciyG%4ia{? z1D8l?$t{Dnf7=9DDg@L(j+L<82oa|VqRna#$rCd~UQE9>K|6_g3mKV4>8F47eojO7 zSGHw`=5F~)7b^k@$e?E$xfSQZZ%KiK6f}8}&CIKHe=#JbKk`4^H2cZWT6C z3>_2i^yn1E_sO$D*+r)96vdFjk6F@+114_b?VLMxZ7#x}4MVY-pc}_*Nj*rqkobvU zzUUfXY$ZUVv~*Oh5firCFDic*fV7Tc^O)IvpQM3lj)VQOkTk0!Jsf{Ka$!uBF|xi- zV_dDy*+4^k%)V>4#TC6xn6xzw!zn6wqP1ubLZZ7htMSUxR74D4wf-|N}t63&RJavdJ4#c2KF0*O4t~pDZ&mJ zvX-&+E@HGD?&s(zWhw|BB#`y!kv?~sZnF#~XBHNQ#MyR?ytvNQ1<5q8bvyN8;yNw} zhjAznu`=hSqVnpq_&_Q1p9DkV}5m=3)+r>c2E1$wJ#q7%#1Q7ei-UIioL2jy(2Ra%19mHiJY=n}3Q*Sz`6YgM{`}?T&rc`b zI66Ie4R4;?@ykFDFEA2hLl|A!7v@O0Eqjttat%&xdBc6yu{u_N?kFp5RwG)=g}}Ff z>Ti_@8TAwL!a(#-(V;+f(uERBdxHmImX5=2_x`HSzWemmk`HvmI|0>@O**kQ@5RnG z@Rwj0%F3+@HbUFEZ#-(}*mboTxd^2zaJ;?cPj8RY;g92H@s(uct@B}og>BzD7hO$(#C7&8;Ynk~Kx5-UTMfPcA5PTih z#jd#ZT-zwv6JG6zCnIqf9{B91L^;R%(w!HQV_QcScn6Mu9W348<1D>0W4W58EgsEF z?AbRKnBg3eZwVs5`&x4Hj~~vvXaDk6aN^O6_*N>0sL;|9SIK5sGb7M3FBU`^OVZ%X zw=Qz#l!^6dyJ>LFZ)px0WI#)Y%ShuTQnQj;OaRfkHKpOh3cYWj5_>fKE4kHVC&?=@ zLIxf%3Bh7q0r){|r4_*mWgN=!j@heI5*Ruh@H z%~z^@O^Uj}Wpdl;6rL(O#7-`7$t|(q)5}MHdiU|(!RgT}ciXS~ej;ARq^2%J&T$RD z6%9Wwg3T>CCIT7mVj4DCx>CR>81#$cu9_!Z(_yoJnx#Uxw_nIAE33>kr3{`8OA69E zO^sIV;AdS#$X*SCOeC@g#$4hJ2WmWRxWaApZtW_GTC}~IN@r>=)iz?{lO-NP3uR_E zweV}OF-?hT9%-YE&HOD2%`~90tEHgz%CHX@+#0Xmzb_wu_~Bj%=F#i+R$2m8ATg;+ zyhfUTFYisg0|D}CN>&{c`0~@!pys(1D(n<#wQ?_ZI?J{3v)9g(2@6K`ktx^Jg$OQf zf?h$ErkTshoGo&+iXK=t>cMW`jGvao#8GH}^qMH*2nc%nnS}U#KmYrumyhqCKgScd z*O&O0@GnpA^zH}t(F^&yVfQV&29>5>Qtw%q&Gwmd&pDU|XOPINk=>;Iu!2#l<=GZa zQ9RdWVV{7)xs(DOK^?D9u!s;KCQJKxqbR#4&QYwaK(jbo;0*(EMR7ty4pDWv0 zu~E5_zlP*2*966kNHe>RGuJ6NNho7~?%8&qIQ)(#AgcQ$3F5IRHK+-lY!!oZd+#RFC>@OJt4RU#0)&2QX8`r>AY__y0GL_7`h*nolWJl``?iw48Fda~gI-nQ#(&_A@X0uteA}gZo zqx4@^g0ac`sRDVaw_&Hh`TY6i9$@d$t9HjP{PpTuFnGocxWwG03Z2b=zSrn2?OB~~ z9Tw+VbR^6O0x>eA%q4Rrt#ZsxP55Fqlje2R+_q-%(t!j@qCC1vM;O?(n`mc*)tb$j zZh35+^{OdxKE~G??GPHJeJskk#vGQG$=P@5Dv-e=OHWlZqjqvG|I~?8QF_$V$oOwM zJj8JW^mqmyA5xnE#-Ejc;o002RYtx&3;*WJOT-`J<*sw((M$K%g_Y6GwlAWuD51w3 zvm-i~;j^7Y6t|8k;R=5n712sKG34^dd9i@nGsl?S=Qul6(7}N(Wmjg4mm(No`Y~k_ zK6In*#9U~SdfP$QGMZh~$Fz2aXLL%hbTmqX5VTNPq+P29X@S;%dt7(BEiFlsX~L_v z%xrUUb+4H=C_<8sIg69lGTxGY&3iOmYZpCffZpHdwwd$WKk2(aJpJ_P&CuF|SMRNJ z5&-IYdP)V6lu*1VYTEivUgYT73B!eF@e3X0*m~#LE;ZRCaFa&?8J0#N?x8}?K$N!_ z(JetW*yvYi<}?xGZA>TZ3Obz2br>vf$ydLiH1V4uK`cGO%G zIO>+gy@}UzMP!2^a_nqC?7gnOYCT6<%3v7ahBm3L+fOadl+j#~%Eorm>Kex)^;JCO z4ZC~cUTkH5j%2a;cG_(X@vmHV_UP4oYnRK)fN6$6zp&EF7zjJ7V2VOT#ob;?JBw7E zke6JmwtTG5y4B`L*rt>}<2j|~BF*wJWK)GNCfR(r%#&ZXP|hVDSh=9qShu<2|06_L zk6zQ;y&m5WSwm2~bSzP0jy`7<+ZT?#GL>dicQ49+MB_@UUicJMla{+{S}j9ds~~Sy z&1coaKm7`Zta5fv##m8un~PJRUDTuMfC<;hD{eo>X(qR=8U7I_i%LXjm#o^-9;@zE zPVUpAEteCCIq}hW%jLd|c^B{Q^Ar->5#TbXA%#y%Wo6r|LZt;Jg>Y+_OF#+nOjbc| z-40xTGoI|H5Bpv0yIuFkF5X)w=OuW>m5{--6y~TuT9GtIcdtD~AJze%oD_Z_$Q>4m zMmB{z{yA&sJ&ue?FHG8CE^5HsjeL%kYU+T;=u}a%)$lH5dfu9EYZVww!dmWEx}YWI zHe&Vc!j)C2Q=pse?wog%HpXQ05*;xFAJR^L43O@%AUk`B!TH#{yPc@>G$i1SaoJV; zFcMN}*TRet0%|v#`v0)0uW`n9R}=l{rF?6Pz0yCNNYM}J`(&U-Cw74X>bLjOXFt>h z`p$BqXPXoUn6B@Dfhz_PsO?IvRP)%Dz?QB|^)$ESIdz^!C2{5BAeJ@p6GF?tOS4ym)W*2bT0n4s18c*Q;Vnw&-i>aJsZUVF@ zE0pZC&D#&}&P}<|i+c)V8Z=EMB$I{A2%hM{H@LTx3n7K-wRTv+)SQ#2erZUPdT9ZA zLcGPK^MeR_fDS6X+hjDp&(+7Gt$Mm1X~Xj^qWbTDA!^=zP#?Q?xA4XOZBKiDH7>~v zT^Fm2arSHer91wtP|$<^LK z%4MHzt^qDIUxW?Q?5Eb-cky4}kk+FY@GVv~KVA}kGaB-~aV0RS(u{~{No!53I|F94 zGB~Ssz9213Fi<5k$!nd4$eiZl$O&V9Ge*>T$5Rb zBD0r5$uHN9?UEK+jdt>|nyPQC^RW7%3EFIJS9j|+05P3^APHYqqL^((&tc_SS&Q-*LGB?Lzg*^*-ImU@HJ7op`c9TS z-|jN2Uf1XoIsGa+mP5U5OLvUaF+xIco2wo{M|U(0gV=Wpv+Bi*PHS!qD%xmc$+a<316O3r!q3N{iT=}B+t#w~hd*k)~C-N*2#fd^rdOKcB_eqTFP6elwEq~u9J3B za~;LNwvVBaET<`dNoQW-W0cmgfoL5x#N{+tCT5)(`be*+1@ZaQ%k%qtqLxQ5+-nTQ zx2sJo)5OnNopeGZP2EIdGDEt&q7C7PVJ(?%TZoGGM*R+|bZtp9Q7S5&w`G;RIv5te zJ|4TAV}n0*XSF)_X$|0Udui;w~o@JANaRDh6^lEEu^h8%|Z^^X5 zayl-QO~zzM271B;OUgnUbxN9ICEK84y@RpA>pV(#(*5KD@_q<+YUUnFp$qGntRkgp zev26S>l@;E^a9=);`!G5smU{HbD=0*c_NPYV?L1}PN8wSg$evQ+ni!lbu^8AOXOsVj=es?h2QT1%Td(7u0yR0 zuUNO2WN4q0&BocXjQY($nLaq>Lw$xjzHPubQ^H1hkZf>(;BaDRSD+z`fsm{;r*Tc;sL;r7Qt#XM2rN+2_jV-Fd@dmWe$MoRaTBDg6VXsz;F%UqR z2@rRkG8#2gU|P!o0~zJ>$r>-MC|VGIQ%USJymym+g2D#Tn*s#Fud)GQ2r~CSLr{NZ zU;pO|RG{`Qo-i=opTK+cLcaduew)A>*&O9+pZFMB0;61|yH%?2HE-UMM|p90+AFVr z-S+Wnb=M;=CPk_o=6!dAfBO=jKYjdv@HyT+|KZ-%=h18UR=rqzUIUMPbflh~v;hGa z6Z7d(=t~L_!H#GLAm=nGR83;K4nG ztqgR|&+TP)r!*88Dsq6$^wVzQDfiIeh-Iap2$RZ(GBJY~wK5|Tds#VotP=@;b0y|o z$F8gEfM@Hej+9#+Mq9MVvfQC=6}yaU>!<;VxH(Pz=U*P%cOO6g;ir35<43RHE#>w* zxUJSXX&M&ipmqhpnzvqZ!A4xIm)uv4e8{VmJ)P^fkKIyF7~UFG*ERi`2;B)TVl>Vr zwKb5!i!Z|%Lr$9W7;uSR)`1#-E;jbvCC6e zKTOhDFD37_nsR+-czmkQ9Xf^QzMo!r2UD|h{-E0#jFQ&Q-io4^fCK2#^J*me|IZ8g z(M$Li+>4oEctbm@gH2-mzK2@kO-13lxfdpPleY|@zKkVxRz}5SQvwx#@=Mjtq75n6 z?Bg7*<~5W))AHtBQ#~EuMxzK+JJ}xzpY!&5+apnl;{wsK{jPm{=h61)9+tZd-xgE@ zQmLaf@lw+slZlQdl+#@x`=+40n)B)O=i%RR?n1((Nfgs*m%I`K^w%R&BuBJ!+YtEO z4qQDi@%i)9_qXz$&3*KLBEEIMl}zaeJZ`6r2-c+136WNH#M0Wo&cvWT$rnqrd)p;tpBaNlp;YQ_(1rsX%t&Q+JYo#84w^Y--Mte#jyR^_K zP1^e-4Yls(@Stxt_a8YT=chlt=%-J2Psxv7zVF-myI(%E(B<@J=b^NqTLpM8&}(4o1}SLQIpcd9$qk&*(zjJ^^B07m3wXKx^mWb7~(pO5%Hm! zfZ;VEE$L`3ty=A#VQRL~iWn1nv(Ce`a_1JTO`zrWe!IW_^zP%I;>GoIJpCd5eD9L` z==FPR^ip=$&`lf?$?L{MKGLCEFT~>q^WojA7A(lj%&|6qv`0^e+p*VPl;5HCGy2<$ z0Qfeu0DA6-rCgylY_=+Tczb-1bp{X;))8S-BX!+ahtZ>hEfCC;3A|rsl38? z%;x8rM&YQl+svA6#A%6&SfOj#PL@u&aCEvC%RM<=^_==EMs*aJ64AO%F1LN! zB^gY0%yoM{{@>kt9=&>R?dk|0HO3{|%(+ER&?Bjl)Ab88% zCE<&n+9nsWaVg64JlX_Dj>x`jiUmw__NhH^{FGOt`jYM+Y z5{-Y=M=?*g{eizd&mZ>F-OJ9S7w-1ZRK9Jf@q2Em4fC$pY)N+{nkS$hPAPp#$#qv1 zri@x`Q~BkonUApzpf|FGvPzz1>^(MT^nnI{Zui>3YY;dfwdcbc>b`UK%p6^MzMb8Y zsaKXb9}W{zLm_u$u@E62^KATlXAmP*I6NajH5p26re$s?boT4jnCoH!dnSbz?kDot3eg33>x{Dim@Z!C`=6t=urZyWB-_hrP zSf0{i`ndMoD(tM1OJ7x#(?>6d!I+unIPK)LHT6iPk{Mhji=~8IykB9Ceq=9C!jG(u z(9>qfmePa~W#3AZE1!MK%9N3CoE(6di0Q1)0wC5_I!7jdUylt8(d$_NmgeFF(x3n| zgzXgM_nC9nNwy*Lm`WmB%OF zhEmSN>;$dXPjZPg%Yc6(lvb)(feLwEP2>$trFB|esW-J=zSeGSgsAN1YbrtE{4?=4wn<;6hSW)Eq)_T-0@#d4`<<-&(qYRqE=Zd@c`l42E{ zxxLkvK;unO$}Ezz9Jo|ux6ZMDbjY*=Fw1b!s0}vdpdc1!`v}N`w~#j3!>5+kwzb_< zrge16`w&BvnU)`&$l(rBh1yq5mS#(}>5MZ^>m(-XUbR%%T4O}V43QGT`$hUQJTy7u zai#JB2O-gs!0&l``2EfE=eM8KM=#x5XQWwmc?`tZIprg}z+$E!y&B$sv2A_G-27oZ zp#zk(pkEu|&Kbj-RcZoR8o9jcxdvV_D({>s_iAfWhV`y?2#DfWv5~?iPW4x*(-i8f zHUbDhM1o_1%4J1f6ZUpJnfO-rl!XT7*bG(T2=)V7mdSz9;gqBckXC%nO^PWt!%r0V z^mIQ4Ao_$vjMdkOHLeVQ=dVw`@8ji%czahLy?SrnXOb1>_RCZ7qV9{lI^1=+N-ImUwA`kVEz))UZrfeAGN0({!Dc(U5} z0X`UM9;nB6xxLBp?7(?4AzwBn`}DUTKLkzndp-3BFWhTI z;nyPJxI&K_>&iy8Tp69`gqX%Uv<>jr>c9Yr;pMY2!?>}lGr50qjuVg!cW`pib19X3NC{BD}{(dr$167xAqRYd-3@ujNws)J|3s{u!PSrSEx& zka%`IEg=H50{}e^*~!xK3gAV~Bw#-9mQg&`rDxFhOc@blk4W9BO=D_GkDaN>PvoMv zC8bt>m$cm)O4XMAEF3jw$tVNqV9RaPE5XNoK3{2UfI(PScejzLvoaj6gJRQe14Z3% zGlqznUyB`w6-TLV=M;$ULc43vw0JN@(wDD&P8=h5rTQJ8e6*^C(wz84%GPnkVr| zTe%NF3yTWe@=%+z)P`_o_|CP<29Q0c?P{$C!;h)mc3Xu}{ylWH)QDk{?;+pMTMKU1 z)C7`Q%c)J;P-IFlCeyIl)+jseU~Gwheoj5bPu+Fo>ZfMNq;+VT0~uveY_q8?cz8Ki zpF8DrdvX0Q&+k8dd||Hc>C2Dt^!|D8yWN{duj1|Q&TkKGx+eNXciYvn!gVNEt`8Zh zx|-nw>1l|}ZRpZX4Wc7F@5?UcItJ*%Vx`P7PH_9$vvNE%{9-YSoBF(>(~CoY3mj0D z7DM(ep=}Gk+s%ZlXhfM9ORzX9&s&{z*Bhy}OjLB_Oy(iS0Y1YmrX1b)ZW>%gEoYCc zmE0KJGy0oDd(1T>ZTFE?e95plPSeF+WySw1$(QGs_}^~tqnGivK%Bm9?-|2X_dKbr zLki3l;%}bOVZ}zdYMwI*$GDPz%*XNVXmu(z?dzN#KS-|%ot5OhjOG)tX0Gz@GHds@_CGP4 z_43pE`0z!c0o|=HK6W|ZIwn&{S+WYm=L_^_QEd~Y>v5{A&YVP3#Zi0J)o0@yH;>FN zsnlL-3ta~7=&blOPkFYfj4{Nsl& z@vmQ=^z)xT_|uOcKi(a>eDspO#dAv+>CllEos|g%$W`zgbdQAt#IV(CS^F!x)as0D z?#N_#5CWcmkanVfgARh=C>7dw>O^?(c&Nzk^(wmV-3r3Dl5?-8zUuEyC9V)mu*s&& zH@wL1J@GG97a_pG*_YAck%HG9AlbQytGUqF!%QVpc9hequdPTcSC&0bWDD)N7OG+y zxE|!=y{~}TT+{yIR{!Itmye(H2So>N<=%1n!HfBS)+T3M1WW7g7;$3_iaKq^;QMk} zJXbH<2*yfTu$XLynJ(ag^k#YzD@O$PH5>*Vx!0E51&QV!yV|65Q!8xdn3& z_0=XbB~ALISk#vC92duv~e^ccB}9C$*dAjBD^>nwpL zdI1i99)6gGQkkG^XDJ6^)1jeV{Q!ihvj#am&bJz-~z zYY3zClc1U2f~p#aCUMzeONB zOyQAnongru+;MuHBGLzwJkwW3Jyz4A``(LTy;8byo{RMw@GYcH$tRkvE1{26LPvEp zNP{GMlbiR4PPD zdLHReiL*)3JyUkO9kpG;;rB2WsWQwiI*_duDK-9$a(oxc8ntU2AW}V}Psx>k#3DGF zl6Ggr3a@rOs}Su_t+aDAGWVr=60Y#=(JT0Xy<=t+Io56q9=|~f@+N!c!Ap00FD~C< z=A&)I4QY4-2A7J=M3)p?Rwn0=%}=Nh#4{;v^uaF&bCQw|hOlQD5mo}=+L#FSPCQf2 z(Ne1g{c`9bG(EuD*~x1}UV!p{ZeuoHcN?_GPO(@NeTqPl&e^*+K4jaBIaOV4S_O*S zn#)X8RxQ>X$Sa`h;yJeJjN8Qh_&vAYV{uHxXpB?FT(3p%C@66 zWA@s&-#)JYgzWv3e*XM_rndCa>-QEpwZ}5@b)(D~Vx=o~nqDEOPu&@n@$4!Ivc#S_ zL8C2MIdk?+E_!B~>R9Ap3ad)+m1}uUu;My*9=kip4S1%C@HcdpR$Do*hC+7nR$KO7 zfs`-n^iiy?R^`moPuVMra6{tvs|DQokmy;T zh?X__KE7&S*G%IyOSQjJ(*E7|eZ5zmeDKP>HBmdVSBgWWC#E+UD=*z`9k7PdC=H#fI?8 zY}wng1bm}qQ5?&EeXl0H`js8#3kxn+TDVT$v2z%3|4mh2XlA=AZ5IB}J241#&|ng~ z!Z|0Km|B>9E$nGaj1JjIl27;kis{CV{@c4}yBD^3@XEbTB!At}&hH3oP9Z*TCE$Sg z0&BzkYCi?te4SZQYr=N*x`alwl(oQ>5z=hD3szc8anNgjCh>jLWzt(+XPcifnmD?l zwr2C%HUi!9+UE0D<0^gh%DqJqf;i|+y`BTwobrq?*4z86rzuDENz(U7W)#(DnZ1Ld ztGT5mntIu28%57h?_GBhf&P$iA{@^roorCq;KEw*6qx}Wt97~AZE4xtIHetPs{>c1 zt(1CNMPUnn6{GjUP?k*CPop27K6lA!_OI3qVbCL&?3C<_<%>vrbxToNCP|%IMI0Gn z#fho;SoBKASVdm#=>NQocwha(@yGbU(D9ded5V{pk1zLL#gAUjw?3}f&S;=|0gJ9! zwW!W<%9)_$GL!aaW11|-QsANAg@THfB#VehltyBIv-%oL_A~$1>?GCdd}peTlIjJ~ zMkfYRk{QAoDRg+hO(_4>Kye?vZf`Z|L0K|O)EWFM*-~S%0txvZ$b|xk0)6kK$r*rJ zx=Ck6ZK$kvv$S>@-jnu>f^r^XCjF?4o*Fai1IB6iNN{0SZB<4(Ymp_m-~74uItiBf zlF4CXY0a9}%E4@5ub{QG4zrT$3dN_1;E(!$38eyl@{3u>x??w4Ffd8^oQc##LeA7z z1V$g(R}G{VO%~~d)fq`WqD5y)@cH$eYkeev0KRBi{qkdw_GZ){F6kPKiJUP@yXG+L zv~hM2VMPW{PmEhJm3cIjk!2lSw}+*Fyga3UVOt-)d~bbU?Fg^4F_s$V&%yg>wQbvf zPCyBCW$@ynvrf?zy2jW`YGW>^vRp)g>cZO)aX@Oi-Kx4b8q6q;coXTi)V{ZRBMsAKs|2?aJlX6{!+O(TNDBZyC<~=pyv+cc?rKaPw?o~d+Ve$X>>c%F-&8;+&#MiABvrrcF3*o41wY7e5LfaA(S}>3=1EG zlV=;bGiRK=N$YKP{;#&3aL^ckGIDQbC$$V;l8b-dHRf1z-L`S`O8Tq!c1p5ZMRM2P z7A(p^GTT#IFy!MJ@^7tM%Wc(eqo)X8u-!IwB%QT%2`OD_C@bU>OpWHPsZAqRmTFf^ z%${>JODW&JhyUxftMRWF2A}nR*7hc`!$@*VDMicN@`lWRNE2{RZ&s9l>iHTRE z(rxBKNpPx5%cJoHtdIjB_9ggTWppOI&~=PO&e51W#X1YHxHPo^fdV{qw6lrvh9}T? zvROJ=ZOU9nu`2qM`Srtp?TX9ydne~Ve)#m>-#vd%!ToS|1nALg_tuLz?JB2k+j0q9 zvF<8EL>O)q&kcu`wn{}KYA0l1+uT)wMrYtGv>s+%GwQUK)^u-YyQMNUx~x_~S0#ch zNfDE9HH%A8+9O^m-uv=6CC(|iq`CS|aquXm6$QcUT8p1EJ65EBTd7XPFD@26h(=CE zvqAc>;~YzYlS<{XK&&h^{@tOylzue34^U{3CB|I()}H>4Z*21TMfZNCXFhzncaMGa zlD-}YO5X;8VgbOK22{r;-|iCbI(%)P*mRo%y2Ke%W=fhy*^_QaOG_(Nve{0!E+spP zi6eWf%(AaMe0NiSdd{cR0&*)?Qb92z^;~Sfvb|5XByne1)-R2#T_hw>q037>@O0|z zqNna=f|_bY&B((wV;eNRMsH=T?$v@3DL+iii5*INQjS!swM+)+SFaR{K}FSB%l)k; zEA#&ObG*qWdGsp2rS7rDSEEywoV7tKTm;J`_p-T*6eg~J>YTZi<=~&^lv;tujWb9D zuOd~a(P#mULQL%l%(QZW1)Z-<&|+(`iA5-(+=R{|ad@~zFcN2|uqRPDq?TG#XFujC zRYnxAdD+gUp|No=2rTcCoWg+V7#V=EzA6slMunQW?k|QDT@M zcLgEcm8BTFg%U87W8a^w3 zp1O164>sqp3d0(2z$&fR+SSjTDv<2DK&lw4@Cl`VpXrihHND8jVe9On!!y*L+|N~+ zDs2JDweSj$7B7r6&4Q5OcB%mSvj2GRAob{lyXnLJvZGmm-qAxL5lv_a^J5Z?L@Z%; z<{OWUf{`&YAj<|yJXqoF=H==RRz8e?(N8JL1oEZ9S(_yP}Bz>%Y+nMj|C((O^s@_;eD@>O}XO_ zoS__U$gX5%L}X1PN@0{DPitmPTgk#GOV9TA`>$shr(fd zbls?t?9_I9JZ=N`Lf*QKchYD$Qd*mlc^xqZXFHXZJ=M)PW7$b+3aP-;_L;6ANZP!V z0W4dflC zk3D5j2{_VaaAlVQabm2oX&x^oz{dnZJImG>={0(W*?{8hbkBS%>#Q}RbB#ZL1xM+0 zT#vD<^#fi}w{SxkREP&VP2fOlimZA%JZU~qZBoTZZOnC`F0H^CXtuZZ73FmDZ}nAb z;*v7G#1GG(zr6hU%|y(j*YM^O`|nhi;N7qFNaqx!Wm~`c$+99bN<>J;)oye^5PP!x zKJu!m?K)b~mFtYPDy$J&P{+N0wXqA$lcwUlN9wR51w?b=gCo%tQr5avs12LCcC#`Q zApI-$Yq?l>E>xGc#!T}WI%zI4fA1UAS2qVD~ACQFVp zKfofjqNEkM@M71#v<=@FXgVVzBQw%i81_erjErbD+0)(XKN6*j{p`knbKdUJvZ~&N z?+SBA42Q$%Q&s2WiFlsh&tjRN?zTlSnWh+9HM!O1*0vSQ+IAOp`uR2I^A#a~Fk*c2 z<$LWVcDDw7q+D=^!rE4{dNGsviFd@(bb4o{cvQy`+>G&b-E-`2!X@&M6UL~Q6 z19Jm-cfcb@Snt#XyHa$2Z8qnwK9ZJ?xo^|NIG;*jT-Xv!vk|-P!+mcIghLP^UuR0U z1Ga4{umJP0DpPF^Tm}aBut^no^v+43OhM){IE=akX|7`iTxq+S*sZezUt)2)y!-O* z?U%0~KR*`i8#MAw36^?s+WL|VWP z(xf8XbRrthnF}@-b%K^#l`UCeO@f4LVZJ1CpngOoLV??VnEX3zC8${LncAn+!cXRw{PkB~{ZUln*%$3EKh1%t#COOHur;*74xBvc>?J%UcTAaA zAF!;5SHoAaodS}5G(!d*y;Ed&c3OkU4LqNLW0_)Vdl_bw(M_3&l79mlg%)#P6Xv8Q z>f_E^S+FyI&Vk@a+s*r~@r4Y9%9-ad zWXrWWM#JNDIcHe!vyEQ663I?)du_b>jtr5l4uzzQYE`Uq`$YX)sAfNWtv7#s*p7Yj zwfl>I&-B0k8$@V~d9@Bk@0FNe4jmn2= z!eiw26^!?hb_owfX3#jxMxkS9*%y@1o?d`|sP>~k0iO`V(i2f(NMJTy3zOM4Yeb8B zWz_#a)WbmdlP}%vbcue(RSbtMWA56s`j&J-t>;`cvc!}6ILBymC1cuu zS`5>f%_xvukn7jW+R1RjZTxNQT&QADH|=P(3(wlkhEh%9m~O~7j0HCYZjINx56lRt zq1TbSu<5VfzW?|r4F2q^c6UtTAHPryy!tv&%M^lgzlh_`1-C29vL!Ia7x&AqSbg_8 z`1ijkk9I7aF4&kmx@j7Rz~@~XOh{&b_+Xz%!X1IgEr z*t6i-4=jxelmtwpr*vv-DM{nZ*}B6Mu+i=Yux%C%VRlbLJr1_)X2|xx00dfchdu!w z#K|4VECy`LZ3z3VG3z()KYx4k+EoA9m+ryQ_j|C^1=4U}&mB#N$@2g_CGfa^M%Pi3 zo1H61-H__ap7V^+1zQkq(XR1yZz~cUgsd3>Qxrxb9%_Lr;9LSd<=OwhkF2=;ak^%xi z64p^mB4a~!iR%fz!4?RqW*!}XayxSP-Ouf+`1t<)<6zUXui$G_hjcu^!Q}LV%papo zIS%O8lbQuh5K5URRMh9pz7+|+B(=+&5LUB~1N^>`h#kX$ZbfV+w8PKf11!i@K((!> zXQC{Kg=A;GeW_t6bj;?o7``YEm{x)0=Jt!Yju{-S32mrR^#y9554hTY2f}=_AJC6| z8Wqk?QbCX?ogF9f3ehn;s+EKENXl-Dryqbvr1ab=vi_|%_x{_LM^nOQU%z_>lzvaY zoQ5O_6O*)c9J^S73ss{-G3+%-_@olDH!RCj3xo%}b{w_HdAVakHOsRcph3`~4*|=3 zDs}BKqhDw8GjwiUO@Ie~U*2wGh-j%c)XEkFW&^-+?<^Ee#ysaJqz&HG25%<_DFvVU zhP5?XJEklHBJb9&J0Iskn2BA|^x!D109}GMPf}A+Cxx}u;-u%keOdhvKYy;D-hIkf z@VC#tg!kmO{&F*J7a795uA2b45OCLXLL#Sj(ZMr+QGLn88-^am41PoS zs6g9b4Q4Decnq+JQ3c!Z$1I#IaAPc>VHcDoviBW!;1^VheD;-l&AxLvUBI-$(>|I^ zrW2<+rqtJJIsB4g3&xERFy^tth2Ftu2tfmFA9RfgOYD9iiMo6X$fozUoVL*%W8{=I zr6b_H+hjwxB5!Yh!qj2(LoXE7Mm$;7Z*=L9GmU+CEhq zDk};2yqvW|`r7z_r!ep4zEsn*v`rLPV|81Tq-=#X;7ufRqIPx;6rl{q1u?$dyc9B5AbUEV3oR^LFC}C%+WTMoqW7`SfXutyDtCjw-4|B@!Lzh|CNE# zvoGLlIf&zbXiZmi4elGEDcWsEofsj_52A3Z6xF^N*ih*V-#)7bAu)fB6w8L;ve9u{ z2rd&IBppvQ!=4vwg^P{7BYKh^T76EF6>?kTC3nK zn4J|PS<+c|c*E<;(N)`xPV|zDvs-hqaXo|!$#Fw}pL9;Ev-_CRkyIPfQCd|U=k^%< z+dqE$^7YMmSM|m}eR}_B_x9`ycsnWlv8lmbV1{?`cZ#|`XJfT54TEX2m> zXP`5jYeB8p;5fnxEQa7^@a3|~><7rB>W&Sy(JWc*lEsez?h;{H!nCZ8+}(hqV-;f{ zfFcfm+!P6gJ|;d`{L%AZBMNd_LV2t{4E+>gy_VJk{(39%u4AN*Rot%2j8yF&aAeOl zfg6oZ2qWgeh(@d(ya=`1N#SpP{$L+1-=2KwUTe+~kz|r%wmfGZC{6qlwVBgpBpL*m zvUIzq?Bie&+z=Ybp?q@7Hex|as(KCVuwZI`Xom(~st?p_Fh`+z0+quNu^f2g7HRvI zu;w8V>D4zFr-I2WIDjkq>UH6<%)oO-=m-h^b9Pv$ARetlOr0GvKV!j!!xuB7+=z_gmecJrb1-|M2B8_Vn2o@YOxJW7dHM^Pov%o13D4 za0^#~8TV@QY-wjFVRZn`CZH*M+u&9m-0vNEs^fJbM6FZ#UeqD_T0ISF^*~wd7!|P5 zxU}p{r!v>=EJBkyU}V#+K(#|D(8y`gk`(Ov%7{^*|h$isy)yfm!VOk4`F5`=w17$FO?*T$! z>}=G_x-CXkaiGICU54~a3efO%@48~CQ5zO(p}Z`@U@7InMBZ+HwSV*B-Y4Z|;x4wRzViD*;KHWG)RY(~!}RuIn-AqPyjo`Did zflM8%^J(A>zKjkjEkqNdlk|i9Q8u@YJ;^#nX{npGn=EJ_R6*M6RRk47pkj6Va`VrB zc=s@V_Uy~{+RM%00A=hTPFvRS#&rnJ;fXF20_b(1#tUxfDxqu8Mlno()O!<%UYLFX z%YHNfe?Wl03PJ1EQ&Iy$14=)yy>_(DkTc3U&YJi^z9vXT7U=ZtH+ zn!LI7)_jD}@~A_kdx~g60_bqqmu%F{4GlCkK-&=v8q3c@rLrxWxVs(bsKh%cd%_*0 z2T&GuPcU)*;^X|!pFV#18V~>{e+I!HKfhEVA0;E6eIaj?5$*T%qnv(RN)FZw=&F(R zSfkBeD0xUXR0d3=iR%WorcH~o+6`cU2JxD5S;MWzQQkN1E#OuTNh!J#o72!_!u$>a z=12lm(n!K?@4Cs?LBGQ4ng16euU1i1#dcl+|Vf3SeImYy`5 z#)Y+W;@RA^D|HDu3etH*ge%RO_Hq)Pb{a)L% z=5}`50>*N0GLTwbfkBC#1Zja0nJG+T1DomvNT87lPB$qg1ZyfaG`vEpFx}#1XcXXo z%gB*z%v_Fx4?bvPFRtX)e_JiNEkxQ>X{8nbY2^-IgJ z$cf)+^Zp}1%^F%DQZj&Na8U& z(DIhI&(**G_TjvXe|K+QKHNuImgio*zqtGU*YSH=zqjvD;Zsv#=)p*oc1W}ueLE2t z4tNbL1=V)Uw&t9D8}^vAG4Tpk?#hL(VUkvg>8z0xUX`*lK|k2J;2gJ2D-!93-VVkD zP-)+_9Z4{&^@~|K@&w3`i1BDD*}xFuK+--{=SGy&aUVWgf045_8m$9VfS^$48fkzA z55C}+qv`P_+w;P66ZV^v13%4%oZdY+K(MoljU$=V5js%G23S|mD&T6)^Vvw}Km74XhA zoqKq#&K<5Wf4Y63vY?|7uyimhvdrKW;aAvsPE2pxPH+at2GtYog$aYw%+*)lg((aN z?#JE)s;L7m^yn?ds#xmimC@A?t^%pQzO0DRy;vG zL!1YWg-*L24#BzRutFx0W3914Z@68^{bDd`&%SQA>p1tnru~%Si6of5Xpr}T7OBTP zAiuO#XblG5BiI%uz>UmIF=fZ8Y9m?;`+-co&F%jVi22WNzJ3HL;=?N#pC@0z*UYgk za;=(xS#!KO_?ys>hpc%H@_W4ka*0H)A=Xy0 z%Aqhv#76QtKt8n?~DM zhC%iRwC|Nkn=DNRIF0ga*7avjjua*r!-z#UDA1~!b8_-*L>uRnQw{QBtl zfBWp~_G;Zc(bF!2^&3M~`~qrD=Dnp~EUD2aHq=|M5;p|el7@o2+nx*e2H>QYkg_yt z_)^*SUijk9++Gt0xV6x-rnOEb!t6+Rt|9&lM$bO`%H7VFett_$)Ojm+(3)B#3c^8m z5e7@{N>A&F>A2g=NooOTI^q@s>yAP-e{f-<8c=$i#PJey8|mrTkN~x@aw8K^0F$88 z1W1%jP&;nlQV$N3G;mWvO}nqzT>By2@F7{hs!z4>>gIbVBTmv*vM2$(mSG?&yK`tGiFszy9IPpYqXi_1RbMwYdXwe+5jc zzVxcj)$%UjULHm$`S3*~Ba3MXw#{%IjsQjh}=1;zWuRTpc5_gbdmaILka<3^sg$p*9I|`hx2ocD{1<<)=ZO*nQ?SY(#$pu@O zR}hGG7A?lX6~&>^kYgokDL9E1{4g6q52(W6gZRZx_Md&(UR$h6pBuyle=KqxlQh_Y zxHkIj`($;{aM9!_2H@NJ>!5Y|zyK47gE0 zZcH8-GV1aPZ7WR1r|+Qr`J`@e+s?VV8d^*?}c{} za)|iQuQ`jyVhC}n%xugg0yj(WG@FSl7H4DgF?b$J9fjo99BgO)ST zsyID;Ypa=7qeaInfA&&5#=z@zWq6f!wm$D(V@6>&o@WQqir!J659GTWpn!Xy(I@g{ zVk%7uszKMZCL-jF1zyb_x*KYbenA0p=AJtcZyGo(9f*Krt}sxT;L1Tw$Ge`jZ=a}t z^Rl6-N4bY*U%7jQ#`iN4it}O{2D4+%g7>@Lf(q?d*S2VTf2Y|_D`pnVcz0Wgx{B;(t+421*6V=wD>d|4aPPRDYr$)#bAR=p$A zi8ns{zGE{LuM6tgb%!T0Yp-#6&>KIA*~A-KudvwHcKYn7m?y zJCHwnjtPKZ8?MuoO)rVV9L!|0+MF-i;I`lyfM@sOIUr77V7(HuZTs z0qy|s#KL%-FVv14;QPEKd4PZpk_H@Y;k#hSm^G+(e>=Q-&WWkr%EHUK337Zb#E>4T zEc|rG#fezMulo1F*2h}234QW($@6&i_NV-pe|mHie)6@uf310`VW0zxZP>=|th@f>Aohp=xC<<*p2be952^DJD z)OZ>?e_w=t?(P1KYbYk8iQAdtS=qDi=9&susjkfk#R58Xg)cXzw-*CNz}Y>ZqF^VJ zvW3R#r`521X0`wcy5q;2__M&(3|k6feaI?soYrm|Hh=AVf6hmr=d-WdYi~0E+?S$e z-8>PjV06%WqZdh!m5SmO+AOQ8jY-III*7eEe_AMJG=wl+JLu%QHamx~u&)Lsa)%z8 zwc&WWm*)~{h-VU)Ez{e@8%%KkJR^*^bf)jEi4Y;)1ok;g)qB>F=-L*{$# zl@HCOpn{fZxEq|G ze{cNj*U#_vx33RZtIxiWx4o(Ly%LAE?ple2Wwa6H2gfkn`Aek59QaPTjnM?66-Do7 zU0EvFUBD0$U&O?hJ%}oB&f(19g*{kzIIhdeT3!$j6lbcILjn$=>Mif?!e2PlZ0s?X zH%IZ2P4QQ>a*Guk>-EbXC2iC&1JB4Uf0HUtoBeEuM6z|nn-blnJmq7C#qrK3Ajmad z#}9Lf&jGxa%eiaWTp#eGBh!;F+bzD(zW2;+9HO}pNF39*i~x^%NY^TdgnVce_%UN z;oi-!*YHhk?{t=QA7D0|!4MEzt#c&1&xZ590v3mC9}c&JfbE!t330Ro0!VL5l)7NP zk68{mcdU6F!WFLzQ8lxl+aTKS;*Ve6{PgjBd!KLK=bs<$-=2L1?+cFK)w@UL*uq9= ze{2GvY2jNwI#_G4FX5E#3ILzef1#STvE@VVYH(EFu$}Hg&hOw9Q*te{0v;ja0f)72 z+;*BP34|5Rq6?qJIqq=Y>?rR-7mnZ&*YbeA)&tAqo(SI|qu0x>%M*ih*v zDC&k<%(T|J;yERd4qk+S4bmYeNGMxnopm5b-FgJzN9Eg3_J8{Rsh<4mfA8LZc~hT1 z{`A^Z;@Ma7zMcHCVWk~s%!|2JNZ1gfKB|g}0A8v+F=U?!LoDy)mrKHOJ;KtO9a%zl zddx9mz+7E(DKVE3$s}xf$r!l0jllt!yiDYRM-S02cgX+jEBC5Ojzt}YmJ}V;k)TLl zWON+Jyi+uyYxyuWX0Htdf3C}ptsP;%15SYs1EiSXb?G+7Zjyy<(;|f!ZGuCiyJjg~ zR6u8>aRO0B!=63y{(l==`p0h|$-e*mf9+A*@yVC&cFOd_ zCO3Q(qBcHG>w_*V_H5~j^$2n@C_qPty|-$JHQ2;?T*CO4W8)7)3(V?16(w2&yEAP^ zZW+_TWSjw28oVz#(b0_K0M{(p{q{h-=K(zO$`T4B!UKf5)sgAZ4H~~E?#W9A8YloN zjhP7Lk@kf{rdb1~e|6~!jQ8P%Kgbce7?dcs&!TAn+;D5$ole8#)^P_ow?ERq|D0bw zzW=9ufPUZzlW8$*LL8q0RvJ#9R;NmZ4-bt)h72q&jU~mZmkCJ7}aN* zwWU~4Y}vG_k+pK>wGFt)zRu=z8eI^axb{eMqx_zNuVqJff9CLQFOC^GOQa~377A`w z5tO4tTAQXlTIOgM!9=Fy?R~d~ z9HFBPXA5i*VUxZbYXfYI<=q1ho3UGsy?A-wQ?bX~0`lsy83|-ULwVP<_o}Y_92CtpSWV~Jvqrmpsrh%`f20pP=Fh!we?LCZ|MCfG*8l7Kzv%z-;nPq5 zyZpa64D;{pfBX39>${I1{Qdv3zrB0^_1%a65+8s1E+$qOe+6l?=V z#k_PJ4KXgfNV5jbd8QRAVU9OO+CCD@bS$g8)|{>=!(V>z0SVaFaSi+EGzLY!4F=k^ zbwv@yf6^t#QTFxA{R%w$!ri2ru8;iX$tx|P(wzNpbHE8i@h7bsycY&?Iq@i4^E7}V zsfAWY0s+Gvc+-lY3h<=}4`ypIw!_H$@ZpoM-fII!^F+O8?Gq$=%}U&Z^}+INsz?1?B;T+<#`-Hmi~QaS^3 z6`j;}vpo^FTRIgQ2hq<7YMi)1f+o3MZ(rS!2{L?x_5~dH3bbd;e)4e<(sH@tqnTOWZ9yqX0ByB&*7C5i~x-&+frvy(%(Fx3&1e`rkb2n|S9lLTY+)A0&Ldgfhl?QcKi+mB!0`PYw+ zW{c0hc7OSqw%?EMlc%nkEvK{wkOn|~HIM+92{fNCB&TAbRj?o}bk+o~<0_u0w1KG! z*os#xw?UOmc)4(ZD)4JH^&o6@apI^yu0#=IyT) ze*2B!EF8;<#X!4-)a(i)q9YF>B#jQkKE&$|zg-ff?K<^J*<-0(&N`5qU53eN!{&4fl6 ze*$ed*z_HG&i31nba$$9JAOrZnCBso54kpAwCfQ5z>tmv!tSHutW~JMj80KliWpXQ zLt}4rzzK{!SR*Aif9mE7MM7&Q$3y~g0=jng0M6;60=)_+{qpW#^HFg4+1Ky2@qcf~ z7Iltb$GxlN;fXh?B;O5<1MAe5wWu~$0A0*5kef3+5@<|NA)nv2eaD!LY0xs!2<0sjgQ{F-J0c2r|! zD70FkrvN6@f7u%Ia#m~rYqBd;aBj5#M@XRS*4npe@C7-O$R^G#^_W<^k;xe0^GZhB zc4f#QPtC>XmLVLItAlCZhGwjTiEO%Ii0 zw;$@4cW*!Vdt^-?y|X_1;@#6;UXH*g&{?RB%;Yl6e_BsvaJ1_sL912R^gR)d1UFuQ z5kw?=B0dz5J_r5|D@ML#9@=Z2HK>+w?^C@`Z@aG;W0EJ-AYiY;+{aS4$E7@D4G6Ho z*Koppb8A4Rwhq=_jb8rjl$nqtGfGGp!fyoGFkaSNw($QwHH*q%Lhm$WAn{iNe7!Dy zNP#)sf3W#MgA~;fIlX;n{fBt}@k9RiSRl{7e)o6amlZpXhI?+N)sd$H4^oc?qfJ8%`Iy$s%mC)^vH8Ce?#lAkJz#WZISMCx(nSu7CSBzrOkM^>g}9k5&OszIONfy6@~X zgl$oRn7!eJqKLYvTNoyFYxDuIHfZ-pn^S8%pbH(SovfH=qJ(-Sz?vs68Qw80&P(PM ze+Qj5Q5UW)jJJ}5zY=xHX=az(*u*b%zVz&?_!@VM5(l*zE|ztCc8|QMp6PNpV2fCW zsU={6o_ig4-oYtrRY&I*fxlkdQ061} zJ*ZDbualf?%EreQODD2Dx$)}m<*;T;fA-e0Z-`jkCHJKTlCH5kD#8H$E2mM1E|v2H zlD(;MhM##Z7?&)tLt$r=zH^VdJqy1U9)9*!d+pOK@J+#MI+0fZVKnRB18e$jTy(^F zad=sy&Pfp;GY{>Bkzl&JMaXk0(-9u;TdkTh8 zKIjhj57O`fJT6koXSb7r7Ta81f2y}aH-AtgKg7CL-!w;WoK|?+_09@3#+Zjj%yxx3 zZHJCt2B-B!7i=pk0u3VY)%}N(e7qig9C<#cLGcQ3j zTEfSW3`3DJxjN+K`0aJ5f5f^Oc6gmsffYnw+<^GO91l=hn=--3XS2?D!M{!T#~(ia z^M{9AmnUDh*A{S!+j!sb!ypz#XAT5=1QgW%0?)2(Gr+pl+Gsqj6PTsXO8^T(yn_4` z$|(MzUeew0&Bvq@8$x2-(hyws3q|Q!=7WgO^t;+z0|zsKgI)wbFH`BVmU< z2WW6QIq~k-67AC{f4pEe^j)-RV1#S787jCDDs%=KMZa7d%CoQBYwgyBC4wO8H|AlC zK#_mzP@FCkpI8HeRz=|meBc_d1c})eChgN&A&NfOfxoCK6mSO$MQpP#J5c+f0_tm$ z9}IHFSZx_QzK?g)!J)`%i@I`ii#5hs+6HXFtMKkYn9(#%fA}?YcLOz}GkSvutn|Q~ zz99W7KST?JJK$SNA(0#Hm^tU(G-lK7O4qMr60DCgZr@F>PxN2kzkB2aeD;;QZ@0c2 zi&}De54^w*3_VT(HlhRTthrHBSy%qLGsUL1F4yF4n{i;%9Ik~|!V7()HJX75+t0yP zvDJ}5r-LcDe->)0C|^^h!5nZD@#otIDUH&#K*r+MksLVtIwZMZ-+kFIn~9Ab(5qcI zjj=e_j+Xd>FFMkp4vTcKWkVVQPb+H^AftzEp;UW@Tly_(U9poCkO^V)BaQ zR1ycIEo@oa7{Xy^*%CP4V?56b1B}8@b?eYz+&)P0FvRn3wKbUM8mkj0m>dI`UqeRo z)a2E8n1{N}0LDflg#z6OVceE-F9@me=QyW43N$7}2%-qJjL~=FHF3ADg&M!+;By=H z{&)Z4fA8PFdq^;R_Jw=(brfvyI7)WdMnB*sw}q@4=~&BvwU^Z_hO9*q(p!s7W1y_5 zpcgCmzNyLHdjNEc+Q`a&;!ON5sMF!}=rSs1rqaTPKz7awyNwX;8tDm%K!ECuXO3rz zBB0+aw*o|}dFAE7+8DV}dl)>;VVFKHkayx)f2zRZ8|B^%<2V5T0;Hu6W-wUxvCP$3 z7La*+HHmrq5dH1770*9MUUAIFIN9f3z}L6}f-IxiY)!2raxMvUB)=YMr5PW6dHXSqY z73Cr^-7$^XJ$s>)XwuRL-J(bTCO?0E6OW0{&%Sc^=iTq+xLJhlp)*`$eprY>H^HKL zh`3_Lt-3Ic1FiRr19A?wvwh>Mh!{vee-OFYG750jd8M~b_zninXf3HrLX2r%gbd8ia4DC%_Eb}t4@pG_DzIdmcV|ig zVKC8w1d{-{5@f+_``BRML2!Nut!2#N>Nddg>(BZ1^P}F>voG6S#^Hy0YTyhuf5&c& z_(!75Q=0uWOenJ>&J>2C3y5q*ZD|^hBeq#*c17#CO=e&a2wG>yyBJKTGNNJ~WgRqv z0qpAyl@}L?y6eoEc1tjX6QNCrr2r6^K1=aEKI_0Uaa4xomeZKJ!%y1?M-W)r3?72H z8w6h}f=xw%LkC0e>dBre8+SkDe+$msPUJuY6NDo=%Ru?QtFgZSc>K#Bejol*z7K!6 zV|(@$ysu__pV)^kQO&)sZIP^fR&y9)fum~E%#3JLg5Nn>tp$1mH|cweCw>lBM8MVo zNc&(~nX|33V{=H2Ni$unA)g%`9`ZOFHVpJh==PzCr62<^6f({P+GOo zXE8Z=eI*Hp>x~EA8*1*|!p16^SenJsuqEJsB1KL8LJqh!FW6n78P7EjheoNUIGkX& z_ugN<|M)PB^z5tl+FNOi0qsv5KBb|ZY|!Aju_roKJAt(&Z?P>M=}a?m7M}!MEg`ME zMw3806f8Pay{Y3aY4Otbe_g<7Mri^xCEAw_VoKdMHE;91z~EXaufpANBFvt?mN7(| z7@7bVi`T&1fZmnw?S%+K3jojt`<8NCM^qFN!eKJZ;xrTKk+G^AZL)3*r9$9us1}$R zV~u*dG5z%UuL&fs6jwu`3v{cv#xhYoH!w5!d!o+QD)j88+5!B7P1rUW>mkmOa z$EFT%4fbcj_{RtzRWEGE8US&$Iy`#liD{sX-oS^(TU!`ym?{XZCTZQ+4{SA6a*2{x z`8+Xg<3|K4yXmfA)9p-hTM_Ip6%VzyH%ih1hd1-u;&JB`N3&_T9<&K1U0TRyJUAw!F@g z>LiWeGiz%iB?1CG5l@r}JNW3xe?XG7YY|XYQGlP)9&&2H{xd{N2}2Yh5?}%@8f8wj zMQ@M1n<_yaKcVbRcU#l?lF3(aA;7u@!NCJr0X=&Gf80HD1U$MdH7dQei5)ReczyNm ziS*vU=@W#zJc)@~L;M5SW!?uP2$i|?XI8-f`Zr(Rz5Vj_2cSqi>iZT7m948d9_o7|L!2vbR4{b3$Z|NWg?8q7qy1IDNH+F)Ac9drM6` zX$N(I47;b|7u)f=plfZNig+_8qFrmWrkJ`G0{KAhL#6>~knSUn#Z`~B0d_h5>IeI) zz<+*-8-42Kdkq=D$VVHRHnE)i;?o`j7Ybo-e|Wm72{SO6n3;egd>2tg)urB8=w7`2zKN1EESJZ5d1GQ%EM1;DZ7Ayp-z=T5x|6LKJ1$g`5o+uvNzNy;TgdeO2 zlGb?Tu6@up0zY>jHybj{!3Ewk=|bc|f9F?t;#KR8#O;E>UV(nZg!SmkLEyfq?1h>+ zuQn^^Oqf8~sm!F8Fj1kb$Sx3wR`HSe_*r;P>6p)T~0vr1J$bKYY&Je=BR` zSQxJ>K)WCykpj(l-~nq$daODK`y%y;ar(4n4ivu%OyEunAfKwe@#2B)&1wTIxfO)3 z{=Qs~DJR#d-7bnJeq|l?@6liTSpVwlw?|_0XJ5VhPxa;W1Qa^zd+fk-;hPmcW}B(C z2XZ7bk228yhh?nj%_d!l$Ifd6e|K=GdPmO#Y%p|U52(kYB2!^U6-fAYn{hD4-Huw% z*aa<=wA+#X5y$DHj^)TUq*N$Y$Jrm(q41;JUhY%Gx%F#>3_dF$&O;ZsJsfX`n{WnQ z-535v_H}gO@VZpgXGlz4L%0n&CmSFJ;H^SgR93V!wlyvN?Xe{9JeDY$|B zJ|b6WDUiVig9*)&pg3z2_2^y)DK~}qckeB;2+&iPRf`H-Rq51Hc?77hNj$i*^jLVua1JRw1moWIoRK~4f6c(PZ#FyVQBlwm+tnr z`eV4yaqu-qZ7#sK%!bg+f@ENzthLbJDl~Nm(`*b%2wEwCU}h`t48k@>HXJnun%uZP zW~?cv8+aA4I+;0w2^h4Pq^^TZ`Kdc9nka>bj_vBrA!$+!e&H&@e_+i>C~Fc>x%k(M z0wvoHMa>!ry0BIRDBc*-ve!XbD)&}MEmV7Hq;e0xU`X>&m$Afk2L7LJKGOd&|NQCW zhy3vMoxgvxJ^u8u9^HtaeG%^g(BFv<0A06BMYw4$iv!XRveO+~j~ocH3oi^KcV8Pz z{)S9u+pSU&L|=9xf7$4|uME&-HXKZK`f-G@_Qj;wYwg?yS!SW{Gi)&3b!f;j2!b(n zZrUKAcR{=-DT>v?Y(`Zl#)wJL$_=KKhyvGQ=MuP?x+zk)2VVEx470gO9B3c`6}<*d znQ5yX8v~u~R!X3x+)kT*_4fV8M;WDOU$q~f=HLJD)XNX=f3;@-Q2=^`&EB%5Eu*zD zt3>wzYlHyw(cziIoYvZl3%H$=lVL&XS!>b=45nv?4HlO6ensQ<0u*;CFTe|E)&dih z6=gpTx*toR$b{?$$_QiFEaaXC`1Kvhg&?|iEaXdCg)&2>Hv6gKrI^!00KOPBjMSLJ zDlT7FLu1@lf3%Xm5Df>c6Gg(&!Z1k)J9iq#zkB=HBkSAyH}&ui{N#&wyM*K4kC)7E z>jhh@Yy<2xqoI%2`sC%X6wuOZj03yMhW3k*bwNI(FyWCMm|LUth zisL`~qTP;xf1Gzw1jM$|=D}HNUXTJ!QuCdce_GpYdTWfx`NX0q03XhXA%L8;P{Pj# z+0}y{Ub!%FD$WV#m=Q9#V!B43z5!3&mY8T?iQe1iCr%g(>=LBZTcQ!w;R6S<0hxv( z1OoO#^I*1VM`%#++VC-&KvAKI?ms{mUI%WBVSR}7s(B`!V*>AKW6HC=4?f;NTvn}+ zf4eyTw-4|B@ms$6^8O)@^4S;fwIm^$(sAL1G3;u|Tc-@Pt2*i#BrCC77Kcqlp=w@~ zN|ZYeyO&Ek7My!DScL^l`$Fj%zXEg(13VOXMAr4=5J2T*#4OHgcS%BccnD}Ahu8oz zT<{knXypOH;jF{8Hg~(CwK5n#HYXZve*+)nFeDw&xW?^w19*PciG9MBt`vlWmukT~ zO=k&>(J%OZZzXygdieK0WPhLYZT|Vu2>8jD@3lRg=!LA|HOex9WRf;<<#Z>Q-!XY( zn1PNFY0t3%$K=sZSGr^@Km=vrl?qq8nKbBI`X0MFi#8DRJ&Z7c_i->Sfd>T8f6aZD zI-A@?Ag12?^oxR&8_*<0E8bTlb&P3rvKu*&g=m)}sge@XYtJM57{Mq3sm$(!LDEN~ z0czZ1*pXSW3tL`>TML*ABxrTH%jAE0^J0g4lp}odmAhZUy?mnGx#b!HW!FB82mF~z zuGa{zAtDFmS>tM_Z&d3XL)WvTe~=?rh@BSJSD7+5W<1fX@b83-9%&5Vc}ogy0XcX? zCdL69E~pr{r`;t1?i(4Ee)g-WT>+n?K6m@ z6Hu&+QyS=tJR3qQy^ULM?uKd-aBixZhzcCk5G~JW(irzC6vU5h5Ww0*9}^g*m8%-U z(duK47vvch*9yelIn8Sce~3v_Q45221RHWlPdZ*~RE`awv2Hiz|M2bWyZ3KSe)^oR z{7#>J{azz=V7LvYR_VILRKRL&-|UmQTQ)qObSMo>j@OzUyfjQb4t7ZfBt~)6%L*~}qrCx`iW2G_n2)fEYD zxXk5^77pqSPY3s{e^))tOWMwXSX^&sZH?2XcQ^wCs;6J*$NB8b_FDUN>6oqKyfxaO zLa#_+Q)$O_$(h)`pRK$uM4t~jP<lWgbmthqry9i$R>t+ z*5}CGnz&MV2X|)bq&^GtKALEwu><#^g>{_jK%sG*)%xvt;kW+w?dN<8ZEk-4{E!p+ z>7*qYq%FaZu5TEg4iX^xyzxi&oHowQe9W0#^xu?_h$40~`? z4cZX!n6cpnv(Ohb9i;}$X87)0+DO2`J_ARK2}-v21kEKeLtGPvge!&XGBo)1!27%U z_&MKx{`l>~c@uwl_x_=^{K;4FH66WWpq+_GBmO}qe@$$n(eBfZ_A3p8zXMn>#UP}V z&|e=|{s>dUono;x^go*%jjXXX`kDd2f~kSAu~rD#I5H`sys<3jh<3}VJ0Z{m!#^^b z8G(>ri03WpXlo84yu)4FxD^B!0eXJ2*|Ayk1J2-5FWVqqXPIKAew;QG(}dgd;7NYTH-Bc?v_@{l=k zo}ARBQ*c|-(H9$Qw92_btxQIYe3>VXW&qb1mMOf@AC+owtyGrLnt3Edr%svMi5Ez0 zzu?^Olds&pw)}e{38^e}gs87-0NUBGiQsW{f84?l%RAZ#ODdf73XpIVA)2G~qXR>% zA&Ch=qydw+#$djf{;?K8F>?UKoNy!dYhmmY`3!JLZX;)s1{{#MsICSQBiCNrL+~0W zkRC!M#966b>|7!FK>;BFQCISJhNiQ=((S7h&Ivug~#*wITce*J>U9-3M&$x~o>@x61@xJkN42 zyysy2Ufrojfoy9wr1O$0VH&v|f6$DBphNFA#_&}mc*05oP0Z|j%-K(2jNcdjK#>RQ}3 zW4=|@Xw)W_-W>SVGvQ+OW^6le$&&x=cP|b}J$TLTi2$G39SOD@zUs4D6}DGUsGn7k zsr6}=5{waNfdAn3hM9qDe;wt4+pe*Qp5Y+<<(fq^4CT&6L8~^2Y?&Q^U35P&*0PWD z#ufmzz}xNb;I*rF!SpDveU^Juz~&D}(?KIGQVvmf!*DJPvesH(V}Hg-T7%*^R7i+N z!VpzD!IwPZbsW_Xny&;-o5?f)0^iPe`|z~Ub}m##pm5p z%DmYBsH-YQjSO)DUveCFfqmJij4c;-j^Oy5WhZoD=wTo*S2h6IV;+rkcU=>(i9;e_ z6>P7rNagL^_}q2Cq#JhT z?0?3Z=~s#u01by~e`fZEGdwZs`yu1ZDHeONAjgMIuyeD8Xs$+zWZiyEfBoI_chBp` zD9w*vzt`ToI4x|!j$~kDZimKzbqXYrfQWfhG4;5VK5d7y7+zu1q(y?NYlV|FP~e`4 zVaqj|Amf(KC{@aGwb}PNLkFi{u;uGAkl%ezmv!Aivt{-(e;UL(F_4!n98oViNhe2; zT`D{BNqU+p#)~2w{$~RU8LmTw?C>{&ch1p}V%n%V1tz$C(LRNSb-~Lgk^p`BZ4u&E z*X}pJKj%fe^`jT>>qY$=T-5ewqWYYvl8qdYwBXzVX{14f!v}RzyaOyiL*91ga-RhC z&FI$kSP|L*zi^Gh3}2QS*a^y>=WNs{?}3(en!;jWulIvosgiC}dcjf3jvL=_6t+L;kBft@@wtx>xNG}qhx^zOXQ$baK&8i-P`qI z_wB)}c6&A3mxmMx+zwF|?w$>uFAngSf5F8q!aWFB&bo2h2{TB_*r1WzaHe}>E@ z>>ywFy+44le5vZk$1m^VmtMgSUd8)o_4BD_&_W<9F=`YvW%dL(CINODbMxwlYR_UK zv@G3@Sm)R0 zv^z%64x}Zz88gbwytjdIet-Sy{&mL3GJWa6eee>#c4?LTfE2NpVK$7{S`Z0dm@#B{ z2vUfwelYiIeM81mz+Ud5KHbTnrs_!aWiD(GXoYTSd^Q>vA=?)Uv8Q>_e^s6hZQg#MTC#c^atX6Z#RbJu;<^nBg!Ak9&p-#*qU8fjrF&e@vpb zvtsyMqR`=$su}}kg<0_tK9K+Ii8NTlcTEPqShWjyz_VrAe*N11e{KD--hQg@o4T+s&5om2(jw6 zX|qMg{2;Xkk{>Dz8@1ah1H75e*xv2|#MdA|;clZ5Z9qU0(iUs6(JT1cmF*;!?ln-3YrXZcku{i{zAAbZa#FRl2+`x=u@=iYm2fR@XfL@{ zG%~a@rHVUX`qcOCwf=LSi?Y%rExYh?8Yz? z$&&5IuI!t4@$%r*V^{FC6lpV{oY?WXXg0bhP=GkI0~?*gvE9p4E!Ifh*|*0EJGFel zqkT*pqE{#Ca|(NJCZ4mV*ad|LV=ejt$B-rDE3fp=#N7F%}tji z80;Cfq#!FXhK_c+(uQ!fl?b3Im|aO7D^R#YdrsCxb+IDVDokUbQm}Y)Y!W3$*VYr% zJ2@7sSJwHF5AO5Z|MLCwi+G+#uizKMzw;DK{my}l7 zY5;d$aI;{r(uf4_je~0XDZG#-i?$7s@fk>ljDDN6Dhyc-eN08l?m<$Wl z)Qw45+uR_6MUh-QGE~|DQl7~8TtoQ=l@pXPt11R!3Q>%#Uk~oNfG35-304C&(3m?q zyV-lke{d7Vn@E=hlsG@~KK?7T)nD34J$M0M+aX^mmGJPBBz7-L#f=DgsGXXBJAg>)BmS^X~3 zKNT6xA%xkAHXuwrv0}LbRo8XV47{{pujDx}fA>HOe;srUatQGDv9y4%Y7JVD+Gngu za@xrQ=!k`4TN7=~X) z+GYWF%5A74?8tb#16eZnDabC)fPRl4%-v|IN%LJqXV8q*u?9MPLfWK6Gl6t%$Z}x>TV;eYi*KKY z*KXSOyov$LQkG zJC8*LYdHmWRSw@m0@yyAqCf@Q(V<;I7go?G5Cecpuk&>X=O2FY=}+(L+ckarGI0OV zYk&6xFvS1yzjOPi@%3?qm$s3jUC8I0WKnA(0!rX64{ti5g0FO(23c~|L~v)zVlcnqJ+m{7*B!71U zLtifbdLd$Fv{yp{zBwvTJ7R6&4HF}zoJAG6(A_(GR`z3iOcHT0UazF)>E6fWJr|gg zbHcC490gr8`R)UOCb_+w|9yR2@g`n;L?69!uMJgo(QA(nnSeM7T4!uWo1=?_Z>o8z zLJY%#P^(Y~!jfoHD2cadfhd(Dvwwj%!+-}hL5`9P)E5JfBb?9w~3POLfaOs2JbC)v;{3t z(i*kBVcHByd+j_84%MyfkpLo%+h*PW0GsuSH*f00(|LXoDEsIIysssG27k2cuPDkb@8=q|sY5O#B^;8)N{% zSW8=x#j3bK01!Q3$PJrLupSnc8aNUzWCmre+qdvFY&LKX)!ux>Mt?h2+EsR9kj;5vDMnH5auLd3@36=8_-FgI)qNp8iQf!BIBe-#z{7^M3Kj`smfW$1Qyh#H<#WK_jODZZ?5|y#QjB2J-vC+-8rY!11fM z6GcjiSqD(!knjUpNPmu(lpNof_%a)y7^7g_!?w=Rpc>}x7(~?*n8BC8xBvF4?kw|g zhz(_rCfYXdlZzUTA!AM72h_onh>15e)XQ-Y!pU{dF))XN-llr(9zbZE#Gju|LRw&< z-RRo-ZdRhylZ*y41XO$4jzrY8rCgF_G&sV zW|-kgNd<8RfTNgT04ny?8Lc`Pi_mst6(sSVIl7~W3vnoL8~}YLq3hBw%lL+W(K>Fq zb=%4rEOT^+KTl|o6KAXm;l$@dyjR)A&L@^hhB-dF-dMM2jM-#?;K}7SAkZ6_d2Cr@ z#7TUXk}GY{I)7sgsERj~8`F%pV>5P3MEl#zkMZ4AJsE|`WT1GLnh zXQ2TqvX3eGG)$9XhP<6Sm<#e+gn3;kVrO|j3A^_~zkk|Khw?kE&qK5AIl1kb2Qhzg z2de3Ws%;=z%}=5Hq>I2yF&RXFp>=Vw9>dE4(`$28XWD@AuVr_ri06+_0JJ}S_ilgx z;%@2D>vwZu|B1gEr$D2J>$|O9rwQD0L(17Z#Ox^`Fpr+gbhPQ{?W=ADl?JWtPI&(( zcQKSH`+v;3NY+#IYORbWm$HKQ9t;0`!5DSOCU`m+NV%QU5VUP{faF$7$p?@Bm!BRHu>nKpzy<~nyG1=N322F$% z@ig&m4*ZwbRMqvkzSvHG?AqOTZpN2=5)}Y#7=MXC?5AyNkpq&6c>#=aS+M7-9le$r z+R#@35N1$cLIlZ&LpOq!lrumqJ624~=F+7_Y=K3{9gdRP$Sf=^7LYG)2?MgC3dA$r zq5EJ)u8$G>T*Xis>X$lVFt3(E0Hh^SCnJ}_C~?rTp+#q*KMNV+IEDuNT!7~^#;+fZ zhkwli4iGK{S)(C(&*wH``oDbq{{8!RA3lA2djFw5)`vgV)5kx3_vZQSA3i>vH}MiV z?a>SRTG$@~`1DE0TT44T2!lh&)j|gw0>#q7np@9?7Uc+o@?Z{7gQ_E>LYJ6kqZBr% zK^AfKAGVhWSR9UmsiJBIVAfIYCWPD%-+vW_+rT)v$u2Z7gMC3Q<-51T(`Hp@cZ}-; zvc3^u1bzdb$>5@~=Pt~mncM2U>+GM!*HZ0>=P92cLB@h@xoB|+;k&2}-?6k?GRQCE zclGwuQ@*SKeDvDgk1>C_rnXoY;hA7;x46-sz80q6Au3QP+sc5a=xqT}aT@ekD1VKl zEj?{F@Zkm1)OOmbBAmUlb-CJz%>@iUh|zqmBjDV$5hrZ-9(Rb~b_Drq4fxlhoxK-# zuGTPbjGvVWMuN+N92O{!PXQwt1}L4`G5ozZk0z&84nrxfa`aX$V3h`=teOWnku$w= z(>dYh&6RIi1OM^&pFX{RdjH|wzkmJd>AJixUD*e(;AaUbu%V{pzbBz*D)Mv5(+n{Zp z)fH&LJ9s4<9iJ4dgwHG@NQRsThe{8G&?-x#s1ZU2Q#pB08rePJ?#g2kW`CFm0MI86 zvM2NMWWtJ67#7#P88EA!$~G{+JR@-r+#&~lgDd;--?_ApUc&oJ`=vgN%|FUoCs=sw zv0}(3%)$h*m!YDL==uc=g*SddzdnFDE^Sra5)(~rMXz>FLBWzt=}iL4kt3%;Eqobh z=Lv*I7cnAbYIob?9GHPv3xC95(!kpj7SrvB7plQCl1F+m$d1v5X{;DwC?bzGL4EXS z4u|#`+Oiu4Ngaq<>5iF+*yxTLz=sts5akd!1SB=)?WyNCAK$G%{Ck)7(Mxz=`u|*> zC{v6^)9E8bf%wtJJAY5X0Pk?RJFDLQH|XPax-nSKugU)PJWA62t{JfHQ45 z^zraROFz?T_Q0R0C%R>b+*y&&TRN$rf6)gCxRqBH#SL;p1+ozA8 zV!f!7d+_4D#^8eCWq&5k89)Ou1``>Pk_A(30eVi!5c14ydCn>G$wafp)l&lEBo9R7 zQ3!YV6ERyztCuW?-V26m&^mzBf@cH{*QD|#D=;)bJ_LkJh=1m2Z91S1mtZswuv)>e z&b}Mfd47u@?&)(u@ue^9gO~3$l5q9}bYyOlcBY|v3Q~y;g_knHtqO0z6xtZVxRuGRxrhg06&QEr zv_fB1LA)ErU4I?pX?Dik&FQm)Hc-hJ*SLcy;<_@>;^e+{j5?S26isxi&aLqMohPLF zH7`Ap+V7}1UznL&KMjlXwDcNWoFdxzy`#| zEOL%*vWDzNhRA%hsF5vOFt=0Mz%ElK{B=0<=aU#JfqxLS0mw~|RB%Z#)HFDV+!hmO z7znY_uOhgJGIqdr0k0wFgt`cGka;d8P#f%y*Bla?iV@5BJP4Ui2gTcw6DiwW80`iW zPuBEYTcZ#RB5@_&rh*`A#Mf-ZUq640SRenrX8NO7@BWJ_Ur()I!=q4%W7dvNIP}ho zH-@7UF@MOYjva|Zc{Xwd`!>%+ouw}v5r#>1SgXlnsU6RjsdHX+h6)wU*deWtae?pQ z1;_l1-=Vh-NFbg4npx&WvX@*(1StM;A`<}1H~)53e}D1*55N2K^wm{!dPS!E=mq>?F_8fC z`SSjSGJUIQlnx7sk6JXaRlpSz=++7J?6EUpwcF55Y^X>|9EEy8n`~^(#94f{;Tg~z zQg(nwG2@A^0@DCgs&nneh;j zbOrpMejo4Ozc`}v=q0=XHT@Yva7_#Z1RiIopi^XlaTT!1DToWf@w;aAU~EI_82FGO z${27T5fLaZ#_g8rZ{B?P{%OVf{Y#~$M=#yYHKlK^u^Lb?Z>Q7uh-PPITN9;K;D7l{ zg0l`9&VivNxD0a$FX)4K#zlc0BOTQ@vVP3<#M~1#d53spN*Aa^;ax<7jUaI9fTsA= zlG|F-&j^C}=#~3=N&n|>?N|EkfBmn&yQMkkMYPh{d-LoE>ppg@8jcDJ z?p<;q#bOt^tmaO06w^2kNPg_nL8#fEnRuEOU6X?S_G7EjkVKmWHeeqp7k|x(xdo61 z=`2(k^T2hIK0)9;I{*W)ZL*=89&>l4dDJ|>_n0w^P$9tUP>PSu5z@vSsWZmHtFBGd z<9&0xCFlKz_fK!0zk7bE()8$sd+qdEOo3s4=(gvCIsPDkpo*gU*mE^Uk|ANWn9-SC zW_S{@*7Vg<8w%XZ0XaXW-G6nK6wo^Zl6s-B5_qc9&fLE7Aa-mORS*KYjZTn9pl~Rs zGXMfPb#~}B4~&gx5Aec8ts)CNWhAIuQ|BFxM3DVovWo`_8*&8LynbX}z!gA~R%gzU z1Es|)zg8FsLB3aHwc8-fuhxfmA3r{Qd>{Y%(!S}@i}za5pIee?iMt^8>22qSEe*Jd`5KgNyve5n!tEP0(6h^ z7odfd_nEad5Y(*gvsznx1WXjPNsECq(mV-6#sL6x(mFOhy@C&;GzU|ebIT54;;w$6 z#Wffy;Q7=u1gvqg)qf9Di<-MJ3DkZ|Q60L=ti`DhuLHRry?S4->VNti@c%8ci1OS2 z?YHeO^m2kjJ#4jT7=Q-VAd~^R%;nld+H?&x{m4TM#+TTAt^&(?=mfBZG?3deoY2Bz zdpT_Fx+DOULMrPx>TKobT(z{d3r4)#%KvN*>a{K$|Co>(v46x|^K#$?8w$f4dOkS0v)45Qn(@L&Jy zhj{<~rHtvL*X`?-{ROVi#pm|tl|UF96thWH(EXTpeHcB{7c48s6DcHzvII~Na}3oH_#6T!H& z4n7*Ugf)@A(aAuMW@`8Fv(`obYoX-`6_V~4c0hzlKV5i^qk|@*-1wA2q`4ZaTJW@S z2!2=8F@JQ-wm0+}P0;_ry)XudGrrAQ9**0W?Jsuai{i&eFWc>gw|&9Btk#QB>3|*@ z1;-wm8~Y2q*Z0aR>NVgAHZ>I-kVeP0z2N_y)Z3caAkZ$I#H-N2ZxLgG$$j;seYHL( zIa1FToJBBFcG0?Tznz+_iszI?Ktybjvx5X!sDF!kZaDbn+8t%n$$b{mLxf`<8Yu3m zhUbO_N4lfP`RP7W;il76!UzSj^;5Psv4dmY*p*S|xW(<|yt?KuM!z4sY`5JS|B8to zH0c~<&6nC>3=?eG1>~OK(2#h?w~gS;F#t^bU?v20feC|Bk86gHV zw|}Btvt$IJH$+a^c~yf@);9cqKkxC3N3Y)fc*Ylv=cdfHiGrgX=e)5y8#oHMq0o#R z%vzh&jgb%8t1m4B>~Ee}ARQF~SPrp`}oV;7j6cNE0PCksJF-5;L4YFn@JqT?U9dD`)_zVxvKoiVteE#xQYg@1^4C zSGEq(@vx2xaBBwD#te^I=*_l-%JufD{t{R9{ZqXC_)-V%(Q9`v^8EZAU8&)lr>z*E zkW&I#uhGU>cFq`~C0LtkBX(~gyE`78VSNyY_LwFJALaw##+lf_^o4%#T9$Lt_J2l6 znClZdZl|ra6f7hNhHv9axh1NA=*Mg^j(K2#Y{Min68**t59(Qz0Nu@L*~xUnIbCb9JIxXg>WOy7=vIE`Gs2A(_W$RHNX(HMW16am?`p|0wu9Pg+`_>yY}B&kZnGKJ?_FyGc0 zzHFfnu~Q}j=P`(BEn5%|*`83zb{HLxG`+0|)`mJkvkAd73r>=6tbibPgz>7r3aX;c zh|Bw6uer_KRp1d587R82DSys+W9=S5K@LYjxIrCfg7CkMn0Vy|JAyNgFZr@|+n@RS z=Z{b4`!{c{FX|JhhfnX{J--+(eDp%TrVOlQx*O#23p$oVoEP)FLplQP_8~G|DyG77 zf;lLSus(0M4#25nGIEp| zm(RGhgjZaBjXuhH)_>zyP#BAsQb$;&w!(~(g-$H( zT%2dE)}hG6xX#M7h?>U))d&0%XEhEt>))a+pZ*d(``x=;Z+~7o*gSgmexP5FZ@VQm zWLHB~ugzxTW;W*mRO6Ipc!Av3I-nb2xQ|VMzgdxns$)lgIhJ&|9#-1gh!=2mEwvoF zmfkC zF)(xHBXAg;&?j~ban0QpkYz}r8+ap&7b4OpG2McuS0_w^ zR4?>@J0NGiR$=Dh93wS{)a_zzFN|tuv4BHkcYk7g-nF$k+EVCf9UEwVV6MK&n()Hg z#`qKak;SR4F(R?Z8PMD~(Oc}v5~F2=`B*Nq9g9qE4x>sRyxK@Q+foeAJb*`nva{Bm z3g<5ihEMCo;Qpgm@askWdtB7N{CWTRFDr?{KvclZ-H!B@;vvV;NrJ=64-VmvyFkW^xD6ee~$83xubwGd;^e!FQ_)+J! zdGqT(*M(nsbRWHbU$5)`^!3sG{L}vPUzCZdOAv#Avu6|_%2^3~Up2!NuWI+2=YPUT z8u{tS(;L~|ws%9wAPWNtKyB(|3?J%1f?2e8fRP*0MZp+`nX^Yt?**nL8zNP=@8_RY z>HpDd_u8cLu-*uW|8ek#Bg|#OH6ob$L5}qxxCfCp1X}1kLCb>LHU1HiG`O^KwD2}% zkidS>CPW9(D@qXrk)9`Wj%-0Z_-esOMo1}twLFOkw^m_$0DcZpxZj} z-+e3nzw*>Rdij13Nc;A~{_|fn0*p_GG8P0-Yche&AFi@57+aHSh|+Ox7=MINt5)~3 zd@q5M&ynA7-?+M^Pqu$P=m+rO= z@Ga>LEQ5rOwI{|umaJO)n(E7F1Cp1KEg))y8Ce6;Sv@=j!@xjoXU(pRl1W`s#=?Ym z8paYF(_Tt8bsU9XxEiy}-hbyh**XrVw;99qJbq9n(gPp}1r7vbC>~)zJ#*`70ru1y z6-`%9*EI3fw{yQhvosa1z-;Xp(iD&_)GAu$LzY}5odHmtU-G05iH&!mej7~tb;ZX| z@$os{zP5#W^!nX8n7?j}fjG~)d=8-EIv|Re3`Vi0ukC6e2v%MGiGS$MeHqU+TsRwc zg(`?;8xDxoVZz*y&}M0-55-zH%<%_rDF|}SI!1^pCy?Z~3I3l~&+gHS_rr@i|4F`z zwQFMm2pEgqAW-AnJ7nG}wAz^HX&;~b~d$a~IZpZmYvo7Xvb4gj4@3}2c{OV8d)~9z* z|KQX11a7>x!+%44LC`T6-?HTd*$?9) zZSTw>jy~cBfl(aQJ~Y8Hc}#$71f7?*%_1hoATHQ7cKEj`ewn6A#_~+-R+Jm0l-|p7 z0um@SO`M^k$j)?*?L=9%nrtUH$$GX0I^6=l%EedPwQ?P(TX~lBvv_T{b>>pr7`mgg zdk$GM@9K!y27mAUpkr~p9?4y((CJ1(jjAAnSS;tq7rXhL_vCX|mbRKb&0 zgXJ&PXB#Ex^|X#BP6vjHjDR}X_+k5%ENbi*nBf{S%YPtr$mp6;hx7*2mvfeQcSHpV z%qREbH68lRY=JS$+iUu_AHRzapI)ELc=YPM7FSbdFBD4+JF+y9%gwT^jnp8X*Kkpe z(-t$fbZOea@tr{Bz~J7e20+G*xd_b>wyvDp0umblOlIG zAMK!S7xg)20hf*t!3)f$>@`{Hq5t8-JiOyT&0HJJChL4#e2!gc}VIPKUBc z93chscFxGexZiEH>H3=P%cL#v+`wPlq4Z=$UkBc?5aS9+LaBHVe61J=MUizkSh%q_ z8IX*1+ZdEAfc4y?EAWDIU`W3>sCg?rCY#ZM0ch{`RP)R0#QNG!>CtO&1%wPqFg|Jx$yTrt4WEV7j(EB3-r=Kx zh~3SujSZoqjlv2-fdP!`z~5CiFn`y%y2}nsB$%c2(J(^d@Rsmhtm$V}-GB7j-M@an zJgMVq(i+Ma7~cg0r64lI799T2uE)xz)9OmyN;>?ES!_dWD?F$e8J=UGi9sgSXADt`+JLqa`v7z2>9Hh**>mgndg zF%}dQV*wh3SaTFuW?XYoS&!ZiqiDX9;uMMQdG(52n=Bg_fyFeCoV1O1Ps3_&PUE_Y zev-Eb)t}kx_tC5O+U}PxtSx(k8yVHsE#ucl7Y!udbtUo2iRw>;1EC=}y=n?8YK(rSV4vX!umLkIP+NnqaZx|b zuJ~Wxf+7CuUq0qbDbh!;+7D8se`fKViI*C74+mv)8&e4>4_vy7#v+(=N`K=~PCe8&T0oPyw|1sT(cv|n?{;@v1ICAsg<+~rz_+m0L zsDD`jBAUa_tY+Sn08fs-JUU<@vIQhBs=bjK5+L5leHDaBvT^TgJ8hK|atAqdL(no> zOuGO$(~+P`sDG&it^e7k#fiLark>+WYxxxTgO%9@Wo5QpRY<(w!&l446a90wVbXhv=dlM1P7FSd%?E;F!RyAtkm?cf=X3 z8=)G$_%n1Fy-H^4)Zj5vTt>}-Aewza0N zd8yUEaeso}fB)wD@1DQT-F*3PFML!VynJ6T>;L=T{PFq2r|;vx*k4Cm z*=!@r;9IFXN6C^7n2r(X|Ei%*ljd4rns%+DJQwffyV$OLLkl(f%&Hzyt#vs$!Zuxk zoPWEd@|VGor{}ll&GYYm|I+8+(JOd=kDVr?$Y5U@d~)+~Bu^H^sjWk;W=oFY)w!i0 zxaE2FI-bRZ$FU71@B-)Yj)nZ@4S)AZ z|9FGhalvNGAdox^<=R3~CYFrL|FCQ)GINKUBNia8=ip5b3*s{6LBSc630cEDTyPfJ zLfJAv#3$sRh;kf*q(vrD8oQQUlM`~=XX!XV;Or-7z(mRxkPyizD4t=o1n_Hn;~0_KT9^*2_H zvx269laMDn{7rBkMk{7rz^}#(!r_4$cuQJGI%m>i%e)=B%kg}gMU;afR{9~8%r+UB9KlLx!fMMEzzv@4^J4~S1q{PO1IRWkAkYAhaRxZ>s8h?`(+)F3GM99l* ze~Qm-&v8dcj3NTZX~(jTgOIdtyKlr!dkf_1FrgAEh7sME>F`k<(8k8-=fI<~8^Ldj z*{<*vYWNmhfRPEYAS}fW$;feAHHKmW#Mh7BZ~y7$etY`ehxhBH%)o=!^e2DQm0^g! zfO-#tl~+S2z_)Tu$A9Y9 zt`KX@Ctz;1WhA%)CvT(rGK{{z3KkuLw$Vr{fG5p z*X7X*`BS~qzI{%iOA5ohKU9Rs^%cgX_@!%0sQ2PL32fnzo%>h&kG zJKB;~b>_CZ7_ig{;uk=1VWHpb2e`uBNg5{6V3MhuJ1t_PP_qsaEu8^)-#idF11H9I zd=}yi^xuX%#DDaJZ_ZV1A5dH)KTPR91p`vViUSs|IfP*|#oIKtf!SI)@F2CmV^IL? zto=vtv|oSRe|Y-zAy&PLHhu7F{`7A*o}3P(dqA(kkWqE+pr$PEqpRg2UfyXM<%l(H zFW4`@D_%JJbqJr&$&g8xaY!IRsPMgFHrt7i)ERPJdVj?%W4ds_|2+M+>|IvNcw0id zGkYcYEnU#&54;bujwNO1Lv9g_fh)qACt~6|DsVke2I+gw26wL`^;U30vY!OCDg$II z5P#Ykn5)FrFwFZm=G4D?yS;t4Unc23b~S(Ux7&(s;po+20B0wFX)vQi9}NrX|>a*G}_LBscKjGCBeo#o8}Ecs!8Dy-b6W!th9{~X9kefNpsW1vbV zFxVWG%QwxH=O7Jj*tErUlBc9WcPZ?@I{W#h^ndlESM9#&@zc1i>>K%|urc5^!Ia;+ z76mtL#}}NhHt@`%1_CW$R9Ne#z?vEb|UNhf3dJXUIvMYcND5Fo@ zx#$$4Or**f^o7{N2#5_32a91A9fTuOZH4EZfoYzY_n%!5hrZO^Fk7GA&06p4V34TI zuIKE2lsYRq;$!4dpa1x|?Jxdy+CZ|+fq%nz0HIXbJdw;aoUnI~!R&K`FL-#z7Niyk zy^De&1^lh!g<5@KcY46vKva-)w$<8p+BQ&-Tr$tVs7JLi0N5$Vru_~wF9PyDrlJ5F zskj=2l0F6@R5&quS!cJUon|9Sod0J(8clXjx`bp(Xrj7q*BZ6P+0w_NOX3;OjDNvc zbr}C+(x$#N(Wqy+t=ay4tal&YK0SYjlG;;z`t;#BzyI{&Dd5oyd4H?rrd@WXV5otO zrHFIjkb$I9#^|f;((0Y+m~}M`C=-?X0&45T)-x&5=7boYXE^x3V=VCVZ2&M1?klRc znD0lg(9x4AJn{SMcXECiSBlPhaDRRQElVI69r(ITkS$h#<6Xno8r4D)&@i;z5U>J< z#`$c@QbUJ!cG(e&aJLKZE0B00<4V?skalQ z0dibTy?wupIA?(K)b}>%V1L*F?86`)=zZ-n*h0jWD{5Sapu?J0K*+4EgMAC_%~M+9 zhrryw%s$#y7~0|-$JLZDS0BTM2a26%mdB|($V+tYqnwgyBPuc=12nXncZ--ST8&8~ z0Zu^=O2ivtvoi*oF1n{;+>D%dwbOOY9l%q;MC_*oF+)+D1iF+8P=6D&(es|})AL7f zy1#q>;obZAU3_}?;VIioBXbX4%%A@4#@1r*j)M%iJki26xY?0052oSTi9Qm<9tN>$ zn_CfvgHgb?0g3IpY;GQSk3yObWT}I91_>Da+dil;Q-Q(|je~0HM96f>?LfRA4p@<_ zWobv}c_chj$mb0A6n_dyY~_$Om>qLHEFCpm*pP>`A%H$3kG#hm%>tCIt!+}R9P7{u z49+_`K&>GVp{L_*$DH-&9LI~d+i(8jcKes8-@WY5dhmk&#BaI({Qv#pAAWN=Aou@S zAK$(C9wqUQ|0}k>4-TOGG=7A+Hj2EXyI70qaK+%H0SJ#k2!GRMuhx#30dKeGF&tN_ zcgkw1Ji8ry#@k*UlNaFOAbq9|(VqCS7}OROGtW(zFFm1zgk~lLOcs@q)(Z%w4n#YW zQYPa2OeVpLKIYD*t@E0>wu2Omu~}=#b%!Oke0$&w({)mK2gBVJ>qC%*8HB!MAp_&J zps3F18*w#F#ea_wTh2TiQzMD2I(ExFb32lkHUQR3oTUZpEo~9DL_z^1>&UKxP#(BU z$LHLmBPl_{fSAB^VV>?y+clImn>Q0oRhp3El+@a_v5y@XLyV~y6B?5>#|0&f(MQe@ zsZogKebzCKb^&mKKHE5c)FiSwX zz8a`QxPJ_LIoxN|>TDWw)rAjVFo_DdhqE~YNYbH`Gb~Fg4M&oPr0_zGDU=Q9=w3z2 zddLvq)e|AYGn-5fh@4{w|Xbpot;}p z%%Rg-d={~UFT7!p{q%Jx7?t!|ePKRmkYThxHqZ~e@`AS$US0$IefIyKxidSKB-fFs zN`D}@fDi`+3H?PVJCQ=v9h;Bo_olnEG9ySV?#DYkAb-AyRdsojkFdq>DtRQ!N@nby zivBm}>b8jg?eidn^|H!b540N2$NIosW17_|ktT!PrHrsGeIA+320&PFq0VDdardO zFf;6CJLos1o@-tZZ#qy%4gPV7Q$_I`_l=3dJ~(8K0I$nAvA`N?zGqfR-guz6dQ-Pd znK@JJEQk!U2@*6p{P%;O5?^jtzezPB2luwb}G7_UdR8L#2ovDKc{T^fhHmi2-*m2(O)v|vKBCQYWh z+tqmw3JD^|H@zO0*aM%@jtJ@=Gk-gJXD}p%B?)llF{SKdsuv%ji>8w0-Uz#$iGVSz z3IDQ5Pq`2E7jvW~A&l`=D5&CmiDR1__p~!7VZo#NA~0mM$`}18Yfq;1N)e4{SE7JX5d*)7+73V+W>J1x&j zXMPs9a-Wrz))x(O)25Hr!z+}U(xEtXy_76--`?*M1dmM_qh3`H<<@(L+wjDI9 z$3HZa<1cDg@MB@Xx+jj>Ycr|}<$9}&cZKU&eUr4I(y!+6xg^XFH~ZS%_uu#kxwEf* z=^vZ)PLg{9Ye!DacUPn-!hbn?c@yl%7*#TxE+E=N_LPx<$Cp_LcF))FW;k&bR`?Aa zlPMvs=4Y&i53il~`Owb%8y}%F@0n==U+NI6V@Oz#%&Mw6`cRiX%g^krNmjZKgvM(_ zbKKT0RuMi;YXHd+;=NRC#~nX{Ed%Lh=0w(?6#15ptxsC z4%|6<>*V509RD_VjRzzm+A2Tt%W#WHgY&@9YM&eUv>jEFb2;s8=(D&dyk?H*UHTjE zDX@;U-3;f&W`7Phu2K#!K(?!yd1@jgLz891vZ6OVwmFp(`|y_hFo9y;rg)3!~%zJJ~pR`{8ZMm$#kwk>f#j$PUv z1Yj}c?7-6&D6fIl_{_Q=*{70FxmxghW{$4vI>4bF;koU@ms%KTu;JSj1`UOqCv^@8 z(gNAP{8F%=VXH>pc7+MVU44_$?RK$E_f0q%WD8`#KHx{s_D zWhI`YPk-(5F8(u+3;j?p__L#8!BTF6@_kOdH@vPBFtQOmkI}Ce z#(&PJ-q6y#8+B16iyk@Fmk8v2S{Y5`B+i#?XEc6tu1`d;au9&@)-JVJ(=wx{6tmp2_6)#KzEEagfigdFBE3gS zyI~=C?^JThvxiGx3|cOf=|zt`T)TzQNkj=dkDbJN5I%_n_q1oHo2e_rTa+20?tk17 zeZS0!v22fTB4f=X-vv33iGm2Vcu#hxFIm2oHJ^X&2UI}TuVZP=s(jE*!XewsxNA(= z;D=6(7Hf{0ifb`lf?ih{-O6W3Z03(Vp(YKw6=!9>-UGV~_vTK&MacL){elVskRsbrC=yVM1L9p9(vt}M$~fF%~>XGiyqY*c@y*978 zGd_u~^bxlWIXdYxin=_Hb(cMKilC-QO~oT$d*3U(uHDo?XT~fmiCiu8?SCno0ytz_ ze}@R*U3?~9H;o}DEEZW)5D{8?qw?$B=_8s$+=TW=7d~c|+y;eS-eIa*())e&XsY@k zhvHiCEp>DsAP+l2l{Ow8X2d~dJ@v*60KViL^kiCjb@wj_0SL5GEf5IwL9yNhd&!b` zjqL5nx_e4%EYQ}eOXA9S$bUNswAc+<=SkQ7N;nYuJLl<}zBY`AuDS!)2KNF)(;<@j znIpTAMi_7@?+W;v#^V^N#5;Dx)HA0qedqQ&2fVy!dmtEbu{|>RcQvmE45b?Do(o+~ zLx6WmJ)3Q>0e2O-PWgDPGM}DBR3^qTt3JkRLcEn{m-&sm-nE(x6o0Gu%GU}885-2^g`_Ou-oIlRdBO7c>e9m2@N_kiJih7;!pqKFa0?kygzl3MK380NNH4@>bC zVNU;P&agD}?mLffTRvNBTjW*CrHpj*4iY0Jds~|= zfoaw}+R_(ZIciHXh<{>-CDDF{`%-=5u3KlmIQHThCf2dyAfT?tXnS>XK!}4sw?Pn_p3}a2Hw!-fWeQfu z%{Q*scc+gQg+yj13z^1R$(uSnL(}HFo~*U*RdzWXO`=uejvSI16#B*iJjwFg;~?g{ z69+p3@DUx8Zhz~xFMRaEzRcw)1LQwQw8MJzLTX+u#Lg2Z8lg$>3|(Cw4%`+S-<#I(K3WHK9x)f^7%Cb2V5s`XzI>Z!qYt6Iwj%$J?d zVuOOf(|`F0<4Yz1fH_)X3pvCveoHp{NLoe?Bm9}fQO_UWMA(}Ilc3kfBW{}{^Cdf)3bCc2S zp83?>2$=Zt)a4DFC-WP*08>n-hVZR=g%)PN0V&R6`Z#~D_GzSXNMYDjGy#jbHaTd_ z7Z^5zKbY$@Z*!6WB0`)PaRJgN9$tTIx5!KCD$tX&UPjhA{eFMB&wYdt-P|K~>x^g! zIvug85i#Fjp;p;3BBDIce4ntGH-gk5_l(g_{j%ErTU)LQ8)P>jRJU>_@_8pOeyxT$Kbsp=^`w{Ecs6A&RHu#Rp0L zJV)4N-%R^j znG}C{{m?qIxF?si>un?oJb%*Ubo-Y7safj2gpKgIgO@@F1mA1V8;`=sB0ISq&bVZx zq3e1JqV)*f%{}V1{vPUsCm+j>ao4pdJMHGv^~sc*w%aToRP50}Fa@wHB2VW0KB=2f zOwPn~Jia}|y!~fN>WWfqoJ$)CPHm7Mr3-(|WHmXrE9>W#r3@s$=6-Z4S+BJb$x@Kx zksqh!I=Oal%$?bj;ezr?lArg)kPeS)S+2z})4S7uM%0=tNB6rW{ij!g=`aES(T*d{ z&k$B{9^LAD7W}a86{S+HBs%^zABka4EnjU^oz5kI9I0!iPF?Sk-G4%YFBJJLe;0WE z#*1ruFOnf<+6qK}4dBPyzFEvJ;)o6VK9+<;d^BVl0Wo9D-Zx-gFB@^#CC27l&|NlA zRWW5)?@UrjG$%Z~C)GcCes9{jX(@jW+pNJFS>=*dLz1zaG5VQruH7c@1KVu}sM8O9 z^;}ZAUZXEP%w>GPYRWp9wYgU0-ulINzC9L+x+oq#X?WNx#!M@*9L?5G*r|K>dqq51 zpX!ghBke3G@#XIVrSK@Ln!s5QyFOCw2DT@wh&r{S5mVd4{>DdGIB-H-V8?#~Tm^XU z4I2ha_*CHL2XXIc%w?}5ct1BLe0v@a;~P~;uGm4=XG1_dcm|1}PsnTI8?kp0nYZ#7 zyBaBey}z-Q@w+=de`dz#O`;`ftYR#pz-_Z(YI`#(Yv&YW3&aMGV99=}WYgO#LndF{ zz~(RoY=Y}k_vsXSCX*}}*8hLg^Y;E?Y%qei|BXH6o*%(<@P@Og=_C`Z;g z@o`}1%J942m(+m9gnuASG+iY+|8^>4%juCj&%^TPC(63^zRkTV zle+$FjkTwG8W!xp^s|H4c|GlC(8I z>oOoC7KF^!3#ZeQ<<#(u*4y8>tpC7Ac#3@78J=${LXLoQXC`8Yfq19ho)PoINnW!( zg=7`Hr_%aZeLUq|l|qD9q-OLMdy~O(4x~P6Pym)pNCK=-Fh;6*?u-35KEi!S7#S1Y zQ}yvZZ$+klnWsEd+G~H`4_7muce{6`wkt~xD;#T6zqmA}x<}evx2%Qr_pY7Gevkpa z%!2!S1|$D1xze)JDO0k%T?^Xbsm=(#>%wQ@Ii;IOcFykYY_#mj@ zT)OPeRK#|Mm+*xulqhQ{i=G(0-{pgniFNPjJ=Ga3u@Zq>I17L2+u5L*HgEa9?Cp8hU)XvNlo=GGvjr+o4!}&X2cu!?bqe3F*jDq zZ}jOy&!|E6+?*c4=E?fNDOIsqdG-x1Xzm$cHB6ATS%J_*$*HnFA>H}7dq|@bILi1{0h&VlVk6w5}?`{P-t3MOdl;4*5LOv=nWN;@>WFzv4({Tx?wSG-@u>l7+ z0IqE~=3JLC@k4rVGf%rrURkd9`woNSppB_~x(V8T`on)RSLHS`P}+!IwckiWbuzcz z(v5#-K;6PTRZ9OEIojsvcbqM=%pf`M7=!Di#uAcr{H(mIL$Zhg&~MH* z$S=nZ#0Q;SIz0|++}tma?(<(CQn3gxe)49=RyD?a)q zRsie@gY!Py8;|V*7Vj=Qy5zd>n<^W={Rd8NT$$gyBsQF_a=6-DS;pp7{T`p$FD4AF z+uwgDJnb(xLT`fb_;&f2yp})$RvE_zS%}v)-kF!0Ob?x|78LsPw&ydN!t3EzI}{=u zmAOyNYUXR{HN=<%jdyJaCbajbC(jRZ-E&1A6oYoAPPj7C?NXS>)?d=1Fd}6sON=6i{cIW^y*VxsMT z_#AMotd64OdmN!b67zhIVADcb1gk9|MfP`tMcBRixu(&UopswlOi?p}VJrV*=5K%2 z_Q}AeH44sa=+4+o?`9m(GUGFLo6;PDouiq)f8!&xk1mwVMatCOn2#f}^wel$o6+#z+!VR@_-{M+*_WF1e20%gRs>K$d}X`EPs# zT?EL+xGN7iZ$_0c_p@(!Zmc?2zZ8E70Ts8kclJAny#~tKciH&$64BaQfL)ueF$qT{ z5$KwgY^&dBVuU<@bop&FM%VF2KEi1wdKQT-c{xrdK+DLX8-6+an>NPyI1+o&KF-&7 zlIr2>yme-E=JZ;<0VB_%ZZx>k4b_!_iQ4Uq#KCf3qh5H3>+KEO`^)hP#$bO&)xp+X zP=?%lqbU(GwCB7a(QL1e`MIRVXOz72dh9W)V>>{S0nhAiH~rEd<{W)gjkY+}UN9SG zyx!6GZ$;3#FXgM{OOO5oZTp$$Ob-US(xaJ6BYI-{SL$s+VoK2y&-!LPY+_^<^hJ%l z##oP-Mxs!C1@$v4c7XulZ$A+G0Mt!_W>NX`#0`d zheS*4C6I^@Yj_Muy~57CxvJ;wdu$E`@)1LtFE-TRAuT>YX+f2h!c5G09ZXZ{pUbkB<% zpxxem_q?QbcvUpIgN09dS?M2#FdjmZ%<@T(Bf@bc=ewHk~xeVnipWgf_N`+5O z1H-+w&)Nr>Q}0Iwt{ujU^7^A5_bkfNe*Fd`krldk(2 zUTGr-7s2-aLg#;S^8tAOeLqBV0%G$y;13Q;x=H^mz^sv%ovl(HYZJ74qjrb&N9qfh zBJ}0V1kRYGK`Oadsh_4E;ajwnGhrVe)MuFm`TgM{+0PJ|azNizpH+Rd-ba5oL)+ms z)ejp97o2^~B5V6SZ}%aVCZzili-E-rqb_q83#S)s{CR({+l`P&v@V|*hh%4VD*8J6 zFLt&q_y`R;#TPTcbgyzrm!~tAzbtaX$l#T}9((xQ5lHu_7aNn6H`=&u_<}t&`Lmwd zmTuUsneI6X$|>xd!{6q+T03W(2lIe^qfbA`xx=Z-$Q;L<{j#8HuQLg7dGRHR9gIuY zX7$cu>ac(N?wJv~!D1jgICS{ruz%thVCX=kyS0mMB>*?Jj|Fh*$(?S)*O#_!;VyWh z(n~Oe>0=wLSk}+Qx0#(tGDCHQ!GKykO4_JRi%&REX>7b@(z5C3vJ!0e7d=VJ4}+L% zmpMudotoOmoD;YC$J>gRZ$BEm9E*P~(V1@earS>m8(a(=Zy;chHeyVC(y@Jeiy?Im zQ}5RB_l1z_KFQZhzz;C`bb0@hhhS!{Beb|L&pdm74IRYh);#JGAHD(roE>M9BgE*g z7%++afx$V)*o&Vb^omM^iR{r%93sZsa!j!hfHlxvBgH}BF!6&HXz<-HSmqq^T`0)`PRN|#Y~PZA=AV7AlnOrzMkOE zfI#*=c9p2+>x<}co2??wj2LzLw=nj82WZeYK6W9v9BklNp-qs(H71Jj458WqQ4@wW z8b5WE_pPDF+ozc|=d161t=LPS4js&9bJKrjvDZsrVR&9Nbk3XXrnmv4@eRk9W%*jL z8v;DE;&=`gjvj+#Dt1AB-@I*w-?Z3-oEp;?%{4j z56Nv^dd9aZ{R7{Ep0dv#+Qe|+jvleOp@E)?8jR+Wsq{#Ag?Nk<3B9 z8VkS?sL8VMLR7Z-$q$-;qIk@e2vm)}&}3R?ZiyA(eHemqBKbjA-C&xE?O9+R-_Y}& z3r*!rVMeua2qUUI{aw^}&uYn?h`@ih&SWQ%sb+cGD%Nkr_uPtw9{zc@otKM7K1U0Z z8hjxZISkyh#o&jPdzY?FsAc)51_$eB>kd!bM#8t8yGg_wffR1z&j<#y-hj!YeTpMf zR|crG8FB|Ycu=>F3G~T#gfQ=BsKWp)&vuT<^T|L*;!bjc-R+ZH?&Eu`n^S+Y_nzSZ zWkPyp_PtNu1oYfct{eH9d@VaC7c3n#v&hJ^Gvn06M`M$~&5IbN=_MHO7Ja7T40yXc zu~Xx`uk`(%g|(TG0#g0{fS2%8Y21OSO5-59n*!5YfbT}@Epa6c)?G~y()*i!?$-TT zP=@x!N!af=HhXJf^=TEF?8|@10L^$v?soPkNQYY3?m=A^hp__A6KzNZeAGw8G5-LNVMXuvlOx$5ygw_F=6*22*~%kb+p>9+NfhqqtV+wQ_h?7HwRu4cnD+El_*`gO^|1`?eAhRLuGLR*;_oC> zXJAC6w0s@P-K2+v$rJEjB;1-1G#&e#-6k{b7G7o>%M3=%oeqKWJVsGY*Z3KNEQ!k(EC2UWG;>+Ih9Xk2Iba zneUspEsr^FV+pj$?0S8WAzA#clc=ME)g6GN->-Y@t>#W73u8d4d;1_bFHgMZdc+@z z+z1nyP+?x!DB87u@Xnj>0F-$9kf8a=Z`qEYNJh1GiRospIkA7dWlDRpWv-GOZ`+x< zS^g7Vip9O3N0CwwIc;-%aa&6#7pIs}^dmptX|E3O<@K#add_PYC)fRU);9YGcnc*u z`hHAElSODxAkD36-U4X+W}+sJqWOXxsTDS0kjFN3+){YJXgt-vz`oQS2dKax%>17_VC4zST0E{ z;rY%U`-}y5$6H9yZ+!1_Is32P&S5+7_N8b%I*%r79V35)L0JG>)A{C9*$9QZ>!V&6 zPI~-(X@c4o(+nUDZ9SXdY(s3_^pYeH<_jJYN9!ezntxnhwvJFf&CwK!%Yzd1aV)BH zjU{9hX7%mfbMPWU?OTs~fB)c(iV4}%;aag0{=Set-pFTd_Yti`CLkAh* zfQmp)L!jRQt$<#o3o=~2cf=kXdt~XgjyY++vCnLvb7x(QF#KE?=D;X4n1wBBENayC zKClWhwZGviow)+E`IPlKDmU30a8Qo-%jSE@;>&+t@Lyy?a-Th?+mtpE*{?<2V^Vi< z@zdOY91qHdhgo9n!e`kNG5R7j05%@S}=!0!FDlShOUcHNp}z##?#WOSFmR*j0bXVJ53?Y@A`Re;2r{AF1eUY>iOQ^g(BW zR6IF_`5m+rKoMm$=9@XW9QlSD{x&jg8)_~+2Iu3VB*6`n>^FC2X~$}9_&tfN!R)$6(&R$UzLu-TO^!y8T7R>1FyGUSq(-Fhu=+?+0$;#(&N@S$e0@ZZ zoPjlm?g!2%V5G4=B6{2!wl(XUu84p4+|b>aNDiINF)jDYgjS-A(?4z(6g1ipCD!LY z($kZ9TZ7@>o`UaZbeiYvzws@M)AxM0-C9+dEno%oBgAw_^To zE7BKQlq;^V@sKYw&&hV0xziXaVt1%Z!|#E#0kX1M7gc0U*s7H)<8`&`aKIwv~mw0%(dG6wmRT9eu&V9g5r?YCH>sz zf{~}QhG0c8xCzD$ZMs6Vh&Uqz)FQ&Zkq-GIqXsmN0w4EnYc6vG%*iR=RtAz5dS@ap z$g1pjP+qlxGzkT%d$ZR8t5s%*&AXz`jQdH8gdRhvMsmxD8a4(wnR0)g-9T!fpWSop zpZ9Uny7$%biblJC<6BtE1h3*6gDZBim}8eiu`-WQdWA;#xkgGZg{;oK_OTmoDjWr= z8;1nsV6S3PKn`V}2f-0uSL~i};=oR!eIiOCijW2U8$N5u8wko5+{$qg2GZ8TL_D$Z zE$q(t(Job>=&f^Dli+{1My=1(rDxxqjf%!>jE7l+mMG3JbzI2L=W4}oeQ2Y_qvn_LAwvTxLdmV`l7}z%i)0%p4h}|z8R~M+zH(%&EABhUIjw9%_Z;-^-&UU zysht6eNMf;_0xYl`hcVvSB9gO!&kbF2fpt4v4{voBom}AYRWx0>jBDl^0OQAvYHKi zggLQ6xJ|!-3`-=O(KZ%15tIBnC|4jxI@(Mk(_%Bszi|olg%U%i*NJeBn_fTINtOCh+(<-cC*vaIp1@} ztXQ5MXZFmq`8%*#G$6~`#6CwqF9SrZXD03aA7N-fVQ7)|!oZ+>0 z=9k7p*c)+A`?lNm;V5p5#TdN!X60#8tUph^Zex*Wi1P7l6mI8}*gPQIV*ylsx*&2~ zI>NVP%})pYY}C-e(7amqEu|2I)_@9xj(I;4Yi56&T~^eCTi}&zP+Jo(DhbkeP3Q@G zH1e!e!IgH&o*k$9m}ppdpKm{n&i_sqUe@(~a+>!+Q(q%EvTqvYQ9aLkZq;9h_k?P= zJ&dTn@p+cOn3Tuzl`&uRVH|8CR-IAf?!xf-K}LI@LU2!Qh(jzk``_0I1j^r5#&HM5 zWbJ>X6psygWiNeuYOfSlJJ+0M<^`iT(Ml=Z=Wcj{hocsrq2 zbI%XuUpW~s+t@=!VqyIo-@@a9IM-!D&B%wq|2!3h{U2jin%Jy8-y#AV<+IgpF^sgNk1<^9 z@h#OFS!b=fXHz{ByVJ!^cphS2_Y1v7rbBpNoX@l)GX28_A7Z+1bPG+28pUmq%pww= z7o0>+N7QS3>Ed}tFKbTN2ldk(FK;jB*4$V=Gd~mHc9~CujuomFt@q#f77$t@)bTq8^5Z(A);hJ99YkyhX+k%A$xiBX zlXVQIW6it(JN9i8hZ9Lx+oVNzahLI7Vuz}I6snIIaUg~CrLvoXo{c_v7Uak!0c@Y- z6h6lSRy0!Z+g<}9LnW#J``XZ=q&0tESj*U9etceVy|$CMx%~x^?{@Gbp9ymfg`)r&m-U6`lg&Hp6j3Vh$vV>VDO!v zGrny}kOS|g_a=m(9MbT74z##T+r6E z#Sak*RbVA7?e@s^$**kN$Z3h19(n9bR))ECz(^}4{Z(Bx8buP;)p>hoQ2g0rFX?7* zvqye>A8y~df%f&m{P;}H3#)$>LgAKos$JsIs||)2NCzGvsy2ucH{qY2%Os0oHs=n! z_DM%Vpv?!I>b^I^l8t_>t(%8cOVe1S%=a(vt2UZH%ty1|BM64aCoo&%aG9fE=!dbs ztkv6|%tWfT>(HmqiN5nX8FQep!i~1UNh&+bIU1V+6j4Bm*#;V6wjh7o#==0(s$*_9 zFo`@ZqzNmIo%1)og@PXO`H5Zm=U?(0R}pm@xA*CLqjP03Bezmz%5D+eXN)X6qR0eR z+l9!0(+bdYc2o`Mw1zHy^E@)%sHSolu8T=p zJ?+WLqY)GUP#>ehSiqX)<=*ELm^n;JvI_;DE^*p~Mc|g!_SJt3XCOsSq)}%fg&Fwx znp3kf7e4x!4_x>?lW0v8m2=K_YcdRv+>6D%k2zi(bR!OO<(1D5A4Y8UB)5AV09=`) z;&lpi9(pM3WQ1CfPlwN^t%WBDQ5eGd$Ch2K;ebQlaj-lOe#F<7;A##6@ZxhqI z+B=^JQM2loWYd4&J_D&Siv*VN0ho5jTE+%);(4yv!w+>f5u-mMR}FTiijl(Wk@)uI zbU+WW+}@{y&dq*iGQ^&*HNc@M<@aHU)KMR*{^Cu>A;@LK&Rp&)RCYg`dh2-jY~7>N zf|uj&$Nn65oc8gJlX`2-I*1JF|9c8*iQN9BQ{IdKE3Zy0BK<4f<%V>BE+zF=^ic_vXg> zZ#sMpy>@>zq9rYsqk5jP@Nry(ZQ@3{njNoM8xH&$_UX5N7|z9Qn>hmiQS^T4d5uAJM8NZO%~qMXB-c)a5u zErI1WAHnqGCSzki7a}9@uFJ|Zl#m`}$fy-h;K6@gTyP*1K;ymJsT$&uB*IbI_c~fE zV7Pn7g8}6)mo;PtW9?of?d9sSG3>g0j2@y!rxa_##N5+9^RI{xkfN{45@IdvRX>vV zqd2nB4u)MNhL)5TT6}eFc0W~jm&0?BbgL+{mn5!yl6xmQ423k1q5i#;?}Wxa6gdx= z3(J2dU2K4i=5ze48|V!4avpuY;33OC*^RD^VDo>)B{>#t(`nIW*S*-r#e5|f#yN-K$jv!CM)Zx> zpdiVd{5}HuLL%SaZm-;MI#tk(&5ThD_1{DzN;hlkPT+^2a0sP04VdUK6$CH^<&j`n=s z-5(njuhX-iT8oKwJLr4&ym`yu?(+`SkT(hGeK+xrH<_L7f}h9JGoKtUBCS0yVbp>n z$=b*-`pO@Sazb2v8-*A5ny^7HJ5SalaNJNEkc;?^6PdNhDy(_LU1mLk|FWv&M z9uH)$VOXjB}MQy^4xnDYMV$+dA|B}`FA;ny3VBb6WC|nMI;7P6y zFt_2o#4)K5P~>J8HpQI>+OTUV6x`>3(ABnMRpO&jmw`-V=%!-+x=y7s;x2Vce1VWW5&{zhY*W z1rp{99-CkxticxVobdI_o8tQ$yAfHowQpiF`#xW2$UtC0W7U6=*cdd;Buo5$wcP_+ zEeBj!tR8JZsHAi!n4ysmqQqg!lZ#E$=_p48z~P<pHcDo7i zbTr(PtXHT3FI_}uT=cp6FuiYWr`>N8I2P=DzOrb{KpI&Kv-zhTng?NAyHPB+=IS$e z0yFZn_eMU!QF?!kEUO#}x0xZTf!%S!3D6Xv{Kh*!J0T=|qUnnVuh*)hrvuzg=qb?K zW?hO8=pTFJeay#Ggebc_!ytG~LMy+yBZiz8m$FLqz6;dRTA^1LjAiy__639u`k^qg z$4Z`S6?QB#k(sD5Hgd<-k-Yk10A4ESoTczD|%7 zi_V3e{62l9V(B^`mqj<86f6ccXH4avs9#>!x%GuP#O*~&VkqHkj9#RgWkZGe5-f1% z#f$NF7r=jks8XNi*~$-3=#bH-E7cQYk~1bd5Qa9tq@@Ru5ykErM0YTq>Zi{2f&ARw ziD-4l%(!(JDqYk0uE7s6d<-J6r@t-sg{Z#kO_=IBC~_Bz<@YJ#6QOUo^VTwJ&rez< z`2a5F`=q)G!<%!pDLiw{*6Rxj#i5YI<*4DcHei1#@ffpbck)Y?uYvURuq_fvvY~c8 zV&kUfIl!FPD4FZoE2`lyc4Phx9rQz8SbI+-rkLIwd%Ws7eXP;ztznbMmO0Mh^n~fM znXSY=<{bWpDzG!SAZT~rvrmjFiqgk}fo;f%2aZNk`m0@yOgbkb_HTIZ2Zm6z{g)0I zKaqcu&dNJiuASMCfEYV{e-kUA(xw)`;4>zy4A~MiYNFVoFS#igiB2m_R8TIozK!vw zn~@94zHZt>T>Fs?1$e=HwneTw99nYpaCypQ<469OvODiqM|a<)%qq4z*Z zzkD^>-Ww$i7`dFvJNC1j2f@iAI|c=F>Ue4?$#8nIewfa5bmfXu%s0elKL%E0TH|rl zz~@^Jfu9o_sC$x70$%n;d)7WEWDZX}TzevyJa!iVA?CBc%=6h=4#uzNIQxR5ep`Qz zJ305%KNU+2gwm&>|7cu1&%c$(L*Rd@f1;J5lWZF{T!{BoI+R~LQQ|_TQ2c90zFAhAr$NKu7;qLttkX`#? zIE~ycf}xQA0Nuu+Ns1-0B30lfK3R=_beeJQl+4sdG!NOwYsP;Wi+hjbJ5ye}V=6(Lve2=2v(5$Dem!N{_%LdA zRVVbfo!8e8qi2Xo*lqc7|K%E4BkGq-71f6d9-02!j2`X7BkL~mi)u&^$PMw#$!%&< zLR>7|kEW7yO;%n%@xWY_3j=?fX57t)7WaTQUd^~k-q}5uFl+TS9uh2b;_G&*>r#R_ zX7o)Gwv)r%CkR(*4hX<^8O9W29f==poO=)iUP2%~5XRi|4V+xtV7@u%X_7039!Y|b zef;7qzM((M4YcK)q0ts09+UX?u5ubFC1BC-MPzY38?$8@_M(tbURr;G$A59zn?9}k zrT6v+zhVvDg_Y@BOLQ$GLc9AH#%=u!U5I0ZhL)+CCE3YCCJzv64AWH%p$YZQ(;i-z zB&t<-GmabG5L+65JLe5-m8XA?qqNVHY0Olx_)l-F7rs<%!n&ek0S^gCa4pHm5egP$ z))#*K!eR8esDy}i-S~g`kpUqI!Q5&1d(^7ghs~I*-5 z4ii^7k?48vSK#*-o`ii!q)y)T=-t2918(_+{keBwb{aM4ye=Dm@{eQ4X7KXv$kgyd zXf+tyFH)P)A_3VP11w#NAi>!QS(qQ|N_glTx6dq~2yrmO%vpc=DES0wIok4oPTb}~ z0u;U#5cj?h*{x8Hs8LMU60Cvt2)@(vrF4RX+67$Xyp6xv*!n0_9TN!;X8{L$na6|= zKK#R*vx)6C<|l<1`(u%KCtG*(d!ELt{T8 zGl^JqkX72D@UnkG5ax_XKJNtHqL&uuZueNlf=n-2@{`ka2!t)R5S)d_WbObJQj}}@ z%+4(L4r#e$Jo~&dI2p;&4M5B50g*sD>QnaxVR$6RSTWnAh>8WX7_4XmzCxi+dNxbz zbrXr4uKg}F56`=7-=%(2VPVEXRN6==CNC`F>HK!qW+#8*vMcn$3YaXuw{9kl`dvH~WWnzo!t<*rZZ*XO4#XU~axKDXiJ z#NN}_C#y?L8sj{o3)qb&#x*8(Rv+?xRX@5!2;qOkP(6)vlXm^Y=z*xgEDjk>ZZe1= zqkxKw*N)TCKEp?_CqNDK+dJed540o)%>V z=^c(hVJJXmPRaX;rdubZX!(@47W&*DE&qH~`hq;rnw*??Cuy9BxYiWZ1a&BblKP+#t{jY;4}bUOgl;stNb1`1P1hupot3% zVC0$^8f>g#H4@eSosI*7B^e9=9I+DLS`dGDWO=g%+1VP=QrSq4#_QLa7mopM+vceCNvk#kaSOWKRkypwsRJMAOS~YS zYqqn#3TjfF;=Wg(4CFF&mCt%MZteZ z`VD}u+_%a#Y^}B$4AFTJMp1a*1Zo9XEjd8iW8L|sKdD_a zTJ64!74gi4XsfjryJjfBx$&s*zY#|}or8{`PkZ_9m#fOKhQdvRf#D8qxQoB&2#e9- z6tlKG^I^SE2if3o7qD@F^$K&*&rpAI=2Q>=y3_e>jbtDEHW>$s5a(q>x zElmmj$_aiirl2E@1!1Bl8U#bE#U0#m7b9*eW6z5rk*2(Vo*lII+bCUFTac^;xyT>x z9B9k7^ZtUrFch#oWPtgFvkfM9-=E}p5LwkeAj-Ky+6jqM8 zjt?%dIo1s)wk9rNod}n1Z<<@l8rdH!BX}0(p*MN$);isXZ-Hv#{8hEjexzKD-li7J zAB+(XUml}KyPxT6`1e2o@_;=S(7T}Ut*No-B4@w3e)$>J$NKHp7seGnLR)?`B<{T9 zXe=mc@7^lZ1_ZxxoUevMoAiG_gAWBbIfhr5Y z{kc?GcXmi{f%#kRw-`c$)PF%ei%L+YbW&~Q-YX4`)BqeX{6c6Wk53%%)wV2Q!~*1W zd&F?2_JyXkldUXQ$0MmQ4oAYPhgl2e2gypgKY8m{J3c>*MA+R!#zBACJKh2^u!UK6_-%F# z65E80!15SZ!UNj}d%=IB#}^O6<0w-WB%e?42ZzbqdoaTN`Ij|>f7p~%$&DEe{!p&| zUJ)~OXKKHEqu+9#O}lOF1|THRlMXCMf?lZ((k)aTaK>s@XCeMaz6G0iPq2l+?>{@; zMu5K;U{XRU^<=#edd4Gt+On-ND%{Pwrk zM%*uy@67vTGC;<&KU>@Kh5{Jq)L7$;`%%mLr+r1o|8jJO@KP}t9(7U7*aNu3U=l@k z;)8y3_Z|L77o>l#Ll(TQSaPfJd(-A1b>GiPdy0{%3NzVN|WrFN#E@M7ODZH6CA~=uB+-cML^zr2f9TxKIBgL>XQt4+2nZVde<@qlf8czA(g`B3tJA#+po`IUd69~d3{5um;|wYimuIGo{* zWs4czV+B-u-1{Dei?cohr>qbA+mh0>zb)ephC1;19_*8E=y#1EmBn5(S|w{vC*)Eq zTA%MLMZA$XHTowd4(3oa3FlnKj_>1#atf6?Njlx`L%h%okb-OP2+StPtRU4XkrKx?wM(G-Z23g#2a%N z$p`ONNi#gV&qV9 zUxZ@v#q%I0Ra)VuQjqCFC^KF)IP{q0856s2d3-^^X;UtKptK=1Wcr?YPBExTMDl-G zc$Qp!jM^GtrM-z-nCMj+laIB6raY#b;JgkZ;WX`UBcoFeh}&yC4dlHkUxAzW>rtx`jqgj7 z+ZZA9y_dyJ=c#ZhyNuBo2lG*Ej~jnH7m!y}1l1jAQGn?%v4{!C@6a~z$_lF&*UNn? z23obkIbMR1-D(0b%2z(VTU_feM$HW(ZP)p ztGQ%hbmV((Rze~N=|aCtgLwrLcV2B+vYwMrVK=yXtq9&U@(futf{CP~UB`dQJB559 zT>(8@6ZW2Qx|N`Z1niP**lcf3X#4cnyqBzl>5q8-nW^q!pvb`02~m--3}-Rnc?-1(A(g@WV31mjKNNwlci}_;93zWGQu+PSYxj}%o za|-YsA}q8xCbjXx%`RhFN7Vg|$tNLW=S5DkiR30v$5L5P@^$E=&uCKTBLMJ=DRPc2 zho>2MOR$^sIA)7OkkxFCOXdKr4Wntjh|wFPp|f7r;jQM<+Cu`2Q?h?zn!Ydi%!}$R z1N)S$S%M+X;zja;q0(ngzOnVO=Y1YvL^F!B5(dM>Q{JZRI~-iHGY$ z=Z5Vj#IHBR$}-PB&s4X&`};Vu(T`qpqJHHL{ZzoTapgq8BaNnDbI9o2M469nqP@ya z;#rZH8HJl^_lem@T^oPV*KT``u8rEjX1H)xGAJ>e?|Gw$z3>3LEPTc;O_@1>nxb|; zQ6?~VD~_>40+zt%dQ+0kqUL#PE;X#8=e0RIY3Jc=U#e?xY}T@oIY=7 zqB^Mke6f7$C{Y`8%HsE&BYU+wZmqiQTvmE9wBoiI4d|(CkxYLbGES$#idowhc?f{A zUCl?$yn7~J{R=im^a9W7-X*%s7f=&Z^~YZT8=o)FL?8m7>Vlx9qbv(y9=C@-h)?$H zvDy67Jf5a)o3{!OfrPM8ss@1zG`(?VxNr+3H(Gm-DwSEpoAt_RbSCS3cyebh!hC6# zDcFH)OR2D14g7yY7w4L-yBHm9_Ql=BA1iAO_8+T~QV3bB!W!h>J;N|PQcSO=%Tf0M zn21UXar!aBoJay*4jRt5!i2!*iQX!ykV!!PVC}&w_@dszfLeLw(KcWuL{Z4vnWfD+ z6uhQ0?d$|XM&7-bWUF3+ZP~e}iiFfo4qJGXv4nV^g-3tBCZBO$UAiLyngd%@F-V_4 zANryfW;F`(OxnG=k5A@yG%m`1YQ%gdBya$8N536O5}=^A_&<&(07&H)*R;PV@+XsK zq_IITO{{l1o7vB2In+?Dj;tNi*kAwH@FW<1sL1 zA!R`ZuK|Az=#}7t5_y{d=s7{Nnc97&&c(7W0H8rd1n&ZXOpJ5ZvdXzh*LbQh)RuW_qMB@63}8tmc0LM`eo{0N`?tA%pS}a;k@$+GOhP zSY6SBul7b93I`Rm`wo_~m@6sZc!fv?|A3omHnfek`2?I@=_A_VrQEoOG0$TM5RVe?!5s$5H+`sga0@_zLR>>~7GlZ-E7vNkPvYqrDD}MaUfb2o zlk0yQQ#Yqr)$`D%Fll@Z?Mybo0-2Q;do$VYq45V zXs)(*Hb}{{0Z(a{Jb1`VqDqivHBakzb~7j}4Il*j4>LZeU54Nw=+3jono6wMiA|bn zEw0P5SATjri}ob*kb*M^yR=bDXoGpnucCi!PgV+)CFxe^QVw4rSMlJ&C;($h@{A8g z2M4!Vvcht@ewTQM>o~TXTRG_pLX}G6gHcb;VDCaVa$L!ce64w#eAAQx@hZWz{EUVd zJ-Q7p5m2A_mVtu~y3My=w+3FH5gF3Fb891RDtY=U3b>_%d|-SsYfy+|BSa0#-rRrD zAb*36p6SJP$E?NcA(`jTfkh&%Oo3D(8&e$xRSw7ptuzFXGlXc*FqTFQx?fa#Ez3rL zd_H(r7Y>Ys2$AgCB;HJ%pI-!FT7ke1f#QS9FLvP z0-b)y)l;5|ZNBEhoP{mg>b#T3G7p5(^DGQ1087rRps=UVG3mo`Ddf7t&xp78;IIqy zYph2$EVTjvg^5~x3p?2|ivXOWIMolM?ADta*}3Nv9erJ-pyO~&HKcU+25En#m#UG4 zO@3a9GgqX5CMQ3L?ZM=G{qwTCZBOSAf8fjXew|zC3u4;~xQaBI&q$uZeKKh4rJ7KJ zt&Ekei}!mrxbI1IklT>jx#?K7<#O}A{2cNU=4)Q&l>|W+uF@nR!7C)KmMc*y7`A06s*b_4Kc#OtxE4>j$kePH$sV>#)A7>K@97Y4EU^nNgrv$nIsQ zpboy7_!4E0i?BRz z>ETfutZ=t%d$6lJb_nrgTI0;c@T39G_-cGSZuRyUcM!!aBoil;71qes6%g09#?^jQ zjuGkT?u1r%tvo+av%2wra3$Y2QcA0g)BBQ(i^7;hUaj7ou-@q6RH?}cx;;xL%;{2y zQQR~6YVfXoE9AFx(BcA}WXC>vE*j;MN8qd-8<2U=C0|tDMqolF7!U-60@u>rqY}`K zBYb9)pLtzYv7gc7d9NvGGD1F1fX>PqgE2owaMw2p|@Pzw9&%Iw7| z^1dmAQFrFY6M1)k_QcS~V-TYNzw!)-8_w>-@9lbKm5mXi2H8FMt7CGf)?|NOS!{yC z=JOvnnJd!&cqfmBgmNuD3*7PbFg6%VtW2&sY`551jnyTQH{^~6tOrn7P(!m)(?DS= z1(-67Q;<$WnrBpq4r@bjynD^hzrBXE$kDmz%McrCCegL2KswldlYT1oidILkJobb}pbn;Rb%iOslk`=QQBR1x99 z+K&OuMki4K1e{tS?RFcov4bMyig-z-0*-F3%M1n* zIK{`zU^OcjBuy`CR9X>t`kZ|dVIFRCY-}hXqtRl zox35A%jlBZo7%kE_u-7%*nNx==M)OJT-9VRDNkyDJXsI|p|2-6hC23Z3VRGVTRFRK z96b%tniwP4QEKt)vpxoJuC44g45ZYo+(C>;e8=)Q_yDiN#;+9WP5Xk>GChN$WdUWt zTy--NJ~Ti8$9aFpM1F&tDSrrK&M-cdW44=fa5pCo^UyE^w`o9ANF*~&=g%l)l(~+E zDi~pZLeUUdK^(#bmeEI}+chrXK+ecs+4*z49oHHq-OH(52TvAd3b5D>1r(clWT!JX z()JrkzuVr`vpIPFE~{YQXlLDvStnV>(r~qqIV8Z5*g28B*4imO`h7&&thNd4R|=a~ zsC60p-&RS}6B%oqXy=-^bDW);_j>&P#tb@tXyzwBF@E=uxZ!sH<~zBYbeA*hCNmz`P3^wVas%HsO6 zhb>(TA4}Gxd>vM;rM)GG(tIdo021AQcvHMcU98ra1v29Mw+v^?GTUwfGg(Cy2FQIk z>yp6AxX;-!2^3CW>G?!2WzOFFnLKz2UCtizEfO8H>S^nIvh!o|x}(jJe}xrJ}7Z2=W1nYguI)hVkz?)XqV!nSl1` zurItR(Mzx#2Nju4Vckhc3r?;re4Lxj%F@3tek_wrr5h`jbq`n(A$l->)E*|Ngeb_B z_DG|5#Ys|I9<+Gi(XZF~uaidoSzrow^HRwB-J=`~C>u;;=y5=BQ1`+K3qZrz?*muo zv@lLhzgx(jfQ2gkE4)Q3r zpzmTwz~Rov8F)_$dy|m?V>1;T4P)$;?~gS~rZ?{Bdg{ADUuMaFyDIFBnTNalh8Tx& z?Tp*;bukWX7L_2luU7EA!FcqqVSM8RsXJrqb9U#7xIondR;U+JQDN@rFZz187Qs1$ zIMHJ1uFKB~yuzb657T`Q#H8fa4z8Z!OH3@Z=u1I#9Zip;L^bx;mEjk<2{qJGRR?-h zdCulI70KKXgs^pgwZQw0fbotSLL^7@4aqO?m8OfV&L}47aGgksD400+A;HUoc6y(A zH0xq0lY{fZdf{$RUu+!)NUa&S`UCVw=s{xAOCuRwXs{;reVJkgZe~OnBV|g zxzV?Q80&SHa8URN>I3lWN7ZP$VEaBy%!}oFj4`!u&(+I+Icpni1C&Cs&wXYsuJgA5 zZ|M|HcVZerm{wV0$+>buN&nYERE1S4BC=7m>~p*+S!w)6eHAI>t0?uC*zZdzM*-K+ zmj^RH%G#H&D0Kfj&ZNI;JXjB*;U}rn)reA62TDa4+~^Z7J~`Le{qk16SxqQ*bx<2j zD|_cq>=svl8U2S$%{5+ojM#XoN;|x8IY2s?Q0ot==io~eWmodP)GV1^9B75sds>Z~ zt?#!fyPM+As4z6@qFPg8wP#D+!5HA2S@BAbI zs=T@5Sy|$qNS)rU(nYJwIFwx9EM-Z5rxRVH972~BK4`hvr|3<_xM*N9S;_8m`25{U z_iWAaicoignt|%qXUW7L-0`Z!hasjpLo&Ls%-E-i`m@5)SteOzbF~5nhGH04lAio0 zH-P_t66ode6Y$~d<=NcfQP#HG*`|!p&V*{s>nyVbzaGC36ECH#=b_V}XZ9wC2v1FW ze;gMY5H!Wtc~CG$oULGKA?k~_>ZH?L9=p!UorzaC{aD^3vjJ-ys?`+|jgC?P7cj&J zcUn|et*uVg-}ou?l8X8WUF;pKMD|wd!*1Pwl}6v)6y&oA1!J(;(r+UXqB2K-z!ukFG;e_geZfUY_D>NovufR%QAzV#~`K)h1-p@LY7Bh zB8V8uAM}D6$V=vVHrk*zE4L{&eDtuUI6690|J_^DP9bd|tZ%N3kY(WI3;LOW5rdNhx zb)al}y;&r>buB+NXYF%{J9MBRYOolM5a2Ms(M$8I6EoCd(MgO{Kh`RVqsuWpxQSS; zPAvZY6e@Afi$ab??G&GL<>HwSWZQ*{y^=YOhvQlNY9^u3P3%JInQ!x+ z$}z1WH;{2m6VfiV;0m)C(j{4{l1(Bfw5u#7L86^ z4xS%IuR*ze9Fq9V%>d}$wgDw^JZJK<*m<$i2>xIR#BWexV87q9(BuosHDCq6JIaYk zTLV_giLqwIQ|NCst1kh6`~yFQ^33y)qREO)9ec*|!IXD%7;=#Ya|AVaAsoOnrgMTh zc$*r;xIjCz&IFtR;AU()05oVu379LmJUadCnzfO^@c@0Uch=u%45=zcg+&;{ogHE5 zdSD8I-?G?4QU|C8$Gja*+Iw+vpQpF7Pt+I+e62Fp=*mF@$_oR359@97nSl61w*~?X ztpTiwBpc+dO4Vs_Q|nul&N5j1lU(9;S<%x>WuiTrCvfBtlGt3DsN4;~oL+D*@uner zf@R`8CmyzuOXi-~J#o2WnC?22-*^GEF`hr-#**OA}T5sYt-T86TD3q|_^`)G6{zgZa1=h4-F5VtNR8jc^cmi^4Hd8trP znPFDE*&RH6YS!n5rGhP^worrT(eyc(Wu(=DF1bHW{Dhc++cgNC!#=`O!RrbB4A^)w zTtXG1y}}f~!CZ&f9lRX8hkMhr_>V(2pj0>P(2vXC?sKL@t-*~&sc$RfkiG@<= z^kQI>>`*VCerfu0j0~=N@3}Bg->rSQJ@U7QX|xtwJYc<~oEM;+y)Tizfstz`kBshx z8V?uoNsM*QT9S3ob&KG3HCD0-*lUzh`A5;)D4t<|0Rk4d%`3cDRx!MtRfWdDV2W}N z=$|`kL0yT?Z2nbaIpd>t5^0A{pdRYLZ zGeA$9C^+fn2So6mZJs1ffsdU9=>)clO9u z>&0Gw4o^aW9OvGp0xR*sD~8YK<=_J-jNYI+1t3%0}a^j*GXf z8>F5VpMVBw}al%fVsvcBLNLe&k4#4*~kZ_c|qKG#Rzxx#-6psi=L2y- z={jVaXZl)a&_JZZ&BEF5zThyG1!5tmciD}9c@U}Q(}p;SzYRbgL<`VqX>bf^34S=n zAA^+uiMEYaJvHBF;f}KAJVhUX2IeAalG696!u{bntz`zvFy_cPlfiwbx0siX!M4|k50hJ1{YV57d+F-6R zt5hZ`a;$62b!Js5t#>U%3!Y2lJ$3qj2}n~wMwRt2N1q&kgDl)`YYL)J1YT?!aURz5g(c*wgsJO4u$5;!yq#ZI_d8Za1MLZuylXJ-Sn zieeljD&~%tgUT+fi|3o#taZ?$aEg-BcJ%IJW_kDVs|;sZR5pdv3s$+*<$8}-%mcEs zvn&FRS<*`DaACbN;{YBhB$Ci6B;%xgUrVH;E}U%EyFajPTYcj+%1H^%*|eW*NF#uZ zTN2WiUEyTSg`}-f6bMZ41k3M#mO2VHzsuE;smlgilLXekVyLyK+i;fTCpZ)29;H!?JdTSq&97 zW3zB#oYZ&7;_>kilk*=d#^Z0%5$Jq>ESjrOej?NIJe=7kG3{Qf4rvq5QJu1S%uA@=kBzQ|PinWQ zFk^dZ^{zn2#iTc6S;PVrdxm{Uzee6@LFB%7I6wdK(CV;3Hsflmv8!86T7E3YN!)qg zoxN}Y6yc-I)7dXEX`*x_qa(frN`A}EQ8(pS@a>yqOzB<~=QV$SgvKkXLSlDKU~=BD z_Vh5e00n9;Kr13-P3qd)fJP5F_1!VpD$hE}8O+HUzH5KxRVE-6)}v*We0c^D0jwii zciU|SmJz;`WdV!cm9q0Zr&pV`tS5SEbznRrf6;3}TX`qd7;&w~DuT{z_vqNWZ?pF38X3|lRlCCAQ1`w6D34`ZhgV)Q-!l8jWe503k7KGM9 zNq?i>ohy8^Gak25!LK&KK=20Rr_k?cdmsK`gjQ64H}7mEva`7#0Nxg zO$h_TZ(IX~)pp>S+D5<9Ql6(P7o+uL^0?;Q{DG zmG4J?Qb8VHzerv<57bg(DZt451de$CEwX=?3YxmO$g(1_+r z&Be1;aB(vm&a*4~?4%w*a(P8Bm-_%4{K@V55zOA5oc)8CHF_ad+Zs7A|IGeuX$W)} z!Y;H$oti^uM9nB!KgKAfm*Wp|0LE|0`@h2}ShH@MlE) zI9p#Z!Q1gUg{_>9>{{fu;fQ3&k3aocC(+AvvIM#*F3K0YAM7c3%+Wa*Le{FQT_~$sMynn8bZKVgJ~K!a_^y;Z-UCZe=KBy_|k8%2c?) z%j`B-gPh@$GWY{+@`aqcC9}E%M}NT7W#axuE`^Sxt<`O>%Vb`Nxb{aOqYTcirciLA zTg0Dl7d9V*oXPFFo%`hJz6VEt+qd4=hunVj)Cbx`bvVxywlyb2TFp}m#YMsshj&)g z$v8Qa_X2I~c)@D^q;L+53>P1@IRwC>l=ilXa?siP(b!ywZZ|tHG_*}Ux*R|Gdrh%c zOlsh}jBdNZtD77sw4vmvgE@t;Gax@mFhVjE5N)t@y@N7zsMH7^V){ydq4O9f7nzu} z6v=Q}?KkPn0v`0#femE5u8fj~h=(qP6?4Y`Wt6`iav=iLh13%CR`M^IOY zrj>h$vi!usIe3b}KGNNIn$f!=yNW`z3q899%>tU`eWOnWZ$Rgvjzb{A5PQ&&;2Qxi z6B)xug`SLNVD7aFuCPjf2_01e{UoEOye1c)CurM;g)EXmUA4bMOo6e3wzEd-aXbFu z9@3CO+u8popz~zz+;#khs$X;l`~q z#vx!Qyb$@eG9!*zHHolcR6y&K1<>De0m$?MW|KoeIe9$IVJOxdm=vwe)|}a6dH>Zt zhw5GWYDH^j?d6U*{q6J2Mgu?@GZSfKcFD?)VpGDCE{6Pn67Y|fMnkdlbPs<PrWXq_u($as_ZANV7v5ZdSZs7f|+evB3!cEA?%u)4ao9A{mCo=+Z)TQ5h* zH`gG0uw$BkJsDk)3p^+9?g$F{xs-4>kHrm_3ipGhF^31u!%v|yaP4F?@cMA5f}Vqt z{M2?ff30$Rc@^Hn;8W+_$;Uut%;UU*gY5v1YBKb9r~&gY{HeSz%7~x=U{_eaK z?ZB$)#p`ObQ7H}%D**t(7~b`Eu9Bj7HNFnk3og#dKCG=$*b|_y9{9HG<>?C1A?RV7 zk$WPM?fWte7-%iNU#(wkMf^9zPCcE=7OEz$VfcJ63*bT$PYE7Xr7*^4f!|02oc9P` zb;h25f{inmN`Z(nhAK=E2J3R?YzGHrwTQY-3A}n6g~is6BDdr{2+qcS{p#*epn;`wyghLPB7BZo?u`~V3HXsexnz}-8!yW%cU;6&Nb}}cSbuS!bZ1VSQIfr(+s{I&n9<`VOJ}E zHm+Jfdnd$t?{{Yn7JJUMCf1ufatN1W~U^e!8MjFsz8dSaElqECU zu^G=W26-1ckJYTZoa2?M$9Pqfsgan@n{x-`UPtz=+}>DZ9Ut7lLHXUeFBFY9>Q8&X zjhJ<^AEqp0L+y-HAkZX{c04Pi_QojmouHYw$=g?fSynLE<+;sZb6|U=Ti=;~j?&iH@15>iYHUgIl_so>DU_o_#fc8RA4Ik+h zZf-F5gyI3-1YJudPeW^(*KR&oqTKq_o~=qJ>&XM-&4q8)H-gQMsI_Ei}GJG z`dJL6At&s&x0vioI|+(6t)j+feY4zxY)h?L9u+%#UsEm#dBBdWIiFsEsmmTW4q0fn z#4*m=$L1Jyyi8fBZ>M@KHhi2Fd`yS8v!YQElNts+ZVs3 zwY2Km*-F{9&2!6^M}r@i8uq2+T%(yd!|lr!IWo`(%v z*3K1ejk~!X!hCGI`)hxL%-ydyMT!(orA!`lz^d(eX>>AqV>XaDVC%Je>aACcM=QcU zNi~=C(W1m1R**LUmLgAo#dBmW<;uxyjz4FS4ncu04Bf&S7*>D7XDuM+ErCvUM$SaP zBwCjwzq+h&KSVQDsO$?Zdp7g@ybBd1cx&VcADH5H8P!L#z4;nb=Iy%CjWFi8X2gJ~ zsL(ImjYKt%CWOD2y#@?(i^{#Q?_P|lUx!zbyeAmE@UOAFylo=`8!A06K|OSvf1r2VoLZ z^-gq-9Tld4DJ08M=R?CRJoE>p!a!(d6E#h@90Y=a7am@qobB)hsQY%Tt`vV4vChR|w>E!*)XO1@y5z&lcaY7&BkQd) zgtjczlVc5k>p7WvW;h%W%X$b1A-Lw)3cWkCdr#Vc#d(n#sPH^!Hdx;gnp^9&s4h(n z0AF6OGh>ya9Bod=(^c0ToRer_v8v#sE(g8M4q(%>;;Wzi`1f=)uUwPwzF>BU9|IDq zf*WJ(Q`nV5py{piz_>hqW@GymmBd*m21;TANf%pxl+l8#d?RqzSksP2x+POvGpEn> zk|dNWk3T0O@QlSUzL=+hU0N8E%=9FNMpek5##KL`wX_VFM81iW_#4PK5In%{X$X#iQMiD+bH4dW zk`HZvWTl!a*}ypiq(Eg+`dzgsnS4~08}tYUYoNKta(a|Pd>|qG%+MF7Aq{xTSc};V z9jm*zH?kR1whxOjPCi|=X3q#4`wu>z4zqR33zqglvm=shvqmUEcvUh2m`9UK{2R91*^D4M1 z43+TeMR?Hjq+`@JILWbU8~*CmAV6qdK4i(@P{&UJRMlkaNZGmHjGAshW6Qa0drQ`F z2^NA0gEDdG5i$jSQ#{B79~y?u9A%V6@2S%f;po5_NN6#i`K-vnCwx-fhpa1Y`>b9|1G>&qoR#x`PTfoB zsY@*z3j*=dQ7<0?riPb6NI6)oKjE43YeDYZ!&Y(qn=JOjp?1d(b1Pg48yWnX!dcu-4{8zenz zdQ{Fo2v|kveU_zltGN*{VDrY z-tV)f=AJ>^%#gxQ>y0X1V1&6$F&55q@@6k%s)W-zPQ-GwbehtCw$QTMcPVx(smvFn z-f`@v+~=+JMq*?nKY3sLH7`h^vZQ!*5Cu!3!}MB}4sEYSG^^f97h`n(1$)WtAOj6M zYIGx{H47_8R4$S__hqfR7US(s8g5#7yQyriFwecbYD*-MNH?h?8bpWgG;i}=XvQ2-YJ~v#~6HF!wI|@N$34dzOe#X^GR%Rc-~7EE{Wj9)69*?C>Xl@`f-R(2tp1 z6I6N2F=X9r`%{*$-0cGK2w@DTR_|Ie00BHO_qy$Mx+XiaEE6)pyZQq%zmFkDnJK2| zZZPRP!g)e1{`!=&u@&U$)}`wmp3x{nK<9?}&R=K;?YsMb(5||vd$e1bbe6iyo}Jiq zFh9=A=j4uDwpf)3dgE6`ho;B&I2(YctORA9Vd1AOSO$3ZFz5@sk-?N{zMUDanu$UA zSpciv!x@tKo{olnliD5^SP140SB!3=Y`#^rn7!&RfK8s!HSTQW(oUnOna+o0@d>!7vL1`ksVDpYF!)YR4 z9VC6_*ozQj1Lvd5vLwbUEwNkfO4~mmhOte$_&zKPcP{CZqun{X=fuL*$Am{@m^3Dl zmQ(cJz$^w&=(gZD$Q^C&OK{*a)uG}Wgu$fE_n6{;Lbuf(*^rB`Y;A`~Bs+Riee5Ai zA_U-Jx6Bw7jm5Q8A5+(}+<146i)f)dvJb}Kg8+%b1xe1r{1{Q^>CBxB40g+HzWC_X z+S`4b`!>*o?{XAP3(w@kJ~1KsjyRvy`2TT{vA@Dw%I3Ql9z8Rg3Br0sG@o5z0FeHTWzfJE%iBKWQa& zWHw1x$firMc>EX8ud6>002$Ca3z$%i&C=M^no$v|9BfZbxs%Rz6_M_oQ9KPGGX!>{va2^qFhLQi%9G@S)E_$6*}qN%`j z2CP?3;|rX+{38!A4-2-d##bFqzeDzA7>u@VwMq>_A;{1TX_w(|Z+Flo7=DT$YDQ=P zsJP4FD=nbm$8A}TjtPtr;cCCP&&g|x2J>d|z-!7qy--EWy{j#p2biAu#y+hsnl+DmxUjdDc#(A}ztYxCYEA_%sfL&!g|B{^yI;Af6RXR_O z$wM#+E!(Kjk3gj_AG_ImmhZbZ35Jjq&@~(~3q7YP1ynOnLMpU#2Iikv@C|CS z8v*FnUY4W~w5ubAjgxm;?i1=j#b0>fvj6M`faI~Jq4NQ_(wDym8Z3nzI)(3bw(cx@ zR=KB)GM$AR!9;}$($}m`e0#iqvh~0vbi(;M0iyNU8`&9d_R~4BK6Ankc<7q*IcUdg zWB4YQh7HtPnUwnYB`s4hioG`FXjhNJBrY}1SbjmH>B1tzoOrjZ`{-w=EJ{x8VWsPq z;wosvA$7F3HGx&eb75Uz6%%3{>jrx0WRt?CgX(WxPpKHG2bdPj@O){1_kFje)fPbR z22FgADtXpAw#ho33zL&IBh9liM))l}3C^N3U*ziSulBEf!Rj~aqgFaRSKKLdNBlvx zsGR4JIt;eX*(gx=_Ke<`yml_)`;>8_$p#z&6>-6RvdbPh!Z#|hslaey+%J4=r2K)B zza?R+#OV4O1!%XKdh=d?bO=-YSr?v@gSuy64OsMvQI-Z<6xnDHjs+s}r(Vqht~Ylt z%Fz~&#hxYl)`vOd&3p;J(IFUb+~uo3#oTS%SM7I3O~8eV26-<_<6N$6tM+wxe}orJ zhD$nE;F)j_EG{9$1%_QRTpa1g;M-8B&30M^hhl@!?Qe_%21+x3`Hi;u9&c~i+TvdU zXta^m7Q$nIwhFtM$ufsqc_-;0C&=pwmjz-R2)eL?(H3Kwi422!CaSvI4trkC9y~jn zvB_s>GJ0b~!k2Qj3Qx@%1XRWrF&`kQFkw1H6nTihBsyvpj=p_*7GVg>kqy}C$^s19 z0!7#55s$L>0{5+dy4LAs6I+{$QGGqrSr*|Xd^iv>Jw->^{(L>|roJ!dj!f;S1xQKt zG73zEN&=XNICuZTukF!Mr_m_8cJd-18^x1I_8ubN}? zVRBwgUn@D{N;_(UeygokZ|&%*YCOz9m6dnmx#-& zaSWbTQI_+6s+l;|APY*RmkenXN(nnWph=1{nf}}3wd6{u2Fo6n`wXCTrWd_aEFXQRulELJB%iF$lGN^3j z#(f(}IFV@q6sLhjre4FvVo?yx_>G%2W^`#@MrWaa$0Q=?v~$6{oT3Z?DtIE9ZgW8* zxt|*gmQao(t=iMR+zF1&k}n3go%;OLG+i47P}{HM0~QpK^jNA<-!~%9lm{wHDlUhL z!M&UsINppk=>E?^HfECp+ZciveK#<)PwFu#ScTH^R7z}nY)spe>2PU}_oni|<#a6D zM!!;j{Su2f@260?48u+A7xnb_iY(YZnBpw(e8D~7nglA49;~7Y_bi|(t&As-Vt2rK zkTAB;J2Mg)Rw_=6(3L~$F$C;fG+3Lk;)*wej-HTPq4rx^V>x}P&XyCKf`0Ka(I%wG z@YdF@4tI?kr?rfDi7(U}CHpuBzp?)tUJc(b{oPRz+wPqKEb!Nr5(s%(LO&z}cira%x$%D~EfvhwW^etgx`H0$KyuZ9h?gJ(R_cyyRBeoz>=S3A@+h zQ0b9z`4kFGi+XV1z#CN0gkIthp-3R ziRd$U*_Bvp9>MKN-CR#zBY0mBeH6PsI^3>=8;k0HoTlQEJlKXv z5Z7WH{xHUX%GC|P39m(dDUN}{!(mX-5}17PqK~tw)lP~H2w8+z*yY$wqfYOtQIN7G zEA!VKpRMqW%s@?q_B1M0@B$$(;7>EgTJ&vEqpnd$_4<|pUJ8l~en=BP{d@wWxdGPI z>7zhH8#Mh=m&`No8qhL-Esxf@^KceqbAxIb?@*Z)<>v4%tFC$>vM9O!en{gwE8L5n zxeTwoBM4;FbH&%Kv~%!EN>PcIZM*fk(}H36DwGbW9G2sBQJ)NUXrVE$hg3Z7@Ky0l zb+gOHd=qiKSR{#)@Pc0Z`i2e?C?(%A0I%n*as-zuKFpj5F5HtWzBQm;z z&{om)HeO)bQz2YzIz!8H(tat72}dEl!WI_RM?qUzcfwFkq2+${AyW}-f9$G8?w35M zb8jav&6DZ88sFxBE19etn2~c4Xc0s+rrQ!4Hcm-Jl<*YP?UEIOyB1oeZ-}zw+T@YP z=;5<6&0`t6-#C~J8VA6dvb@7^IcwdxOoqotxqQ10SgBDOk!!!z%01E$*Mv9)dZ`m- z^KB!NQCZ7i8PHUg0a9s<{8m)n^u5+m?l4-u)WSH}>R=&%9#%N*k$YgAmw`6um7Ecz zg5>sAcVqrs&v~`_*$L7JL+lI7j-%bfarhm3h!7eSFnLu&;CrtyYc_c&3q{ycOf*+7unX}*%*F(kpO zTqY*J4HUuW9nkkh(6_?ZO?*4bET_&KZNS=;hBSil+8L{yV6s1eP>BQeffsT`K>8LR zr47GR+FKZ7sPA*uWY}9sZF@N&Y_t`2RD97}fPaF297kx^oUz8zv;Q@e%YIqp<$oc z+ebZhA7Ml)WOB4}uDin3l!wDwgZOqLJ?*?E=OiD&DthrWzL~_{wd>rdKRuX1} zPufd=eV@F=5?eWQi6b~=WC3A>ECNg^7BKF*T4S>fZ|06umi= zQ-tIb)|9dmNut0`BJ^0LMIJR9@R5eU{1DLy=7_bB#D}v~sUEzb(7X$4T%rgdJ@{@@ zbE=b|qg<)M2crxlHnXT2=Tq-Vv@=ozhos2pn?z|hQ?XtL4HnPu)Pwb;gFs z$j&jFcmd=Okf=mG727my+||e7^~G3!sbQQY=Zqk%ukLLWtVwsaWdIVyZ;HmX+RDK+ zs+{%ZPDPNy33`6x>v17$pNzhVcJk`1mw)V?=fUQpRBdazA5%T#n05;wY8jA`8lPk? zs$zq;u1hXO&?gl0FOCVCgHeT?OWe~Cz&r^YUtSn#0~53wa+y6xLT0IS-l;Z!kJAYt zPy)|ow-N#8@5=xS-2gkt0^qdYdJnSdL)N<_9f3-_dA|O{n269dclAYZueBwgpOP9+ zG7`wEgk+H$GR_UweR;9{yo1_Bidb5k{i-B?qMUCPS2+(q#Q{mtJgZ&eGTt!~6NUs? zZ-8iJ8=v<%3s&UeA2>?@hFyYx7^UvOG)-YfMlISK0Vy&~&~+g6;DX`hlDKK6P&GM+dn-T0y|JXzy*__r0to zumcG%MyrRPI8l1xnKAfcM+d*f^%4tVoogM0oN`O|DS1F?;ND}F+>)PvYPFNfBCd;g zjgTkupwTNxcbeXNLyPrVc=W;d7>f%%Kux$`jap>nLA+4*xpcmlb)e}s4d4t&Hcm94 z4(Tn;i`jQwWx!8`gZv^CsTxEXo|&nQl>bgc;>tqgvn z7aB?|ZH37c;PHUqcu6Bjud)i;J1$k&87hFxEIQ!wP=#?BQG!Ng%*zzouw<9gAP1MV z?5c%viEk_Bo5Tx0>|RlaG2Gr(xxU8|BZ=~Y0CoFe(tP1gFIJa-&q(#omC97+_Koqy z_qv29kq}bk3+9{FW^&3XV8Do{7L}x6P`0;x{DrvEI_kkQwK(Hhx)IEQh@oDPlM5r7 z0`CaKD1|_>o}1ts%`f=lSY#YdGBfWhIZN>vL)&Y~o3p1*cIBfZ9n-_<9@FyMSr=D# zg7nT9<$Y&C_;P4}mXghVDrnugptcDVkd)EbC*(YFX|%RGpxFVSndjmRyNit&apH=S zY@fcqb_-txTRKI%@;}TM$W`CVaVW6_@HfUMuwDl0HvF^rdU?FvPGb*oi(rOsd6}^c zBYq{`kdQO@XML`NVM=2S_Fh5)KbxdbGzIE;k^lL4#?~Ky_$eTW!Rb{eE|SO!fGvFT za-iogxT{$_phiB-HJcXWJ_vYZFw5eefqo2)&bR2B6M`aFP*V<*iFaqL(v-9qg zcJx_S`6DnPp;hqcabySK9)ZXz#p{!i%JAz@3rGw&lVTtsY2U4i4SK|Q-}}DWwDI^! zbtiiGW(1Ib_?pCI)?AODt4L#8YM%E~sF27N&bNW|g+Jt+IkXW@+d_SE_ggBJD5qBk zfU6h9GmTc7=|8o7Z5`UMQ)W|&@^oTZWHqEK6`LzTW*M`0Iv1@}nypW5lgO+Y_yy-( zU*zpLX;EpsdbgdSHrksZ`onJVlP8RJAL$r(3TShGX5qEfLdU#;gcC*)wM*H0*!*oA z06FK~`V`(*ef1~!ksV`7)Y{>yEn#1|WIiCxDsS$&m+jsNRR@H3>#a^_sCXKM1Q|hJ zj#8nc?LApo`)^Vi)q6$2w~hW`KaYOY=-;rbKYSLFSFc5zZ&?MUhmh`p9eLrD1?5Q$ zm=o=PA>n3;)@WXqC;0Ga1`p69`tlbifGNsxJ-=NV6Jvc=wi zWExJo?R^yU!hp#Z$$h^4e((F%TEE}(uvUYtOavMjOw2`y8|nPMT$Z}~t;6jw@peEM zOgw_M5aZ07lmu(FBH{q9YD&EWr5t(7*0Y*co}jI#jg%eo)UJKF@k7^OjW(QmD0*ZI zKQ!`eHN+p%uGPCO((KbOVp6HybF!6xPNoaZP0oER85=VCsxEUMf#}m3MhEjlE#m5iQwo+&kR(OCj02awP5K-``$p^eE0zlIAf z&=H%qFbyo!3*&KhoM-KKS-&H3;0Ie&mxLIIOEC7M!B1E~jsv(fm@)Gkjd+BAF@y82 z3zgg5Ty_SE_G_D;0 zT0o`0E?8b;y00AcZO?M*3|;nZ47~+Ef~XbV=q?pp`5+ag#zX@Xa(iIDU_y_UOmEMm z5Fp*Q^nei?l+iae8j|F&-z}vaO+t_@f9}j=07anEqns>X?GWH8LYd_4_z^;d!`p4# zU@(+~*~TOe+k=pi>Le*XKyhPxKYLP#!bsU+mjMn>POL;8dyBBnhaqoq0RG z%x4-EU`8UYk;ZM68l76oyE`#H&RE{E9eh*dPZwd9K})@DUwN=MMq9`iQMEATf1ABn zQR$hV41pSvNZ|zlIC|NGvF-**!^@RZ{tXURTyKl_1=|pz(wxSY8DTEXQyt*aXYijy z@55w%)x}Pj6I@C&`aL8^Hl<#oy>L6U#F&Vt<6`IjZm*&lXFqhXnpYl*=T2jpqr25s20J9fLA?S7nD}mm>z=p zN!0iD!&Ipz)!J;17_eD#*zR##*HJ(N>^3?^HrQOLO%{t6?;z(gdODsGe^~aw5lAyG z;skclE0t@r*@5D9OMH>(DLPV5QXI?#Ed-2mSG2+aZqlS>K%@bF%Jey!&FitomNOLi z2xu*+1$O|<&1dd*F8Zb&P72ftVVV2hcFYE{BCnYRPGj*6Hw5*SG0=CAdoWm`OZkmY z;!&;`vw@~2*EyLgGoo+Ve`Ox;pecF+3v{jCxSemNY;hFiZI-O$WH3EZO5p|I2*6W1 zuj%VZj6DwXxzwnm!*MKg7oW1xdgFc(n_*Q}zMS};w&?Oj zTh`LN1$I`i03Q4FyxT#c9mpkMVd*J~+>thJCjY~5-b%0&t=$Zs*W5^DH)a zg5Bi3LX6%hTx;8%%R1aV2Qe>sm5rWF7RQiXh4@mED)r&4z2n ziazeUqZgLCQwDH@Dg!1~tx|4iNjI1n~QXD}T< zHXB<7s)@^Lur0V)mIaC&Q9J;uL20odauAr!bp1+OO=#VFL73SXHavnh52CbMGxg0& z;yN`aj6Rb;U+TC4b&ZmU-L7q$s6G-xuJb)S*b!dpUq-nQgx*%2=c+bAfAYERF_x5G*SO0Q-ZRq7%s@r;9?F3|)^$H6_iP8AV|Om>(x$-H(Y`OQ z1fmgJ?0#2odF3{8!hq&HQEGOK0}#a!K(^##2OC?Ie|FfkT4Ava_Ro0f-iUO})5Q?a zzE`sF1?6XQ!a3Elv4!r$Nd^p{T-Mzl$T}RI0J{lDrd`M~gGq14^ZmeQzEq z$Oag)P1M7CFcd{^(vTzV&+d-Tf0`2Fb{X#T5u_?RfZHh499FR8v3k8M-n>TbP?LmC z7EMmHf1UkSVD_nSj@L*jJIICLB1Dt5kwzVa+ljyF{ZhUKTbVHE$|;|A z2qY@(^*YdU^-Qkca;rk9nOSLfExTWd?PwxaEy&{43qJ|rc<$&h!Uee3mU{kV=ol&b@U5s5UytltB37@Si9* zpX3uAnH0|h#K>|n0RXmiR)<;4FmCpFk%N7Tx3=TXnpiP<$)jd zVt*BaXAnpy*)2x;6l9jLj_Wk*Gt*ZRV8!!fxkpY6m{;R+gW|@uZRHGR3ji&LUCq&A zf8|crGBa#05z}}?$e_*(hzRsH}5s z3F-->SjpJndg#h-ljy)El%AsdH7|s;#@oA-ql?@b0XDR$Tdp2r)Xh-}Zr)8|e@l3w z?{yS-iPbgx@+B9TsXSGc@Q4m*k&{1Skz}^+H^NrIcz}9hc5hw;g%+Ww%KEFo)@+UF zjF{l^yAmPXzV5wJ3GS=Qf?_#qf;HF=yQk(iC!{<3SX{|-&<9NlOtTQj=vg0ApQ+5f z*~R3;>n_C92^r;70*`uGBh3CUf1&GYZD~f-R*cm@SX&t(J6WTLay6p>6GV@Ewn@EHx&8dv>_H8*8((&gpX0Grhl}5K7}r zo|IL0AFGypyqr^rAc~jDz^Uq>D2b`#aA_{w8fi68?DEEtIWf;4c&^DZv0PRo%#zs$ zT&_oZ6#P`S^q$H5(3tAr%I|ZgABeK-0E18`AZ?jf^g>a&V@2MiNVj32!xBUn*&_{@ zIwQ><8Tj%jc4>e;VXHk8f6S%sbg!hw+_CxI2R#Ba16Vm3>tKieGFQX;CUG2BsS2kY z2jbIsWjxABK~v1tYEFDE;E0S+^x{9K$rxSCW+rUaI@B>knMrI+wG!$eJV4)$_>YC; z#j_w*X$KE!<OMKk9aL_LDt2V^e})B09@%m}i>@(= z$ds;?Kp+c-a$8+jdBrbi_0*zNi#ROtC7-%m1_{}gQVb${>kW2QKE3YFTBbWhF5A12 zwCw@az0cJ|U3T_#7B@goQh*UN1 znQ+rRYr~H5s~uz#fu{?7_=9cy{vz^qU*0sQGkS<9nejW3f6d$oks*i{=}RxP9Q(r( zf_K@+^hpetPe zvJ24ztf1q1f`Jxo$)u?`q>#Hh?7EG&kvj&m|+d$ee% zV2(szp_OPMp=r)-C#n`gTn4))U%un6utB?f(HM+Fn#uAxkcFc%Td;g_kCRqVDdZ-3_>2;F z$bs@=e{zFOKw(p6GqTxJ_g!-8eRNQ4S3y2VNT!53lfVo;$43lts|B12bX&@tqEo*Be&3Gq;Qk5lu^5PSPCXIzv=}^pL8%RkIiyI(7)%zl#+`$%(oydXPsMuh4 zaE_(u&cXor9~9X;eRU%JOtpy_0jg#d9@W`>lpI&43EBM=fGzYCM!IC;aew7J9Cll# znc~c3L>3LT-71;NElfG#``i$dr3rUHe?Z6_f&KMo}Wb7q;oe`V8T zD+BYu%`pgsbs6jg(0(VfQv;c#dCE>_ z=fXuAGI$p$jS1MN9(ZBp9cJ7a}$YOd_Rxg2kS-XhHUStnDK7LvuFK4Oha zXfoCkf(Exae5`Wlb2%jLIcV4PT?~nMcWQRmD|37S$QlAhdtBQ=Bb;Ume=%c#+i#pE zSnL_78L*8&E%T}jXryex&VpE|QAKq09xH?rt~6vV8{7z{A(+If?baKq^{orqWV^J7 zr#21=*){bjTuW`uGX=Hed+{P`6NOAbriCipFG;+vMXIzC!zcvF36hM>(TE><5ekB> zk&QbQvu;-ifKVFY;9Mu+e_mq4^VDrl_6=9*M(Kst|GP?!l$$if1L^=s(CcO|u311HPj-cgb!W~Da|2@`8(8*Puq z+X;fRMf9RDzTQJgt7AS;ExnCWQ?lJVF<$sFsC7yd;-PdlZ{m~6QeH$V|YZQhQ#BSD5(b*E|-qk^PtWF$Z? zfJ-^lS~OMOI~(sk#apW-RSt%{k#$h*yk7`;gmx$e4+GX+Lp$g7O#<0SEzs0$ObNkJ zWuN(;Bi@21e z4~)x9up&15PSdpj^6gzui_^!}4a>+^f0;yot%C>Hx>HZCKIxygA_qvO z+{=;HcC3h2*}QOUX^+x}nK3DQS3gggv zWvOive-&w-dC8zNNC!l15U#L!#ka?}h1FvR&J?~osuyDejhA-Y=E{v`WO$!8Ydaa2 zST2Z9Rr$sTW>V@Om4XnOOmG`rF}m@q>%>%BrX*22J^|1fRHSJ{_tN*+IP&0R)sDnq zBO;(rOWA^JK^D({<4X+^mn>9(f~lm-YG*Lte^<5IX5StSnC)Tx$~1p*3M?yTlS~L9 zDrUg2u)P$%)gZkfNvCwSZ3!eyE)&Q$-lX9-a=9sZ!#2*VoSL9~0o6g9&f;wZh37Oj zEoN;3E+RK8L%IeRdAZiPj6>bCFJBB%hd_0#uF5LlWFlJVk{UXC<%MaN2nGoET2McQ ze^vyi{n~dT9YyD&_jPf2jS-UbY)y@119`W)>Y|m(t5&ZLO0<9iUF?HX8Nv6Z6^t}} zvidKEj>T2Y=<~E&GUM>kZe7Q?r%1V44&>cqZ$QFLX*(5;*0pS1@odH z;HXN%JBOff2reM(17J2}6-V;pby%6%f9E90PX>8+1ARb%hjYYqUacvC=XHpT!BLH! zSVYI|VvWQT;|g)}g~#Fg)&UQ_TvtljgEQF%+8FrFIBTZ4I0^(mi5j%axv?q0HRQcW zOXo_ySV45K9aib#qhm7L2T>sb$pkLEL!*#J#BC>vqL`9oEpH$W2+6LQ+cf4~e^}2q zL`?L$iK9j`(z(3RRT*PtP-d|?nr5?3_BG$~XeRq}lS-JbCLF2NZ@rMn?aI&>^#G(8 zJ`%Jhy3>@OV)O<(gZ>nb9!m3P@@6req8HIHUl_SSzgc~}jXU0xu2ZAP1w9x^8nrg1btf7tQBdl~9%G|!CE@*(NG5k4ERY4E;2Gf<)B(HPY5u`#YJ@(zFvgg--kG1wQ*Jw^j^AD71>))v4Dro*5M(w4EA3b$@&@)YUy zG{UHheTmcyI2=Cmoc%WTNOxd`Mq>yB%~K}p4?MNr1aQs+3)oUl1xri0f7`dM6|Q&6 zFoHH8M%_7ctXL`)_Rq|xK~&H-#i&NroY5{|EN%kz)>5H8N^#D4xs7zvnJGz{i?G5t z1vI;PlH?f;ihPSnOc0aqh_l#&)n3#N2rE9< zb5flkj8LSKQmCFtzc~}jEooYWbjI~**?`(klTQBy@Ze?@Cy%-myXhX)*tAY?!-vBQN(f*bGJWr$Z&;439kcUwCC;oCOf zfD@8>WNUl_OsPAf0P1vN8H)>MU@lJiucah7hZJbq>V>Ir}LWBc=uF#VHm-&+l10=G2?X0p;Pa0tRu3z-ncUMHJ>+;dA--{2rG!q6k-MG$&M27;_59q(QnOE$zHCGm}3cic={le-+u3H8!NQk*w}>@nL=Tn(pf{ zqN};~?TT=A8@xSpR)nyYIF&oQ+&dAjc6f9cExpOSte2g7Xr$|$No6pHBYu=P*LYtf zJ~+^e@;mhbC!6fp?M-ogWhs;J0vYqFqYB&B%mKz4d*(SA#s&*OY#L)<1!D2F z9ONQmfA*jzwz@dGvo@e+rjxO&I`O=Tr!{ ze>okWHxFM}`Zm`rHLq(2E|z*>kl||_AtR{5)1i+nfrT|QHL*K!1S?VH5oVfX@W$1n z)%%XC@`$Rxq@5JD_=U3xCI8AZkD7>}Ye{z?p4dr_BGy2@1ebR#z+n8MS8CODmNCa! z6YXDLgVj*s>xjRpTjo$bi*fe@<_*g~f8AIoHn6eBoGLFo%O!Gywc|EotgjUpTr)zs7-C*fSptEC58$x>JYwU~~JplZnEn}a?uyr2W zV~n)gWBqOs)aI2*H#5V6l&79uZf-772sJh@-3q%}q(%*U;NeA9**dMW8gY4GOjda@ z+l0Sta&k66afhq&l$N2SWnCAvnNdpS?EyBuQdqkxC$=fAK8fR_k-D z(rW5G56X1MeWD;1@<{w_OqH|FmJGK@ss?Ji_~6PV0H>&`oA#!6#DU_9WpbOkcBd0n zQ%0dH?Gf>ME`S*#dSaeEam-OI&L;{ZjIISD6(^seq?IX)!e~I`LOQZ8BY+kgk*l%A zS(j>Y;!&4+yeo}2#^NJpe}G~ph#v-0M)^HOuIn%%4ZUA&ly61)8Ub^oR%SwI5_Y~e z^?Fn+HG|IOQgS*?Cd!D&`?SK+$*Ch)BOZU(V|E#^7lA@?9%iKQh`r4KLRYyu$4tlE z0HgVgP8T`REjcXU>cv7f(W4nH(qcV=x@mEY%}hoTe0U|`-9#H)e_jKbbRJzI1-zru zM$TzdEtzuPKkaP#M>Bh&zOmpovj3=C8AoenH8N~XlZJ~Ge6aF4)3!Ge{u*1pR(;ycdbzG24C~ZJ?qn;@VqWfhM9rB;Gh znPWGg=utsdr>$`OD5dW)Z}*EgJs^zDjIp_+N9!)9W9=>MwhQ1=d0dI84Q4ouSm~}N zMvlW;2dO??e@5kgw0CacFqQ#y-jR6@4mpI}2kHuL?`e1XlpSIzjDlSmSSkbET=Wj) zs+ZZxG1k&G9#L|ARM~TJ=3*q8gEGOQj2`Sm(rGaK3qF*m*F=9CvnKkq4MQ3%w!*HWmT&9xB$^gWf~>ycY# zd<%XADXUHnU0lMGVJ8}Psmk-toAr#^itWtF2-KJj;&kvxrC4l?omdijaQi#-Ay|7R znRQpPe>1L~Hz{hdo$OT9-YH$hkYe&Ui9etdDHnreX;PhnE=Pf~oma!mEKh9g!c)=u z4QZ0SnmFR_nw{~)uxoxP&AccePpYh&+P#Ej!FaKD%_hR&Lfd_)$<-XSERZjS04J(C z-d>YW7=GKx?y-iJ>(f6R_V#ygaR8-U+IDze`M{hpwt&d6y(3F_la6<*Z$zVXTa_;tMZ&PU(*`45-P{N9hef3lC_ zy`Oyjoe#hB(aZN=zxntVKl=C=e<9xc4Ih5I?bDCneD;Gs_viTDyKmyen|QV3z2ERh zK7RA_YW4{n@K6&}^tM`8V&-vxQ^rZ%{p#aC^6I^JK79G=f7?I%ORwX-ANhm7|M&dtdq2KEe&sJeefjaLPttoo z;qf|NdA!;$A1|HV^|G_uZlfLNC1Z=9-Es6#x!kO)6`eJw-2%9Bl5oE-rRaoE;bFP} z2qHCOSLk>R`p#_ogBRo(TZyFU;B%3RY#N5<-VguQI~@;^;_$|?m)fKndz3)1$v~n1P z_cWl)qnsRCM_L37x(?-_e~cJ_LjoJ9OB6j1|IRyifVhJKccl+rR^FUdvJ;4+@l>)c z=>0yKP^iq{7!T_j%H9wOo}P&){Nz0l$GMIfy|ECV8?Nn~NqX^23#HOQ(7mVZxor=5 z_+!7}gLmHh$=4BYe)ktImJfc-dq4TbtLHC@PmRC%Tc7@4e*QoFfBNK^R7_u0YRel(+hCQC=vylh9LW9ibnm>7ajvwBWpPvs zkw_4UDq0b>((Cmv;KyjrL{*kNxkEkoZ~C)4RQl}3^y8oY((CwSzj^uk)2Fwj=l|C_oA-X=@ozo;)dxRvFUtz1IZNjlP2R6hewQHC$rKTh zDJ6O^$`9joO8bg4q?hHq++!kG^w?&B_NYqzF7YKx!aM~|e^YH*(ajFd0H-;O?L3s% z!C$qP<#T^!j=hokKugpLDuJ z;bUJPZRf~eqnWj?+CKJy3n#S8r>xc}z#BKH@Xe&x!1=evLF z?YTHVd+ZZb!%47CW3Pgt5m>7pRo67~>}vh=O(t#)e_y#2hWfVvGAKU6%q(>k6oe4a zXz~tTSt3UpBM3h&!t0!09bANW< za~R>ut1q(T7hkyWe(dwV^8;RYe9bOQR(7_1a3+#2#65moasq%&y*zU+UL})`$E19X zMmv#le;(~>N=IuDGFcVnekee~Q)}z=(T#OmLOm;?(W%tPo;k-}jNu*)c?JNpsQ)=qHA37qaNX<`u`1koKNbHmCGtl)oVSBIF z?7hVOc%C^q&fz)Wk=ijxbEzb-Nepl5Ec4WpDHg1q>#8M~*$ck6UJqCxQQiTF#?A%I zf28VXdjMbd@E_dYNUap0$0>*8n`C9916&WXI@~Z^JwDiDCZ>kf*WA;9L#<5RoMoBb)}{_) zt(|tC5(r3}Nl_j@{E-lZ9PnVhV;4Ajf4strN7~HP6r?_5R9bd?h+YXh^xE?oy79zP zKpgwwKjNoYYcyIiHg}E5S==mnqSD3+s-v%F%8*AkA_jCp6A>L&W{6s}oQflI1@6vD zP;^Jqo00{1Vv=RIeAHKkIMN%mot_C0v~wQ*<9j^aup8!tFt*DwFTtv(C>#RNe+n)z z`SD@yKpI&#*aa^x6qfX6G_h*#LN~t{dlR?>#fA;X7zH>L2u{ER1nb1ag?2~2cR;#hHyoQUkT0Uv0 zSw5G<;w>$T1a1M8JleqQH)mbfoU{kQ(VX%)yuZ`b6@@G*^>hlV{JKp?tNQSt-JjwR zft?rpTHsAZ%rI&JHmqHCx@cQ;sflcp%WPaOE8*IV4G?a62h@)u%?C~Lf8rYp4HBXk7pgF=;W-(?Z%`%@oGG99-dTO~?Ei8LEfn7VJa| zTWCT=4&i&|E&buYyq^Vc8RcY(%Oq<`1kNpQi48|Ob zOV@e$ulXsobd&i}BlJZ02W zyW}yr7Pv$m^Iatje_4z^b`B7;Q=+<6wn_T%-`u-aL-YWoqa7yjG#-@E3A*<*0Ezc# z5IwM)8K@it9&{@G)K!5W@y{L9;offf7(U2EHkU0HJ>R+4Ar0ipo!c%DknMOX^6=mC zQ^29zTV{d~%Hk*!Bw*^zqh;kirh?O@of&1&!3XZPp|%3zf7lpKVsxW@cMh6CR?wzZ zns?A~Y}zGK!6DZ;4bibi%}oS6Km2$66nQBfwpM$}B`qS$ePA}=jihglrbTi`wQg%H zHr0jXWo@W9J;UV1K-H^OD!-9@q%wQO-8Z+G4*?@Wd3bicY)xIQl-_E$+8+M<`%Enj z?H+O)*|DS;f0?FGun{hIokHfQ?nE6G4QMlDwmU7!5KIBL2RYrj&85K>4I|Thlw>EkMe4-^ zK^o8KM)yUOeeGEf|I;0RXFs^b0oCNCUo}BFTj>NA6$c}c1j0z~_oN}TL<%?!J z0Gjt9e(d3YxzAKIo*6*e87p)2V}v?6&1qu;e{2h*z)G`k00m_Qd+feur6ogZbj>_? zcRGaV+hQ%xSaw6qDi|;xhh>Y`YT|LFeJNsNf?`)*w&Xs+Z ze>NWew|5?0?Qv!iG@-hE$y5TgePhKLJ5p&miC))HAkxW0E?um|0HBJV5^SpW*%~ma z(oQ%5(zE;F+=2W+;l7aF%>DG-3Z()saNHmM_s6H1tko>J<(MUO12SyLQh?G%uIavA zcg;i*XoFa3*VyNIowC^-(taGZ@V*Yqf7G=KK=@l#?s1ua8{5UeGq8sAjd^*^v)X$2 zKkjFt^9Va%o3qvhfRSeH!E2=%8_3;Z(@(D%wQEpxUo1NBxRWxkvhhBbK>}j+l)bIC zo>v&L# zZ1g!NbW|)n6bkoJTjc6F7wNWPUZp!*h6WXV8aNO{6>BC~^&8^r)`O4qs7q=u|{)J}zwk;F%sOOYheQD#&bM4c5$WUQ9)hWji=NWIM+~F<*jWc%8 z9YW#BxtPjm8tj8eZ|p(<^a>?$;;{WPJRA+{Ea{J)8FbZ(u@49pZZoV z_jmf-Tf<*HOUy6-TD2bZC#l@DI&Jz=QTQs^ok=h^HS+&B@Vb&kg8~AXneo^<9!2P{ z9`MvN@gBslzweHQe9Q->NUhi~6mf`j-Ck zHwa+-@h@Gzd)f!$1DPJKwY9 z8EGPwh(tAG<7(a4O}(4euBBygM3l?t>1S^ZuyeF~&*czFf9rt15+5E#ha_1yaI(}@ zg*%}yGaYA7vV(J_Ud%JirwjPmPp-e`PBeY>Zt$h&JSY?Z0gP?_?z{<*wV2gnV*iLfJ!Q=57*r_iCOpwMIYxcDG-_hI_8pnIZb$3$m z0j3F)1bJ9(e@S-}Qi|&NuxoOyEm4Vl`d0GH`Lecx=$5NmabZ5Css6Y!0|)7 z7LcNNAY7DjK`CV2wNMw#v#%TsM%yeNBf87{h&*WzD@K?OcS#90j!vq*J zd7EJZgqalcLnjsr`&^M>&V4K72@=DqwePGxheDJEi%Q?38}0nqXpD1}d!*e+b88TD+HbJc)^QDlivEw!3L%1XK3z{Pwj_DxEgV!(YWuk!D_C84j*$>5>~; zP?y$O8B7LbM>6@?+c^M8Shhe0qfJSr0IW&dZs=A@jn;(0b;BY$t>ltNV;WMl2vS4U z>421HXX4f${_1xxW{LMqj2dlVFp5HdG9$T`e=>UEc^`%7@yMi+HZ}4M>enPk41YB3 zO@y-`5~_A=uv zrfj(r9;QbhXnR@}@TST3nHlyMkcD#C?L*Hvog0Qo9|%weYpaNh8|MA;%+y-17&>_x ze{>o3;jg{F5spz4S8>%|5>te+*0GXRR!xfnGZQ4YrpH_E4DI_yXAEzGd2#eqDX-}$ zy(~F*l2S@8Lr?c~SP2)0<~g3(z4^XK`Q7NV)IbbCPLcON-Hvg<@MFpSfV% z8mtu;q%v5JK(jYcPP_B(=)Nr-P;C0}xAIe*6LXFVQUON* zB2IvW6Dlv0wOgQV3V>cl0FkPnN!-5FTXJV0>()qTrFeNNGkE1!3er7L{7jqVadQEQpJp7&SKJr9in+%@luo}vwNSyduX0D2| zJaK|*t+P=ZHuTb`hu~30pObRpO@KsR4AnN2R0)O~6z289QWsC4)Emp^eIjkfcTscF zhrjFIJ1sF)uc?n3%Nr|@Jjkak(MV-*rYn4_@Pw=ELHd#136qeOkz&-@7Ur~Dn)!F9xpEN?(*gkK!>im0IOucsg?l=AkX0We%}`IUX$BfSd+&E7ZR^_)U%1Hwb=6CqqRI-|Q~OzErHx8KZA+Ad zqT#67M%P_iMGntbC^3SsoU!Dt&2p;%o5b15;qvsme;h=w*?CKc@+L z!{G)mm@Ev){9HtqKK%Xs6pnYLWe7AKmO3nY=Z#vJXfALvMVrF2!Y-T8?*P(u5~qh& zIF83se-mr*MHhVIgGJO;ddsN8;pBj>Ss>dB2h*Nx^;}tlJ^Tar-nr5dOp42Q-dA#E zb3wrbE4+C6a7s`dpON{FbPxa|MLlQhG%s@w;~Gx0YSu}%t247jfCpk%A#r6-JKC-R z1dya=-+Xi0!#{YxBPqwYFG&z7Q)53B8tQ0KfBPI-vk$!Hr7dzefTMQBAXTDsN}h_D zlTM^=;#urPR!XB)&f=nTG{5b=1qSp~xxiQD&dSC5@DJVJ2++5QOnxEI!^V{h#DNm6 zs}j2A=Jp9A=B*4psH+u4NYU*00i@re%w#$j|E(XisusH8e_QX!_42f{zu z+DkM+&YEs*To(e25@qECKl3Ei(uY@Vl6tGBhkxYVM}0$R0%8mWNGn26-mRb!wMs%g z&4B|nu_jl;?}1Z^pkAS@j5}rL-J~Wkom7$S!+<_530sE>@sRvqDbP#)4;Qo zhkxSno9a!LaX61vXEV?SK&|`a#t-r!Ssi>Qrad}cgFT4ghP9TMT9LKOLMT#B<1FSp zZMXWq=Eg!KFOsySyYC@PGfFcdf0h&v|K$CRFl}$Oj+3F%QnRfHCcrxrkHAF6g(Mc1 ztvA)6pp*dtGKYszf-0`8F`an_uC2Lvbs!bXl|3Qo$-YNPh*DtTayJegXFU84hF4}bE(ue(tQxh!OqAfmw?F= z2kIS`3()ue^s;;A=>O-J-EaK(b-emCK8%mz(>K5L+12-(;ul|k{N~em^Zp-w`TE;0 zUp>7BpZl}?;x+i=w>I{oj4xhV++@M5UXWm#y)DRYHhgr+t71v$)I>@|jYcXGyV%gQ9I#Vv7ZST4{^@t$ zhFZcu^X}VFOZaEseH#h^|J=J@Nf3AoT18LpG0*+ueBXP_ueaAPzap|wSJ%ZCeY2}h zr1Sx`mRVYF$l3&Uf1}m0BMU$JkYA)1=|)gMTb1FfrIR+sK9$D9^{TdeswZ2IPLZ)19Dif7 zcJH)CoHiG0?y}P;bwtCfYyu0katEvnf1u4?7UFBN6yu(Tf2z+SwnE#}U+XjfIA0k7 z_$}Y_JN`p|=&OIb89CMLwgI(WOvBzBUkWy`wmTY)OT=u+Rv2*B(ucD3pknNqvrK^o z9l7&NVCmo}&PJ-WGU)|Ev?lK`^peRnuE%MoJKa0<{e|vIPtK@1r#W+daUATR5cuch&oXYer5Kc-fXXy~PHIP1>WNQd&R~WYq zIT|;p$`OGHyaA&gB}Za>z;IPKS4zzEC658{`l1|#H;&E z{?dZ~nLp64diUs0-#z-<_y!zpc&+YZGos^9=e!e?f40LZg{*R^xuY|vhx*C)ieYDC z5Zt>ViSmWcK60~jPAjO~JmOruN}0nRR}fyvKPvp8T#mziVD|zCNq`2|26mVl8~GPC^0=3$r=k zE5^6cWiDJ0D3;G5PlM?@bmZ06NOMPB!{<7^e+PYsB`1oHp>>zJtXuTMZ36(CKxDsh z;V2oj_ZkUsj$rc?jn9AIzv*Xw`W{xk^;7vp{`%1J^`YelJ+$mWP0&M%O@m%3O3EZeF7$*+$)??tTy3k*k9sXfpf35;gI#I>qj}M02YH zN&EGQu79W3&U4S5zVE%^o1gf%-~aTD?RbCLCtn)ZKlexZ_3Pr-uZur~*Tv^Ptor~z{rEE*(zF^l( zCagp*Bap))WnEfRIy)UJsh8wYJ5Sx-ZUvbN(SJCCm!-gBDHZxrcHICm%g$}~et3JE zXP&1IhqwRU@Z=Ei+@If-3+&e~uz&n7u%M+QL6OIJAa-VMsL3ieOKTfHy==j^dCv86 z&3|zzt05#*sS);B*QV+QA`=c|G|h>esvvL$YArK{wy}owO7W9AdzZd^KDlzE|KMa5W^`rQY7n4up)u&&I-#qu{`4!h; zeo}w<;W#7m$a}dJEo0}wv^zTwU9*oy=dBwd%zr8# z5%5^YqRNt|Aq96-&{dPEiHwg2pLH9{%~;e8v^OT2TS>-7>}cm|AwCd}Z{+ zfK2J$^og=Hz!7C8o_z_Vx93)E`J6@}sz#@Ow6^YbLI(QeHW~nlSvUB~EOb4+9;h{G zKK!wFzcRq^|FN0${Vuex>MEtVsei|mmZ)h=(dlXLyaW_O9o?y&n`<4uunoJ4uBxZ! z(pRQ$c4~#D(&0GD-Oag2LG74l$?nlE>$^A=-c~BOfL&*8b=CE>H1gb(*eB18-}1QT zc>g1N{r)H4c}->H>DTqSKfo^?K+}u%qU0|eKtKB%Klm56=Mi8>Im4jR7=OIe`&xFS z7Golv89qO}GuKmQb5~$9IgLw6)Varj45IKxgR_iD!%+fPkP? z!LRKW5C6iukKl2GqsFHkD`X3vVwYJ`*K*|=og=8WQ!0*b*&;f3qYB&d&U&Q|*>-IK z+vaw{=-Fb==#Ypi-YO_DdVeLk)7Cg@C$+wdJ^YJ5%rER`4^iLw^jf6O7C>@R>2oJp zrIoN|Tcs5rrPdOa?Kt8Eq^t96(*8T!=z(>-L;F5+?=s5rT@!qvoC9unl#VbOh!F@O zC=c!lwf)nh-E*VFpL`Afj8`AO`N%$e`A6fsH#N6U?dezXxj)1&J%2g%$s3&hFy7$a z28zqS^j5U2|K&@l7`x3Ty5mUCQ6ScxmZDr!0RI_n)j^cNGiXjvFXcX~z=&UB*?sj= zbG|b_*5_rW16D4T<$xEvuACSO_K`>B&+AqAHxFOs;a_?8D;JJG(CuJN9b40E(PCPu z)Kp^!KVS`+$8l+_fq(Z$r20IYo9d|<{Y<#=>9v|VsepElr%~F0oq+UX*N$(QitZQ~ zu#;sam=j#i27&U)?cljB3r{h>fB2L4f5|@j@agyexj(fpJ&N(Gz4+pz__M$9gWmzT z3T1X38EsFsj=e5>o95B8;%|Y4H>R9~(&Sj~3q;?ku&L^1oqy8y>KQ0u>oXnm#Zxfv zlsm65XOFz@4S`>K85{0Vs^&e^lAZN0Ahs?;s=DtV-Aqs+8>udQK-07xt;r_-RBt)=~18Oy`J_CtMl z{_b`4O=j`a)-DcalByr%2Lnf#Y$)-(CD~K=mOjeJU zVl|bgUAyO|Lp^ye{N`7$KYIW5%l+;5KeAUZPkaSC_nAMxFI{)@$#pk>NVAn^XPEu# zZ^LZmsei5DnSY!om+Noia{cnjX1#p%6&sBShrSx$hOsirusM2t$3`&>!cMp3PI<c6sXLMIfrLIOx0wkbO z?-4S0H#2w7A9DdSb2DaSk_;*sY*h*Ut2EE^JkRqy&-1JoVeOk_k>}n_sXK#tfS zs^s3gt5x?!Rp%nsOqp}QCvz+hDYx7Kpk&WFz`7$fQNac_s2n(yklSp6xU3WV96vkY z;3-!$beRRY|2~*E(HwcL9auRv9{#2)q?iuEZ>zh{I<%d8wh3P7!~@e2zqZYf&wre! zVY;~bWSspnPKPIG1g|ltSD#lFoOrCtRSk$Gh@wt#4QgC|_BzOJqs%?Vppts{o3C@! z!JiC3#OI2{ErC-UWcy>n!;$ESe(G6Jwa^s2Dwgcpfox(&a_bsmw2jeR2RalzUWLf& z2qsTxNg;1;Y>|pNc^9Il5j$oNe}BsrUL6+30gmdtQjfFTyYM#e=g^`h8)>$p`PcmCS4}a^`XKoFZ zhA#{S50~;0iqK|1xC7wlSrLogUDgZ+O)Xz;cvgbk!)+Zj&n!> zrQE0D^eJa*q<5tWb%b_nZGZ3_LNU0V3HUL{vkbjmx%8Ge_Yu~G!5)y;*u~(~StA2B z60^;Q+9B+43_`X|)x+O$eIs?TQvt$-0Ix}f%L%B1fKK7w)>@*4_>L zT?NZ&@y7;;?NxR{MXllE6lS0;JNe2-GA!w^#0j$&tohnAH+mYohQ_yb~f@-C< zo~}4gObB7BBy{9S7^s0h>L3gn;%3*Bk`hY| zq$6Td0%o<_7|h_!ZhuzZf@^6kbeTYYpOdeGaE8k_w(Uc=bCC$TQb{pRUoM_U5e zZb!y@uAL8m&x;@b+4p^0h_?OEt`Q9*AC@ROjn3(mUK3a7F@H{0!pDT}%5Lb18QOv= zh{iS?`K@v8rK>e1G}OUhuv5p6Y#BjwAQX1YGky1r#BuJ`^;VO6Zve^jf`&gm8w23i1(N$f#@! z+(6kh7e}N+HGfzsbpY{9ImZ|GZUmewRZisZb2N1Ei)wSW3f#;r+T)*2uTmP_D56P8OH2U;(yR>qUo|BX*}p^E}KC#HJf?M z;#={~y|KnOJMFi=`oiA*tTc=5&Sc=MUPi=RAmU0Mct`#1}E88~$-xAEy0vF*4cqP)h%T+=y3&!WFEH)CusdwLnc{sOJEEnFFM?L)^7 zXCy%Zg79{o6&s^y&#GQImO^O-DE6S5AXeNS0QdelHwVBk{U(XmY0Zkks+foNNNCcs zQ!A)Zr-t{?f=?1ikR)y0Q4Sl(En!u=cz+Ar4P)!-0iiU{JygW{RdGXXBRvPPA8V)Y zl}(4kWYNCq3xDo`|Ds(ffAq(@VGaN8&+RI|;P3zVH^1`|pOp5uwh)^v}aDQ7c69DxObD+Vip-eC>5 zZ_S~nSshwI+UdfTco}__W*&K7QqpH5+O(GVo(*O)!LemrMx2rc22_ zkg1aH-FIKrcb%coNId)l7i*5rjAcUvrc^P4&g@j4f_|D-+fleWj4a?_SvNOtOOV+Q zt73^l!^j6mC>ZW@rhkGb+8XAlTOmk`v=&Gt7>qNockK%I%31T_AAIC=HVju;C>PAo znyph9__)S<0d~sOgSU6+k6a(`6&SWek4hZl1Kbg?z#8aGHe#;>`DPyE>{&?|bak$i zL1fCDTldU8nf>7(dgSgUCMV+<^W^Bf9N=>m*g9>aBLj*UqJJB>;UPPqoP;*!A$#a{ z-qwVs2zYSN2(zAbe9H>!2Cv5s?|tp0t;7KE!r!lWAk-iJ;cIvHwu%$(v{aK;ZS4WK zBgDr%>#Vc$aQAb%dC6{jz(CVuZPJ0Z73vFr_(v}^2xz02w@EpVsWMMx^fQ^4 zc^+ucLfSm5&cfZ*j+l_nsemzuiA~Z0nzLY6#hRtaR)5o=E@H|)4LDzFm~uM=-Q>h4 z=gb-F;U9bP<3Ii0!9^>03e&*@L#e*OsRDsa7M#5$LR{l?6Y-+KHC7HF1#4h(h@0@{ z@VppSoQ_SQ=fuVh&L_+A2$>uwHeo8fiD1xLZAFV)c?PY8qZkGw_f0L^P@vUpqjTgf z)>g1&gMUyIEPQx&lpkl|>H%i#8P}w;9j=PKswkW3K!PRUbsbaoq@L|;adJ%E(6a;& zkZ$|wfB7eG-hA?DzWn0tn|E*gt9pVey7THiqk8Y{6@N$de*NNuYiWT5*`pyi(A#bz zC#MmO<)xNJLuew@L|3yoJT!Fd;hJGl?&DlPE`LACZ3wWWw%S1Ak<0{+3Tk8ID~c3% zjA9L_@Nmhi$MnOP%|iYuxC$Qs`j1Qni|2G5+QVT> ztY%>{kwjAi-ou&#_H8GJ6@2T2@+W5NfM8E3aTmjS%5X!j5m~-YWrHVRZ8*KigCyE= zh<{pjk~mKE1x)GOw-vEFVi0UxHp&e(tQj!$xQk7s_Y|eBbjY-n>To}sE(WJgu~-u{ z#&u~~D6Xmt;u6vY0}ZUV#&B7-(&M9rjw!Lgx9m(1di-)|8@$bLzxpgce`omCp7dMq zyq3>dar>(qD{g-;b%XFGJR>R)*GBCEK!1GG1Qm}&x=fx|G%9k~s1`H$qj@fC)$BHQ zA$Zv)YUm@=d&mrTc7%K9Sf}+iAO6WpoJ8p99axRYGRMLIbvwD? zkHHIaC4r!=LvlBJznYg>$oIt^cz=|g9dio!w>Ij`ZiqYSbP%1jd79=zR}Y)58^uQJ zrs8M~XMOmmJ_@1#(xnM(Z6_Z@6E>9-wq$rZBzOG+L-Ux&CHvlUZ}k<6iIS~1lf0x? z1Hl4wfQ#JwA-MM!SZ<`#WV0uFjMA;BCNiCMcU_6XaEYjD+II)_-e3=fgf$ zVt3U4I#&$5Hm7%_(#!&qy3vjHA3e&U#oY4w_C|zJmfBA4AAK zhLHV=A!KJ-O@}wHD{~8Py&b5iRk(2@0YEo{I*{;Eq}%r-w2>sRpZSV>mop~J{5rbs zJ=hPNoI{m)&CssSlGVu1=!ihjsE(9Qx*hq7^r~33;XFDB9o>zJ(SK?}QQkU)u_-G@ zhj?-|vC}qXt8HuoIH#1G$^1;Lz<1`79(VeDAuot^eq= z*Pp-s?DbPu;=PycSxL&ek)*5-sHFPF*5et1#?{zTacJRM&!MHQ&&XN<@F`jwG7$+> zaVe%#RjYs9)#jenDC*0HI5;VgkVxwEe2X0sw2ZGmY2@=(BGfJBqL<*a|W6X_@B zp8KxbGeTXu5$e*fUM0Q%{nl4a?!eJQBcCp^n)Hxi){q~!+L<|8A1#+bu+yY?i6h;5 zB>U*7J(-6~3M{v%E@wsT8nTANJ1lw``WuW@jzo&RvRdzPlz(pn0J;pp#Tu={bVec? z9FjREDwtiz$IvzcY859E6J%&p5E7ZT=`0POpFC_2*Aw!SB6d&t@vpO{U@pD7Ncmu~uJ1?c_pIty7zZcCi@TKm|`# z^stgPAWf=sR)1!>9UsznuF);v2=17b!tcVottQ++ts}rhk=f+z%aNC5<+ZFuWgm8H zLAZCf;g{a6e`H_0e);K}PoDS@?!Ab=#&*!Xi=T&o=6euM^lq?>fRtz{X!QES}@%?BmqYvhGsEsMVx?` ziCSE`rX{F$SJ6^xgLQCrycMY+Rx5>utl3&k8}dH;?6CQXslZrc?xPGIFKEuvZeE`F$7t% zqZw~xrn@ujo*a164z!?SSMIsOHpGo7oxFF1LueWjvc@{xf^v^KhX*(wqvdVXo*-l~ zduMb!Vy_sqm-?_p*h%gz?t4*YMFBUIGdj{`!y)SF5MOF5GKMxzJrQSTku*B(!#foE z*?&oaaH9!>64HHSD$DJb`+wn|e)nF`Ul*C{d+7csIx9TRq*du{AW6uP z`?TS5+=M~II(sw;ZwFRr8;u9T?GR2qOuZueqTV>W9OLeogiIc(jcrt|iXKj$-K+|Xrk@!(qW|8qWWfq+kN6gWoi(0k@;C~Zi z$A~Z-u#yZbl;(mcT?cPiGj5bs0Ts{6ZAm*j=XN`rQjtSEX0sv7PgS$tnINhkEcX4=67DoUn7w)q~}~MY%N<|1RxE9#4hr<(q>wmNKjquy>FyV_kV*ApAZ-~ zndXHTR)m18h!`%kVSMH3c91jS&Q9H2 zeX8zGXH|Aj)6O^rq$hXIoPTr<64BS%%OC!QE1VDMxiw$|NS4;uyrO9&+ZDa%ovb^) zXwqshni)0lXF?Ux+kMQQZGl)1f9V_w^SB%y8-{`z1&c3A0I9adsDZpWtmbUZbMeE! zcxn6W4BPM=0c6l7w~4pgOo7l)FI%^^m`0-^5b%nP!c(*_25hgKj~B;1&a3_sGi`E3vDD zEvnsy<}a(+hKSSZMuqTI+rF(qm=C*AE@af|l?9s_ z1zR*yQv2*c>)=L|2j&hq#3n*&+=nG7HuUV?c`iim-s|>kh@9Sp$o_{@=}tyXKhwPW=Szx6jS1;x*US@72{ zfBK}wdGDorrqpl!+X-L4{qtY^>ZSf!=ZqoO_`0F)^na;p)gZ4bUVHPZ2}wzI_?2d$ zIEdY~_ngPpVQ9J#G)c4_>JW07dkf)Rf@Ve_ehWhqgn2Z8H^gXe3p-x=@GqeR8nJmJ zLUtsWG7a&sZPd^sIdPLvUPPo50oMx+%4xX9A>BZSn@Aa=ucHrFPC%%L7xhZTmd>@u|SLdWcJ5O$`het&pgFNWSy&9tHxSG8^8`|K%<@Xlgu zlCbjiUaL-Sq(jWHTkw4L!2f?U!QXogzx^cs$)9Hr%d7USNAZt;{hJT&1#qJ9YH!EM zVKGG494ZrsaxIS`q4}KN29MI%sO=lW+=$Ee(i8aKoI9n~7UfB;g{B^)P|(DYdlBWJ zK!3h^R!Ed>Sxp;6=(j1N_iifw(qiQIE|~HkynAV1{^95G@+WWJ{OrkF;oj?c*TL5Z zP)&X;Za)^cAB)=$v$$w1Re{qXFGgz8)KQ(_HJQGZ$2G%iHl0_l**C~CkwA?s z$O%%x5a??TA{`u~c2hf2xvUw{fsPrG(|-rVfbIk7!M>rLS~HqH$b(W`I9N5%mHzPrA*n3_=p^+3L($w0~x; zwr4+Vlsn-qZ3}UEouAww?ko-XrDwxm@vR%gPc1)rPA_-g)%c#HUWi}-kp z_;`!>b>1Q{v^%5EG&Sr?N|pfb7f^Ur2Ph0i%QhFtiUdS0TOwu`xT?icgQcxrbM``v z0U#0y#k%m|DsEb3D-D!78Q#YnQ-4+;ZLD=}qht0!gL{OO1~4>>0i!_P%D{i<@Lplb zm4{smhyy#s%VpMFVzN~yML*~v4`1Im1U$yUE93Fr1t6v=U9+9>epAkGK=YMtdCJh$H zZxr;g2^YLk^fn_0aw3%^j~xLS8vKL-3hJSW8TM%yjoQ!=2$dKu$u%T(jX{PGpexv( z&+PqnKz{F!^E?mqx8LTmc=ycVGPmzC;B|ozoTZqjVi;^|j&)&%L$h{BZ`4;40IpL; z^ERe$n!Q`u&cy@sd!p=^w14;E2af5eo}NC1M}dWvN^ANB*x^IoZ>Wz~;LG*;*aQPq z0r?CFiuXwiL{0NAJ0sNTboGu7%rXz_q?*ItWu$V=xS;N~a;3pJtPCK&^>fGzwX#XI6!; zRx37eE==QinXg>RdViul{A*W)>Ih-!c=dn{=!jA4&Rdvjl@{K0a4-_cdTImW>=5E#0_j)TJC&W*_J4>QYY@P_t>f8*ji59T;{pK8yvITt}gEn`r!mO2|Fj0cDYwdQ>I;jX*(dqZ z-hT4Tv9o>ky?+}Gb^y~wrnW7>!s7kZtG5dBWx$P)h!4-}=mV^H>_u&nkM38j(SZ@R z?NxD+CL#*V>dupVunV$6Kr8h?JYY6F>HX_t=TZYawD!%plZ3DW^`zRL|+2xz%;Iiq0C4#phynqJJf0#%_!lrPH#hVbir5fPZ*t zi*dz+J^Y(5e*C-d-LQRB5J0;R@@-sYAh)K-2k}C(MON+(WXT25gavDzned%9#?~-m zz}E$Otq48?fcSnI;OQ+IqqyB&Ah(iau33AH&BO3ITTe)&cV6S$*1jI=k|e04U?>VS$*L4#wh>}|tFT%$OF*3rOKhyk`h?F11j%9ifX zdvaxr3C@`Soe63&l!w|tS(!VJS6`))i0jtc*;h~eXK%LKWSm%M!#KdEqvygUZO-0t zk(t(LFLvZW@F_I{HAjI_GU=tG&%n18!h?*wm48YoWy~sVd+}}_TM$~bp-xLU6qvy> zZHH6l?e+bOw{Jds{bjxk`}EV7pT7R=^^?fadoSR#5s>{R0`ddYO0_;Z0xfAC1ZEp| zYn67qZG;+1SCUR-YJH03N?qDT?eHKu9yxZI62L$Va1|n4v&{~@PqCqAuo5UT?!!dq zM1LHufJd4=mfs>n`fwW+hzRIi{K94*A(3V;4MN=f z^leCrO#~5%qx9EZvBeamgw^mGFP${5h%8k5iX^k!jrV8Yrk!uz%Rl|{&F3%6p61=& zdl7#ZYjbMFiiLFErJx-WuoO;x^Z>yE z!BV3wTsZBtp1l!_P7E31OdsJ#DdwJF6U{v+_2J*bRkBsW-i{bHFu_ounI zgl-K5_x?CHd-ku!Rr2#UZ$Gn7U;mBy&F1yjpFel0#Px0%2%*bc;=*U(^|duM0%emT zE|Lw{%_x^T6-^YK7#!pP2JeG<2=HO__GON4JlQg{SK&TsanxMv7-BLkLuufpZm7M# zUCWNgJLUUVB)9EGCvwLE1L_Qfc7JT(GA7NgI(>DjZMsnB9ji51r*B6*Cd`?cRWY1} z*W!+jHEvQ&?s^F5I~R7@7i%n{nor9!?W~;p(Cw&XF3xs@Mq?OIKwE*Ok7U*cI)r*1 zq<(mLw48hP$-EUAqM+%LGDOI2^--NeXHVfNQ|N3+kc{Dk8C&w1szJFbW6+f9^1x25*6pISNn^%Z$A0tNkG}X z7ww0d39g~&CR!b8cGM7A^GG6Bnz*$a$5z>Sx=i;ef>1YtZ?X5&VVh`fPPR9Y=L@_D ziEe|p3S$t5y}B5$x%%y9d-3jV zCceTaui<;I+q2aM-BcSN;C?%_$KgcwA7jk0rk)fAf)@Z`+)*2HDJ`e&qrUrsWzJ4t za@;Tv>DGO>y?@Pe?$wLNP_?B!J9h?aFEH0ce1C>PTwR>qy2y!J+CjqXxyxF~Ts`7o z$bw92$WXS=?(lx~Gdr)|FI$>49g3G)-o44TAQeM26Qev&}}l%y&p$m zJ{<0$knJiSR`)PMJp#P|VZggpG)-$VMmUR-Sf zTxGA7ustUE$U|EZDx!3RNNRNn03{>(1n^$#py3MRX_4Cv>2}D-7q!8 z0C!4F-2Dce0orvL%~n6$s`<(Bd*5~Zp~7ZzFW(S!h4dI>gl(z~z%G&$7lz5vX8`3r zV@9okg@0TjC2N7n9{0`>bO29J~3gLZz)1 zeynR>ffNMZ?LhKnCJp}dgX}q7kpky!Hk7-_bistJ z-EyN#0!R~$x%wH4`pT+Yds9K-wdwXyIbBT8*#zJ+FeBWSLG9LQYQNYW$O<-<>cg@% z4u9}~OL(zP)t+h_FTTh%NkwW-nEOYwTCHks z^w4t6?9uhWXX!Df-4?BX(!Z+8w=e7Mo6l}{+`U)sneK7>&XDZ!=MQej9o;5;nt#)p ziwe&hCyX?B>Yyr|4)qq?6#HD_iP1_{0Q7Z9_bMUZQLP=P%ju5#@`NHY5N_Iabs#u_ zeyS;XBHa+suzbXmIHL~uCgrLnF;@PGVk|s8h2%PS(M1&m`J<&g>*rwR6wjb^-K0 zviIhr`LGbeG++Y`o8u(FP@|}{AN&QLFLft<_;)@IW&i(wcf<65_Sl?p_J0uCHb}Of ztz2ZoR%@j|cB1RPHZ`ZtkYaZokl>;l)#pW%LlO~2fpZNZuQ*;Z>mb+^NpuS43)I6f z`#S_Sop#yo5C1MUn)vD}6f^dopvG?OP!d9`r9opmBDWw{YdmJyTb{54wGkv5tbmp^ zu{963mCFv`GDcGKz>(6p)PFo2!=lsh|3=t89p7q4AO5`;KmO5s*MChJR|t^xkYxvn zeQlCWTJCG7IXPxzP($X}Y$JEGY202J42QNswY5x5lQ+97z?mpcXIp?IIEfyX zTmvr##>3~ctvP2qFwcm#*?bNNU=WKx@$Z-?j4Px`^K#d`k!&mG6bsOb>8=~C`72O z(cG_D$2yoJK#STV#(${U)V+ffHCvYy>9mIC9=qplTijR37S;gzyFp*4r>;3IFuiE5 zs*KZ=m=M!_3dbA*1UaLbv$b=4_R-p9!qf{4N#$cOb%)DhPxVG{Y0lNwK$rIn#=m(T zznxD1HD3=&Uw&Jm{pst-&!0|a?!A=HHfs2$QS&~o96obX3x936@buW{qaZT}se4TDZllS@_n(oqr--_A*{nXbWyT%~H(5W^;KiY& zp~PUOj2>&tQGe^lnk-kEa8#J%&{FJ})_Q;V559-+MDE_*c5T3Eu+HOgJ6-z}=j&i= zMI_#KuYE2}p!dmRoKb~CkFksq+4*=%M#ZR_slnuWWK>B^5Pk=s#e&U`>r1Xc2+JrIIYt zCvHr+53UH8Yzcm0pl&9aPsCt;LrVUm5xm8lr^=*zFWOV{-g-sf&dUAmpa0@L%%)%& zgk5P_5Y}*Avoiu6HswlF9TWNPbJC2t_aSwRqA`qy0c8jlcf$F8E?y9?JR_ni_06lBWq;U=%cNzr)8m+&~}c4{7EPxRPf&zq&_$< zPTZw3^5~A6-V$siuMkW*r4F&N&6W!W0QhuG$I!Bl6k0}~V%uCBSHb`2x(a4vgc3s9 zmO5;-WpsddYw*emp%tgGxcic^+F44pUzHz`V^>#;d~~D{;4Nyb4PcV zxiMnc257oAglLq3h^`ZQtBP2;S7Yt1VZ-oV9kyI}NF3^e%r&j$Igau3OT9!e|oJ2bvhKe^6axf`DNM&%g8Q!o~d0eY-L3f+Oi;m(G8(J zdZx0kzUr*)(D?6eMv3%k>1zRjV}I-PiF}B?J37i{HaWq{V;mXhmMB6XihKZG%#YU4 z@5>qr6JJ05*m2y)rkL*#S=mwhSK><8#_rMhbRT=1M%xsL25!E(rIjQ!oylfQY!rZ3w^Kqxs^ z0#9$v`|ylDP}d&I)xZal>>3Cr!R)Wb(Lp*~sad0TPCy{CZPSLnrRR#hhR>Wn1kKhK z>LS^xyc7AVvxlu{5C7F;-~#s%sH-V^hv?PGPiJ>j`XG}H-DeJlHh)_Rl5L84x=3#r z?0|3CnapTZbKkC2rI1IXlp86_u3W77ODHhV4q9pW&RQ!0SYlZd)?hcgYd@Izs_s6;2C_j1g<-0sDKY9J`h6s{#JV+MRp$+=>$gy&7S-qExc2m>mFU58;OXmkr!A&V){4(&!qe zidAss>#=0*Y3H=QcA$^9; z{tZs5hJSbujGr*}g{bE=o(q$x!QAlTWFeZv_d+tOTRRW`-S;psA7?Ky#RLzsj3#ND zbU6dR)HYmNtrnqj4esV@PVI?hQF?5A8ZwI`89%2FBf?+MwR&LD%22 zAKQ`xt&{9Mp}d@1d>z{GhKSzoK@7WiPhD-9?qPFBRXfo8CzLG7ld<-jk@Y9Ao=uMp z^?xOry(5M#mjHhXt(v(J_vTO^Hz+9%MN}+w;n$uEF@_6?fSZP$S@U*s{v&()$)g?l zX1m>c*`A5$rdRE|5#84>e)U`LYEgkha`uKgb=b^EOk9)z%BsC%Ex-^YSinRTWaiyZt>Vh>aJ*|J z*%X2nHj;r3585|uvzm^6iDQtbYivXdX{wK?Mas^0TJ~9cc5cqV3K(dLqgy@vPuD;J z=T~n&4@1mcll!T2>~M|9W(b%VL3`+eraL=BjfGRiYDhs5q}-+;eWoAASQAaVp>9Nw>&Khe}Hgf;tfEQtiWcS*sP0mP23HrpnB+n>0{_wxNxTMK$ zgdyeb6aC_DNE{k1Xy`oWNNT8&EbVTs4kG&-UbPw?L}y7KTCSIK_kYyrc_4`CHgd_q zdmAULYwO%bO_@f8aoCEJmQD}<>xVF!e)!)mB|ek&!Vnj^z1S1G_dT;f5RcTc=NKFM zb~sdX&unO0&8^wTQ0VP&r@FLnWXu-Ze4ogJn;wsCB(Y9s1gy+Nmjq5Qn}g7Y91s8d zhtP_@Iezc`ac+*^-+%n_%eT*g3pQ=TV+v&y_XS7=5Wk~@wnWU%b+|e&k-}LhtDu+5 zgc{#lst#{k^)aeTg>+LFSvX_OVRX4>_I@s%49v}i$o0iId3u+dNiO}-B=^oUja#YJ zoj=aa*ZCXo?75Cm6f%Wm&UFeziA@-FS=RG@!fAzU$s}QJ-$Y3T9(j6;&*Ib z8*N4K##xBhORZFC5AqOQFd+w539t{-UK0NwC90o=rj)4B-cVL`epCsb-P9HeMz`A z%6$EAhT42W(f{PTzYOPAA+No9v;V`_<3g zli*La;3~KaK_rF)5OyCfu~QgIL}ejZXOCC|#q65OUD_sVI!=zQmexMU8a@{O!aJPmzCC)tVdnmNJY_I|%&goUR6l^RIy>; z;~ct-{j3w8B10$-6g^-$CzpztuBF>X7g0t6UJ5Rj#-f^{yE-{}6pdzxu0!(lG+kF7 zBU0fMdbEE5A1N*e@$i4W`0;PQ_rum~kFzJ-p;H++n>kg{B$CCO;1cs060q~FiZ&^Z z1hQ&N2A*(=mnZNpV>2Dt9!58lOuM&qF3^*Blhv<_u!0)5s_Bxri20aB5e{o zcry|#!q)P|6KYXtcFyrwAw%kfApgX=u`I*Qc@}M*G9!zk2}N@Oy>YKms_KVycRdC_ ztEhhxk+g^Z`};_3o95Uj5CrsMLtD3WMT}N6eG&_VuBV;09Idog?dr7z01bu6Q8W%Q zENW(qSRB719F>OZDWG>H&(TM@T_YMWolYOsAu2d z0}Ka#WVGY_uw$*^45CJ0wL_Q;q4@?}jXQtlijEBpWidYU_N2yfd0~JCJuv7`LzPyy zUCiJ48|>4cz5MEnXAQykUb-J@P@DQn%K(C)iSbyKxI~R`%{}Yt!D*`*)nJ=H8vrjw zx!8>o@wBTK;zVbQ0Wm=RKkU6(uVqP+od-49Q?R?yL`wwq+IkZZMKd=ucem2t(DQ!< z%-zhhLKPVijL2klwO&Nc^8k$yG|!@DQPYppK&%~EP3F0`$O8ICorqSwG%};Avu^Ht z&feS2*7`mHD`N_Q2~-edVs+tAx-twMBPIyBC0j6)_!1^Jw;#1TU$Uo;P&fTUdZzy2 zy=RE+Q2%qU24FN zQUs_8K-2_MMJlxb3GsCn)RTOmxb<=D$XYTUC-~%3AlYiR^guXrBC|C%-pdE2a+ujs zPIuuWzPUAYz7fKM=dWtQ?w75CffgAZqMbbuN+I(zu!~5ulOZG8_U+OH`fYzmH#bcL zlG^PD$8ov^t4fgWmlX1j0DDmMuXN-y$f^S z2MGx*wDR2QtndBfJpDoWEnI)tmtXz#-BZooWoI(aWIb(eZ6mM!6t^?7bvWvC=JsLT zTt|1{{rF1t!ZvcEjfSRG%YmLg@5K1FEYhO8%Fe0o^;@0@>98-+UTpL?~! zsc&th#^n-g4ao^5tFedDz)Q=i9UgGJ1I^O5DNT6Y$IiZD3s$ZQj+)~0t5UPLUsR!= z7dyw@HnAY1hK;4c?>mwGq7$Xvkc$nIJ)4K0YK1dLA1!rX=ZiCSdRvEf7ix3B6|Ca| z(2axw*0mke|Ie@5bbltp?;ykh9(CGS^UT16**iC&*CZ_y zprH^zG4;@PZAo%~w@0ReYXaShuoe!!b3+<2m(4ys57#VPykd$=pr{LFu_C3(xi%;p z5C89P|L}L79a_4O)Mk*PCn3@?g0Ns}PWW}EZ)px-j#jX?V{3o-@ZNwU>bP4U>~vy{ zxe+&-G;HPM)yixcUnI7Hxk!>taR`y|I<>;H+~jsou@uR#t68Wi10MmykhMl-RAC!g zd&xlI7W6idAffF>*whk&6lvQpCF8m@d25k^t|a&%jvh<(P(N)ni&Z1F4mV`cO?2*C zrpzB)!{-m*ynlc7=Brodr!U{U+K+Z*_r8Kp!b|lAUizob?tKFF)hu|VCuBQo)nUIz znlyX#b7HTCww*+XjYSRxyy3voP3=@K)tT5qm>uU@v3m{Z6c11Bb*u%q1o6^i5lIib zGL%!W=d0z-oWtD@{~_8v)D3dX%I(dLwH% zKB#A;r>Ty4PSC_Dy~^fUAvX8bC>%0l$HDJc=g)Zv|33cj#ms$q-oDOy{|MH6=d1Xo z8isaS8<`^KFkG_|SUjgDP?+3&kfq4(1F2C47~@o%2rwL;e3FnU#UOdkWQ0wzILy6F z4snZ4y{UhUEB`Q|heeylBp01INgr8tKljq%&8P0(SMSlMZrs#D#xq$>@14~6VuB-2 zyvEsfqZS<8FuKGDN&=mQi6fc#bjj1|G`(__M;F%lQqgzcxGimDOF{XIeK>4`*$7`> zUb-qpyKjLAxzLlYWrE`=jkElO&L{F}{3(W7bDn>$vu|64y;#5*x5yKMXd19>jMI1M zUe+8jtuDi-!vRu!x*)BM(RKQ!J#|IP>VToFE#!bz(jKLaO*)~!Sj_`CbVLD(Z)X+A zY?iGFej;9g0X3mmz0Y2Rp>Qpu1#-LU2w;2+C#9ojucLh?2`A-|zUewIEK0aJ+rk=n zbU1&9_hCxx?pMwf)aMb6i{m=Z)6cPA|Eu5D`$u}bdtbUI)-ZgdD|?=K*61T)O5b7& zsF;=6uhvhs)kxug-ohRmSr%JE#EJ`iH85ypfqgu&<-+S>Ze?xAlCf6gwDvCAP+}hyU+Wlzq&z&>Gu<@eO}GVmP3irq0IKc4KLWI;5N?I4!la+hhnU*y=_D08EfuN%^81b z#~rC#s8!jyy*K_r)_(i-yZ80s!^`*e;oaLOps@G8f=^h}=*F7%3@>l^7abFEa?ohU zrfU*z;IB4?6)qJ>q}2sEh(55}8nPNDJ|5fG9Poo!)`Si5IAG407?P1ik3Ej(w5I3w6%vWIz?~lq&D7I1 z5l(2mqCh=aK-$(K#hrx*j?}7FmNX_*2lHU|cu;NYtN;q@SPg$&Q1aEl z@|l8=P)k3tO8M6J@%z_%L9EyH^7Y%dKmPWSX6D|P@6m_fZivYC9G$mM0OdYiS1)eu zV4>$l12BW#6gLfw(fiux8XV6KtSg;^!@~&DbtM^!z;9y0q7%SuuQD=NeV^~DTx}Dfyd@6r?l=U?yvJT!x)=0$Iy~n~PAwi~QvVKI`Ce(uPY3-C@ ztD{mS&0(Bi0HDM#o{94gT@AD4K1mOdP}pou({O6=e$@2akKOP5>|Xo&)sG)TxbJ-F zo;)n`&0+aDBBj7=BQ{31%}Y7j4A{JT4_z)0o5UFf0{)R>+{0T7L-T*Yk2Qv89c`(0 z#eIoSU;w|gLs-aZ!-N*3@>A#Wo~=9BtwdE2 znn+thhBXqI>T!59^f-SEGr@wEuf@n4UPt>>inN7!17X`JFkv&J>c|Xzm`^_aY}3x! zJTzA`N<1&zdR3l)$Kfa|PFoQxt9;MmRh2B!7uoc)3U1><+y&5}vKY&=5zcpZi|G2? z*Q~d4?>k?;FIKi(#72iC$DSAusK{CeJ~Jo4B##ZFEH>WJivtgs7|*>nulz_iQqF z4|kXhbQKskfsuRb=3!W%P|;8<&tY=_{cl0O>!RJd+L;Ppdk_LVGW}pzbZrUi;je#! zW5e2b-FEyuEdWUxbb#D98P)r&sk_JZX3@k+42i?0?Kpp?sr~55=4(yAR^($KE9(a= zw^Q(P`9?Qu6$U5^I@u{Y=ElF>@y(C2E%(00Pk#JAepqhrw|Bm9kCK$F{lLFhM*Hp$ z{`4PwNBb6I+~GmGG0~#4NEc>cJb^n^l_l#?%Q^S-Gj*kJD+B38HPHTK1%H3-UAlV* z8iB|crS*T&)psH`CU&SXwN|4KWp6p_Jp7ZN;DaBrcB?vdSQk#A(MGnRF&T+P375%T zum$nPNtD6pssi42E>H#6r334yLEkrIF5g`?Fc-FQiTdoYj4q3jY;zDF?$t40tK0Cf zgJBRpu@XbkxnxNzeDrPMPkIg+5Iy0}-SD0vV#|LzS!JZLmY^pmIN2nPfY6LLMiJ6w z=S9&jWKXORIi|?U>K|b=qqX()+s1FauZ;aD`FHPY_scoCe1dn4jd}0Pnhej+gaQtW ziHgMS1mr8gTW25MEj{rdTzHOxr{fxEX7y#+k4EP-88-De1Dia1!UH#BZ4XQ!miFEc zLU(`gr~sLHdsrq%mMuWx+^j><5OOqqMiy{e5pk3cGA(up>kMgI54E<~ZPn;2Ky%G- zbh!m-lHAJ;F*yeUh^Orh6KhjjQ+o&hIj3XYN8{;9*b{uu@HZ_Dgl~btVpqYci7vpQS=UH8Ojrrv9`7=NS-S!0U z{Nvo#SH61vc0KXioZ1n-J;?fwqu9_&8+>vRCe9#+K&;rwA#uilP7XwR8>dCu*wC4;m9iV&!?cY7yageDU)2{YTvjN0NUKqtI(LvmFI z&ElyLVFb0^4-gnNjw3a&7RgW(K6^XPD#!$kmZ&ARQEZE*?E-kKSJU0=bQ(RYjMEz* zY71OR;qZUt+Aj+(}l)(2~!_ zeqkb)?Y-})y~$&CULAc;6q4>7yijrVRGIiWWV~VUJIdjCqNnWQM+B@-2 zVyCOzvU5I4q2Bw)x%oB!r8jTie;u!1{c-(?P$%P?c>V!>zcoxwF3LmuG{9|omgDqI7o9~WC|Z%2{ZI` z2NBJ_J9YQwZ6a}&f&%p|aOQV^^zGO2=H-W1U%iRfkA|rCzIIOx@cE{v^9)hvPe7cB zU4Sq{1HO=aXrOg~Tmb0laYWXG@kItGjna@1L8C9t5k)(4Iuw7NBDf(fyb%UND2^?P z#`LM+G=m~U#A8joyJ%;#af%-G6DP>IK*p{GXO2UM%Y)-=B*~z|xp4IfIU*v6qai$u zf~ZNhF(=8^iNf~fEoE7@_B=HYcUsVst_$#n8uCh?nY)atTm)O%KS|gB_J=?II^OR; zjvxPw8u6oVzIlK5@|#y*Kdy+~`w~9-=;_V;UY}`x-#rEHRUCnr+LWE7e0tBCctgbM zp%Zt+p?7aK$TW{BdiFUP*x%3&l6~xvh|7{6+&A`GyxMexxGe{x z9{$-+ur+l-JqJtLVLnET4*pNug9YhIP|W@8QkCX9SRj8`Hj}=Z=wzLv&9lL?B;}y# zV70D+DO&0|S+m7V=_}#{L6-tr@?6q)OXs+a@@b|bY2FJ%Ec||hI}W`_-%+P9nY4;# z=qg~;&r~D=tR^;%$Ka*_vI{Zaxo2A;qAJlqc2_s|nwu){Lu|y3S5A~2D7kqbw{g#R zFL%7z^%{Rc<41VAJ72md@40+)&;1OSrsA!7n`7X?r+6{OI9nF(NV+H6s1-ovtL@0M z(7(xn{Nw1#xNI?qdJMiez^NuaPZ^B~h{Iy(Z3~d{2JV&S3WtOwQpa)dAZ~D{`NIKcaQoVcfOEM)Fi+E0UXcq z0sIU^J70+R=kfVvOq=-mK)Z&Te37J%ZNOo>j>0a~d6d)@DBnTD5~>c1jC3kGv_Vqg z*pq*-?HH=M*a>h0d`%RGFlz`#&)Lf`?nXdG(Pzq=k>UK+Waamov0;%Tkq`gei_c)-@bJ&S_zceMzmk8OKBL_9hcBL;7=h^^H1}f?C8S!b?YVl5 z7?j?J3@>kobjUcXiOjG*c0b|h;Ld{jDs6akWs1xNnFzxWK4?^fe#i^N?{U2GMmeAX z6x2+5%iAF=UFmNz%VlW+YF6e!?{l}J$&TtA0yPJPZS9U1hH0z@l^8H!tMSxy6?K2S zK8@;l3NkYx$^~QMuHa4EOO$7w)_Uuw0W5m^BL3U2K7f-`@%1BC#GS9(ml|Dc0rco8 zL|U9%p&j2xuW5T^a1A!!$gcW6gcn=f?qS$EHWT&X!4u&H=B;Q4FT@1TSk3XhPn+bu z`DNWW+F*@mm=o~TuX4JrS0C_cx2u0q%^^cjqoW-NRD^Z@Uby1JlnK&n3V?Lg@b060Tr05eAN;F{B*;!YipOm+uCC zWg)&nS8ueVL>Or6>FyAZNf_P>bE6iBGZv2qqnpg3Y7Uc=s5<1-C`ZTEoq7Hw0Qox~ zUcJfp_2KRNAAS3?hQhDCdNhCHz4z67V$RmT_o@5%_n+OTu64y`5W`c}wk(%K3&f2V zw~}a%>Av>EsAGvbAvVRJksM;$W1Pv}=Q5iXq_x+aGnOSr?2riqc~YF(PH zg6R$4t`%rTG@Sg8VIQOmxDlbsb8Oeip}vr4E^HgX*1^md1EUPchGTytfStv7{T}VK zgpBtzmyK2`ci+am#u_{ue9YvvOt(5)!=v@q#<}0W{qW&C27yqIw{eSVkMkR3?{S%DdKjgL1ldt)>4V*T)_G!!B`UTP;}m>={ToY_2FN9@i|~9 z|D_ktZ*W12zMtLAbONh_-uFSbyKyX9fu)Fd*sFZ)=3QZ@f!Kcu>y+KR^>%7+3z;Ib zdo^M)+bYDaYq8HWdL0zWSFs7}%EjC%$CP*!IGc4Mty;f*&I{{1|x_eoU;^G1>fx{mR&_+x1sUm_OiW3WJaiqLwwfcE=Z4 zpf=(?u>KM}nRA^MOpRmLmVR`l?Z7Pj6f<+uel$uxw1N2bt5C8JV0fC(}&cyeA zcX5lMOPM6X};W@eR}E*bi}3t%f9GI@lOd6z6};Ir}JPpyEaFuz;4HcCNWa zdK)>*`hl1CuuRNl#_)%K<;4&G{IgSR1VeD`+U6-2zi2Gd&S((0IQ3{_$kNugY@yDQ z=NucGnyZrG!E=$IA)3spfE0Hzz*D+c1A}Ja1sdGe1tt;pJC<<(q?7ijAvM_XpCY)A z;?n9<#u9&D&gam?L~K_kso}GYNaTbbZX;Zz*1?Y$EfZJx$`6f(uO9Kvtx-*YOIrP4 z99Z2Zs?cIUMj=1qc{{p&@l}2Ea}F8zzHm>%oA?Ia^ckLOc@9W$LK?Uk<4me#d{-f( z9+w2QZ45NRq{8=+2Ej`+y!wWSUvDt(ow5_loDqLJNROsoXdl;R8+h>v4^^e^-NKhL zI{dS4cLkq0o8%Gh^}ZMHOFh|2CF?w)t#D^wIfs($HpS;43J=GfAy9Mg6Sv={4hP>x zFzCwMYl!J2jtvM_0mZh>7bl*p9kYW#Tnu{$!Hxp&U@8ommuRbU_2-8b`xSOC@xL%Fb@xCb#;I#z4ti7BE2)b+dX8l&NUXhR2m!OP|>MI zZR(9LHBiiXZXLzH`SwjAI`U|LdFQM4M2CgHhk5<@_s@_VIl!b=uFdRQb*^*pHE0yH zc&+R@;9Qhxg0WE439CtheqsaM@eJK?sepf&yxHn1;f%HM#?^7qK#LZy4SS}KW@9DT ztf7{^^x9#^PT$$b%-%eA3ses}+`!!1K(S&(pqy~K&sZBO@nzNrKw(H~maVm-XPAG= z!hT1$YT^?I3_6l>)BN~WEBN82OtF9m9Vb;u5-5ZF5R)|Or_dLWSyS8$E<^PLLr-qb zcoH=67ymY;?tT5$Z|lRO=KZ~|;**bgxp~Y#3v8ter2?i%c$^H|bW|bcZi^4zREf)D z_$VBDXRZy>AYOSyAz0_d7;ubrT+n}q7#xQ9_Xr-Iy|A0WA!vYbDbmkDsTc z7s=3pxPb7@d&pS55)6$=gyvj_=%e!CUw`o#KvBLNM$1#`p=dD|y4ujr!+C#r#aMmL z1i{N24D^`b+V0NH&+>j1YiJF?1bGlps}RF%0LCG%_BjirE=*@u@WP}gV_U1v%Uq^$ zOr_(}f3^<%b$nU=;cLr%Z^YA=N1S@1(?8nU6L;%bPH8-yVE*1qn-qpjnAD#r^0iSm z^t3!%7r^j>Wqn_#@z?^7^;2Bf%*vkohfTCr`s(re}}|- z_Tuvd9s5Y59&)nK55amK(9B!9rtac)<`{hZ9SV z)+%l3MWsZU&@og7&c%<+1>0NpYrtW;QG-Sph{IPFU_n3)Weht@EEp}_7xvA2f zQpP#ieRj~nJCRK+$*h0dz;povuNA<7bVQh9wQb7>DPBLZvy3$Gl5aBwLF*I?-n8oS z0WRlR-e_qrLQnlz^Q}3JI_O7-`^kQyq#x`39P7JOay6jhWVMmoG!Fi?+Qcw}8V#1c z7w5(YP|XAQ)w68h_H5t0ee6KI_a%E`=h1F5mCw_w_XbC!6%~JXxTy2W0xb$F^D4&R zc%#mZfhS&d7IHj>Dl;OXn!PClWC5@hcL&Y3&y}NS2isJ(3(&05&c6!FP`j$j>_DB*KzXskyd zI@fuT6?Mb^N0Wa*y>3hHD(o`$KAl(F7~!B(Q4TKzExC+Iu=nzmBC0GC>9;ut--72A z7HD-WHhwnYDJV6LKK#&JVa-=qp5aa4Vgl*Gl@B+9SJP8lr;0gc%eEzuEza~xZ7UNm zZRYGUguU(Q)CGElgZkO+`tM_(=wBR_9$rMSbn;I z6LUI-#MCdBLd-cB{=_Y7S5M3@Bqo?#01UN(5&bn4Gs1J3WD_v1p8fQkvpM7$&QO*~ zx^$4%y$>Izr;powd%;!)KY^X4GP;dCwOfvBpHN9tu`?byPtJpPthBg%!5#dQ9TtEB z0BUQ<vwP81H$m~n;+H7uU}<8F7@2|5CkF{@_pl2CyJ>+flTn#l{;y zzE^*vO~aqqDYQo0yoUQ7aDD2h&pD5@m{okhGDRsQZA`*%)(R4F@TdFOb7yEv%&cfO z&&bw}#OU6Ag`_Y_&)yPT2>IO!4$w zth_7*HGgaN@NeU%kk$(1pxG3Np^CMv0G%2Gx%dQDKAuth&lNM& z24wTno->!*+<^qkaNi3Ats?KF@Lf46bws`%E#!XZ&AYE(LdpIvzWLFk;qaX=-ILW? zzNywe$6@5|0jz)L6D&w<*^DgC)0en9@IZl;!IHyQjjCamj~U951O75{=1YGzy3!-N zF{S$TJaTkP8*)*}YIC&01=?o*yeq8gm@R6tHh=CX~>a`f@f??4n zf<%35L-SY;D67^*8WQn+L6w8=%fk2vAreBH!)(-s13NL5NAAcF1`}ZtaV3@MO~&8> zC)CZ0Dh^$B&`uhb9<3w=SSjPxvcjo`R?()1fA_^T zeNDpH6zp$-_@=KjyQ`1~<{{vV;aTX?$+gsd^-;vTv8fN%H7Cj!;^u!Fp}!tB)6bF+ zfLZrk={zP-Vh#DUfCR9P2EN>x5C7gLh#p}~W8&3$&n}k$2u1t}pHmXon5BKKrk=5P z;{){GAsle_p&+FpgzFjV0`cRV0Od+4Wy94w&?J{6ikjPE)WQXVn;w_%HVKkc&04B< zr>K${3&eO@L49_e_(p#kM)t^T$!HBOxK@XbY&=lpMEV}Xfb+y0bl`>;r{N<6Gt3C! zDWiPGTSb{uv^GcYXo9-DcnU z$GQ2i{N=CT=C`lwW!5+G>h*_@eCF$oSsxef%CiB0U03xTnnLb!pWBeqx}NHUhp88o*_OZ4H_<4uly zq!e~ZVdUQ0I;Sl0302e^df6Es7j~=RpMUytcy-n=1f-X=oJgna;_ic*AUL3UjvBaJ zon_0?sjD(NtPy{LTV&zeNj7|q(@7rw{R`*Y48CheRn9S7n`dvXt}dZ9O*fHd3>l(VQom{-o@e*sCK+mIq+Q!9`)D13MPM9F8=h?2^Av_;*E!Mss0mi<5_2$*P z`0yxgckh48_9VZd-S8X!)RTtiA9I0MbsDVE)f(^ESX(xS-Ar<#evK2|MYI5#88!ZF zqZV;o>WnUWs1Dex6Mb;dS2mV^jR_S7=`fctPbzKUh+!>sVe}f@@7uK9L1%AFZg|d? z=jI^A3koK-#RJ zU$&&!dpzTk@1HAw{EfusUFS z-Xw$ZFc#r1ZZt_~e?f3;7+N(ixgU3s5-8e%F&t<7qvv0OJ1E;^o2O;~&UIKqskUBnV zqh`m{JG2P{ST~TH1Wqgnwvq*U*hD2Dd?AdtL3)I982xr4J9!WagT0`IK*F;nhMnXE z3Iod-HiE7&-UP<6)@>r<-apQx*QcNTUf;cXSJ!s>39&*ZAz}<8mXK%2@DPL+ZR?Jm zaRy7vGKM~(i3iS@v#5=65F&pnDC_;I^B=_h5!yh_BB2!_pyM!N+q(DcoE?r#$9e}Z z7gV>u+V%te$XmMe$>&Qsh&@3WDqkQ@4Ve=g(H`Syb*+Q^Vm6x%ENEgNSpo5glqM}O zMCjn@t=SNu@C8now+JfqUaieJw~YYxFZ)hVAPXiokc?si?Xr=w zcyC$iO$11arH8SH0{9mWt~Te$l$d&^*vai<_ojWA9LCS<-~rHKjI58UEcmtT>ljflq zxmVPXIgIBZfW<>PlO2D&l|#ZJY&9_vj)WF^k0qdxG%fr)qK(o_c^#&1w*>L_-NSvX z8F2T>b~%X1%W;A z#7k`BV(tz&Q=_x+c%3I*upqdV(cSsSxm`}Zd;j+9S0B*Y`R0H9PoKJ79IuA2HLO{( z$JiOsm-1|(ix%U?G%h0FMj$GuxMD2t%9c7z0;QC4R|EomU^KeTMhf8a76dVY>sUg9 zG(6)2L1jUBn(W64I=+6bH0^XDlrq;05^Xl4!%miSHIs$0V~x|LQ45<48XNqfnnmTF z>uRuUS{ruy?&*Iq_w}BI6)a|yHK+jWz!U+5X?Sp>2gVqBd(yo3k8_*&{qW)at0(b^ z9@=}@o~2l8cHVkQj*%OFYkE>o(`k123IQK*2CG8IkU{UV*n4MR0fINe%gt==HhV1d z)az-mvb5#guf&;dxHd(L{a6ip4_QamLT$rmLTX2O+^G8IdaBBDIOB3tJ$@a`Wj} z1Izo}c?ItVdQz=*fc~1?3e9P8s?wHt*K&Vq+%#xoxtcS)kCkFWZ=)C=-sK;?+;88%ug8YmdtbUI!m#aoi?EM>{~U`j z1UX}OJHkLCQ|r;qM@OI-@q9M#(^_rlTFv^hX0CmW&Q;q1HcyIT*RXphN^6FvR%>I1P?{eL5IJk?9--=*1?Zx8zdH+9e;%fyzPQtu60}M zu(doejGc}q%p5*lf8L><=aP*|sX5IMra21lxEI#?T<@aICQ=c&5jMiR_{o-g^}{Cn zx>tWAj1zNQUnHbTY@hICO#O;;AQS8{2&wV8nf95N_@>tIhyUbLZ2EIdYYqk_G?u%K zGo9nicHr=+<*g6r;Q*yv7A(9@ER=uNO7Qrq{IrD!`e`0>xd8f&wdm-Ygtu;#$4oe? z6W-lT6)c$0Q~S%BK;5qR?|ku|jQQJ5%-?^WBWi=T~j0` z;fT}@D$;Y|3^kXxvC<9RMwt!e-=eWZmf&UYsuSZ4!fZ#39$tN%4bwx@^uBmB+P)wD z(<^GDVC&5c(&5&w`kWeir_^|PGEN3G0RcO8`oW12^yTcz`#{G$5xecSp_!S`s4suT z(nj`DjpYWDAA(Nm@@U{<9aK!O8r~9TXT{-H6zNd?B3>XT%Y=csYk~ zNn40PAF+91II6$}uR5R*r|pKX>ukeNZkVTy*<|e2JK7jcrIrv+hvgAlhNB&+gJVb5 zlJR&@@G;&{9o&m97S<@{_TJNtI^KUU{a}m0gVDXN4W;qYIhGu4iPASs44fmzDU4Dh znH|mS^^p`Jq@8lkXtfsiLAJse_{cSw+UdLBKDY1v<2>~n{o~iKp7LsrwiN

Fgsw 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 R8P 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

2!+;|U>-MhE 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 GDnQNFy}F-rIGl-&(d7of>bI)o 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