@fjall/components-infrastructure 0.43.2 → 0.44.1

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.
@@ -27,41 +27,396 @@ class StandardTagsAspect {
27
27
  }
28
28
  }
29
29
  processCfnResource(resource) {
30
- // List of CloudFormation resource types that don't support tags
30
+ // Comprehensive list of CloudFormation resource types that don't support tags
31
+ // This list is based on AWS CloudFormation documentation and known limitations
31
32
  const unsupportedTypes = [
33
+ // ACM
34
+ 'AWS::CertificateManager::Account',
35
+ // API Gateway
36
+ 'AWS::ApiGateway::Account',
37
+ 'AWS::ApiGateway::BasePathMapping',
38
+ 'AWS::ApiGateway::Deployment',
39
+ 'AWS::ApiGateway::DocumentationPart',
40
+ 'AWS::ApiGateway::DocumentationVersion',
41
+ 'AWS::ApiGateway::GatewayResponse',
42
+ 'AWS::ApiGateway::Method',
43
+ 'AWS::ApiGateway::Model',
44
+ 'AWS::ApiGateway::RequestValidator',
45
+ 'AWS::ApiGateway::Resource',
46
+ 'AWS::ApiGatewayV2::ApiMapping',
47
+ 'AWS::ApiGatewayV2::Authorizer',
48
+ 'AWS::ApiGatewayV2::Deployment',
49
+ 'AWS::ApiGatewayV2::Integration',
50
+ 'AWS::ApiGatewayV2::IntegrationResponse',
51
+ 'AWS::ApiGatewayV2::Model',
52
+ 'AWS::ApiGatewayV2::Route',
53
+ 'AWS::ApiGatewayV2::RouteResponse',
54
+ // AppSync
55
+ 'AWS::AppSync::DataSource',
56
+ 'AWS::AppSync::FunctionConfiguration',
57
+ 'AWS::AppSync::Resolver',
58
+ // Athena
59
+ 'AWS::Athena::PreparedStatement',
32
60
  // CloudFormation
33
- 'AWS::CloudFormation::WaitConditionHandle',
61
+ 'AWS::CloudFormation::CustomResource',
62
+ 'AWS::CloudFormation::Macro',
63
+ 'AWS::CloudFormation::ModuleDefaultVersion',
64
+ 'AWS::CloudFormation::ModuleVersion',
65
+ 'AWS::CloudFormation::PublicTypeVersion',
66
+ 'AWS::CloudFormation::Publisher',
67
+ 'AWS::CloudFormation::ResourceDefaultVersion',
68
+ 'AWS::CloudFormation::ResourceVersion',
69
+ 'AWS::CloudFormation::TypeActivation',
34
70
  'AWS::CloudFormation::WaitCondition',
71
+ 'AWS::CloudFormation::WaitConditionHandle',
72
+ // CloudWatch
73
+ 'AWS::CloudWatch::Alarm',
74
+ 'AWS::CloudWatch::AnomalyDetector',
75
+ 'AWS::CloudWatch::CompositeAlarm',
76
+ 'AWS::CloudWatch::Dashboard',
77
+ 'AWS::CloudWatch::InsightRule',
78
+ 'AWS::CloudWatch::MetricStream',
79
+ // CodeBuild
80
+ 'AWS::CodeBuild::ReportGroup',
81
+ 'AWS::CodeBuild::SourceCredential',
82
+ // CodeDeploy
83
+ 'AWS::CodeDeploy::DeploymentConfig',
84
+ // CodePipeline
85
+ 'AWS::CodePipeline::CustomActionType',
86
+ 'AWS::CodePipeline::Webhook',
87
+ // Cognito
88
+ 'AWS::Cognito::IdentityPoolRoleAttachment',
89
+ 'AWS::Cognito::UserPoolClient',
90
+ 'AWS::Cognito::UserPoolDomain',
91
+ 'AWS::Cognito::UserPoolGroup',
92
+ 'AWS::Cognito::UserPoolIdentityProvider',
93
+ 'AWS::Cognito::UserPoolResourceServer',
94
+ 'AWS::Cognito::UserPoolRiskConfigurationAttachment',
95
+ 'AWS::Cognito::UserPoolUICustomizationAttachment',
96
+ 'AWS::Cognito::UserPoolUser',
97
+ 'AWS::Cognito::UserPoolUserToGroupAttachment',
98
+ // Config
99
+ 'AWS::Config::AggregationAuthorization',
100
+ 'AWS::Config::ConfigurationAggregator',
101
+ 'AWS::Config::ConformancePack',
102
+ 'AWS::Config::OrganizationConformancePack',
103
+ 'AWS::Config::RemediationConfiguration',
104
+ 'AWS::Config::StoredQuery',
105
+ // DynamoDB
106
+ 'AWS::DynamoDB::GlobalTable',
107
+ // EC2
108
+ 'AWS::EC2::CapacityReservationFleet',
109
+ 'AWS::EC2::CarrierGateway',
110
+ 'AWS::EC2::DHCPOptions',
111
+ 'AWS::EC2::EC2Fleet',
112
+ 'AWS::EC2::EgressOnlyInternetGateway',
113
+ 'AWS::EC2::EIPAssociation',
114
+ 'AWS::EC2::EnclaveCertificateIamRoleAssociation',
115
+ 'AWS::EC2::FlowLog',
116
+ 'AWS::EC2::GatewayRouteTableAssociation',
117
+ 'AWS::EC2::InstanceConnectEndpoint',
118
+ 'AWS::EC2::KeyPair',
119
+ 'AWS::EC2::LaunchTemplate',
120
+ 'AWS::EC2::NetworkInsightsAccessScope',
121
+ 'AWS::EC2::NetworkInsightsAccessScopeAnalysis',
122
+ 'AWS::EC2::NetworkInsightsAnalysis',
123
+ 'AWS::EC2::NetworkInsightsPath',
124
+ 'AWS::EC2::NetworkInterfaceAttachment',
125
+ 'AWS::EC2::NetworkInterfacePermission',
126
+ 'AWS::EC2::PlacementGroup',
127
+ 'AWS::EC2::Route',
128
+ 'AWS::EC2::SecurityGroupEgress',
129
+ 'AWS::EC2::SecurityGroupIngress',
130
+ 'AWS::EC2::SubnetCidrBlock',
131
+ 'AWS::EC2::SubnetNetworkAclAssociation',
132
+ 'AWS::EC2::SubnetRouteTableAssociation',
133
+ 'AWS::EC2::TransitGatewayAttachment',
134
+ 'AWS::EC2::TransitGatewayConnect',
135
+ 'AWS::EC2::TransitGatewayMulticastDomain',
136
+ 'AWS::EC2::TransitGatewayMulticastDomainAssociation',
137
+ 'AWS::EC2::TransitGatewayMulticastGroupMember',
138
+ 'AWS::EC2::TransitGatewayMulticastGroupSource',
139
+ 'AWS::EC2::TransitGatewayPeeringAttachment',
140
+ 'AWS::EC2::TransitGatewayRoute',
141
+ 'AWS::EC2::TransitGatewayRouteTable',
142
+ 'AWS::EC2::TransitGatewayRouteTableAssociation',
143
+ 'AWS::EC2::TransitGatewayRouteTablePropagation',
144
+ 'AWS::EC2::TransitGatewayVpcAttachment',
145
+ 'AWS::EC2::VerifiedAccessEndpoint',
146
+ 'AWS::EC2::VerifiedAccessGroup',
147
+ 'AWS::EC2::VerifiedAccessInstance',
148
+ 'AWS::EC2::VerifiedAccessTrustProvider',
149
+ 'AWS::EC2::VolumeAttachment',
150
+ 'AWS::EC2::VPCCidrBlock',
151
+ 'AWS::EC2::VPCDHCPOptionsAssociation',
152
+ 'AWS::EC2::VPCEndpointConnectionNotification',
153
+ 'AWS::EC2::VPCEndpointService',
154
+ 'AWS::EC2::VPCEndpointServicePermissions',
155
+ 'AWS::EC2::VPCGatewayAttachment',
156
+ 'AWS::EC2::VPNConnectionRoute',
157
+ 'AWS::EC2::VPNGatewayRoutePropagation',
158
+ // ECR
159
+ 'AWS::ECR::PublicRepository',
160
+ 'AWS::ECR::PullThroughCacheRule',
161
+ 'AWS::ECR::RegistryPolicy',
162
+ 'AWS::ECR::ReplicationConfiguration',
163
+ // ECS
164
+ 'AWS::ECS::AccountSetting',
165
+ 'AWS::ECS::CapacityProvider',
166
+ 'AWS::ECS::ClusterCapacityProviderAssociations',
167
+ 'AWS::ECS::PrimaryTaskSet',
168
+ 'AWS::ECS::TaskSet',
169
+ // EFS
170
+ 'AWS::EFS::AccessPoint',
171
+ 'AWS::EFS::MountTarget',
172
+ // EKS
173
+ 'AWS::EKS::Addon',
174
+ 'AWS::EKS::FargateProfile',
175
+ 'AWS::EKS::IdentityProviderConfig',
176
+ // ElastiCache
177
+ 'AWS::ElastiCache::ParameterGroup',
178
+ 'AWS::ElastiCache::SecurityGroup',
179
+ 'AWS::ElastiCache::SecurityGroupIngress',
180
+ 'AWS::ElastiCache::SubnetGroup',
181
+ // ElasticBeanstalk
182
+ 'AWS::ElasticBeanstalk::ApplicationVersion',
183
+ 'AWS::ElasticBeanstalk::ConfigurationTemplate',
184
+ // ElasticLoadBalancingV2
185
+ 'AWS::ElasticLoadBalancingV2::Listener',
186
+ 'AWS::ElasticLoadBalancingV2::ListenerCertificate',
187
+ 'AWS::ElasticLoadBalancingV2::ListenerRule',
188
+ 'AWS::ElasticLoadBalancingV2::TargetGroupAttachment',
189
+ // EventBridge (Events)
190
+ 'AWS::Events::ApiDestination',
191
+ 'AWS::Events::Archive',
192
+ 'AWS::Events::Connection',
193
+ 'AWS::Events::Endpoint',
194
+ 'AWS::Events::EventBusPolicy',
195
+ 'AWS::Events::Rule',
196
+ // FSx
197
+ 'AWS::FSx::DataRepositoryAssociation',
198
+ 'AWS::FSx::Snapshot',
199
+ 'AWS::FSx::StorageVirtualMachine',
200
+ 'AWS::FSx::Volume',
201
+ // GameLift
202
+ 'AWS::GameLift::GameServerGroup',
203
+ 'AWS::GameLift::Location',
204
+ // Glue
205
+ 'AWS::Glue::Connection',
206
+ 'AWS::Glue::Database',
207
+ 'AWS::Glue::DataCatalogEncryptionSettings',
208
+ 'AWS::Glue::Partition',
209
+ 'AWS::Glue::SchemaVersion',
210
+ 'AWS::Glue::SchemaVersionMetadata',
211
+ 'AWS::Glue::SecurityConfiguration',
212
+ 'AWS::Glue::Table',
213
+ 'AWS::Glue::UserDefinedFunction',
214
+ // GuardDuty
215
+ 'AWS::GuardDuty::Detector',
216
+ 'AWS::GuardDuty::Filter',
217
+ 'AWS::GuardDuty::IPSet',
218
+ 'AWS::GuardDuty::Master',
219
+ 'AWS::GuardDuty::Member',
220
+ 'AWS::GuardDuty::ThreatIntelSet',
35
221
  // IAM
222
+ 'AWS::IAM::AccessKey',
223
+ 'AWS::IAM::Group',
224
+ 'AWS::IAM::GroupPolicy',
225
+ 'AWS::IAM::InstanceProfile',
226
+ 'AWS::IAM::ManagedPolicy',
227
+ 'AWS::IAM::OIDCProvider',
36
228
  'AWS::IAM::Policy',
37
229
  'AWS::IAM::Role',
230
+ 'AWS::IAM::RolePolicy',
231
+ 'AWS::IAM::SAMLProvider',
232
+ 'AWS::IAM::ServerCertificate',
233
+ 'AWS::IAM::ServiceLinkedRole',
38
234
  'AWS::IAM::User',
39
- 'AWS::IAM::Group',
40
- 'AWS::IAM::ManagedPolicy',
41
- 'AWS::IAM::InstanceProfile',
235
+ 'AWS::IAM::UserPolicy',
236
+ 'AWS::IAM::UserToGroupAddition',
237
+ 'AWS::IAM::VirtualMFADevice',
238
+ // IoT
239
+ 'AWS::IoT::AccountAuditConfiguration',
240
+ 'AWS::IoT::Authorizer',
241
+ 'AWS::IoT::Certificate',
242
+ 'AWS::IoT::CustomMetric',
243
+ 'AWS::IoT::Dimension',
244
+ 'AWS::IoT::DomainConfiguration',
245
+ 'AWS::IoT::FleetMetric',
246
+ 'AWS::IoT::JobTemplate',
247
+ 'AWS::IoT::Logging',
248
+ 'AWS::IoT::MitigationAction',
249
+ 'AWS::IoT::Policy',
250
+ 'AWS::IoT::PolicyPrincipalAttachment',
251
+ 'AWS::IoT::ProvisioningTemplate',
252
+ 'AWS::IoT::ResourceSpecificLogging',
253
+ 'AWS::IoT::RoleAlias',
254
+ 'AWS::IoT::ScheduledAudit',
255
+ 'AWS::IoT::SecurityProfile',
256
+ 'AWS::IoT::Thing',
257
+ 'AWS::IoT::ThingGroup',
258
+ 'AWS::IoT::ThingPrincipalAttachment',
259
+ 'AWS::IoT::ThingType',
260
+ 'AWS::IoT::TopicRule',
261
+ 'AWS::IoT::TopicRuleDestination',
262
+ // KMS
263
+ 'AWS::KMS::Alias',
264
+ 'AWS::KMS::Grant',
265
+ 'AWS::KMS::ReplicaKey',
42
266
  // Lambda
267
+ 'AWS::Lambda::CodeSigningConfig',
268
+ 'AWS::Lambda::EventInvokeConfig',
269
+ 'AWS::Lambda::EventSourceMapping',
270
+ 'AWS::Lambda::LayerVersion',
271
+ 'AWS::Lambda::LayerVersionPermission',
43
272
  'AWS::Lambda::Permission',
273
+ 'AWS::Lambda::ProvisionedConcurrencyConfig',
274
+ 'AWS::Lambda::Url',
275
+ 'AWS::Lambda::Version',
44
276
  // Logs
277
+ 'AWS::Logs::AccountPolicy',
278
+ 'AWS::Logs::Destination',
45
279
  'AWS::Logs::LogGroup',
46
280
  'AWS::Logs::LogStream',
47
- // Events
48
- 'AWS::Events::Rule',
281
+ 'AWS::Logs::MetricFilter',
282
+ 'AWS::Logs::QueryDefinition',
283
+ 'AWS::Logs::ResourcePolicy',
284
+ 'AWS::Logs::SubscriptionFilter',
285
+ // Macie
286
+ 'AWS::Macie::AllowList',
287
+ 'AWS::Macie::CustomDataIdentifier',
288
+ 'AWS::Macie::FindingsFilter',
289
+ 'AWS::Macie::Session',
290
+ // Neptune
291
+ 'AWS::Neptune::DBClusterParameterGroup',
292
+ 'AWS::Neptune::DBParameterGroup',
293
+ 'AWS::Neptune::DBSubnetGroup',
294
+ // Organizations
295
+ 'AWS::Organizations::Account',
296
+ 'AWS::Organizations::Organization',
297
+ 'AWS::Organizations::OrganizationalUnit',
298
+ 'AWS::Organizations::Policy',
299
+ 'AWS::Organizations::ResourcePolicy',
300
+ // RDS
301
+ 'AWS::RDS::DBClusterParameterGroup',
302
+ 'AWS::RDS::DBParameterGroup',
303
+ 'AWS::RDS::DBSecurityGroup',
304
+ 'AWS::RDS::DBSecurityGroupIngress',
305
+ 'AWS::RDS::DBSubnetGroup',
306
+ 'AWS::RDS::EventSubscription',
307
+ 'AWS::RDS::GlobalCluster',
308
+ 'AWS::RDS::OptionGroup',
309
+ // Redshift
310
+ 'AWS::Redshift::ClusterParameterGroup',
311
+ 'AWS::Redshift::ClusterSecurityGroup',
312
+ 'AWS::Redshift::ClusterSecurityGroupIngress',
313
+ 'AWS::Redshift::ClusterSubnetGroup',
314
+ 'AWS::Redshift::EndpointAccess',
315
+ 'AWS::Redshift::EndpointAuthorization',
316
+ 'AWS::Redshift::EventSubscription',
317
+ 'AWS::Redshift::ScheduledAction',
49
318
  // Route53
319
+ 'AWS::Route53::DNSSEC',
320
+ 'AWS::Route53::HealthCheck',
321
+ 'AWS::Route53::HostedZone',
322
+ 'AWS::Route53::KeySigningKey',
50
323
  'AWS::Route53::RecordSet',
51
324
  'AWS::Route53::RecordSetGroup',
52
- // CloudWatch
53
- 'AWS::CloudWatch::Alarm',
54
- 'AWS::CloudWatch::Dashboard',
55
- // EC2 - Network associations and routes
56
- 'AWS::EC2::Route',
57
- 'AWS::EC2::SubnetRouteTableAssociation',
58
- 'AWS::EC2::VPCGatewayAttachment',
59
- 'AWS::EC2::VPCCidrBlock',
60
- 'AWS::EC2::SubnetCidrBlock',
61
- 'AWS::EC2::NetworkInterfaceAttachment',
62
- 'AWS::EC2::VPCEndpointConnectionNotification',
63
- 'AWS::EC2::TransitGatewayRouteTableAssociation',
64
- 'AWS::EC2::TransitGatewayRouteTablePropagation'
325
+ // Route53Resolver
326
+ 'AWS::Route53Resolver::FirewallDomainList',
327
+ 'AWS::Route53Resolver::FirewallRuleGroup',
328
+ 'AWS::Route53Resolver::FirewallRuleGroupAssociation',
329
+ 'AWS::Route53Resolver::ResolverConfig',
330
+ 'AWS::Route53Resolver::ResolverDNSSECConfig',
331
+ 'AWS::Route53Resolver::ResolverQueryLoggingConfig',
332
+ 'AWS::Route53Resolver::ResolverQueryLoggingConfigAssociation',
333
+ 'AWS::Route53Resolver::ResolverRule',
334
+ 'AWS::Route53Resolver::ResolverRuleAssociation',
335
+ // S3
336
+ 'AWS::S3::AccessPoint',
337
+ 'AWS::S3::BucketPolicy',
338
+ 'AWS::S3::MultiRegionAccessPoint',
339
+ 'AWS::S3::MultiRegionAccessPointPolicy',
340
+ 'AWS::S3::StorageLens',
341
+ // SDB
342
+ 'AWS::SDB::Domain',
343
+ // SecretsManager
344
+ 'AWS::SecretsManager::ResourcePolicy',
345
+ 'AWS::SecretsManager::RotationSchedule',
346
+ 'AWS::SecretsManager::SecretTargetAttachment',
347
+ // SecurityHub
348
+ 'AWS::SecurityHub::Hub',
349
+ // ServiceCatalog
350
+ 'AWS::ServiceCatalog::AcceptedPortfolioShare',
351
+ 'AWS::ServiceCatalog::LaunchNotificationConstraint',
352
+ 'AWS::ServiceCatalog::LaunchRoleConstraint',
353
+ 'AWS::ServiceCatalog::LaunchTemplateConstraint',
354
+ 'AWS::ServiceCatalog::PortfolioPrincipalAssociation',
355
+ 'AWS::ServiceCatalog::PortfolioProductAssociation',
356
+ 'AWS::ServiceCatalog::PortfolioShare',
357
+ 'AWS::ServiceCatalog::ResourceUpdateConstraint',
358
+ 'AWS::ServiceCatalog::ServiceAction',
359
+ 'AWS::ServiceCatalog::ServiceActionAssociation',
360
+ 'AWS::ServiceCatalog::StackSetConstraint',
361
+ 'AWS::ServiceCatalog::TagOption',
362
+ 'AWS::ServiceCatalog::TagOptionAssociation',
363
+ // SES
364
+ 'AWS::SES::ConfigurationSet',
365
+ 'AWS::SES::ConfigurationSetEventDestination',
366
+ 'AWS::SES::ContactList',
367
+ 'AWS::SES::DedicatedIpPool',
368
+ 'AWS::SES::EmailIdentity',
369
+ 'AWS::SES::ReceiptFilter',
370
+ 'AWS::SES::ReceiptRule',
371
+ 'AWS::SES::ReceiptRuleSet',
372
+ 'AWS::SES::Template',
373
+ 'AWS::SES::VdmAttributes',
374
+ // SNS
375
+ 'AWS::SNS::Subscription',
376
+ 'AWS::SNS::TopicPolicy',
377
+ // SQS
378
+ 'AWS::SQS::QueuePolicy',
379
+ // SSM
380
+ 'AWS::SSM::Association',
381
+ 'AWS::SSM::Document',
382
+ 'AWS::SSM::MaintenanceWindow',
383
+ 'AWS::SSM::MaintenanceWindowTarget',
384
+ 'AWS::SSM::MaintenanceWindowTask',
385
+ 'AWS::SSM::Parameter',
386
+ 'AWS::SSM::PatchBaseline',
387
+ 'AWS::SSM::ResourceDataSync',
388
+ 'AWS::SSM::ResourcePolicy',
389
+ // SSO
390
+ 'AWS::SSO::Assignment',
391
+ 'AWS::SSO::InstanceAccessControlAttributeConfiguration',
392
+ 'AWS::SSO::PermissionSet',
393
+ // StepFunctions
394
+ 'AWS::StepFunctions::Activity',
395
+ // WAF/WAFv2
396
+ 'AWS::WAF::ByteMatchSet',
397
+ 'AWS::WAF::IPSet',
398
+ 'AWS::WAF::Rule',
399
+ 'AWS::WAF::SizeConstraintSet',
400
+ 'AWS::WAF::SqlInjectionMatchSet',
401
+ 'AWS::WAF::WebACL',
402
+ 'AWS::WAF::XssMatchSet',
403
+ 'AWS::WAFRegional::ByteMatchSet',
404
+ 'AWS::WAFRegional::GeoMatchSet',
405
+ 'AWS::WAFRegional::IPSet',
406
+ 'AWS::WAFRegional::RateBasedRule',
407
+ 'AWS::WAFRegional::RegexPatternSet',
408
+ 'AWS::WAFRegional::Rule',
409
+ 'AWS::WAFRegional::SizeConstraintSet',
410
+ 'AWS::WAFRegional::SqlInjectionMatchSet',
411
+ 'AWS::WAFRegional::WebACL',
412
+ 'AWS::WAFRegional::WebACLAssociation',
413
+ 'AWS::WAFRegional::XssMatchSet',
414
+ 'AWS::WAFv2::IPSet',
415
+ 'AWS::WAFv2::LoggingConfiguration',
416
+ 'AWS::WAFv2::RegexPatternSet',
417
+ 'AWS::WAFv2::RuleGroup',
418
+ 'AWS::WAFv2::WebACL',
419
+ 'AWS::WAFv2::WebACLAssociation'
65
420
  ];
66
421
  if (unsupportedTypes.includes(resource.cfnResourceType)) {
67
422
  return;
@@ -111,4 +466,4 @@ class StandardTagsAspect {
111
466
  }
112
467
  }
113
468
  exports.StandardTagsAspect = StandardTagsAspect;
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRUYWdzQXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL3N0YW5kYXJkVGFnc0FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEQ7QUFHMUQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsa0JBQWtCO0lBSTdCLFlBQVksWUFBdUM7UUFGbEMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBRzNELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBZ0I7UUFDcEIsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLHlCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQW1CLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFFBQXFCO1FBQzlDLGdFQUFnRTtRQUNoRSxNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLGlCQUFpQjtZQUNqQiwwQ0FBMEM7WUFDMUMsb0NBQW9DO1lBQ3BDLE1BQU07WUFDTixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIseUJBQXlCO1lBQ3pCLDJCQUEyQjtZQUMzQixTQUFTO1lBQ1QseUJBQXlCO1lBQ3pCLE9BQU87WUFDUCxxQkFBcUI7WUFDckIsc0JBQXNCO1lBQ3RCLFNBQVM7WUFDVCxtQkFBbUI7WUFDbkIsVUFBVTtZQUNWLHlCQUF5QjtZQUN6Qiw4QkFBOEI7WUFDOUIsYUFBYTtZ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Q0FBQyxDQUFDLENBQUM7UUFFSCxtQ0FBbUM7UUFDbkMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pELEdBQUcsRUFBRSxHQUFHO1lBQ1IsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQWhIRCxnREFnSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQXNwZWN0LCBDZm5SZXNvdXJjZSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIEFzcGVjdCB0byBlbmZvcmNlIGEgc3RhbmRhcmQgc2V0IG9mIHRhZ3Mgb24gZXZlcnkgdGFnLWNhcGFibGUgcmVzb3VyY2UgaW4gYSBjb25zdHJ1Y3QgdHJlZS5cbiAqIFxuICogVXBkYXRlZCBmb3IgQ0RLIHYyLjIwNi4wKyBjb21wYXRpYmlsaXR5OlxuICogLSBBdm9pZHMgdXNpbmcgYW55IHRhZ2dpbmcgQVBJcyBkdXJpbmcgYXNwZWN0IHZpc2l0YXRpb24gdG8gcHJldmVudCBpbmZpbml0ZSBsb29wc1xuICogLSBVc2VzIGEgc3ludGhlc2lzLXRpbWUgYXBwcm9hY2ggdG8gbW9kaWZ5IENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlc1xuICogLSBNYWludGFpbnMgdGhlIHNhbWUgY2xlYW4gQVBJIGFuZCBhdXRvbWF0aWMgdGFnZ2luZyBiZW5lZml0c1xuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRUYWdzQXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWlyZWRUYWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwcml2YXRlIHJlYWRvbmx5IHRhZ2dlZFJlc291cmNlcyA9IG5ldyBXZWFrU2V0PElDb25zdHJ1Y3Q+KCk7XG5cbiAgY29uc3RydWN0b3IocmVxdWlyZWRUYWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5yZXF1aXJlZFRhZ3MgPSByZXF1aXJlZFRhZ3M7XG4gIH1cblxuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgLy8gU2tpcCBpZiBhbHJlYWR5IHByb2Nlc3NlZFxuICAgIGlmICh0aGlzLnRhZ2dlZFJlc291cmNlcy5oYXMobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gUHJvY2VzcyBMMSAoQ0ZOKSByZXNvdXJjZXMgb25seVxuICAgIGlmIChDZm5SZXNvdXJjZS5pc0NmblJlc291cmNlKG5vZGUpKSB7XG4gICAgICB0aGlzLnByb2Nlc3NDZm5SZXNvdXJjZShub2RlIGFzIENmblJlc291cmNlKTtcbiAgICAgIHRoaXMudGFnZ2VkUmVzb3VyY2VzLmFkZChub2RlKTtcbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgcHJvY2Vzc0NmblJlc291cmNlKHJlc291cmNlOiBDZm5SZXNvdXJjZSk6IHZvaWQge1xuICAgIC8vIExpc3Qgb2YgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZXMgdGhhdCBkb24ndCBzdXBwb3J0IHRhZ3NcbiAgICBjb25zdCB1bnN1cHBvcnRlZFR5cGVzID0gW1xuICAgICAgLy8gQ2xvdWRGb3JtYXRpb25cbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uSGFuZGxlJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uJyxcbiAgICAgIC8vIElBTVxuICAgICAgJ0FXUzo6SUFNOjpQb2xpY3knLFxuICAgICAgJ0FXUzo6SUFNOjpSb2xlJyxcbiAgICAgICdBV1M6OklBTTo6VXNlcicsXG4gICAgICAnQVdTOjpJQU06Okdyb3VwJyxcbiAgICAgICdBV1M6OklBTTo6TWFuYWdlZFBvbGljeScsXG4gICAgICAnQVdTOjpJQU06Okluc3RhbmNlUHJvZmlsZScsXG4gICAgICAvLyBMYW1iZGFcbiAgICAgICdBV1M6OkxhbWJkYTo6UGVybWlzc2lvbicsXG4gICAgICAvLyBMb2dzXG4gICAgICAnQVdTOjpMb2dzOjpMb2dHcm91cCcsXG4gICAgICAnQVdTOjpMb2dzOjpMb2dTdHJlYW0nLFxuICAgICAgLy8gRXZlbnRzXG4gICAgICAnQVdTOjpFdmVudHM6OlJ1bGUnLFxuICAgICAgLy8gUm91dGU1M1xuICAgICAgJ0FXUzo6Um91dGU1Mzo6UmVjb3JkU2V0JyxcbiAgICAgICdBV1M6OlJvdXRlNTM6OlJlY29yZFNldEdyb3VwJyxcbiAgICAgIC8vIENsb3VkV2F0Y2hcbiAgICAgICdBV1M6OkNsb3VkV2F0Y2g6OkFsYXJtJyxcbiAgICAgICdBV1M6OkNsb3VkV2F0Y2g6OkRhc2hib2FyZCcsXG4gICAgICAvLyBFQzIgLSBOZXR3b3JrIGFzc29jaWF0aW9ucyBhbmQgcm91dGVzXG4gICAgICAnQVdTOjpFQzI6OlJvdXRlJyxcbiAgICAgICdBV1M6OkVDMjo6U3VibmV0Um91dGVUYWJsZUFzc29jaWF0aW9uJyxcbiAgICAgICdBV1M6OkVDMjo6VlBDR2F0ZXdheUF0dGFjaG1lbnQnLFxuICAgICAgJ0FXUzo6RUMyOjpWUENDaWRyQmxvY2snLFxuICAgICAgJ0FXUzo6RUMyOjpTdWJuZXRDaWRyQmxvY2snLFxuICAgICAgJ0FXUzo6RUMyOjpOZXR3b3JrSW50ZXJmYWNlQXR0YWNobWVudCcsXG4gICAgICAnQVdTOjpFQzI6OlZQQ0VuZHBvaW50Q29ubmVjdGlvbk5vdGlmaWNhdGlvbicsXG4gICAgICAnQVdTOjpFQzI6OlRyYW5zaXRHYXRld2F5Um91dGVUYWJsZUFzc29jaWF0aW9uJyxcbiAgICAgICdBV1M6OkVDMjo6VHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlUHJvcGFnYXRpb24nXG4gICAgXTtcbiAgICBcbiAgICBpZiAodW5zdXBwb3J0ZWRUeXBlcy5pbmNsdWRlcyhyZXNvdXJjZS5jZm5SZXNvdXJjZVR5cGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIEFkZCBhIHN5bnRoZXNpcyBob29rIHRvIG1vZGlmeSB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHJlc291cmNlKTtcbiAgICBjb25zdCBsb2dpY2FsSWQgPSBzdGFjay5nZXRMb2dpY2FsSWQocmVzb3VyY2UpO1xuICAgIFxuICAgIC8vIFVzZSBhZGRUcmFuc2Zvcm0gdG8gYWRkIHRhZ3MgZHVyaW5nIHN5bnRoZXNpc1xuICAgIHJlc291cmNlLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ1RhZ3MnLCB0aGlzLmJ1aWxkVGFnc0FycmF5KHJlc291cmNlKSk7XG4gIH1cbiAgXG4gIHByaXZhdGUgYnVpbGRUYWdzQXJyYXkocmVzb3VyY2U6IENmblJlc291cmNlKTogYW55W10ge1xuICAgIGNvbnN0IHRhZ01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgXG4gICAgLy8gR2V0IGFueSBleGlzdGluZyB0YWdzIGlmIHRoZXkgZXhpc3RcbiAgICBjb25zdCBleGlzdGluZ1RhZ3MgPSAocmVzb3VyY2UgYXMgYW55KS50YWdzIHx8IFtdO1xuICAgIFxuICAgIC8vIFByb2Nlc3MgZXhpc3RpbmcgdGFncyBpZiB0aGV5J3JlIGluIGFycmF5IGZvcm1hdFxuICAgIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nVGFncykpIHtcbiAgICAgIGV4aXN0aW5nVGFncy5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGFnICYmIHR5cGVvZiB0YWcgPT09ICdvYmplY3QnICYmICdLZXknIGluIHRhZyAmJiAnVmFsdWUnIGluIHRhZykge1xuICAgICAgICAgIHRhZ01hcC5zZXQodGFnLktleSwgdGFnLlZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWcgJiYgdHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgJiYgJ2tleScgaW4gdGFnICYmICd2YWx1ZScgaW4gdGFnKSB7XG4gICAgICAgICAgdGFnTWFwLnNldCh0YWcua2V5LCB0YWcudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIGRpcmVjdCB0YWdzIGluIG1ldGFkYXRhXG4gICAgY29uc3QgbWV0YWRhdGEgPSByZXNvdXJjZS5ub2RlLm1ldGFkYXRhO1xuICAgIGNvbnN0IGRpcmVjdFRhZ3NNZXRhZGF0YSA9IG1ldGFkYXRhLmZpbHRlcihtID0+IG0udHlwZSA9PT0gJ2ZqYWxsOmRpcmVjdC10YWdzJyk7XG4gICAgZGlyZWN0VGFnc01ldGFkYXRhLmZvckVhY2gobSA9PiB7XG4gICAgICBpZiAobS5kYXRhICYmIHR5cGVvZiBtLmRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKG0uZGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRhZ01hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICAvLyBBZGQgcmVxdWlyZWQgdGFncyAob3ZlcndyaXRpbmcgaWYgdGhleSBleGlzdClcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLnJlcXVpcmVkVGFncykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICB0YWdNYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIENvbnZlcnQgdG8gQ2xvdWRGb3JtYXRpb24gZm9ybWF0XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGFnTWFwLmVudHJpZXMoKSkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICBLZXk6IGtleSxcbiAgICAgIFZhbHVlOiB2YWx1ZVxuICAgIH0pKTtcbiAgfVxufVxuIl19
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRUYWdzQXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL3N0YW5kYXJkVGFnc0FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBMEQ7QUFHMUQ7Ozs7Ozs7R0FPRztBQUNILE1BQWEsa0JBQWtCO0lBSTdCLFlBQVksWUFBdUM7UUFGbEMsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBRzNELElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBZ0I7UUFDcEIsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxJQUFJLHlCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQW1CLENBQUMsQ0FBQztZQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFFBQXFCO1FBQzlDLDhFQUE4RTtRQUM5RSwrRUFBK0U7UUFDL0UsTUFBTSxnQkFBZ0IsR0FBRztZQUN2QixNQUFNO1lBQ04sa0NBQWtDO1lBRWxDLGNBQWM7WUFDZCwwQkFBMEI7WUFDMUIsa0NBQWtDO1lBQ2xDLDZCQUE2QjtZQUM3QixvQ0FBb0M7WUFDcEMsdUNBQXVDO1lBQ3ZDLGtDQUFrQztZQUNsQyx5QkFBeUI7WUFDekIsd0JBQXdCO1lBQ3hCLG1DQUFtQztZQUNuQywyQkFBMkI7WUFDM0IsK0JBQStCO1lBQy9CLCtCQUErQjtZQUMvQiwrQkFBK0I7WUFDL0IsZ0NBQWdDO1lBQ2hDLHdDQUF3QztZQUN4QywwQkFBMEI7WUFD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QyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsbUNBQW1DO1FBQ25DLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6RCxHQUFHLEVBQUUsR0FBRztZQUNSLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0Y7QUFuZ0JELGdEQW1nQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQXNwZWN0LCBDZm5SZXNvdXJjZSwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIEFzcGVjdCB0byBlbmZvcmNlIGEgc3RhbmRhcmQgc2V0IG9mIHRhZ3Mgb24gZXZlcnkgdGFnLWNhcGFibGUgcmVzb3VyY2UgaW4gYSBjb25zdHJ1Y3QgdHJlZS5cbiAqIFxuICogVXBkYXRlZCBmb3IgQ0RLIHYyLjIwNi4wKyBjb21wYXRpYmlsaXR5OlxuICogLSBBdm9pZHMgdXNpbmcgYW55IHRhZ2dpbmcgQVBJcyBkdXJpbmcgYXNwZWN0IHZpc2l0YXRpb24gdG8gcHJldmVudCBpbmZpbml0ZSBsb29wc1xuICogLSBVc2VzIGEgc3ludGhlc2lzLXRpbWUgYXBwcm9hY2ggdG8gbW9kaWZ5IENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlc1xuICogLSBNYWludGFpbnMgdGhlIHNhbWUgY2xlYW4gQVBJIGFuZCBhdXRvbWF0aWMgdGFnZ2luZyBiZW5lZml0c1xuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRUYWdzQXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVxdWlyZWRUYWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICBwcml2YXRlIHJlYWRvbmx5IHRhZ2dlZFJlc291cmNlcyA9IG5ldyBXZWFrU2V0PElDb25zdHJ1Y3Q+KCk7XG5cbiAgY29uc3RydWN0b3IocmVxdWlyZWRUYWdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgdGhpcy5yZXF1aXJlZFRhZ3MgPSByZXF1aXJlZFRhZ3M7XG4gIH1cblxuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgLy8gU2tpcCBpZiBhbHJlYWR5IHByb2Nlc3NlZFxuICAgIGlmICh0aGlzLnRhZ2dlZFJlc291cmNlcy5oYXMobm9kZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gUHJvY2VzcyBMMSAoQ0ZOKSByZXNvdXJjZXMgb25seVxuICAgIGlmIChDZm5SZXNvdXJjZS5pc0NmblJlc291cmNlKG5vZGUpKSB7XG4gICAgICB0aGlzLnByb2Nlc3NDZm5SZXNvdXJjZShub2RlIGFzIENmblJlc291cmNlKTtcbiAgICAgIHRoaXMudGFnZ2VkUmVzb3VyY2VzLmFkZChub2RlKTtcbiAgICB9XG4gIH1cbiAgXG4gIHByaXZhdGUgcHJvY2Vzc0NmblJlc291cmNlKHJlc291cmNlOiBDZm5SZXNvdXJjZSk6IHZvaWQge1xuICAgIC8vIENvbXByZWhlbnNpdmUgbGlzdCBvZiBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlcyB0aGF0IGRvbid0IHN1cHBvcnQgdGFnc1xuICAgIC8vIFRoaXMgbGlzdCBpcyBiYXNlZCBvbiBBV1MgQ2xvdWRGb3JtYXRpb24gZG9jdW1lbnRhdGlvbiBhbmQga25vd24gbGltaXRhdGlvbnNcbiAgICBjb25zdCB1bnN1cHBvcnRlZFR5cGVzID0gW1xuICAgICAgLy8gQUNNXG4gICAgICAnQVdTOjpDZXJ0aWZpY2F0ZU1hbmFnZXI6OkFjY291bnQnLFxuICAgICAgXG4gICAgICAvLyBBUEkgR2F0ZXdheVxuICAgICAgJ0FXUzo6QXBpR2F0ZXdheTo6QWNjb3VudCcsXG4gICAgICAnQVdTOjpBcGlHYXRld2F5OjpCYXNlUGF0aE1hcHBpbmcnLFxuICAgICAgJ0FXUzo6QXBpR2F0ZXdheTo6RGVwbG95bWVudCcsXG4gICAgICAnQVdTOjpBcGlHYXRld2F5OjpEb2N1bWVudGF0aW9uUGFydCcsXG4gICAgICAnQVdTOjpBcGlHYXRld2F5OjpEb2N1bWVudGF0aW9uVmVyc2lvbicsXG4gICAgICAnQVdTOjpBcGlHYXRld2F5OjpHYXRld2F5UmVzcG9uc2UnLFxuICAgICAgJ0FXUzo6QXBpR2F0ZXdheTo6TWV0aG9kJyxcbiAgICAgICdBV1M6OkFwaUdhdGV3YXk6Ok1vZGVsJyxcbiAgICAgICdBV1M6OkFwaUdhdGV3YXk6OlJlcXVlc3RWYWxpZGF0b3InLFxuICAgICAgJ0FXUzo6QXBpR2F0ZXdheTo6UmVzb3VyY2UnLFxuICAgICAgJ0FXUzo6QXBpR2F0ZXdheVYyOjpBcGlNYXBwaW5nJyxcbiAgICAgICdBV1M6OkFwaUdhdGV3YXlWMjo6QXV0aG9yaXplcicsXG4gICAgICAnQVdTOjpBcGlHYXRld2F5VjI6OkRlcGxveW1lbnQnLFxuICAgICAgJ0FXUzo6QXBpR2F0ZXdheVYyOjpJbnRlZ3JhdGlvbicsXG4gICAgICAnQVdTOjpBcGlHYXRld2F5VjI6OkludGVncmF0aW9uUmVzcG9uc2UnLFxuICAgICAgJ0FXUzo6QXBpR2F0ZXdheVYyOjpNb2RlbCcsXG4gICAgICAnQVdTOjpBcGlHYXRld2F5VjI6OlJvdXRlJyxcbiAgICAgICdBV1M6OkFwaUdhdGV3YXlWMjo6Um91dGVSZXNwb25zZScsXG4gICAgICBcbiAgICAgIC8vIEFwcFN5bmNcbiAgICAgICdBV1M6OkFwcFN5bmM6OkRhdGFTb3VyY2UnLFxuICAgICAgJ0FXUzo6QXBwU3luYzo6RnVuY3Rpb25Db25maWd1cmF0aW9uJyxcbiAgICAgICdBV1M6OkFwcFN5bmM6OlJlc29sdmVyJyxcbiAgICAgIFxuICAgICAgLy8gQXRoZW5hXG4gICAgICAnQVdTOjpBdGhlbmE6OlByZXBhcmVkU3RhdGVtZW50JyxcbiAgICAgIFxuICAgICAgLy8gQ2xvdWRGb3JtYXRpb25cbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpDdXN0b21SZXNvdXJjZScsXG4gICAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6TWFjcm8nLFxuICAgICAgJ0FXUzo6Q2xvdWRGb3JtYXRpb246Ok1vZHVsZURlZmF1bHRWZXJzaW9uJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpNb2R1bGVWZXJzaW9uJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpQdWJsaWNUeXBlVmVyc2lvbicsXG4gICAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6UHVibGlzaGVyJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpSZXNvdXJjZURlZmF1bHRWZXJzaW9uJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpSZXNvdXJjZVZlcnNpb24nLFxuICAgICAgJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlR5cGVBY3RpdmF0aW9uJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpXYWl0Q29uZGl0aW9uSGFuZGxlJyxcbiAgICAgIFxuICAgICAgLy8gQ2xvdWRXYXRjaFxuICAgICAgJ0FXUzo6Q2xvdWRXYXRjaDo6QWxhcm0nLFxuICAgICAgJ0FXUzo6Q2xvdWRXYXRjaDo6QW5vbWFseURldGVjdG9yJyxcbiAgICAgICdBV1M6OkNsb3VkV2F0Y2g6OkNvbXBvc2l0ZUFsYXJtJyxcbiAgICAgICdBV1M6OkNsb3VkV2F0Y2g6OkRhc2hib2FyZCcsXG4gICAgICAnQVdTOjpDbG91ZFdhdGNoOjpJbnNpZ2h0UnVsZScsXG4gICAgICAnQVdTOjpDbG91ZFdhdGNoOjpNZXRyaWNTdHJlYW0nLFxuICAgICAgXG4gICAgICAvLyBDb2RlQnVpbGRcbiAgICAgICdBV1M6OkNvZGVCdWlsZDo6UmVwb3J0R3JvdXAnLFxuICAgICAgJ0FXUzo6Q29kZUJ1aWxkOjpTb3VyY2VDcmVkZW50aWFsJyxcbiAgICAgIFxuICAgICAgLy8gQ29kZURlcGxveVxuICAgICAgJ0FXUzo6Q29kZURlcGxveTo6RGVwbG95bWVudENvbmZpZycsXG4gICAgICBcbiAgICAgIC8vIENvZGVQaXBlbGluZVxuICAgICAgJ0FXUzo6Q29kZVBpcGVsaW5lOjpDdXN0b21BY3Rpb25UeXBlJyxcbiAgICAgICdBV1M6OkNvZGVQaXBlbGluZTo6V2ViaG9vaycsXG4gICAgICBcbiAgICAgIC8vIENvZ25pdG9cbiAgICAgICdBV1M6OkNvZ25pdG86OklkZW50aXR5UG9vbFJvbGVBdHRhY2htZW50JyxcbiAgICAgICdBV1M6OkNvZ25pdG86OlVzZXJQb29sQ2xpZW50JyxcbiAgICAgICdBV1M6OkNvZ25pdG86OlVzZXJQb29sRG9tYWluJyxcbiAgICAgICdBV1M6OkNvZ25pdG86OlVzZXJQb29sR3JvdXAnLFxuICAgICAgJ0FXUzo6Q29nbml0bzo6VXNlclBvb2xJZGVudGl0eVByb3ZpZGVyJyxcbiAgICAgICdBV1M6OkNvZ25pdG86OlVzZXJQb29sUmVzb3VyY2VTZXJ2ZXInLFxuICAgICAgJ0FXUzo6Q29nbml0bzo6VXNlclBvb2xSaXNrQ29uZmlndXJhdGlvbkF0dGFjaG1lbnQnLFxuICAgICAgJ0FXUzo6Q29nbml0bzo6VXNlclBvb2xVSUN1c3RvbWl6YXRpb25BdHRhY2htZW50JyxcbiAgICAgICdBV1M6OkNvZ25pdG86OlVzZXJQb29sVXNlcicsXG4gICAgICAnQVdTOjpDb2duaXRvOjpVc2VyUG9vbFVzZXJUb0dyb3VwQXR0YWNobWVudCcsXG4gICAgICBcbiAgICAgIC8vIENvbmZpZ1xuICAgICAgJ0FXUzo6Q29uZmlnOjpBZ2dyZWdhdGlvbkF1dGhvcml6YXRpb24nLFxuICAgICAgJ0FXUzo6Q29uZmlnOjpDb25maWd1cmF0aW9uQWdncmVnYXRvcicsXG4gICAgICAnQVdTOjpDb25maWc6OkNvbmZvcm1hbmNlUGFjaycsXG4gICAgICAnQVdTOjpDb25maWc6Ok9yZ2FuaXphdGlvbkNvbmZvcm1hbmNlUGFjaycsXG4gICAgICAnQVdTOjpDb25maWc6OlJlbWVkaWF0aW9uQ29uZmlndXJhdGlvbicsXG4gICAgICAnQVdTOjpDb25maWc6OlN0b3JlZFF1ZXJ5JyxcbiAgICAgIFxuICAgICAgLy8gRHluYW1vREJcbiAgICAgICdBV1M6OkR5bmFtb0RCOjpHbG9iYWxUYWJsZScsXG4gICAgICBcbiAgICAgIC8vIEVDMlxuICAgICAgJ0FXUzo6RUMyOjpDYXBhY2l0eVJlc2VydmF0aW9uRmxlZXQnLFxuICAgICAgJ0FXUzo6RUMyOjpDYXJyaWVyR2F0ZXdheScsXG4gICAgICAnQVdTOjpFQzI6OkRIQ1BPcHRpb25zJyxcbiAgICAgICdBV1M6OkVDMjo6RUMyRmxlZXQnLFxuICAgICAgJ0FXUzo6RUMyOjpFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5JyxcbiAgICAgICdBV1M6OkVDMjo6RUlQQXNzb2NpYXRpb24nLFxuICAgICAgJ0FXUzo6RUMyOjpFbmNsYXZlQ2VydGlmaWNhdGVJYW1Sb2xlQXNzb2NpYXRpb24nLFxuICAgICAgJ0FXUzo6RUMyOjpGbG93TG9nJyxcbiAgICAgICdBV1M6OkVDMjo6R2F0ZXdheVJvdXRlVGFibGVBc3NvY2lhdGlvbicsXG4gICAgICAnQVdTOjpFQzI6Okluc3RhbmNlQ29ubmVjdEVuZHBvaW50JyxcbiAgICAgICdBV1M6OkVDMjo6S2V5UGFpcicsXG4gICAgICAnQVdTOjpFQzI6OkxhdW5jaFRlbXBsYXRlJyxcbiAgICAgICdBV1M6OkVDMjo6TmV0d29ya0luc2lnaHRzQWNjZXNzU2NvcGUnLFxuICAgICAgJ0FXUzo6RUMyOjpOZXR3b3JrSW5zaWdodHNBY2Nlc3NTY29wZUFuYWx5c2lzJyxcbiAgICAgICdBV1M6OkVDMjo6TmV0d29ya0luc2lnaHRzQW5hbHlzaXMnLFxuICAgICAgJ0FXUzo6RUMyOjpOZXR3b3JrSW5zaWdodHNQYXRoJyxcbiAgICAgICdBV1M6OkVDMjo6TmV0d29ya0ludGVyZmFjZUF0dGFjaG1lbnQnLFxuICAgICAgJ0FXUzo6RUMyOjpOZXR3b3JrSW50ZXJmYWNlUGVybWlzc2lvbicsXG4gICAgICAnQVdTOjpFQzI6OlBsYWNlbWVudEdyb3VwJyxcbiAgICAgICdBV1M6OkVDMjo6Um91dGUnLFxuICAgICAgJ0FXUzo6RUMyOjpTZWN1cml0eUdyb3VwRWdyZXNzJyxcbiAgICAgICdBV1M6OkVDMjo6U2VjdXJpdHlHcm91cEluZ3Jlc3MnLFxuICAgICAgJ0FXUzo6RUMyOjpTdWJuZXRDaWRyQmxvY2snLFxuICAgICAgJ0FXUzo6RUMyOjpTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24nLFxuICAgICAgJ0FXUzo6RUMyOjpTdWJuZXRSb3V0ZVRhYmxlQXNzb2NpYXRpb24nLFxuICAgICAgJ0FXUzo6RUMyOjpUcmFuc2l0R2F0ZXdheUF0dGFjaG1lbnQnLFxuICAgICAgJ0FXUzo6RUMyOjpUcmFuc2l0R2F0ZXdheUNvbm5lY3QnLFxuICAgICAgJ0FXUzo6RUMyOjpUcmFuc2l0R2F0ZXdheU11bHRpY2FzdERvbWFpbicsXG4gICAgICAnQVdTOjpFQzI6OlRyYW5zaXRHYXRld2F5TXVsdGljYXN0RG9tYWluQXNzb2NpYXRpb24nLFxuICAgICAgJ0FXUzo6RUMyOjpUcmFuc2l0R2F0ZXdheU11bHRpY2FzdEdyb3VwTWVtYmVyJyxcbiAgICAgICdBV1M6OkVDMjo6VHJhbnNpdEdhdGV3YXlNdWx0aWNhc3RHcm91cFNvdXJjZScsXG4gICAgICAnQVdTOjpFQzI6OlRyYW5zaXRHYXRld2F5UGVlcmluZ0F0dGFjaG1lbnQnLFxuICAgICAgJ0FXUzo6RUMyOjpUcmFuc2l0R2F0ZXdheVJvdXRlJyxcbiAgICAgICdBV1M6OkVDMjo6VHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlJyxcbiAgICAgICdBV1M6OkVDMjo6VHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlQXNzb2NpYXRpb24nLFxuICAgICAgJ0FXUzo6RUMyOjpUcmFuc2l0R2F0ZXdheVJvdXRlVGFibGVQcm9wYWdhdGlvbicsXG4gICAgICAnQVdTOjpFQzI6OlRyYW5zaXRHYXRld2F5VnBjQXR0YWNobWVudCcsXG4gICAgICAnQVdTOjpFQzI6OlZlcmlmaWVkQWNjZXNzRW5kcG9pbnQnLFxuICAgICAgJ0FXUzo6RUMyOjpWZXJpZmllZEFjY2Vzc0dyb3VwJyxcbiAgICAgICdBV1M6OkVDMjo6VmVyaWZpZWRBY2Nlc3NJbnN0YW5jZScsXG4gICAgICAnQVdTOjpFQzI6OlZlcmlmaWVkQWNjZXNzVHJ1c3RQcm92aWRlcicsXG4gICAgICAnQVdTOjpFQzI6OlZvbHVtZUF0dGFjaG1lbnQnLFxuICAgICAgJ0FXUzo6RUMyOjpWUENDaWRyQmxvY2snLFxuICAgICAgJ0FXUzo6RUMyOjpWUENESENQT3B0aW9uc0Fzc29jaWF0aW9uJyxcbiAgICAgICdBV1M6OkVDMjo6VlBDRW5kcG9pbnRDb25uZWN0aW9uTm90aWZpY2F0aW9uJyxcbiAgICAgICdBV1M6OkVDMjo6VlBDRW5kcG9pbnRTZXJ2aWNlJyxcbiAgICAgICdBV1M6OkVDMjo6VlBDRW5kcG9pbnRTZXJ2aWNlUGVybWlzc2lvbnMnLFxuICAgICAgJ0FXUzo6RUMyOjpWUENHYXRld2F5QXR0YWNobWVudCcsXG4gICAgICAnQVdTOjpFQzI6OlZQTkNvbm5lY3Rpb25Sb3V0ZScsXG4gICAgICAnQVdTOjpFQzI6OlZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uJyxcbiAgICAgIFxuICAgICAgLy8gRUNSXG4gICAgICAnQVdTOjpFQ1I6OlB1YmxpY1JlcG9zaXRvcnknLFxuICAgICAgJ0FXUzo6RUNSOjpQdWxsVGhyb3VnaENhY2hlUnVsZScsXG4gICAgICAnQVdTOjpFQ1I6OlJlZ2lzdHJ5UG9saWN5JyxcbiAgICAgICdBV1M6OkVDUjo6UmVwbGljYXRpb25Db25maWd1cmF0aW9uJyxcbiAgICAgIFxuICAgICAgLy8gRUNTXG4gICAgICAnQVdTOjpFQ1M6OkFjY291bnRTZXR0aW5nJyxcbiAgICAgICdBV1M6OkVDUzo6Q2FwYWNpdHlQcm92aWRlcicsXG4gICAgICAnQVdTOjpFQ1M6OkNsdXN0ZXJDYXBhY2l0eVByb3ZpZGVyQXNzb2NpYXRpb25zJyxcbiAgICAgICdBV1M6OkVDUzo6UHJpbWFyeVRhc2tTZXQnLFxuICAgICAgJ0FXUzo6RUNTOjpUYXNrU2V0JyxcbiAgICAgIFxuICAgICAgLy8gRUZTXG4gICAgICAnQVdTOjpFRlM6OkFjY2Vzc1BvaW50JyxcbiAgICAgICdBV1M6OkVGUzo6TW91bnRUYXJnZXQnLFxuICAgICAgXG4gICAgICAvLyBFS1NcbiAgICAgICdBV1M6OkVLUzo6QWRkb24nLFxuICAgICAgJ0FXUzo6RUtTOjpGYXJnYXRlUHJvZmlsZScsXG4gICAgICAnQVdTOjpFS1M6OklkZW50aXR5UHJvdmlkZXJDb25maWcnLFxuICAgICAgXG4gICAgICAvLyBFbGFzdGlDYWNoZVxuICAgICAgJ0FXUzo6RWxhc3RpQ2FjaGU6OlBhcmFtZXRlckdyb3VwJyxcbiAgICAgICdBV1M6OkVsYXN0aUNhY2hlOjpTZWN1cml0eUdyb3VwJyxcbiAgICAgICdBV1M6OkVsYXN0aUNhY2hlOjpTZWN1cml0eUdyb3VwSW5ncmVzcycsXG4gICAgICAnQVdTOjpFbGFzdGlDYWNoZTo6U3VibmV0R3JvdXAnLFxuICAgICAgXG4gICAgICAvLyBFbGFzdGljQmVhbnN0YWxrXG4gICAgICAnQVdTOjpFbGFzdGljQmVhbnN0YWxrOjpBcHBsaWNhdGlvblZlcnNpb24nLFxuICAgICAgJ0FXUzo6RWxhc3RpY0JlYW5zdGFsazo6Q29uZmlndXJhdGlvblRlbXBsYXRlJyxcbiAgICAgIFxuICAgICAgLy8gRWxhc3RpY0xvYWRCYWxhbmNpbmdWMlxuICAgICAgJ0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TGlzdGVuZXInLFxuICAgICAgJ0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6TGlzdGVuZXJDZXJ0aWZpY2F0ZScsXG4gICAgICAnQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMaXN0ZW5lclJ1bGUnLFxuICAgICAgJ0FXUzo6RWxhc3RpY0xvYWRCYWxhbmNpbmdWMjo6VGFyZ2V0R3JvdXBBdHRhY2htZW50JyxcbiAgICAgIFxuICAgICAgLy8gRXZlbnRCcmlkZ2UgKEV2ZW50cylcbiAgICAgICdBV1M6OkV2ZW50czo6QXBpRGVzdGluYXRpb24nLFxuICAgICAgJ0FXUzo6RXZlbnRzOjpBcmNoaXZlJyxcbiAgICAgICdBV1M6OkV2ZW50czo6Q29ubmVjdGlvbicsXG4gICAgICAnQVdTOjpFdmVudHM6OkVuZHBvaW50JyxcbiAgICAgICdBV1M6OkV2ZW50czo6RXZlbnRCdXNQb2xpY3knLFxuICAgICAgJ0FXUzo6RXZlbnRzOjpSdWxlJyxcbiAgICAgIFxuICAgICAgLy8gRlN4XG4gICAgICAnQVdTOjpGU3g6OkRhdGFSZXBvc2l0b3J5QXNzb2NpYXRpb24nLFxuICAgICAgJ0FXUzo6RlN4OjpTbmFwc2hvdCcsXG4gICAgICAnQVdTOjpGU3g6OlN0b3JhZ2VWaXJ0dWFsTWFjaGluZScsXG4gICAgICAnQVdTOjpGU3g6OlZvbHVtZScsXG4gICAgICBcbiAgICAgIC8vIEdhbWVMaWZ0XG4gICAgICAnQVdTOjpHYW1lTGlmdDo6R2FtZVNlcnZlckdyb3VwJyxcbiAgICAgICdBV1M6OkdhbWVMaWZ0OjpMb2NhdGlvbicsXG4gICAgICBcbiAgICAgIC8vIEdsdWVcbiAgICAgICdBV1M6OkdsdWU6OkNvbm5lY3Rpb24nLFxuICAgICAgJ0FXUzo6R2x1ZTo6RGF0YWJhc2UnLFxuICAgICAgJ0FXUzo6R2x1ZTo6RGF0YUNhdGFsb2dFbmNyeXB0aW9uU2V0dGluZ3MnLFxuICAgICAgJ0FXUzo6R2x1ZTo6UGFydGl0aW9uJyxcbiAgICAgICdBV1M6OkdsdWU6OlNjaGVtYVZlcnNpb24nLFxuICAgICAgJ0FXUzo6R2x1ZTo6U2NoZW1hVmVyc2lvbk1ldGFkYXRhJyxcbiAgICAgICdBV1M6OkdsdWU6OlNlY3VyaXR5Q29uZmlndXJhdGlvbicsXG4gICAgICAnQVdTOjpHbHVlOjpUYWJsZScsXG4gICAgICAnQVdTOjpHbHVlOjpVc2VyRGVmaW5lZEZ1bmN0aW9uJyxcbiAgICAgIFxuICAgICAgLy8gR3VhcmREdXR5XG4gICAgICAnQVdTOjpHdWFyZER1dHk6OkRldGVjdG9yJyxcbiAgICAgICdBV1M6Okd1YXJkRHV0eTo6RmlsdGVyJyxcbiAgICAgICdBV1M6Okd1YXJkRHV0eTo6SVBTZXQnLFxuICAgICAgJ0FXUzo6R3VhcmREdXR5OjpNYXN0ZXInLFxuICAgICAgJ0FXUzo6R3VhcmREdXR5OjpNZW1iZXInLFxuICAgICAgJ0FXUzo6R3VhcmREdXR5OjpUaHJlYXRJbnRlbFNldCcsXG4gICAgICBcbiAgICAgIC8vIElBTVxuICAgICAgJ0FXUzo6SUFNOjpBY2Nlc3NLZXknLFxuICAgICAgJ0FXUzo6SUFNOjpHcm91cCcsXG4gICAgICAnQVdTOjpJQU06Okdyb3VwUG9saWN5JyxcbiAgICAgICdBV1M6OklBTTo6SW5zdGFuY2VQcm9maWxlJyxcbiAgICAgICdBV1M6OklBTTo6TWFuYWdlZFBvbGljeScsXG4gICAgICAnQVdTOjpJQU06Ok9JRENQcm92aWRlcicsXG4gICAgICAnQVdTOjpJQU06OlBvbGljeScsXG4gICAgICAnQVdTOjpJQU06OlJvbGUnLFxuICAgICAgJ0FXUzo6SUFNOjpSb2xlUG9saWN5JyxcbiAgICAgICdBV1M6OklBTTo6U0FNTFByb3ZpZGVyJyxcbiAgICAgICdBV1M6OklBTTo6U2VydmVyQ2VydGlmaWNhdGUnLFxuICAgICAgJ0FXUzo6SUFNOjpTZXJ2aWNlTGlua2VkUm9sZScsXG4gICAgICAnQVdTOjpJQU06OlVzZXInLFxuICAgICAgJ0FXUzo6SUFNOjpVc2VyUG9saWN5JyxcbiAgICAgICdBV1M6OklBTTo6VXNlclRvR3JvdXBBZGRpdGlvbicsXG4gICAgICAnQVdTOjpJQU06OlZpcnR1YWxNRkFEZXZpY2UnLFxuICAgICAgXG4gICAgICAvLyBJb1RcbiAgICAgICdBV1M6OklvVDo6QWNjb3VudEF1ZGl0Q29uZmlndXJhdGlvbicsXG4gICAgICAnQVdTOjpJb1Q6OkF1dGhvcml6ZXInLFxuICAgICAgJ0FXUzo6SW9UOjpDZXJ0aWZpY2F0ZScsXG4gICAgICAnQVdTOjpJb1Q6OkN1c3RvbU1ldHJpYycsXG4gICAgICAnQVdTOjpJb1Q6OkRpbWVuc2lvbicsXG4gICAgICAnQVdTOjpJb1Q6OkRvbWFpbkNvbmZpZ3VyYXRpb24nLFxuICAgICAgJ0FXUzo6SW9UOjpGbGVldE1ldHJpYycsXG4gICAgICAnQVdTOjpJb1Q6OkpvYlRlbXBsYXRlJyxcbiAgICAgICdBV1M6OklvVDo6TG9nZ2luZycsXG4gICAgICAnQVdTOjpJb1Q6Ok1pdGlnYXRpb25BY3Rpb24nLFxuICAgICAgJ0FXUzo6SW9UOjpQb2xpY3knLFxuICAgICAgJ0FXUzo6SW9UOjpQb2xpY3lQcmluY2lwYWxBdHRhY2htZW50JyxcbiAgICAgICdBV1M6OklvVDo6UHJvdmlzaW9uaW5nVGVtcGxhdGUnLFxuICAgICAgJ0FXUzo6SW9UOjpSZXNvdXJjZVNwZWNpZmljTG9nZ2luZycsXG4gICAgICAnQVdTOjpJb1Q6OlJvbGVBbGlhcycsXG4gICAgICAnQVdTOjpJb1Q6OlNjaGVkdWxlZEF1ZGl0JyxcbiAgICAgICdBV1M6OklvVDo6U2VjdXJpdHlQcm9maWxlJyxcbiAgICAgICdBV1M6OklvVDo6VGhpbmcnLFxuICAgICAgJ0FXUzo6SW9UOjpUaGluZ0dyb3VwJyxcbiAgICAgICdBV1M6OklvVDo6VGhpbmdQcmluY2lwYWxBdHRhY2htZW50JyxcbiAgICAgICdBV1M6OklvVDo6VGhpbmdUeXBlJyxcbiAgICAgICdBV1M6OklvVDo6VG9waWNSdWxlJyxcbiAgICAgICdBV1M6OklvVDo6VG9waWNSdWxlRGVzdGluYXRpb24nLFxuICAgICAgXG4gICAgICAvLyBLTVNcbiAgICAgICdBV1M6OktNUzo6QWxpYXMnLFxuICAgICAgJ0FXUzo6S01TOjpHcmFudCcsXG4gICAgICAnQVdTOjpLTVM6OlJlcGxpY2FLZXknLFxuICAgICAgXG4gICAgICAvLyBMYW1iZGFcbiAgICAgICdBV1M6OkxhbWJkYTo6Q29kZVNpZ25pbmdDb25maWcnLFxuICAgICAgJ0FXUzo6TGFtYmRhOjpFdmVudEludm9rZUNvbmZpZycsXG4gICAgICAnQVdTOjpMYW1iZGE6OkV2ZW50U291cmNlTWFwcGluZycsXG4gICAgICAnQVdTOjpMYW1iZGE6OkxheWVyVmVyc2lvbicsXG4gICAgICAnQVdTOjpMYW1iZGE6OkxheWVyVmVyc2lvblBlcm1pc3Npb24nLFxuICAgICAgJ0FXUzo6TGFtYmRhOjpQZXJtaXNzaW9uJyxcbiAgICAgICdBV1M6OkxhbWJkYTo6UHJvdmlzaW9uZWRDb25jdXJyZW5jeUNvbmZpZycsXG4gICAgICAnQVdTOjpMYW1iZGE6OlVybCcsXG4gICAgICAnQVdTOjpMYW1iZGE6OlZlcnNpb24nLFxuICAgICAgXG4gICAgICAvLyBMb2dzXG4gICAgICAnQVdTOjpMb2dzOjpBY2NvdW50UG9saWN5JyxcbiAgICAgICdBV1M6OkxvZ3M6OkRlc3RpbmF0aW9uJyxcbiAgICAgICdBV1M6OkxvZ3M6OkxvZ0dyb3VwJyxcbiAgICAgICdBV1M6OkxvZ3M6OkxvZ1N0cmVhbScsXG4gICAgICAnQVdTOjpMb2dzOjpNZXRyaWNGaWx0ZXInLFxuICAgICAgJ0FXUzo6TG9nczo6UXVlcnlEZWZpbml0aW9uJyxcbiAgICAgICdBV1M6OkxvZ3M6OlJlc291cmNlUG9saWN5JyxcbiAgICAgICdBV1M6OkxvZ3M6OlN1YnNjcmlwdGlvbkZpbHRlcicsXG4gICAgICBcbiAgICAgIC8vIE1hY2llXG4gICAgICAnQVdTOjpNYWNpZTo6QWxsb3dMaXN0JyxcbiAgICAgICdBV1M6Ok1hY2llOjpDdXN0b21EYXRhSWRlbnRpZmllcicsXG4gICAgICAnQVdTOjpNYWNpZTo6RmluZGluZ3NGaWx0ZXInLFxuICAgICAgJ0FXUzo6TWFjaWU6OlNlc3Npb24nLFxuICAgICAgXG4gICAgICAvLyBOZXB0dW5lXG4gICAgICAnQVdTOjpOZXB0dW5lOjpEQkNsdXN0ZXJQYXJhbWV0ZXJHcm91cCcsXG4gICAgICAnQVdTOjpOZXB0dW5lOjpEQlBhcmFtZXRlckdyb3VwJyxcbiAgICAgICdBV1M6Ok5lcHR1bmU6OkRCU3VibmV0R3JvdXAnLFxuICAgICAgXG4gICAgICAvLyBPcmdhbml6YXRpb25zXG4gICAgICAnQVdTOjpPcmdhbml6YXRpb25zOjpBY2NvdW50JyxcbiAgICAgICdBV1M6Ok9yZ2FuaXphdGlvbnM6Ok9yZ2FuaXphdGlvbicsXG4gICAgICAnQVdTOjpPcmdhbml6YXRpb25zOjpPcmdhbml6YXRpb25hbFVuaXQnLFxuICAgICAgJ0FXUzo6T3JnYW5pemF0aW9uczo6UG9saWN5JyxcbiAgICAgICdBV1M6Ok9yZ2FuaXphdGlvbnM6OlJlc291cmNlUG9saWN5JyxcbiAgICAgIFxuICAgICAgLy8gUkRTXG4gICAgICAnQVdTOjpSRFM6OkRCQ2x1c3RlclBhcmFtZXRlckdyb3VwJyxcbiAgICAgICdBV1M6OlJEUzo6REJQYXJhbWV0ZXJHcm91cCcsXG4gICAgICAnQVdTOjpSRFM6OkRCU2VjdXJpdHlHcm91cCcsXG4gICAgICAnQVdTOjpSRFM6OkRCU2VjdXJpdHlHcm91cEluZ3Jlc3MnLFxuICAgICAgJ0FXUzo6UkRTOjpEQlN1Ym5ldEdyb3VwJyxcbiAgICAgICdBV1M6OlJEUzo6RXZlbnRTdWJzY3JpcHRpb24nLFxuICAgICAgJ0FXUzo6UkRTOjpHbG9iYWxDbHVzdGVyJyxcbiAgICAgICdBV1M6OlJEUzo6T3B0aW9uR3JvdXAnLFxuICAgICAgXG4gICAgICAvLyBSZWRzaGlmdFxuICAgICAgJ0FXUzo6UmVkc2hpZnQ6OkNsdXN0ZXJQYXJhbWV0ZXJHcm91cCcsXG4gICAgICAnQVdTOjpSZWRzaGlmdDo6Q2x1c3RlclNlY3VyaXR5R3JvdXAnLFxuICAgICAgJ0FXUzo6UmVkc2hpZnQ6OkNsdXN0ZXJTZWN1cml0eUdyb3VwSW5ncmVzcycsXG4gICAgICAnQVdTOjpSZWRzaGlmdDo6Q2x1c3RlclN1Ym5ldEdyb3VwJyxcbiAgICAgICdBV1M6OlJlZHNoaWZ0OjpFbmRwb2ludEFjY2VzcycsXG4gICAgICAnQVdTOjpSZWRzaGlmdDo6RW5kcG9pbnRBdXRob3JpemF0aW9uJyxcbiAgICAgICdBV1M6OlJlZHNoaWZ0OjpFdmVudFN1YnNjcmlwdGlvbicsXG4gICAgICAnQVdTOjpSZWRzaGlmdDo6U2NoZWR1bGVkQWN0aW9uJyxcbiAgICAgIFxuICAgICAgLy8gUm91dGU1M1xuICAgICAgJ0FXUzo6Um91dGU1Mzo6RE5TU0VDJyxcbiAgICAgICdBV1M6OlJvdXRlNTM6OkhlYWx0aENoZWNrJyxcbiAgICAgICdBV1M6OlJvdXRlNTM6Okhvc3RlZFpvbmUnLFxuICAgICAgJ0FXUzo6Um91dGU1Mzo6S2V5U2lnbmluZ0tleScsXG4gICAgICAnQVdTOjpSb3V0ZTUzOjpSZWNvcmRTZXQnLFxuICAgICAgJ0FXUzo6Um91dGU1Mzo6UmVjb3JkU2V0R3JvdXAnLFxuICAgICAgXG4gICAgICAvLyBSb3V0ZTUzUmVzb2x2ZXJcbiAgICAgICdBV1M6OlJvdXRlNTNSZXNvbHZlcjo6RmlyZXdhbGxEb21haW5MaXN0JyxcbiAgICAgICdBV1M6OlJvdXRlNTNSZXNvbHZlcjo6RmlyZXdhbGxSdWxlR3JvdXAnLFxuICAgICAgJ0FXUzo6Um91dGU1M1Jlc29sdmVyOjpGaXJld2FsbFJ1bGVHcm91cEFzc29jaWF0aW9uJyxcbiAgICAgICdBV1M6OlJvdXRlNTNSZXNvbHZlcjo6UmVzb2x2ZXJDb25maWcnLFxuICAgICAgJ0FXUzo6Um91dGU1M1Jlc29sdmVyOjpSZXNvbHZlckROU1NFQ0NvbmZpZycsXG4gICAgICAnQVdTOjpSb3V0ZTUzUmVzb2x2ZXI6OlJlc29sdmVyUXVlcnlMb2dnaW5nQ29uZmlnJyxcbiAgICAgICdBV1M6OlJvdXRlNTNSZXNvbHZlcjo6UmVzb2x2ZXJRdWVyeUxvZ2dpbmdDb25maWdBc3NvY2lhdGlvbicsXG4gICAgICAnQVdTOjpSb3V0ZTUzUmVzb2x2ZXI6OlJlc29sdmVyUnVsZScsXG4gICAgICAnQVdTOjpSb3V0ZTUzUmVzb2x2ZXI6OlJlc29sdmVyUnVsZUFzc29jaWF0aW9uJyxcbiAgICAgIFxuICAgICAgLy8gUzNcbiAgICAgICdBV1M6OlMzOjpBY2Nlc3NQb2ludCcsXG4gICAgICAnQVdTOjpTMzo6QnVja2V0UG9saWN5JyxcbiAgICAgICdBV1M6OlMzOjpNdWx0aVJlZ2lvbkFjY2Vzc1BvaW50JyxcbiAgICAgICdBV1M6OlMzOjpNdWx0aVJlZ2lvbkFjY2Vzc1BvaW50UG9saWN5JyxcbiAgICAgICdBV1M6OlMzOjpTdG9yYWdlTGVucycsXG4gICAgICBcbiAgICAgIC8vIFNEQlxuICAgICAgJ0FXUzo6U0RCOjpEb21haW4nLFxuICAgICAgXG4gICAgICAvLyBTZWNyZXRzTWFuYWdlclxuICAgICAgJ0FXUzo6U2VjcmV0c01hbmFnZXI6OlJlc291cmNlUG9saWN5JyxcbiAgICAgICdBV1M6OlNlY3JldHNNYW5hZ2VyOjpSb3RhdGlvblNjaGVkdWxlJyxcbiAgICAgICdBV1M6OlNlY3JldHNNYW5hZ2VyOjpTZWNyZXRUYXJnZXRBdHRhY2htZW50JyxcbiAgICAgIFxuICAgICAgLy8gU2VjdXJpdHlIdWJcbiAgICAgICdBV1M6OlNlY3VyaXR5SHViOjpIdWInLFxuICAgICAgXG4gICAgICAvLyBTZXJ2aWNlQ2F0YWxvZ1xuICAgICAgJ0FXUzo6U2VydmljZUNhdGFsb2c6OkFjY2VwdGVkUG9ydGZvbGlvU2hhcmUnLFxuICAgICAgJ0FXUzo6U2VydmljZUNhdGFsb2c6OkxhdW5jaE5vdGlmaWNhdGlvbkNvbnN0cmFpbnQnLFxuICAgICAgJ0FXUzo6U2VydmljZUNhdGFsb2c6OkxhdW5jaFJvbGVDb25zdHJhaW50JyxcbiAgICAgICdBV1M6OlNlcnZpY2VDYXRhbG9nOjpMYXVuY2hUZW1wbGF0ZUNvbnN0cmFpbnQnLFxuICAgICAgJ0FXUzo6U2VydmljZUNhdGFsb2c6OlBvcnRmb2xpb1ByaW5jaXBhbEFzc29jaWF0aW9uJyxcbiAgICAgICdBV1M6OlNlcnZpY2VDYXRhbG9nOjpQb3J0Zm9saW9Qcm9kdWN0QXNzb2NpYXRpb24nLFxuICAgICAgJ0FXUzo6U2VydmljZUNhdGFsb2c6OlBvcnRmb2xpb1NoYXJlJyxcbiAgICAgICdBV1M6OlNlcnZpY2VDYXRhbG9nOjpSZXNvdXJjZVVwZGF0ZUNvbnN0cmFpbnQnLFxuICAgICAgJ0FXUzo6U2VydmljZUNhdGFsb2c6OlNlcnZpY2VBY3Rpb24nLFxuICAgICAgJ0FXUzo6U2VydmljZUNhdGFsb2c6OlNlcnZpY2VBY3Rpb25Bc3NvY2lhdGlvbicsXG4gICAgICAnQVdTOjpTZXJ2aWNlQ2F0YWxvZzo6U3RhY2tTZXRDb25zdHJhaW50JyxcbiAgICAgICdBV1M6OlNlcnZpY2VDYXRhbG9nOjpUYWdPcHRpb24nLFxuICAgICAgJ0FXUzo6U2VydmljZUNhdGFsb2c6OlRhZ09wdGlvbkFzc29jaWF0aW9uJyxcbiAgICAgIFxuICAgICAgLy8gU0VTXG4gICAgICAnQVdTOjpTRVM6OkNvbmZpZ3VyYXRpb25TZXQnLFxuICAgICAgJ0FXUzo6U0VTOjpDb25maWd1cmF0aW9uU2V0RXZlbnREZXN0aW5hdGlvbicsXG4gICAgICAnQVdTOjpTRVM6OkNvbnRhY3RMaXN0JyxcbiAgICAgICdBV1M6OlNFUzo6RGVkaWNhdGVkSXBQb29sJyxcbiAgICAgICdBV1M6OlNFUzo6RW1haWxJZGVudGl0eScsXG4gICAgICAnQVdTOjpTRVM6OlJlY2VpcHRGaWx0ZXInLFxuICAgICAgJ0FXUzo6U0VTOjpSZWNlaXB0UnVsZScsXG4gICAgICAnQVdTOjpTRVM6OlJlY2VpcHRSdWxlU2V0JyxcbiAgICAgICdBV1M6OlNFUzo6VGVtcGxhdGUnLFxuICAgICAgJ0FXUzo6U0VTOjpWZG1BdHRyaWJ1dGVzJyxcbiAgICAgIFxuICAgICAgLy8gU05TXG4gICAgICAnQVdTOjpTTlM6OlN1YnNjcmlwdGlvbicsXG4gICAgICAnQVdTOjpTTlM6OlRvcGljUG9saWN5JyxcbiAgICAgIFxuICAgICAgLy8gU1FTXG4gICAgICAnQVdTOjpTUVM6OlF1ZXVlUG9saWN5JyxcbiAgICAgIFxuICAgICAgLy8gU1NNXG4gICAgICAnQVdTOjpTU006OkFzc29jaWF0aW9uJyxcbiAgICAgICdBV1M6OlNTTTo6RG9jdW1lbnQnLFxuICAgICAgJ0FXUzo6U1NNOjpNYWludGVuYW5jZVdpbmRvdycsXG4gICAgICAnQVdTOjpTU006Ok1haW50ZW5hbmNlV2luZG93VGFyZ2V0JyxcbiAgICAgICdBV1M6OlNTTTo6TWFpbnRlbmFuY2VXaW5kb3dUYXNrJyxcbiAgICAgICdBV1M6OlNTTTo6UGFyYW1ldGVyJyxcbiAgICAgICdBV1M6OlNTTTo6UGF0Y2hCYXNlbGluZScsXG4gICAgICAnQVdTOjpTU006OlJlc291cmNlRGF0YVN5bmMnLFxuICAgICAgJ0FXUzo6U1NNOjpSZXNvdXJjZVBvbGljeScsXG4gICAgICBcbiAgICAgIC8vIFNTT1xuICAgICAgJ0FXUzo6U1NPOjpBc3NpZ25tZW50JyxcbiAgICAgICdBV1M6OlNTTzo6SW5zdGFuY2VBY2Nlc3NDb250cm9sQXR0cmlidXRlQ29uZmlndXJhdGlvbicsXG4gICAgICAnQVdTOjpTU086OlBlcm1pc3Npb25TZXQnLFxuICAgICAgXG4gICAgICAvLyBTdGVwRnVuY3Rpb25zXG4gICAgICAnQVdTOjpTdGVwRnVuY3Rpb25zOjpBY3Rpdml0eScsXG4gICAgICBcbiAgICAgIC8vIFdBRi9XQUZ2MlxuICAgICAgJ0FXUzo6V0FGOjpCeXRlTWF0Y2hTZXQnLFxuICAgICAgJ0FXUzo6V0FGOjpJUFNldCcsXG4gICAgICAnQVdTOjpXQUY6OlJ1bGUnLFxuICAgICAgJ0FXUzo6V0FGOjpTaXplQ29uc3RyYWludFNldCcsXG4gICAgICAnQVdTOjpXQUY6OlNxbEluamVjdGlvbk1hdGNoU2V0JyxcbiAgICAgICdBV1M6OldBRjo6V2ViQUNMJyxcbiAgICAgICdBV1M6OldBRjo6WHNzTWF0Y2hTZXQnLFxuICAgICAgJ0FXUzo6V0FGUmVnaW9uYWw6OkJ5dGVNYXRjaFNldCcsXG4gICAgICAnQVdTOjpXQUZSZWdpb25hbDo6R2VvTWF0Y2hTZXQnLFxuICAgICAgJ0FXUzo6V0FGUmVnaW9uYWw6OklQU2V0JyxcbiAgICAgICdBV1M6OldBRlJlZ2lvbmFsOjpSYXRlQmFzZWRSdWxlJyxcbiAgICAgICdBV1M6OldBRlJlZ2lvbmFsOjpSZWdleFBhdHRlcm5TZXQnLFxuICAgICAgJ0FXUzo6V0FGUmVnaW9uYWw6OlJ1bGUnLFxuICAgICAgJ0FXUzo6V0FGUmVnaW9uYWw6OlNpemVDb25zdHJhaW50U2V0JyxcbiAgICAgICdBV1M6OldBRlJlZ2lvbmFsOjpTcWxJbmplY3Rpb25NYXRjaFNldCcsXG4gICAgICAnQVdTOjpXQUZSZWdpb25hbDo6V2ViQUNMJyxcbiAgICAgICdBV1M6OldBRlJlZ2lvbmFsOjpXZWJBQ0xBc3NvY2lhdGlvbicsXG4gICAgICAnQVdTOjpXQUZSZWdpb25hbDo6WHNzTWF0Y2hTZXQnLFxuICAgICAgJ0FXUzo6V0FGdjI6OklQU2V0JyxcbiAgICAgICdBV1M6OldBRnYyOjpMb2dnaW5nQ29uZmlndXJhdGlvbicsXG4gICAgICAnQVdTOjpXQUZ2Mjo6UmVnZXhQYXR0ZXJuU2V0JyxcbiAgICAgICdBV1M6OldBRnYyOjpSdWxlR3JvdXAnLFxuICAgICAgJ0FXUzo6V0FGdjI6OldlYkFDTCcsXG4gICAgICAnQVdTOjpXQUZ2Mjo6V2ViQUNMQXNzb2NpYXRpb24nXG4gICAgXTtcbiAgICBcbiAgICBpZiAodW5zdXBwb3J0ZWRUeXBlcy5pbmNsdWRlcyhyZXNvdXJjZS5jZm5SZXNvdXJjZVR5cGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIC8vIEFkZCBhIHN5bnRoZXNpcyBob29rIHRvIG1vZGlmeSB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHJlc291cmNlKTtcbiAgICBjb25zdCBsb2dpY2FsSWQgPSBzdGFjay5nZXRMb2dpY2FsSWQocmVzb3VyY2UpO1xuICAgIFxuICAgIC8vIFVzZSBhZGRUcmFuc2Zvcm0gdG8gYWRkIHRhZ3MgZHVyaW5nIHN5bnRoZXNpc1xuICAgIHJlc291cmNlLmFkZFByb3BlcnR5T3ZlcnJpZGUoJ1RhZ3MnLCB0aGlzLmJ1aWxkVGFnc0FycmF5KHJlc291cmNlKSk7XG4gIH1cbiAgXG4gIHByaXZhdGUgYnVpbGRUYWdzQXJyYXkocmVzb3VyY2U6IENmblJlc291cmNlKTogYW55W10ge1xuICAgIGNvbnN0IHRhZ01hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgXG4gICAgLy8gR2V0IGFueSBleGlzdGluZyB0YWdzIGlmIHRoZXkgZXhpc3RcbiAgICBjb25zdCBleGlzdGluZ1RhZ3MgPSAocmVzb3VyY2UgYXMgYW55KS50YWdzIHx8IFtdO1xuICAgIFxuICAgIC8vIFByb2Nlc3MgZXhpc3RpbmcgdGFncyBpZiB0aGV5J3JlIGluIGFycmF5IGZvcm1hdFxuICAgIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nVGFncykpIHtcbiAgICAgIGV4aXN0aW5nVGFncy5mb3JFYWNoKCh0YWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGFnICYmIHR5cGVvZiB0YWcgPT09ICdvYmplY3QnICYmICdLZXknIGluIHRhZyAmJiAnVmFsdWUnIGluIHRhZykge1xuICAgICAgICAgIHRhZ01hcC5zZXQodGFnLktleSwgdGFnLlZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YWcgJiYgdHlwZW9mIHRhZyA9PT0gJ29iamVjdCcgJiYgJ2tleScgaW4gdGFnICYmICd2YWx1ZScgaW4gdGFnKSB7XG4gICAgICAgICAgdGFnTWFwLnNldCh0YWcua2V5LCB0YWcudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8gQ2hlY2sgZm9yIGRpcmVjdCB0YWdzIGluIG1ldGFkYXRhXG4gICAgY29uc3QgbWV0YWRhdGEgPSByZXNvdXJjZS5ub2RlLm1ldGFkYXRhO1xuICAgIGNvbnN0IGRpcmVjdFRhZ3NNZXRhZGF0YSA9IG1ldGFkYXRhLmZpbHRlcihtID0+IG0udHlwZSA9PT0gJ2ZqYWxsOmRpcmVjdC10YWdzJyk7XG4gICAgZGlyZWN0VGFnc01ldGFkYXRhLmZvckVhY2gobSA9PiB7XG4gICAgICBpZiAobS5kYXRhICYmIHR5cGVvZiBtLmRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKG0uZGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRhZ01hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICAvLyBBZGQgcmVxdWlyZWQgdGFncyAob3ZlcndyaXRpbmcgaWYgdGhleSBleGlzdClcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLnJlcXVpcmVkVGFncykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICB0YWdNYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIH0pO1xuICAgIFxuICAgIC8vIENvbnZlcnQgdG8gQ2xvdWRGb3JtYXRpb24gZm9ybWF0XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGFnTWFwLmVudHJpZXMoKSkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICBLZXk6IGtleSxcbiAgICAgIFZhbHVlOiB2YWx1ZVxuICAgIH0pKTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fjall/components-infrastructure",
3
- "version": "0.43.2",
3
+ "version": "0.44.1",
4
4
  "bin": {
5
5
  "infrastructure": "bin/infrastructure.js"
6
6
  },
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@aws-sdk/client-cost-explorer": "^3.717.0",
37
37
  "@aws-sdk/client-organizations": "^3.716.0",
38
- "@fjall/util": "^0.43.2",
38
+ "@fjall/util": "^0.44.1",
39
39
  "@pepperize/cdk-organizations": "^0.7.135",
40
40
  "aws-lambda": "^1.0.7",
41
41
  "cdk-time-sleep": "^1.0.0",
@@ -46,7 +46,7 @@
46
46
  "overrides": {
47
47
  "@smithy/core": "2.5.5"
48
48
  },
49
- "gitHead": "c1897d897f5bc2b73eeda8b5de16399da35d0982",
49
+ "gitHead": "3b3eeee78ae469423bb423caff6072ae07bbb3c5",
50
50
  "peerDependencies": {
51
51
  "aws-cdk": "^2.206.0",
52
52
  "aws-cdk-lib": "^2.206.0",