@drunk-pulumi/azure-components 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +127 -1
- package/ResourceBuilder.d.ts +85 -46
- package/ResourceBuilder.js +147 -46
- package/aks/AzKubernetes.d.ts +17 -3
- package/aks/AzKubernetes.js +92 -43
- package/aks/ContainerRegistry.d.ts +4 -3
- package/aks/ContainerRegistry.js +22 -19
- package/apim/Apim.d.ts +51 -0
- package/apim/Apim.js +248 -0
- package/apim/ApimApi.d.ts +34 -0
- package/apim/ApimApi.js +193 -0
- package/apim/ApimApiSet.d.ts +27 -0
- package/apim/ApimApiSet.js +88 -0
- package/apim/ApimPolicyBuilder.d.ts +93 -0
- package/apim/ApimPolicyBuilder.js +294 -0
- package/apim/ApimProduct.d.ts +27 -0
- package/apim/ApimProduct.js +118 -0
- package/apim/index.d.ts +2 -0
- package/apim/index.js +19 -0
- package/apim/openAPI3Type.d.ts +85 -0
- package/apim/openAPI3Type.js +3 -0
- package/apim/openApiHelper.d.ts +1 -0
- package/apim/openApiHelper.js +36 -0
- package/app/SignalR.d.ts +3 -3
- package/app/SignalR.js +35 -20
- package/azAd/AppRegistration.d.ts +15 -11
- package/azAd/AppRegistration.js +67 -68
- package/azAd/AzRole.js +2 -2
- package/azAd/GroupRole.d.ts +7 -17
- package/azAd/GroupRole.js +7 -17
- package/azAd/RoleAssignment.d.ts +1 -1
- package/azAd/RoleAssignment.js +5 -5
- package/azAd/UserAssignedIdentity.d.ts +3 -0
- package/azAd/UserAssignedIdentity.js +23 -7
- package/azAd/helpers/index.d.ts +0 -2
- package/azAd/helpers/index.js +26 -22
- package/azAd/helpers/rolesBuiltIn.d.ts +10 -19
- package/azAd/helpers/rolesBuiltIn.js +25868 -18593
- package/azAd/helpers/rsRoleDefinition.d.ts +12 -6
- package/azAd/helpers/rsRoleDefinition.js +48 -32
- package/base/BaseComponent.d.ts +1 -15
- package/base/BaseComponent.js +3 -22
- package/base/BaseResourceComponent.d.ts +24 -17
- package/base/BaseResourceComponent.js +61 -45
- package/base/helpers.d.ts +0 -6
- package/base/helpers.js +1 -18
- package/common/RandomPassword.js +4 -4
- package/common/RandomString.d.ts +1 -1
- package/common/RandomString.js +3 -3
- package/common/ResourceLocker.js +2 -2
- package/common/RsGroup.js +2 -2
- package/database/AzSql.d.ts +5 -5
- package/database/AzSql.js +37 -24
- package/database/MySql.d.ts +1 -1
- package/database/MySql.js +45 -28
- package/database/Postgres.d.ts +2 -1
- package/database/Postgres.js +29 -17
- package/database/Redis.d.ts +25 -4
- package/database/Redis.js +88 -25
- package/helpers/autoTags.js +37 -3
- package/helpers/certHelpers.d.ts +20 -0
- package/helpers/certHelpers.js +85 -0
- package/helpers/rsHelpers.d.ts +19 -1
- package/helpers/rsHelpers.js +27 -4
- package/helpers/stackEnv.d.ts +2 -1
- package/helpers/stackEnv.js +10 -7
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/package.json +11 -7
- package/services/Automation.d.ts +3 -1
- package/services/Automation.js +8 -8
- package/services/ServiceBus.d.ts +3 -2
- package/services/ServiceBus.js +17 -19
- package/types.d.ts +44 -15
- package/vault/EncryptionKey.d.ts +1 -1
- package/vault/EncryptionKey.js +4 -4
- package/vault/KeyVault.d.ts +3 -8
- package/vault/KeyVault.js +4 -7
- package/vault/VaultSecret.d.ts +1 -1
- package/vault/VaultSecret.js +9 -9
- package/vault/VaultSecrets.d.ts +2 -4
- package/vault/VaultSecrets.js +4 -6
- package/vault/helpers.d.ts +17 -0
- package/vault/helpers.js +56 -3
- package/vm/DiskEncryptionSet.js +2 -2
- package/vm/VirtualMachine.d.ts +2 -1
- package/vm/VirtualMachine.js +37 -25
- package/vnet/Basion.d.ts +4 -3
- package/vnet/Basion.js +17 -4
- package/vnet/DnsZone.d.ts +1 -1
- package/vnet/DnsZone.js +2 -2
- package/vnet/IpAddresses.d.ts +6 -2
- package/vnet/IpAddresses.js +2 -2
- package/vnet/NetworkPeering.d.ts +1 -1
- package/vnet/NetworkPeering.js +1 -1
- package/vnet/PrivateDnsZone.d.ts +1 -1
- package/vnet/PrivateDnsZone.js +4 -4
- package/vnet/PrivateEndpoint.d.ts +7 -10
- package/vnet/PrivateEndpoint.js +11 -10
- package/vnet/RouteTable.d.ts +1 -1
- package/vnet/RouteTable.js +2 -2
- package/vnet/VirtualNetwork.d.ts +30 -43
- package/vnet/VirtualNetwork.js +77 -43
- package/vnet/VpnGateway.js +2 -2
package/apim/Apim.js
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Apim = void 0;
|
|
37
|
+
const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
|
|
38
|
+
const certHelpers = __importStar(require("../helpers/certHelpers"));
|
|
39
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
40
|
+
const ApimProduct_1 = require("./ApimProduct");
|
|
41
|
+
const base_1 = require("../base");
|
|
42
|
+
const helpers_1 = require("../helpers");
|
|
43
|
+
const azAd_1 = require("../azAd");
|
|
44
|
+
const vnet_1 = require("../vnet");
|
|
45
|
+
class Apim extends base_1.BaseResourceComponent {
|
|
46
|
+
id;
|
|
47
|
+
resourceName;
|
|
48
|
+
constructor(name, args, opts) {
|
|
49
|
+
super('Apim', name, args, opts);
|
|
50
|
+
const apim = this.createApim();
|
|
51
|
+
this.buildEntraID(apim);
|
|
52
|
+
this.buildDisableSigIn(apim);
|
|
53
|
+
this.buildPrivateLink(apim);
|
|
54
|
+
this.buildLogs(apim);
|
|
55
|
+
this.buildProducts(apim);
|
|
56
|
+
this.buildGroupRoles(apim);
|
|
57
|
+
this.id = apim.id;
|
|
58
|
+
this.resourceName = apim.name;
|
|
59
|
+
this.registerOutputs();
|
|
60
|
+
}
|
|
61
|
+
getOutputs() {
|
|
62
|
+
return {
|
|
63
|
+
id: this.id,
|
|
64
|
+
resourceName: this.resourceName,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
getCerts() {
|
|
68
|
+
const { vaultInfo, certificates = {} } = this.args;
|
|
69
|
+
const caCerts = certificates.caCerts
|
|
70
|
+
? certificates.caCerts.map((c) => {
|
|
71
|
+
const crt = certHelpers.getCertOutputs(c, vaultInfo);
|
|
72
|
+
return crt.apply((c) => ({ ...c, storeName: 'CertificateAuthority' }));
|
|
73
|
+
})
|
|
74
|
+
: [];
|
|
75
|
+
const rootCerts = certificates.rootCerts
|
|
76
|
+
? certificates.rootCerts.map((c) => {
|
|
77
|
+
const crt = certHelpers.getCertOutputs(c, vaultInfo);
|
|
78
|
+
return crt.apply((c) => ({ ...c, storeName: 'Root' }));
|
|
79
|
+
})
|
|
80
|
+
: [];
|
|
81
|
+
return { ...caCerts, ...rootCerts };
|
|
82
|
+
}
|
|
83
|
+
createApim() {
|
|
84
|
+
const { defaultUAssignedId, groupRoles, rsGroup, sku, publisherName, publisherEmail, notificationSenderEmail, apiVersionConstraint, additionalLocations, hostnameConfigurations = [], customProperties = {}, zones, network, ...others } = this.args;
|
|
85
|
+
return new apim.ApiManagementService(this.name, {
|
|
86
|
+
...rsGroup,
|
|
87
|
+
...others,
|
|
88
|
+
publisherName: publisherName ?? helpers_1.stackInfo.organization,
|
|
89
|
+
publisherEmail: publisherEmail ?? 'apimgmt-noreply@mail.windowsazure.com',
|
|
90
|
+
notificationSenderEmail: notificationSenderEmail ?? 'apimgmt-noreply@mail.windowsazure.com',
|
|
91
|
+
identity: {
|
|
92
|
+
type: defaultUAssignedId
|
|
93
|
+
? apim.ApimIdentityType.SystemAssigned_UserAssigned
|
|
94
|
+
: apim.ApimIdentityType.SystemAssigned,
|
|
95
|
+
userAssignedIdentities: defaultUAssignedId
|
|
96
|
+
? pulumi.output(defaultUAssignedId).apply((d) => ({ [d.id]: {} }))
|
|
97
|
+
: undefined,
|
|
98
|
+
},
|
|
99
|
+
sku: sku ?? { name: 'Consumption', capacity: 0 },
|
|
100
|
+
apiVersionConstraint: apiVersionConstraint ?? {
|
|
101
|
+
minApiVersion: '2019-12-01',
|
|
102
|
+
},
|
|
103
|
+
certificates: this.getCerts(),
|
|
104
|
+
hostnameConfigurations: hostnameConfigurations.map((d) => {
|
|
105
|
+
if (!d.cert)
|
|
106
|
+
return {
|
|
107
|
+
...d,
|
|
108
|
+
type: 'Proxy',
|
|
109
|
+
};
|
|
110
|
+
const cert = certHelpers.getCertOutputs(d.cert, this.args.vaultInfo);
|
|
111
|
+
return cert.apply((c) => ({
|
|
112
|
+
...d,
|
|
113
|
+
certificateSource: c.encodedCertificate,
|
|
114
|
+
certificatePassword: c.certificatePassword,
|
|
115
|
+
type: 'Proxy',
|
|
116
|
+
}));
|
|
117
|
+
}),
|
|
118
|
+
//Only support when linking to a virtual network
|
|
119
|
+
//publicIpAddressId: this._apimVnet ? this._ipAddressInstances[this.commonProps.name]?.id : undefined,
|
|
120
|
+
//natGatewayState: this._apimVnet?.enableGateway ? 'Enabled' : 'Disabled',
|
|
121
|
+
publicNetworkAccess: network?.publicNetworkAccess ? 'Enabled' : network?.privateLink ? 'Disabled' : 'Enabled',
|
|
122
|
+
//NATGateway
|
|
123
|
+
virtualNetworkType: 'None',
|
|
124
|
+
virtualNetworkConfiguration: network?.vnetRules
|
|
125
|
+
? {
|
|
126
|
+
subnetResourceId: network?.vnetRules[0].subnetId,
|
|
127
|
+
}
|
|
128
|
+
: undefined,
|
|
129
|
+
zones,
|
|
130
|
+
//Only available for Premium
|
|
131
|
+
additionalLocations: sku.name === 'Premium'
|
|
132
|
+
? additionalLocations?.map((a) => ({
|
|
133
|
+
...a,
|
|
134
|
+
sku,
|
|
135
|
+
zones,
|
|
136
|
+
}))
|
|
137
|
+
: undefined,
|
|
138
|
+
customProperties: {
|
|
139
|
+
'Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2': 'true',
|
|
140
|
+
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30': 'false',
|
|
141
|
+
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10': 'false',
|
|
142
|
+
'Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11': 'false',
|
|
143
|
+
...customProperties,
|
|
144
|
+
},
|
|
145
|
+
}, {
|
|
146
|
+
dependsOn: this.opts?.dependsOn,
|
|
147
|
+
deleteBeforeReplace: true,
|
|
148
|
+
parent: this,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
buildEntraID(service) {
|
|
152
|
+
const { disableSignIn, rsGroup, vaultInfo } = this.args;
|
|
153
|
+
if (disableSignIn)
|
|
154
|
+
return;
|
|
155
|
+
const identity = new azAd_1.AppRegistration(`${this.name}-apim`, {
|
|
156
|
+
vaultInfo,
|
|
157
|
+
}, { dependsOn: service, deletedWith: service, parent: this });
|
|
158
|
+
return new apim.IdentityProvider(this.name, {
|
|
159
|
+
...rsGroup,
|
|
160
|
+
serviceName: service.name,
|
|
161
|
+
clientId: identity.clientId,
|
|
162
|
+
clientSecret: identity.clientSecret,
|
|
163
|
+
authority: pulumi.interpolate `https://login.microsoftonline.com/${helpers_1.azureEnv.tenantId}/`,
|
|
164
|
+
type: 'aad',
|
|
165
|
+
identityProviderName: 'aad',
|
|
166
|
+
allowedTenants: [helpers_1.azureEnv.tenantId],
|
|
167
|
+
signinTenant: helpers_1.azureEnv.tenantId,
|
|
168
|
+
}, { dependsOn: identity, deletedWith: identity, parent: this });
|
|
169
|
+
}
|
|
170
|
+
buildDisableSigIn(service) {
|
|
171
|
+
const { disableSignIn, rsGroup } = this.args;
|
|
172
|
+
if (!disableSignIn)
|
|
173
|
+
return;
|
|
174
|
+
//Turn off Sign upsetting
|
|
175
|
+
// return new ApimSignUpSettingsResource(
|
|
176
|
+
// this.name,
|
|
177
|
+
// {
|
|
178
|
+
// ...rsGroup,
|
|
179
|
+
// serviceName: service.name,
|
|
180
|
+
// subscriptionId,
|
|
181
|
+
// enabled: false,
|
|
182
|
+
// termsOfService: {
|
|
183
|
+
// consentRequired: false,
|
|
184
|
+
// enabled: false,
|
|
185
|
+
// text: 'Terms & Conditions Of Service',
|
|
186
|
+
// },
|
|
187
|
+
// },
|
|
188
|
+
// { dependsOn: service, deletedWith: service, parent: this },
|
|
189
|
+
// );
|
|
190
|
+
}
|
|
191
|
+
buildPrivateLink(service) {
|
|
192
|
+
const { network, rsGroup } = this.args;
|
|
193
|
+
if (!network?.privateLink)
|
|
194
|
+
return;
|
|
195
|
+
return new vnet_1.PrivateEndpoint(this.name, {
|
|
196
|
+
...network.privateLink,
|
|
197
|
+
rsGroup,
|
|
198
|
+
type: 'azApi',
|
|
199
|
+
resourceInfo: service,
|
|
200
|
+
}, { dependsOn: service, deletedWith: service, parent: this });
|
|
201
|
+
}
|
|
202
|
+
buildLogs(service) {
|
|
203
|
+
const { logs, rsGroup } = this.args;
|
|
204
|
+
if (!logs?.appInsight)
|
|
205
|
+
return;
|
|
206
|
+
//App Insight Logs
|
|
207
|
+
return new apim.Logger(`${this.name}-insight`, {
|
|
208
|
+
...rsGroup,
|
|
209
|
+
serviceName: service.name,
|
|
210
|
+
loggerType: apim.LoggerType.ApplicationInsights,
|
|
211
|
+
description: 'App Insight Logger',
|
|
212
|
+
loggerId: `${this.name}-appInsight`,
|
|
213
|
+
resourceId: logs.appInsight.id,
|
|
214
|
+
credentials: {
|
|
215
|
+
//This credential will be added to NameValue automatically.
|
|
216
|
+
instrumentationKey: logs.appInsight.instrumentationKey,
|
|
217
|
+
},
|
|
218
|
+
}, { dependsOn: service, deletedWith: service, parent: this });
|
|
219
|
+
}
|
|
220
|
+
buildProducts(service) {
|
|
221
|
+
const { products, rsGroup, vaultInfo, groupRoles, logs } = this.args;
|
|
222
|
+
if (!products?.length)
|
|
223
|
+
return;
|
|
224
|
+
return products.map((p) => new ApimProduct_1.ApimProduct(p.name, {
|
|
225
|
+
...p,
|
|
226
|
+
rsGroup,
|
|
227
|
+
vaultInfo,
|
|
228
|
+
groupRoles,
|
|
229
|
+
serviceName: service.name,
|
|
230
|
+
enableDiagnostic: Boolean(logs?.appInsight),
|
|
231
|
+
}, {
|
|
232
|
+
dependsOn: service,
|
|
233
|
+
deletedWith: service,
|
|
234
|
+
parent: this,
|
|
235
|
+
}));
|
|
236
|
+
}
|
|
237
|
+
buildGroupRoles(service) {
|
|
238
|
+
const { permissions } = this.args;
|
|
239
|
+
if (!permissions?.length)
|
|
240
|
+
return;
|
|
241
|
+
return permissions.map((p) => this.grantPermissionsToIdentity({
|
|
242
|
+
...p,
|
|
243
|
+
identity: service.identity,
|
|
244
|
+
}));
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
exports.Apim = Apim;
|
|
248
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGltL0FwaW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELG9FQUFzRDtBQUV0RCx1REFBeUM7QUFHekMsK0NBQTZEO0FBQzdELGtDQUFnRTtBQUNoRSx3Q0FBaUQ7QUFDakQsa0NBQTBDO0FBQzFDLGtDQUEwQztBQW1EMUMsTUFBYSxJQUFLLFNBQVEsNEJBQStCO0lBQ3ZDLEVBQUUsQ0FBd0I7SUFDMUIsWUFBWSxDQUF3QjtJQUVwRCxZQUFZLElBQVksRUFBRSxJQUFjLEVBQUUsSUFBc0M7UUFDOUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRWhDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUU5QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsWUFBWSxFQUFF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
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
2
|
+
import * as apim from '@pulumi/azure-native/apimanagement';
|
|
3
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
4
|
+
import { ApimPolicyBuilder } from './ApimPolicyBuilder';
|
|
5
|
+
import * as types from '../types';
|
|
6
|
+
export interface ApimApiArgs extends CommonBaseArgs, Omit<apim.ApiArgs, types.CommonProps | 'format' | 'value' | 'isCurrent' | 'apiVersionDescription' | 'apiRevisionDescription' | 'apiVersion' | 'soapApiType' | 'protocols'> {
|
|
7
|
+
apiVersion: 'v1' | 'v2' | 'v3' | string;
|
|
8
|
+
productId?: pulumi.Input<string>;
|
|
9
|
+
enableDiagnostic?: boolean;
|
|
10
|
+
openSpecUrl?: string;
|
|
11
|
+
soapApiType?: apim.SoapApiType;
|
|
12
|
+
protocols?: Array<apim.Protocol>;
|
|
13
|
+
operations?: Array<Omit<apim.ApiOperationArgs, 'policies' | 'apiId' | 'resourceGroupName' | 'serviceName' | 'method' | 'displayName'> & {
|
|
14
|
+
name: string;
|
|
15
|
+
displayName?: pulumi.Input<string>;
|
|
16
|
+
policyBuilder?: (policy: ApimPolicyBuilder) => ApimPolicyBuilder;
|
|
17
|
+
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'TRACE';
|
|
18
|
+
}>;
|
|
19
|
+
policyBuilder?: (policy: ApimPolicyBuilder) => ApimPolicyBuilder;
|
|
20
|
+
}
|
|
21
|
+
export declare class ApimApi extends BaseResourceComponent<ApimApiArgs> {
|
|
22
|
+
readonly id: pulumi.Output<string>;
|
|
23
|
+
readonly resourceName: pulumi.Output<string>;
|
|
24
|
+
constructor(name: string, args: ApimApiArgs, opts?: pulumi.ComponentResourceOptions);
|
|
25
|
+
getOutputs(): {
|
|
26
|
+
id: pulumi.Output<string>;
|
|
27
|
+
resourceName: pulumi.Output<string>;
|
|
28
|
+
};
|
|
29
|
+
private buidApi;
|
|
30
|
+
private buildApiPolicy;
|
|
31
|
+
private buildApiDiagnostic;
|
|
32
|
+
private buildProductLink;
|
|
33
|
+
private buildOperations;
|
|
34
|
+
}
|
package/apim/ApimApi.js
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ApimApi = void 0;
|
|
37
|
+
const base_1 = require("../base");
|
|
38
|
+
const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
|
|
39
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
40
|
+
const openApi = __importStar(require("./openApiHelper"));
|
|
41
|
+
const ApimPolicyBuilder_1 = require("./ApimPolicyBuilder");
|
|
42
|
+
const helpers_1 = require("../helpers");
|
|
43
|
+
class ApimApi extends base_1.BaseResourceComponent {
|
|
44
|
+
id;
|
|
45
|
+
resourceName;
|
|
46
|
+
constructor(name, args, opts) {
|
|
47
|
+
super('ApimApi', name, args, opts);
|
|
48
|
+
const api = this.buidApi();
|
|
49
|
+
this.buildApiPolicy(api);
|
|
50
|
+
this.buildApiDiagnostic(api);
|
|
51
|
+
this.buildProductLink(api);
|
|
52
|
+
this.buildOperations(api);
|
|
53
|
+
this.id = api.id;
|
|
54
|
+
this.resourceName = api.name;
|
|
55
|
+
this.registerOutputs();
|
|
56
|
+
}
|
|
57
|
+
getOutputs() {
|
|
58
|
+
return {
|
|
59
|
+
id: this.id,
|
|
60
|
+
resourceName: this.resourceName,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
buidApi() {
|
|
64
|
+
let { productId, apiId, displayName, description, groupRoles, vaultInfo, rsGroup, apiVersion, apiRevision, serviceUrl, openSpecUrl, protocols, ...others } = this.args;
|
|
65
|
+
if (!apiVersion)
|
|
66
|
+
apiVersion = 'v1';
|
|
67
|
+
if (!apiRevision)
|
|
68
|
+
apiRevision = '1';
|
|
69
|
+
const apiRevName = `${this.name};rev=${apiRevision}`;
|
|
70
|
+
return new apim.Api(this.name, {
|
|
71
|
+
...rsGroup,
|
|
72
|
+
...others,
|
|
73
|
+
apiId: apiId ?? this.name,
|
|
74
|
+
displayName: displayName ?? this.name,
|
|
75
|
+
description: description ?? this.name,
|
|
76
|
+
isCurrent: true,
|
|
77
|
+
protocols: protocols ?? [apim.Protocol.Https],
|
|
78
|
+
apiVersion,
|
|
79
|
+
apiVersionDescription: pulumi.interpolate `The version ${apiVersion} of ${this.name}`,
|
|
80
|
+
apiRevision,
|
|
81
|
+
apiRevisionDescription: pulumi.interpolate `${apiRevName} ${new Date().toLocaleDateString()}`,
|
|
82
|
+
serviceUrl: serviceUrl
|
|
83
|
+
? pulumi.interpolate `${serviceUrl}/${apiVersion}`
|
|
84
|
+
: `https://${helpers_1.stackInfo.organization}.com/${apiVersion}`,
|
|
85
|
+
format: openSpecUrl ? apim.ContentFormat.Openapi_json : undefined,
|
|
86
|
+
value: openSpecUrl ? pulumi.output(openApi.getImportConfig(openSpecUrl, apiVersion)) : undefined,
|
|
87
|
+
}, {
|
|
88
|
+
...this.opts,
|
|
89
|
+
parent: this,
|
|
90
|
+
customTimeouts: { create: '20m', update: '20m' },
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
buildApiPolicy(api) {
|
|
94
|
+
const { policyBuilder, serviceName, apiId, rsGroup } = this.args;
|
|
95
|
+
if (!policyBuilder)
|
|
96
|
+
return;
|
|
97
|
+
return new apim.ApiPolicy(`${this.name}-policy`, {
|
|
98
|
+
...rsGroup,
|
|
99
|
+
serviceName,
|
|
100
|
+
apiId: apiId ?? this.name,
|
|
101
|
+
policyId: 'policy',
|
|
102
|
+
format: 'xml',
|
|
103
|
+
value: policyBuilder(new ApimPolicyBuilder_1.ApimPolicyBuilder()).build(),
|
|
104
|
+
}, { dependsOn: api, deletedWith: api, parent: this });
|
|
105
|
+
}
|
|
106
|
+
buildApiDiagnostic(api) {
|
|
107
|
+
const { rsGroup, serviceName, enableDiagnostic, apiId } = this.args;
|
|
108
|
+
if (!enableDiagnostic)
|
|
109
|
+
return;
|
|
110
|
+
return new apim.ApiDiagnostic(`apim-${this.name}-apiDiagnostic`, {
|
|
111
|
+
...rsGroup,
|
|
112
|
+
serviceName,
|
|
113
|
+
apiId: apiId ?? this.name,
|
|
114
|
+
alwaysLog: apim.AlwaysLog.AllErrors,
|
|
115
|
+
httpCorrelationProtocol: 'W3C',
|
|
116
|
+
operationNameFormat: 'Url',
|
|
117
|
+
logClientIp: true,
|
|
118
|
+
verbosity: 'information',
|
|
119
|
+
loggerId: pulumi.interpolate `/subscriptions/${helpers_1.azureEnv.subscriptionId}/resourceGroups/${rsGroup.resourceGroupName}/providers/Microsoft.ApiManagement/service/${serviceName}/loggers/${serviceName}-appInsight`,
|
|
120
|
+
diagnosticId: 'applicationinsights',
|
|
121
|
+
sampling: {
|
|
122
|
+
percentage: 100,
|
|
123
|
+
samplingType: apim.SamplingType.Fixed,
|
|
124
|
+
},
|
|
125
|
+
}, { dependsOn: api, deletedWith: api, parent: this });
|
|
126
|
+
}
|
|
127
|
+
buildProductLink(api) {
|
|
128
|
+
const { serviceName, productId, apiId, rsGroup } = this.args;
|
|
129
|
+
if (!productId)
|
|
130
|
+
return;
|
|
131
|
+
return new apim.ProductApi(this.name, {
|
|
132
|
+
...rsGroup,
|
|
133
|
+
serviceName,
|
|
134
|
+
productId,
|
|
135
|
+
apiId: apiId ?? this.name,
|
|
136
|
+
}, { dependsOn: api, deletedWith: api, parent: this });
|
|
137
|
+
}
|
|
138
|
+
buildOperations(api) {
|
|
139
|
+
const { operations, serviceName, rsGroup, apiId } = this.args;
|
|
140
|
+
if (!operations?.length)
|
|
141
|
+
return;
|
|
142
|
+
return operations.map((o) => {
|
|
143
|
+
const opsName = o.name.replace(/\//g, '');
|
|
144
|
+
const opsRsName = `${this.name}-ops-${opsName}-${o.method}`.toLowerCase();
|
|
145
|
+
const apiOps = new apim.ApiOperation(opsRsName, {
|
|
146
|
+
...o,
|
|
147
|
+
...rsGroup,
|
|
148
|
+
serviceName,
|
|
149
|
+
operationId: o.operationId ?? opsName,
|
|
150
|
+
apiId: apiId ?? this.name,
|
|
151
|
+
displayName: o.displayName ?? o.name,
|
|
152
|
+
description: o.description ?? o.name,
|
|
153
|
+
urlTemplate: o.urlTemplate ?? o.name,
|
|
154
|
+
request: o.request ?? {
|
|
155
|
+
description: o.name,
|
|
156
|
+
headers: [],
|
|
157
|
+
queryParameters: [],
|
|
158
|
+
representations: [
|
|
159
|
+
{
|
|
160
|
+
contentType: 'application/json',
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
},
|
|
164
|
+
responses: o.responses ?? [
|
|
165
|
+
{
|
|
166
|
+
description: 'successful operation',
|
|
167
|
+
headers: [],
|
|
168
|
+
representations: [
|
|
169
|
+
{
|
|
170
|
+
contentType: 'application/json',
|
|
171
|
+
},
|
|
172
|
+
],
|
|
173
|
+
statusCode: 200,
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
}, { dependsOn: api, deletedWith: api, parent: this });
|
|
177
|
+
if (o.policyBuilder) {
|
|
178
|
+
new apim.ApiOperationPolicy(opsRsName, {
|
|
179
|
+
...rsGroup,
|
|
180
|
+
serviceName,
|
|
181
|
+
operationId: o.operationId ?? opsName,
|
|
182
|
+
apiId: apiId ?? this.name,
|
|
183
|
+
policyId: 'policy',
|
|
184
|
+
format: 'xml',
|
|
185
|
+
value: o.policyBuilder(new ApimPolicyBuilder_1.ApimPolicyBuilder()).build(),
|
|
186
|
+
}, { dependsOn: apiOps });
|
|
187
|
+
}
|
|
188
|
+
return apiOps;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
exports.ApimApi = ApimApi;
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGltL0FwaW1BcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0NBQWdFO0FBQ2hFLHlFQUEyRDtBQUMzRCx1REFBeUM7QUFDekMseURBQTJDO0FBQzNDLDJEQUF3RDtBQUN4RCx3Q0FBaUQ7QUFxQ2pELE1BQWEsT0FBUSxTQUFRLDRCQUFrQztJQUM3QyxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBaUIsRUFBRSxJQUFzQztRQUNqRixLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVPLE9BQU87UUFDYixJQUFJLEVBQ0YsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNY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
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
import * as apim from '@pulumi/azure-native/apimanagement';
|
|
4
|
+
import { ApimApiArgs } from './ApimApi';
|
|
5
|
+
import * as types from '../types';
|
|
6
|
+
export interface ApimApiSetArgs extends CommonBaseArgs, Omit<apim.ApiVersionSetArgs, types.CommonProps | 'displayName' | 'description' | 'versioningScheme'> {
|
|
7
|
+
displayName?: pulumi.Input<string>;
|
|
8
|
+
description?: pulumi.Input<string>;
|
|
9
|
+
productId?: pulumi.Input<string>;
|
|
10
|
+
subscriptionRequired?: boolean;
|
|
11
|
+
versioningScheme?: apim.VersioningScheme;
|
|
12
|
+
enableDiagnostic?: boolean;
|
|
13
|
+
apis: Array<Omit<ApimApiArgs, types.CommonProps | 'productId' | 'serviceName' | 'enableDiagnostic'> & {
|
|
14
|
+
name: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export declare class ApimApiSet extends BaseResourceComponent<ApimApiSetArgs> {
|
|
18
|
+
readonly id: pulumi.Output<string>;
|
|
19
|
+
readonly resourceName: pulumi.Output<string>;
|
|
20
|
+
constructor(name: string, args: ApimApiSetArgs, opts?: pulumi.ComponentResourceOptions);
|
|
21
|
+
getOutputs(): {
|
|
22
|
+
id: pulumi.Output<string>;
|
|
23
|
+
resourceName: pulumi.Output<string>;
|
|
24
|
+
};
|
|
25
|
+
private buildApiSet;
|
|
26
|
+
private buildApis;
|
|
27
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ApimApiSet = void 0;
|
|
37
|
+
const base_1 = require("../base");
|
|
38
|
+
const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
|
|
39
|
+
const ApimApi_1 = require("./ApimApi");
|
|
40
|
+
class ApimApiSet extends base_1.BaseResourceComponent {
|
|
41
|
+
id;
|
|
42
|
+
resourceName;
|
|
43
|
+
constructor(name, args, opts) {
|
|
44
|
+
super('ApimApiSet', name, args, opts);
|
|
45
|
+
const apiSet = this.buildApiSet();
|
|
46
|
+
this.buildApis(apiSet);
|
|
47
|
+
this.id = apiSet.id;
|
|
48
|
+
this.resourceName = apiSet.name;
|
|
49
|
+
this.registerOutputs();
|
|
50
|
+
}
|
|
51
|
+
getOutputs() {
|
|
52
|
+
return {
|
|
53
|
+
id: this.id,
|
|
54
|
+
resourceName: this.resourceName,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
buildApiSet() {
|
|
58
|
+
const { rsGroup, serviceName, versionSetId, displayName, description, versioningScheme, ...others } = this.args;
|
|
59
|
+
//Create ApiSet
|
|
60
|
+
return new apim.ApiVersionSet(this.name, {
|
|
61
|
+
...rsGroup,
|
|
62
|
+
...others,
|
|
63
|
+
serviceName,
|
|
64
|
+
versionSetId: versionSetId ?? this.name,
|
|
65
|
+
displayName: displayName ?? this.name,
|
|
66
|
+
description: description ?? this.name,
|
|
67
|
+
versioningScheme: versioningScheme ?? apim.VersioningScheme.Segment,
|
|
68
|
+
}, { ...this.opts, parent: this });
|
|
69
|
+
}
|
|
70
|
+
buildApis(set) {
|
|
71
|
+
const { apis, rsGroup, serviceName, productId, subscriptionRequired } = this.args;
|
|
72
|
+
if (!apis.length)
|
|
73
|
+
return;
|
|
74
|
+
return apis.map((a) => {
|
|
75
|
+
return new ApimApi_1.ApimApi(a.name, {
|
|
76
|
+
...a,
|
|
77
|
+
rsGroup,
|
|
78
|
+
serviceName,
|
|
79
|
+
productId,
|
|
80
|
+
subscriptionRequired,
|
|
81
|
+
apiVersionSetId: set.id,
|
|
82
|
+
enableDiagnostic: this.args.enableDiagnostic,
|
|
83
|
+
}, { dependsOn: set, deletedWith: set, parent: this });
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.ApimApiSet = ApimApiSet;
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaVNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGltL0FwaW1BcGlTZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0NBQWdFO0FBRWhFLHlFQUEyRDtBQUMzRCx1Q0FBaUQ7QUFpQmpELE1BQWEsVUFBVyxTQUFRLDRCQUFxQztJQUNuRCxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBb0IsRUFBRSxJQUFzQztRQUNwRixLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVztRQUNqQixNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDaEgsZUFBZTtRQUNmLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUMzQixJQUFJLENBQUMsSUFBSSxFQUNUO1lBQ0UsR0FBRyxPQUFPO1lBQ1YsR0FBRyxNQUFNO1lBQ1QsV0FBVztZQUNYLFlBQVksRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLElBQUk7WUFDdkMsV0FBVyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNyQyxXQUFXLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJO1lBQ3JDLGdCQUFnQixFQUFFLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPO1NBQ3BFLEVBQ0QsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVPLFNBQVMsQ0FBQyxHQUF1QjtRQUN2QyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNsRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBRXpCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxpQkFBTyxDQUNoQixDQUFDLENBQUMsSUFBSSxFQUNOO2dCQUNFLEdBQUcsQ0FBQztnQkFDSixPQUFPO2dCQUNQLFdBQVc7Z0JBQ1gsU0FBUztnQkFDVCxvQkFBb0I7Z0JBQ3BCLGVBQWUsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDdkIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7YUFDN0MsRUFDRCxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQ25ELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVERCxnQ0E0REMifQ==
|