@cdktn/provider-pagerduty 15.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +110408 -0
- package/LICENSE +355 -0
- package/README.md +94 -0
- package/lib/addon/index.d.ts +53 -0
- package/lib/addon/index.js +115 -0
- package/lib/alert-grouping-setting/index.d.ts +144 -0
- package/lib/alert-grouping-setting/index.js +366 -0
- package/lib/automation-actions-action/index.d.ts +232 -0
- package/lib/automation-actions-action/index.js +560 -0
- package/lib/automation-actions-action-service-association/index.d.ts +64 -0
- package/lib/automation-actions-action-service-association/index.js +129 -0
- package/lib/automation-actions-action-team-association/index.d.ts +64 -0
- package/lib/automation-actions-action-team-association/index.js +129 -0
- package/lib/automation-actions-runner/index.d.ts +102 -0
- package/lib/automation-actions-runner/index.js +224 -0
- package/lib/automation-actions-runner-team-association/index.d.ts +64 -0
- package/lib/automation-actions-runner-team-association/index.js +129 -0
- package/lib/business-service/index.d.ts +84 -0
- package/lib/business-service/index.js +190 -0
- package/lib/business-service-subscriber/index.d.ts +72 -0
- package/lib/business-service-subscriber/index.js +147 -0
- package/lib/data-pagerduty-alert-grouping-setting/index.d.ts +70 -0
- package/lib/data-pagerduty-alert-grouping-setting/index.js +190 -0
- package/lib/data-pagerduty-automation-actions-action/index.d.ts +186 -0
- package/lib/data-pagerduty-automation-actions-action/index.js +425 -0
- package/lib/data-pagerduty-automation-actions-runner/index.d.ts +78 -0
- package/lib/data-pagerduty-automation-actions-runner/index.js +172 -0
- package/lib/data-pagerduty-business-service/index.d.ts +46 -0
- package/lib/data-pagerduty-business-service/index.js +101 -0
- package/lib/data-pagerduty-escalation-policy/index.d.ts +47 -0
- package/lib/data-pagerduty-escalation-policy/index.js +105 -0
- package/lib/data-pagerduty-event-orchestration/index.d.ts +137 -0
- package/lib/data-pagerduty-event-orchestration/index.js +306 -0
- package/lib/data-pagerduty-event-orchestration-global-cache-variable/index.d.ts +138 -0
- package/lib/data-pagerduty-event-orchestration-global-cache-variable/index.js +315 -0
- package/lib/data-pagerduty-event-orchestration-integration/index.d.ts +100 -0
- package/lib/data-pagerduty-event-orchestration-integration/index.js +216 -0
- package/lib/data-pagerduty-event-orchestration-service-cache-variable/index.d.ts +138 -0
- package/lib/data-pagerduty-event-orchestration-service-cache-variable/index.js +315 -0
- package/lib/data-pagerduty-event-orchestrations/index.d.ts +161 -0
- package/lib/data-pagerduty-event-orchestrations/index.js +366 -0
- package/lib/data-pagerduty-extension-schema/index.d.ts +46 -0
- package/lib/data-pagerduty-extension-schema/index.js +101 -0
- package/lib/data-pagerduty-incident-custom-field/index.d.ts +60 -0
- package/lib/data-pagerduty-incident-custom-field/index.js +130 -0
- package/lib/data-pagerduty-incident-type/index.d.ts +50 -0
- package/lib/data-pagerduty-incident-type/index.js +117 -0
- package/lib/data-pagerduty-incident-type-custom-field/index.d.ts +115 -0
- package/lib/data-pagerduty-incident-type-custom-field/index.js +295 -0
- package/lib/data-pagerduty-incident-workflow/index.d.ts +57 -0
- package/lib/data-pagerduty-incident-workflow/index.js +118 -0
- package/lib/data-pagerduty-jira-cloud-account-mapping/index.d.ts +46 -0
- package/lib/data-pagerduty-jira-cloud-account-mapping/index.js +101 -0
- package/lib/data-pagerduty-license/index.d.ts +74 -0
- package/lib/data-pagerduty-license/index.js +170 -0
- package/lib/data-pagerduty-licenses/index.d.ts +92 -0
- package/lib/data-pagerduty-licenses/index.js +213 -0
- package/lib/data-pagerduty-priority/index.d.ts +48 -0
- package/lib/data-pagerduty-priority/index.js +101 -0
- package/lib/data-pagerduty-ruleset/index.d.ts +57 -0
- package/lib/data-pagerduty-ruleset/index.js +115 -0
- package/lib/data-pagerduty-schedule/index.d.ts +45 -0
- package/lib/data-pagerduty-schedule/index.js +97 -0
- package/lib/data-pagerduty-service/index.d.ts +86 -0
- package/lib/data-pagerduty-service/index.js +205 -0
- package/lib/data-pagerduty-service-custom-field/index.d.ts +92 -0
- package/lib/data-pagerduty-service-custom-field/index.js +221 -0
- package/lib/data-pagerduty-service-custom-field-value/index.d.ts +88 -0
- package/lib/data-pagerduty-service-custom-field-value/index.js +205 -0
- package/lib/data-pagerduty-service-integration/index.d.ts +56 -0
- package/lib/data-pagerduty-service-integration/index.js +119 -0
- package/lib/data-pagerduty-standards/index.d.ts +154 -0
- package/lib/data-pagerduty-standards/index.js +361 -0
- package/lib/data-pagerduty-standards-resource-scores/index.d.ts +112 -0
- package/lib/data-pagerduty-standards-resource-scores/index.js +268 -0
- package/lib/data-pagerduty-standards-resources-scores/index.d.ts +144 -0
- package/lib/data-pagerduty-standards-resources-scores/index.js +352 -0
- package/lib/data-pagerduty-tag/index.d.ts +47 -0
- package/lib/data-pagerduty-tag/index.js +97 -0
- package/lib/data-pagerduty-team/index.d.ts +77 -0
- package/lib/data-pagerduty-team/index.js +157 -0
- package/lib/data-pagerduty-team-members/index.d.ts +95 -0
- package/lib/data-pagerduty-team-members/index.js +203 -0
- package/lib/data-pagerduty-teams/index.d.ts +96 -0
- package/lib/data-pagerduty-teams/index.js +206 -0
- package/lib/data-pagerduty-user/index.d.ts +50 -0
- package/lib/data-pagerduty-user/index.js +117 -0
- package/lib/data-pagerduty-user-contact-method/index.d.ts +82 -0
- package/lib/data-pagerduty-user-contact-method/index.js +174 -0
- package/lib/data-pagerduty-users/index.d.ts +87 -0
- package/lib/data-pagerduty-users/index.js +208 -0
- package/lib/data-pagerduty-vendor/index.d.ts +46 -0
- package/lib/data-pagerduty-vendor/index.js +101 -0
- package/lib/enablement/index.d.ts +70 -0
- package/lib/enablement/index.js +151 -0
- package/lib/escalation-policy/index.d.ts +232 -0
- package/lib/escalation-policy/index.js +565 -0
- package/lib/event-orchestration/index.d.ts +156 -0
- package/lib/event-orchestration/index.js +352 -0
- package/lib/event-orchestration-global/index.d.ts +1253 -0
- package/lib/event-orchestration-global/index.js +3350 -0
- package/lib/event-orchestration-global-cache-variable/index.d.ts +182 -0
- package/lib/event-orchestration-global-cache-variable/index.js +459 -0
- package/lib/event-orchestration-integration/index.d.ts +88 -0
- package/lib/event-orchestration-integration/index.js +196 -0
- package/lib/event-orchestration-router/index.d.ts +363 -0
- package/lib/event-orchestration-router/index.js +954 -0
- package/lib/event-orchestration-service/index.d.ts +1328 -0
- package/lib/event-orchestration-service/index.js +3573 -0
- package/lib/event-orchestration-service-cache-variable/index.d.ts +182 -0
- package/lib/event-orchestration-service-cache-variable/index.js +459 -0
- package/lib/event-orchestration-unrouted/index.d.ts +653 -0
- package/lib/event-orchestration-unrouted/index.js +1722 -0
- package/lib/event-rule/index.d.ts +74 -0
- package/lib/event-rule/index.js +154 -0
- package/lib/extension/index.d.ts +91 -0
- package/lib/extension/index.js +204 -0
- package/lib/extension-servicenow/index.d.ts +138 -0
- package/lib/extension-servicenow/index.js +308 -0
- package/lib/incident-custom-field/index.d.ts +98 -0
- package/lib/incident-custom-field/index.js +207 -0
- package/lib/incident-custom-field-option/index.d.ts +72 -0
- package/lib/incident-custom-field-option/index.js +147 -0
- package/lib/incident-type/index.d.ts +80 -0
- package/lib/incident-type/index.js +176 -0
- package/lib/incident-type-custom-field/index.d.ts +117 -0
- package/lib/incident-type-custom-field/index.js +265 -0
- package/lib/incident-workflow/index.d.ts +378 -0
- package/lib/incident-workflow/index.js +943 -0
- package/lib/incident-workflow-trigger/index.d.ts +133 -0
- package/lib/incident-workflow-trigger/index.js +314 -0
- package/lib/index.d.ts +91 -0
- package/lib/index.js +97 -0
- package/lib/jira-cloud-account-mapping-rule/index.d.ts +559 -0
- package/lib/jira-cloud-account-mapping-rule/index.js +1578 -0
- package/lib/lazy-index.d.ts +4 -0
- package/lib/lazy-index.js +94 -0
- package/lib/maintenance-window/index.d.ts +81 -0
- package/lib/maintenance-window/index.js +168 -0
- package/lib/provider/index.d.ts +128 -0
- package/lib/provider/index.js +279 -0
- package/lib/response-play/index.d.ts +426 -0
- package/lib/response-play/index.js +1009 -0
- package/lib/ruleset/index.d.ts +94 -0
- package/lib/ruleset/index.js +215 -0
- package/lib/ruleset-rule/index.d.ts +1026 -0
- package/lib/ruleset-rule/index.js +2670 -0
- package/lib/schedule/index.d.ts +299 -0
- package/lib/schedule/index.js +740 -0
- package/lib/service/index.d.ts +592 -0
- package/lib/service/index.js +1608 -0
- package/lib/service-custom-field/index.d.ts +174 -0
- package/lib/service-custom-field/index.js +379 -0
- package/lib/service-custom-field-value/index.d.ts +117 -0
- package/lib/service-custom-field-value/index.js +269 -0
- package/lib/service-dependency/index.d.ts +216 -0
- package/lib/service-dependency/index.js +525 -0
- package/lib/service-event-rule/index.d.ts +964 -0
- package/lib/service-event-rule/index.js +2512 -0
- package/lib/service-integration/index.d.ts +546 -0
- package/lib/service-integration/index.js +1404 -0
- package/lib/slack-connection/index.d.ts +159 -0
- package/lib/slack-connection/index.js +369 -0
- package/lib/tag/index.d.ts +47 -0
- package/lib/tag/index.js +105 -0
- package/lib/tag-assignment/index.d.ts +61 -0
- package/lib/tag-assignment/index.js +130 -0
- package/lib/team/index.d.ts +73 -0
- package/lib/team/index.js +161 -0
- package/lib/team-membership/index.d.ts +62 -0
- package/lib/team-membership/index.js +136 -0
- package/lib/user/index.d.ts +130 -0
- package/lib/user/index.js +291 -0
- package/lib/user-contact-method/index.d.ts +98 -0
- package/lib/user-contact-method/index.js +219 -0
- package/lib/user-handoff-notification-rule/index.d.ts +131 -0
- package/lib/user-handoff-notification-rule/index.js +285 -0
- package/lib/user-notification-rule/index.d.ts +105 -0
- package/lib/user-notification-rule/index.js +258 -0
- package/lib/webhook-subscription/index.d.ts +276 -0
- package/lib/webhook-subscription/index.js +664 -0
- package/package.json +155 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2021, 2026
|
|
3
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { Construct } from 'constructs';
|
|
6
|
+
import * as cdktn from 'cdktn';
|
|
7
|
+
export interface ServiceCustomFieldConfig extends cdktn.TerraformMetaArguments {
|
|
8
|
+
/**
|
|
9
|
+
* The kind of data the custom field is allowed to contain.
|
|
10
|
+
*
|
|
11
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#data_type ServiceCustomField#data_type}
|
|
12
|
+
*/
|
|
13
|
+
readonly dataType: string;
|
|
14
|
+
/**
|
|
15
|
+
* Default value for the field.
|
|
16
|
+
*
|
|
17
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#default_value ServiceCustomField#default_value}
|
|
18
|
+
*/
|
|
19
|
+
readonly defaultValue?: string;
|
|
20
|
+
/**
|
|
21
|
+
* A description of the data this field contains.
|
|
22
|
+
*
|
|
23
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#description ServiceCustomField#description}
|
|
24
|
+
*/
|
|
25
|
+
readonly description?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The human-readable name of the field. This must be unique across an account.
|
|
28
|
+
*
|
|
29
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#display_name ServiceCustomField#display_name}
|
|
30
|
+
*/
|
|
31
|
+
readonly displayName: string;
|
|
32
|
+
/**
|
|
33
|
+
* Whether the field is enabled.
|
|
34
|
+
*
|
|
35
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#enabled ServiceCustomField#enabled}
|
|
36
|
+
*/
|
|
37
|
+
readonly enabled?: boolean | cdktn.IResolvable;
|
|
38
|
+
/**
|
|
39
|
+
* The type of data this field contains. In combination with the `data_type` field.
|
|
40
|
+
*
|
|
41
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#field_type ServiceCustomField#field_type}
|
|
42
|
+
*/
|
|
43
|
+
readonly fieldType: string;
|
|
44
|
+
/**
|
|
45
|
+
* The name of the field. May include ASCII characters, specifically lowercase letters, digits, and underescores. The `name` for a Field must be unique and cannot be changed once created.
|
|
46
|
+
*
|
|
47
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#name ServiceCustomField#name}
|
|
48
|
+
*/
|
|
49
|
+
readonly name: string;
|
|
50
|
+
/**
|
|
51
|
+
* field_option block
|
|
52
|
+
*
|
|
53
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#field_option ServiceCustomField#field_option}
|
|
54
|
+
*/
|
|
55
|
+
readonly fieldOption?: ServiceCustomFieldFieldOption[] | cdktn.IResolvable;
|
|
56
|
+
}
|
|
57
|
+
export interface ServiceCustomFieldFieldOption {
|
|
58
|
+
/**
|
|
59
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#data_type ServiceCustomField#data_type}
|
|
60
|
+
*/
|
|
61
|
+
readonly dataType: string;
|
|
62
|
+
/**
|
|
63
|
+
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#value ServiceCustomField#value}
|
|
64
|
+
*/
|
|
65
|
+
readonly value: string;
|
|
66
|
+
}
|
|
67
|
+
export declare function serviceCustomFieldFieldOptionToTerraform(struct?: ServiceCustomFieldFieldOption | cdktn.IResolvable): any;
|
|
68
|
+
export declare function serviceCustomFieldFieldOptionToHclTerraform(struct?: ServiceCustomFieldFieldOption | cdktn.IResolvable): any;
|
|
69
|
+
export declare class ServiceCustomFieldFieldOptionOutputReference extends cdktn.ComplexObject {
|
|
70
|
+
private isEmptyObject;
|
|
71
|
+
private resolvableValue?;
|
|
72
|
+
/**
|
|
73
|
+
* @param terraformResource The parent resource
|
|
74
|
+
* @param terraformAttribute The attribute on the parent resource this class is referencing
|
|
75
|
+
* @param complexObjectIndex the index of this item in the list
|
|
76
|
+
* @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
|
|
77
|
+
*/
|
|
78
|
+
constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
|
|
79
|
+
get internalValue(): ServiceCustomFieldFieldOption | cdktn.IResolvable | undefined;
|
|
80
|
+
set internalValue(value: ServiceCustomFieldFieldOption | cdktn.IResolvable | undefined);
|
|
81
|
+
private _dataType?;
|
|
82
|
+
get dataType(): string;
|
|
83
|
+
set dataType(value: string);
|
|
84
|
+
get dataTypeInput(): string | undefined;
|
|
85
|
+
get id(): string;
|
|
86
|
+
private _value?;
|
|
87
|
+
get value(): string;
|
|
88
|
+
set value(value: string);
|
|
89
|
+
get valueInput(): string | undefined;
|
|
90
|
+
}
|
|
91
|
+
export declare class ServiceCustomFieldFieldOptionList extends cdktn.ComplexList {
|
|
92
|
+
protected terraformResource: cdktn.IInterpolatingParent;
|
|
93
|
+
protected terraformAttribute: string;
|
|
94
|
+
protected wrapsSet: boolean;
|
|
95
|
+
internalValue?: ServiceCustomFieldFieldOption[] | cdktn.IResolvable;
|
|
96
|
+
/**
|
|
97
|
+
* @param terraformResource The parent resource
|
|
98
|
+
* @param terraformAttribute The attribute on the parent resource this class is referencing
|
|
99
|
+
* @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
|
|
100
|
+
*/
|
|
101
|
+
constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
|
|
102
|
+
/**
|
|
103
|
+
* @param index the index of the item to return
|
|
104
|
+
*/
|
|
105
|
+
get(index: number): ServiceCustomFieldFieldOptionOutputReference;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Represents a {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field pagerduty_service_custom_field}
|
|
109
|
+
*/
|
|
110
|
+
export declare class ServiceCustomField extends cdktn.TerraformResource {
|
|
111
|
+
static readonly tfResourceType = "pagerduty_service_custom_field";
|
|
112
|
+
/**
|
|
113
|
+
* Generates CDKTN code for importing a ServiceCustomField resource upon running "cdktn plan <stack-name>"
|
|
114
|
+
* @param scope The scope in which to define this construct
|
|
115
|
+
* @param importToId The construct id used in the generated config for the ServiceCustomField to import
|
|
116
|
+
* @param importFromId The id of the existing ServiceCustomField that should be imported. Refer to the {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#import import section} in the documentation of this resource for the id to use
|
|
117
|
+
* @param provider? Optional instance of the provider where the ServiceCustomField to import is found
|
|
118
|
+
*/
|
|
119
|
+
static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider): cdktn.ImportableResource;
|
|
120
|
+
/**
|
|
121
|
+
* Create a new {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field pagerduty_service_custom_field} Resource
|
|
122
|
+
*
|
|
123
|
+
* @param scope The scope in which to define this construct
|
|
124
|
+
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
|
|
125
|
+
* @param options ServiceCustomFieldConfig
|
|
126
|
+
*/
|
|
127
|
+
constructor(scope: Construct, id: string, config: ServiceCustomFieldConfig);
|
|
128
|
+
private _dataType?;
|
|
129
|
+
get dataType(): string;
|
|
130
|
+
set dataType(value: string);
|
|
131
|
+
get dataTypeInput(): string | undefined;
|
|
132
|
+
private _defaultValue?;
|
|
133
|
+
get defaultValue(): string;
|
|
134
|
+
set defaultValue(value: string);
|
|
135
|
+
resetDefaultValue(): void;
|
|
136
|
+
get defaultValueInput(): string | undefined;
|
|
137
|
+
private _description?;
|
|
138
|
+
get description(): string;
|
|
139
|
+
set description(value: string);
|
|
140
|
+
resetDescription(): void;
|
|
141
|
+
get descriptionInput(): string | undefined;
|
|
142
|
+
private _displayName?;
|
|
143
|
+
get displayName(): string;
|
|
144
|
+
set displayName(value: string);
|
|
145
|
+
get displayNameInput(): string | undefined;
|
|
146
|
+
private _enabled?;
|
|
147
|
+
get enabled(): boolean | cdktn.IResolvable;
|
|
148
|
+
set enabled(value: boolean | cdktn.IResolvable);
|
|
149
|
+
resetEnabled(): void;
|
|
150
|
+
get enabledInput(): boolean | cdktn.IResolvable | undefined;
|
|
151
|
+
private _fieldType?;
|
|
152
|
+
get fieldType(): string;
|
|
153
|
+
set fieldType(value: string);
|
|
154
|
+
get fieldTypeInput(): string | undefined;
|
|
155
|
+
get id(): string;
|
|
156
|
+
private _name?;
|
|
157
|
+
get name(): string;
|
|
158
|
+
set name(value: string);
|
|
159
|
+
get nameInput(): string | undefined;
|
|
160
|
+
get selfAttribute(): string;
|
|
161
|
+
get summary(): string;
|
|
162
|
+
get type(): string;
|
|
163
|
+
private _fieldOption;
|
|
164
|
+
get fieldOption(): ServiceCustomFieldFieldOptionList;
|
|
165
|
+
putFieldOption(value: ServiceCustomFieldFieldOption[] | cdktn.IResolvable): void;
|
|
166
|
+
resetFieldOption(): void;
|
|
167
|
+
get fieldOptionInput(): cdktn.IResolvable | ServiceCustomFieldFieldOption[] | undefined;
|
|
168
|
+
protected synthesizeAttributes(): {
|
|
169
|
+
[name: string]: any;
|
|
170
|
+
};
|
|
171
|
+
protected synthesizeHclAttributes(): {
|
|
172
|
+
[name: string]: any;
|
|
173
|
+
};
|
|
174
|
+
}
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b, _c;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ServiceCustomField = exports.ServiceCustomFieldFieldOptionList = exports.ServiceCustomFieldFieldOptionOutputReference = void 0;
|
|
5
|
+
exports.serviceCustomFieldFieldOptionToTerraform = serviceCustomFieldFieldOptionToTerraform;
|
|
6
|
+
exports.serviceCustomFieldFieldOptionToHclTerraform = serviceCustomFieldFieldOptionToHclTerraform;
|
|
7
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
8
|
+
const cdktn = require("cdktn");
|
|
9
|
+
function serviceCustomFieldFieldOptionToTerraform(struct) {
|
|
10
|
+
if (!cdktn.canInspect(struct) || cdktn.Tokenization.isResolvable(struct)) {
|
|
11
|
+
return struct;
|
|
12
|
+
}
|
|
13
|
+
if (cdktn.isComplexElement(struct)) {
|
|
14
|
+
throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
data_type: cdktn.stringToTerraform(struct.dataType),
|
|
18
|
+
value: cdktn.stringToTerraform(struct.value),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function serviceCustomFieldFieldOptionToHclTerraform(struct) {
|
|
22
|
+
if (!cdktn.canInspect(struct) || cdktn.Tokenization.isResolvable(struct)) {
|
|
23
|
+
return struct;
|
|
24
|
+
}
|
|
25
|
+
if (cdktn.isComplexElement(struct)) {
|
|
26
|
+
throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
|
|
27
|
+
}
|
|
28
|
+
const attrs = {
|
|
29
|
+
data_type: {
|
|
30
|
+
value: cdktn.stringToHclTerraform(struct.dataType),
|
|
31
|
+
isBlock: false,
|
|
32
|
+
type: "simple",
|
|
33
|
+
storageClassType: "string",
|
|
34
|
+
},
|
|
35
|
+
value: {
|
|
36
|
+
value: cdktn.stringToHclTerraform(struct.value),
|
|
37
|
+
isBlock: false,
|
|
38
|
+
type: "simple",
|
|
39
|
+
storageClassType: "string",
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
// remove undefined attributes
|
|
43
|
+
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
|
|
44
|
+
}
|
|
45
|
+
class ServiceCustomFieldFieldOptionOutputReference extends cdktn.ComplexObject {
|
|
46
|
+
/**
|
|
47
|
+
* @param terraformResource The parent resource
|
|
48
|
+
* @param terraformAttribute The attribute on the parent resource this class is referencing
|
|
49
|
+
* @param complexObjectIndex the index of this item in the list
|
|
50
|
+
* @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
|
|
51
|
+
*/
|
|
52
|
+
constructor(terraformResource, terraformAttribute, complexObjectIndex, complexObjectIsFromSet) {
|
|
53
|
+
super(terraformResource, terraformAttribute, complexObjectIsFromSet, complexObjectIndex);
|
|
54
|
+
this.isEmptyObject = false;
|
|
55
|
+
}
|
|
56
|
+
get internalValue() {
|
|
57
|
+
if (this.resolvableValue) {
|
|
58
|
+
return this.resolvableValue;
|
|
59
|
+
}
|
|
60
|
+
let hasAnyValues = this.isEmptyObject;
|
|
61
|
+
const internalValueResult = {};
|
|
62
|
+
if (this._dataType !== undefined) {
|
|
63
|
+
hasAnyValues = true;
|
|
64
|
+
internalValueResult.dataType = this._dataType;
|
|
65
|
+
}
|
|
66
|
+
if (this._value !== undefined) {
|
|
67
|
+
hasAnyValues = true;
|
|
68
|
+
internalValueResult.value = this._value;
|
|
69
|
+
}
|
|
70
|
+
return hasAnyValues ? internalValueResult : undefined;
|
|
71
|
+
}
|
|
72
|
+
set internalValue(value) {
|
|
73
|
+
if (value === undefined) {
|
|
74
|
+
this.isEmptyObject = false;
|
|
75
|
+
this.resolvableValue = undefined;
|
|
76
|
+
this._dataType = undefined;
|
|
77
|
+
this._value = undefined;
|
|
78
|
+
}
|
|
79
|
+
else if (cdktn.Tokenization.isResolvable(value)) {
|
|
80
|
+
this.isEmptyObject = false;
|
|
81
|
+
this.resolvableValue = value;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
this.isEmptyObject = Object.keys(value).length === 0;
|
|
85
|
+
this.resolvableValue = undefined;
|
|
86
|
+
this._dataType = value.dataType;
|
|
87
|
+
this._value = value.value;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
get dataType() {
|
|
91
|
+
return this.getStringAttribute('data_type');
|
|
92
|
+
}
|
|
93
|
+
set dataType(value) {
|
|
94
|
+
this._dataType = value;
|
|
95
|
+
}
|
|
96
|
+
// Temporarily expose input value. Use with caution.
|
|
97
|
+
get dataTypeInput() {
|
|
98
|
+
return this._dataType;
|
|
99
|
+
}
|
|
100
|
+
// id - computed: true, optional: false, required: false
|
|
101
|
+
get id() {
|
|
102
|
+
return this.getStringAttribute('id');
|
|
103
|
+
}
|
|
104
|
+
get value() {
|
|
105
|
+
return this.getStringAttribute('value');
|
|
106
|
+
}
|
|
107
|
+
set value(value) {
|
|
108
|
+
this._value = value;
|
|
109
|
+
}
|
|
110
|
+
// Temporarily expose input value. Use with caution.
|
|
111
|
+
get valueInput() {
|
|
112
|
+
return this._value;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.ServiceCustomFieldFieldOptionOutputReference = ServiceCustomFieldFieldOptionOutputReference;
|
|
116
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
117
|
+
ServiceCustomFieldFieldOptionOutputReference[_a] = { fqn: "@cdktn/provider-pagerduty.serviceCustomField.ServiceCustomFieldFieldOptionOutputReference", version: "15.0.0" };
|
|
118
|
+
class ServiceCustomFieldFieldOptionList extends cdktn.ComplexList {
|
|
119
|
+
/**
|
|
120
|
+
* @param terraformResource The parent resource
|
|
121
|
+
* @param terraformAttribute The attribute on the parent resource this class is referencing
|
|
122
|
+
* @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
|
|
123
|
+
*/
|
|
124
|
+
constructor(terraformResource, terraformAttribute, wrapsSet) {
|
|
125
|
+
super(terraformResource, terraformAttribute, wrapsSet);
|
|
126
|
+
this.terraformResource = terraformResource;
|
|
127
|
+
this.terraformAttribute = terraformAttribute;
|
|
128
|
+
this.wrapsSet = wrapsSet;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @param index the index of the item to return
|
|
132
|
+
*/
|
|
133
|
+
get(index) {
|
|
134
|
+
return new ServiceCustomFieldFieldOptionOutputReference(this.terraformResource, this.terraformAttribute, index, this.wrapsSet);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.ServiceCustomFieldFieldOptionList = ServiceCustomFieldFieldOptionList;
|
|
138
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
139
|
+
ServiceCustomFieldFieldOptionList[_b] = { fqn: "@cdktn/provider-pagerduty.serviceCustomField.ServiceCustomFieldFieldOptionList", version: "15.0.0" };
|
|
140
|
+
/**
|
|
141
|
+
* Represents a {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field pagerduty_service_custom_field}
|
|
142
|
+
*/
|
|
143
|
+
class ServiceCustomField extends cdktn.TerraformResource {
|
|
144
|
+
// ==============
|
|
145
|
+
// STATIC Methods
|
|
146
|
+
// ==============
|
|
147
|
+
/**
|
|
148
|
+
* Generates CDKTN code for importing a ServiceCustomField resource upon running "cdktn plan <stack-name>"
|
|
149
|
+
* @param scope The scope in which to define this construct
|
|
150
|
+
* @param importToId The construct id used in the generated config for the ServiceCustomField to import
|
|
151
|
+
* @param importFromId The id of the existing ServiceCustomField that should be imported. Refer to the {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field#import import section} in the documentation of this resource for the id to use
|
|
152
|
+
* @param provider? Optional instance of the provider where the ServiceCustomField to import is found
|
|
153
|
+
*/
|
|
154
|
+
static generateConfigForImport(scope, importToId, importFromId, provider) {
|
|
155
|
+
return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "pagerduty_service_custom_field", importId: importFromId, provider });
|
|
156
|
+
}
|
|
157
|
+
// ===========
|
|
158
|
+
// INITIALIZER
|
|
159
|
+
// ===========
|
|
160
|
+
/**
|
|
161
|
+
* Create a new {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/service_custom_field pagerduty_service_custom_field} Resource
|
|
162
|
+
*
|
|
163
|
+
* @param scope The scope in which to define this construct
|
|
164
|
+
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
|
|
165
|
+
* @param options ServiceCustomFieldConfig
|
|
166
|
+
*/
|
|
167
|
+
constructor(scope, id, config) {
|
|
168
|
+
super(scope, id, {
|
|
169
|
+
terraformResourceType: 'pagerduty_service_custom_field',
|
|
170
|
+
terraformGeneratorMetadata: {
|
|
171
|
+
providerName: 'pagerduty',
|
|
172
|
+
providerVersion: '3.31.0',
|
|
173
|
+
providerVersionConstraint: '~> 3.0'
|
|
174
|
+
},
|
|
175
|
+
provider: config.provider,
|
|
176
|
+
dependsOn: config.dependsOn,
|
|
177
|
+
count: config.count,
|
|
178
|
+
lifecycle: config.lifecycle,
|
|
179
|
+
provisioners: config.provisioners,
|
|
180
|
+
connection: config.connection,
|
|
181
|
+
forEach: config.forEach
|
|
182
|
+
});
|
|
183
|
+
// field_option - computed: false, optional: true, required: false
|
|
184
|
+
this._fieldOption = new ServiceCustomFieldFieldOptionList(this, "field_option", false);
|
|
185
|
+
this._dataType = config.dataType;
|
|
186
|
+
this._defaultValue = config.defaultValue;
|
|
187
|
+
this._description = config.description;
|
|
188
|
+
this._displayName = config.displayName;
|
|
189
|
+
this._enabled = config.enabled;
|
|
190
|
+
this._fieldType = config.fieldType;
|
|
191
|
+
this._name = config.name;
|
|
192
|
+
this._fieldOption.internalValue = config.fieldOption;
|
|
193
|
+
}
|
|
194
|
+
get dataType() {
|
|
195
|
+
return this.getStringAttribute('data_type');
|
|
196
|
+
}
|
|
197
|
+
set dataType(value) {
|
|
198
|
+
this._dataType = value;
|
|
199
|
+
}
|
|
200
|
+
// Temporarily expose input value. Use with caution.
|
|
201
|
+
get dataTypeInput() {
|
|
202
|
+
return this._dataType;
|
|
203
|
+
}
|
|
204
|
+
get defaultValue() {
|
|
205
|
+
return this.getStringAttribute('default_value');
|
|
206
|
+
}
|
|
207
|
+
set defaultValue(value) {
|
|
208
|
+
this._defaultValue = value;
|
|
209
|
+
}
|
|
210
|
+
resetDefaultValue() {
|
|
211
|
+
this._defaultValue = undefined;
|
|
212
|
+
}
|
|
213
|
+
// Temporarily expose input value. Use with caution.
|
|
214
|
+
get defaultValueInput() {
|
|
215
|
+
return this._defaultValue;
|
|
216
|
+
}
|
|
217
|
+
get description() {
|
|
218
|
+
return this.getStringAttribute('description');
|
|
219
|
+
}
|
|
220
|
+
set description(value) {
|
|
221
|
+
this._description = value;
|
|
222
|
+
}
|
|
223
|
+
resetDescription() {
|
|
224
|
+
this._description = undefined;
|
|
225
|
+
}
|
|
226
|
+
// Temporarily expose input value. Use with caution.
|
|
227
|
+
get descriptionInput() {
|
|
228
|
+
return this._description;
|
|
229
|
+
}
|
|
230
|
+
get displayName() {
|
|
231
|
+
return this.getStringAttribute('display_name');
|
|
232
|
+
}
|
|
233
|
+
set displayName(value) {
|
|
234
|
+
this._displayName = value;
|
|
235
|
+
}
|
|
236
|
+
// Temporarily expose input value. Use with caution.
|
|
237
|
+
get displayNameInput() {
|
|
238
|
+
return this._displayName;
|
|
239
|
+
}
|
|
240
|
+
get enabled() {
|
|
241
|
+
return this.getBooleanAttribute('enabled');
|
|
242
|
+
}
|
|
243
|
+
set enabled(value) {
|
|
244
|
+
this._enabled = value;
|
|
245
|
+
}
|
|
246
|
+
resetEnabled() {
|
|
247
|
+
this._enabled = undefined;
|
|
248
|
+
}
|
|
249
|
+
// Temporarily expose input value. Use with caution.
|
|
250
|
+
get enabledInput() {
|
|
251
|
+
return this._enabled;
|
|
252
|
+
}
|
|
253
|
+
get fieldType() {
|
|
254
|
+
return this.getStringAttribute('field_type');
|
|
255
|
+
}
|
|
256
|
+
set fieldType(value) {
|
|
257
|
+
this._fieldType = value;
|
|
258
|
+
}
|
|
259
|
+
// Temporarily expose input value. Use with caution.
|
|
260
|
+
get fieldTypeInput() {
|
|
261
|
+
return this._fieldType;
|
|
262
|
+
}
|
|
263
|
+
// id - computed: true, optional: false, required: false
|
|
264
|
+
get id() {
|
|
265
|
+
return this.getStringAttribute('id');
|
|
266
|
+
}
|
|
267
|
+
get name() {
|
|
268
|
+
return this.getStringAttribute('name');
|
|
269
|
+
}
|
|
270
|
+
set name(value) {
|
|
271
|
+
this._name = value;
|
|
272
|
+
}
|
|
273
|
+
// Temporarily expose input value. Use with caution.
|
|
274
|
+
get nameInput() {
|
|
275
|
+
return this._name;
|
|
276
|
+
}
|
|
277
|
+
// self - computed: true, optional: false, required: false
|
|
278
|
+
get selfAttribute() {
|
|
279
|
+
return this.getStringAttribute('self');
|
|
280
|
+
}
|
|
281
|
+
// summary - computed: true, optional: false, required: false
|
|
282
|
+
get summary() {
|
|
283
|
+
return this.getStringAttribute('summary');
|
|
284
|
+
}
|
|
285
|
+
// type - computed: true, optional: false, required: false
|
|
286
|
+
get type() {
|
|
287
|
+
return this.getStringAttribute('type');
|
|
288
|
+
}
|
|
289
|
+
get fieldOption() {
|
|
290
|
+
return this._fieldOption;
|
|
291
|
+
}
|
|
292
|
+
putFieldOption(value) {
|
|
293
|
+
this._fieldOption.internalValue = value;
|
|
294
|
+
}
|
|
295
|
+
resetFieldOption() {
|
|
296
|
+
this._fieldOption.internalValue = undefined;
|
|
297
|
+
}
|
|
298
|
+
// Temporarily expose input value. Use with caution.
|
|
299
|
+
get fieldOptionInput() {
|
|
300
|
+
return this._fieldOption.internalValue;
|
|
301
|
+
}
|
|
302
|
+
// =========
|
|
303
|
+
// SYNTHESIS
|
|
304
|
+
// =========
|
|
305
|
+
synthesizeAttributes() {
|
|
306
|
+
return {
|
|
307
|
+
data_type: cdktn.stringToTerraform(this._dataType),
|
|
308
|
+
default_value: cdktn.stringToTerraform(this._defaultValue),
|
|
309
|
+
description: cdktn.stringToTerraform(this._description),
|
|
310
|
+
display_name: cdktn.stringToTerraform(this._displayName),
|
|
311
|
+
enabled: cdktn.booleanToTerraform(this._enabled),
|
|
312
|
+
field_type: cdktn.stringToTerraform(this._fieldType),
|
|
313
|
+
name: cdktn.stringToTerraform(this._name),
|
|
314
|
+
field_option: cdktn.listMapper(serviceCustomFieldFieldOptionToTerraform, true)(this._fieldOption.internalValue),
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
synthesizeHclAttributes() {
|
|
318
|
+
const attrs = {
|
|
319
|
+
data_type: {
|
|
320
|
+
value: cdktn.stringToHclTerraform(this._dataType),
|
|
321
|
+
isBlock: false,
|
|
322
|
+
type: "simple",
|
|
323
|
+
storageClassType: "string",
|
|
324
|
+
},
|
|
325
|
+
default_value: {
|
|
326
|
+
value: cdktn.stringToHclTerraform(this._defaultValue),
|
|
327
|
+
isBlock: false,
|
|
328
|
+
type: "simple",
|
|
329
|
+
storageClassType: "string",
|
|
330
|
+
},
|
|
331
|
+
description: {
|
|
332
|
+
value: cdktn.stringToHclTerraform(this._description),
|
|
333
|
+
isBlock: false,
|
|
334
|
+
type: "simple",
|
|
335
|
+
storageClassType: "string",
|
|
336
|
+
},
|
|
337
|
+
display_name: {
|
|
338
|
+
value: cdktn.stringToHclTerraform(this._displayName),
|
|
339
|
+
isBlock: false,
|
|
340
|
+
type: "simple",
|
|
341
|
+
storageClassType: "string",
|
|
342
|
+
},
|
|
343
|
+
enabled: {
|
|
344
|
+
value: cdktn.booleanToHclTerraform(this._enabled),
|
|
345
|
+
isBlock: false,
|
|
346
|
+
type: "simple",
|
|
347
|
+
storageClassType: "boolean",
|
|
348
|
+
},
|
|
349
|
+
field_type: {
|
|
350
|
+
value: cdktn.stringToHclTerraform(this._fieldType),
|
|
351
|
+
isBlock: false,
|
|
352
|
+
type: "simple",
|
|
353
|
+
storageClassType: "string",
|
|
354
|
+
},
|
|
355
|
+
name: {
|
|
356
|
+
value: cdktn.stringToHclTerraform(this._name),
|
|
357
|
+
isBlock: false,
|
|
358
|
+
type: "simple",
|
|
359
|
+
storageClassType: "string",
|
|
360
|
+
},
|
|
361
|
+
field_option: {
|
|
362
|
+
value: cdktn.listMapperHcl(serviceCustomFieldFieldOptionToHclTerraform, true)(this._fieldOption.internalValue),
|
|
363
|
+
isBlock: true,
|
|
364
|
+
type: "list",
|
|
365
|
+
storageClassType: "ServiceCustomFieldFieldOptionList",
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
|
+
// remove undefined attributes
|
|
369
|
+
return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
exports.ServiceCustomField = ServiceCustomField;
|
|
373
|
+
_c = JSII_RTTI_SYMBOL_1;
|
|
374
|
+
ServiceCustomField[_c] = { fqn: "@cdktn/provider-pagerduty.serviceCustomField.ServiceCustomField", version: "15.0.0" };
|
|
375
|
+
// =================
|
|
376
|
+
// STATIC PROPERTIES
|
|
377
|
+
// =================
|
|
378
|
+
ServiceCustomField.tfResourceType = "pagerduty_service_custom_field";
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZS1jdXN0b20tZmllbGQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQTBFQSw0RkFTQztBQUdELGtHQXNCQzs7QUFuR0QsK0JBQStCO0FBaUUvQixTQUFnQix3Q0FBd0MsQ0FBQyxNQUEwRDtJQUNqSCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxNQUFNLENBQUM7SUFBQyxDQUFDO0lBQzVGLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvSEFBb0gsQ0FBQyxDQUFDO0lBQ3hJLENBQUM7SUFDRCxPQUFPO1FBQ0wsU0FBUyxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsUUFBUSxDQUFDO1FBQ3BELEtBQUssRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBTyxDQUFDLEtBQUssQ0FBQztLQUM5QyxDQUFBO0FBQ0gsQ0FBQztBQUdELFNBQWdCLDJDQUEyQyxDQUFDLE1BQTBEO0lBQ3BILElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLE1BQU0sQ0FBQztJQUFDLENBQUM7SUFDNUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9IQUFvSCxDQUFDLENBQUM7SUFDeEksQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFHO1FBQ1osU0FBUyxFQUFFO1lBQ1QsS0FBSyxFQUFFLEtB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QUFDO1FBRUYsOEJBQThCO1FBQzlCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFFLENBQUMsQ0FBQTtJQUM1SCxDQUFDOztBQTdRSCxnREE4UUM7OztBQTVRQyxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNHLGlDQUFjLEdBQUcsZ0NBQWdDLEFBQW5DLENBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMjEsIDIwMjZcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuLy8gaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfY3VzdG9tX2ZpZWxkXG4vLyBnZW5lcmF0ZWQgZnJvbSB0ZXJyYWZvcm0gcmVzb3VyY2Ugc2NoZW1hXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSAnY2RrdG4nO1xuXG4vLyBDb25maWd1cmF0aW9uXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUN1c3RvbUZpZWxkQ29uZmlnIGV4dGVuZHMgY2RrdG4uVGVycmFmb3JtTWV0YUFyZ3VtZW50cyB7XG4gIC8qKlxuICAqIFRoZSBraW5kIG9mIGRhdGEgdGhlIGN1c3RvbSBmaWVsZCBpcyBhbGxvd2VkIHRvIGNvbnRhaW4uXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX2N1c3RvbV9maWVsZCNkYXRhX3R5cGUgU2VydmljZUN1c3RvbUZpZWxkI2RhdGFfdHlwZX1cbiAgKi9cbiAgcmVhZG9ubHkgZGF0YVR5cGU6IHN0cmluZztcbiAgLyoqXG4gICogRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGZpZWxkLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvc2VydmljZV9jdXN0b21fZmllbGQjZGVmYXVsdF92YWx1ZSBTZXJ2aWNlQ3VzdG9tRmllbGQjZGVmYXVsdF92YWx1ZX1cbiAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICAvKipcbiAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBkYXRhIHRoaXMgZmllbGQgY29udGFpbnMuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX2N1c3RvbV9maWVsZCNkZXNjcmlwdGlvbiBTZXJ2aWNlQ3VzdG9tRmllbGQjZGVzY3JpcHRpb259XG4gICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgKiBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGUgZmllbGQuIFRoaXMgbXVzdCBiZSB1bmlxdWUgYWNyb3NzIGFuIGFjY291bnQuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX2N1c3RvbV9maWVsZCNkaXNwbGF5X25hbWUgU2VydmljZUN1c3RvbUZpZWxkI2Rpc3BsYXlfbmFtZX1cbiAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICogV2hldGhlciB0aGUgZmllbGQgaXMgZW5hYmxlZC5cbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfY3VzdG9tX2ZpZWxkI2VuYWJsZWQgU2VydmljZUN1c3RvbUZpZWxkI2VuYWJsZWR9XG4gICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuIHwgY2RrdG4uSVJlc29sdmFibGU7XG4gIC8qKlxuICAqIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBmaWVsZCBjb250YWlucy4gSW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGRhdGFfdHlwZWAgZmllbGQuXG4gICpcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX2N1c3RvbV9maWVsZCNmaWVsZF90eXBlIFNlcnZpY2VDdXN0b21GaWVsZCNmaWVsZF90eXBlfVxuICAqL1xuICByZWFkb25seSBmaWVsZFR5cGU6IHN0cmluZztcbiAgLyoqXG4gICogVGhlIG5hbWUgb2YgdGhlIGZpZWxkLiBNYXkgaW5jbHVkZSBBU0NJSSBjaGFyYWN0ZXJzLCBzcGVjaWZpY2FsbHkgbG93ZXJjYXNlIGxldHRlcnMsIGRpZ2l0cywgYW5kIHVuZGVyZXNjb3Jlcy4gVGhlIGBuYW1lYCBmb3IgYSBGaWVsZCBtdXN0IGJlIHVuaXF1ZSBhbmQgY2Fubm90IGJlIGNoYW5nZWQgb25jZSBjcmVhdGVkLlxuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvc2VydmljZV9jdXN0b21fZmllbGQjbmFtZSBTZXJ2aWNlQ3VzdG9tRmllbGQjbmFtZX1cbiAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgKiBmaWVsZF9vcHRpb24gYmxvY2tcbiAgKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfY3VzdG9tX2ZpZWxkI2ZpZWxkX29wdGlvbiBTZXJ2aWNlQ3VzdG9tRmllbGQjZmllbGRfb3B0aW9ufVxuICAqL1xuICByZWFkb25seSBmaWVsZE9wdGlvbj86IFNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uW10gfCBjZGt0bi5JUmVzb2x2YWJsZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUN1c3RvbUZpZWxkRmllbGRPcHRpb24ge1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy9zZXJ2aWNlX2N1c3RvbV9maWVsZCNkYXRhX3R5cGUgU2VydmljZUN1c3RvbUZpZWxkI2RhdGFfdHlwZX1cbiAgKi9cbiAgcmVhZG9ubHkgZGF0YVR5cGU6IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvc2VydmljZV9jdXN0b21fZmllbGQjdmFsdWUgU2VydmljZUN1c3RvbUZpZWxkI3ZhbHVlfVxuICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VydmljZUN1c3RvbUZpZWxkRmllbGRPcHRpb25Ub1RlcnJhZm9ybShzdHJ1Y3Q/OiBTZXJ2aWNlQ3VzdG9tRmllbGRGaWVsZE9wdGlvbiB8IGNka3RuLklSZXNvbHZhYmxlKTogYW55IHtcbiAgaWYgKCFjZGt0bi5jYW5JbnNwZWN0KHN0cnVjdCkgfHwgY2RrdG4uVG9rZW5pemF0aW9uLmlzUmVzb2x2YWJsZShzdHJ1Y3QpKSB7IHJldHVybiBzdHJ1Y3Q7IH1cbiAgaWYgKGNka3RuLmlzQ29tcGxleEVsZW1lbnQoc3RydWN0KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkEgY29tcGxleCBlbGVtZW50IHdhcyB1c2VkIGFzIGNvbmZpZ3VyYXRpb24sIHRoaXMgaXMgbm90IHN1cHBvcnRlZDogaHR0cHM6Ly9jZGsudGYvY29tcGxleC1vYmplY3QtYXMtY29uZmlndXJhdGlvblwiKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGRhdGFfdHlwZTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5kYXRhVHlwZSksXG4gICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHN0cnVjdCEudmFsdWUpLFxuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uVG9IY2xUZXJyYWZvcm0oc3RydWN0PzogU2VydmljZUN1c3RvbUZpZWxkRmllbGRPcHRpb24gfCBjZGt0bi5JUmVzb2x2YWJsZSk6IGFueSB7XG4gIGlmICghY2RrdG4uY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RuLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkgeyByZXR1cm4gc3RydWN0OyB9XG4gIGlmIChjZGt0bi5pc0NvbXBsZXhFbGVtZW50KHN0cnVjdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGNvbXBsZXggZWxlbWVudCB3YXMgdXNlZCBhcyBjb25maWd1cmF0aW9uLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQ6IGh0dHBzOi8vY2RrLnRmL2NvbXBsZXgtb2JqZWN0LWFzLWNvbmZpZ3VyYXRpb25cIik7XG4gIH1cbiAgY29uc3QgYXR0cnMgPSB7XG4gICAgZGF0YV90eXBlOiB7XG4gICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0oc3RydWN0IS5kYXRhVHlwZSksXG4gICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gICAgdmFsdWU6IHtcbiAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybShzdHJ1Y3QhLnZhbHVlKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgfTtcblxuICAvLyByZW1vdmUgdW5kZWZpbmVkIGF0dHJpYnV0ZXNcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhdHRycykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQpKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uT3V0cHV0UmVmZXJlbmNlIGV4dGVuZHMgY2RrdG4uQ29tcGxleE9iamVjdCB7XG4gIHByaXZhdGUgaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICBwcml2YXRlIHJlc29sdmFibGVWYWx1ZT86IGNka3RuLklSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAqIEBwYXJhbSB0ZXJyYWZvcm1SZXNvdXJjZSBUaGUgcGFyZW50IHJlc291cmNlXG4gICogQHBhcmFtIHRlcnJhZm9ybUF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG9uIHRoZSBwYXJlbnQgcmVzb3VyY2UgdGhpcyBjbGFzcyBpcyByZWZlcmVuY2luZ1xuICAqIEBwYXJhbSBjb21wbGV4T2JqZWN0SW5kZXggdGhlIGluZGV4IG9mIHRoaXMgaXRlbSBpbiB0aGUgbGlzdFxuICAqIEBwYXJhbSBjb21wbGV4T2JqZWN0SXNGcm9tU2V0IHdoZXRoZXIgdGhlIGxpc3QgaXMgd3JhcHBpbmcgYSBzZXQgKHdpbGwgYWRkIHRvbGlzdCgpIHRvIGJlIGFibGUgdG8gYWNjZXNzIGFuIGl0ZW0gdmlhIGFuIGluZGV4KVxuICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IodGVycmFmb3JtUmVzb3VyY2U6IGNka3RuLklJbnRlcnBvbGF0aW5nUGFyZW50LCB0ZXJyYWZvcm1BdHRyaWJ1dGU6IHN0cmluZywgY29tcGxleE9iamVjdEluZGV4OiBudW1iZXIsIGNvbXBsZXhPYmplY3RJc0Zyb21TZXQ6IGJvb2xlYW4pIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCBjb21wbGV4T2JqZWN0SXNGcm9tU2V0LCBjb21wbGV4T2JqZWN0SW5kZXgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlcm5hbFZhbHVlKCk6IFNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uIHwgY2RrdG4uSVJlc29sdmFibGUgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnJlc29sdmFibGVWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2YWJsZVZhbHVlO1xuICAgIH1cbiAgICBsZXQgaGFzQW55VmFsdWVzID0gdGhpcy5pc0VtcHR5T2JqZWN0O1xuICAgIGNvbnN0IGludGVybmFsVmFsdWVSZXN1bHQ6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLl9kYXRhVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5kYXRhVHlwZSA9IHRoaXMuX2RhdGFUeXBlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzQW55VmFsdWVzID0gdHJ1ZTtcbiAgICAgIGludGVybmFsVmFsdWVSZXN1bHQudmFsdWUgPSB0aGlzLl92YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FueVZhbHVlcyA/IGludGVybmFsVmFsdWVSZXN1bHQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGludGVybmFsVmFsdWUodmFsdWU6IFNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uIHwgY2RrdG4uSVJlc29sdmFibGUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gZmFsc2U7XG4gICAgICB0aGlzLnJlc29sdmFibGVWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2RhdGFUeXBlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNka3RuLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUodmFsdWUpKSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMDtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fZGF0YVR5cGUgPSB2YWx1ZS5kYXRhVHlwZTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWUudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLy8gZGF0YV90eXBlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2RhdGFUeXBlPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBkYXRhVHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2RhdGFfdHlwZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgZGF0YVR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2RhdGFUeXBlID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFUeXBlO1xuICB9XG5cbiAgLy8gaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2lkJyk7XG4gIH1cblxuICAvLyB2YWx1ZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF92YWx1ZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCd2YWx1ZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHZhbHVlSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQ3VzdG9tRmllbGRGaWVsZE9wdGlvbkxpc3QgZXh0ZW5kcyBjZGt0bi5Db21wbGV4TGlzdCB7XG4gIHB1YmxpYyBpbnRlcm5hbFZhbHVlPyA6IFNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uW10gfCBjZGt0bi5JUmVzb2x2YWJsZVxuXG4gIC8qKlxuICAqIEBwYXJhbSB0ZXJyYWZvcm1SZXNvdXJjZSBUaGUgcGFyZW50IHJlc291cmNlXG4gICogQHBhcmFtIHRlcnJhZm9ybUF0dHJpYnV0ZSBUaGUgYXR0cmlidXRlIG9uIHRoZSBwYXJlbnQgcmVzb3VyY2UgdGhpcyBjbGFzcyBpcyByZWZlcmVuY2luZ1xuICAqIEBwYXJhbSB3cmFwc1NldCB3aGV0aGVyIHRoZSBsaXN0IGlzIHdyYXBwaW5nIGEgc2V0ICh3aWxsIGFkZCB0b2xpc3QoKSB0byBiZSBhYmxlIHRvIGFjY2VzcyBhbiBpdGVtIHZpYSBhbiBpbmRleClcbiAgKi9cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHRlcnJhZm9ybVJlc291cmNlOiBjZGt0bi5JSW50ZXJwb2xhdGluZ1BhcmVudCwgcHJvdGVjdGVkIHRlcnJhZm9ybUF0dHJpYnV0ZTogc3RyaW5nLCBwcm90ZWN0ZWQgd3JhcHNTZXQ6IGJvb2xlYW4pIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCB3cmFwc1NldClcbiAgfVxuXG4gIC8qKlxuICAqIEBwYXJhbSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gdG8gcmV0dXJuXG4gICovXG4gIHB1YmxpYyBnZXQoaW5kZXg6IG51bWJlcik6IFNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uT3V0cHV0UmVmZXJlbmNlIHtcbiAgICByZXR1cm4gbmV3IFNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uT3V0cHV0UmVmZXJlbmNlKHRoaXMudGVycmFmb3JtUmVzb3VyY2UsIHRoaXMudGVycmFmb3JtQXR0cmlidXRlLCBpbmRleCwgdGhpcy53cmFwc1NldCk7XG4gIH1cbn1cblxuLyoqXG4qIFJlcHJlc2VudHMgYSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfY3VzdG9tX2ZpZWxkIHBhZ2VyZHV0eV9zZXJ2aWNlX2N1c3RvbV9maWVsZH1cbiovXG5leHBvcnQgY2xhc3MgU2VydmljZUN1c3RvbUZpZWxkIGV4dGVuZHMgY2RrdG4uVGVycmFmb3JtUmVzb3VyY2Uge1xuXG4gIC8vID09PT09PT09PT09PT09PT09XG4gIC8vIFNUQVRJQyBQUk9QRVJUSUVTXG4gIC8vID09PT09PT09PT09PT09PT09XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdGZSZXNvdXJjZVR5cGUgPSBcInBhZ2VyZHV0eV9zZXJ2aWNlX2N1c3RvbV9maWVsZFwiO1xuXG4gIC8vID09PT09PT09PT09PT09XG4gIC8vIFNUQVRJQyBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09XG4gIC8qKlxuICAqIEdlbmVyYXRlcyBDREtUTiBjb2RlIGZvciBpbXBvcnRpbmcgYSBTZXJ2aWNlQ3VzdG9tRmllbGQgcmVzb3VyY2UgdXBvbiBydW5uaW5nIFwiY2RrdG4gcGxhbiA8c3RhY2stbmFtZT5cIlxuICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICogQHBhcmFtIGltcG9ydFRvSWQgVGhlIGNvbnN0cnVjdCBpZCB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgY29uZmlnIGZvciB0aGUgU2VydmljZUN1c3RvbUZpZWxkIHRvIGltcG9ydFxuICAqIEBwYXJhbSBpbXBvcnRGcm9tSWQgVGhlIGlkIG9mIHRoZSBleGlzdGluZyBTZXJ2aWNlQ3VzdG9tRmllbGQgdGhhdCBzaG91bGQgYmUgaW1wb3J0ZWQuIFJlZmVyIHRvIHRoZSB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL3NlcnZpY2VfY3VzdG9tX2ZpZWxkI2ltcG9ydCBpbXBvcnQgc2VjdGlvbn0gaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyByZXNvdXJjZSBmb3IgdGhlIGlkIHRvIHVzZVxuICAqIEBwYXJhbSBwcm92aWRlcj8gT3B0aW9uYWwgaW5zdGFuY2Ugb2YgdGhlIHByb3ZpZGVyIHdoZXJlIHRoZSBTZXJ2aWNlQ3VzdG9tRmllbGQgdG8gaW1wb3J0IGlzIGZvdW5kXG4gICovXG4gIHB1YmxpYyBzdGF0aWMgZ2VuZXJhdGVDb25maWdGb3JJbXBvcnQoc2NvcGU6IENvbnN0cnVjdCwgaW1wb3J0VG9JZDogc3RyaW5nLCBpbXBvcnRGcm9tSWQ6IHN0cmluZywgcHJvdmlkZXI/OiBjZGt0bi5UZXJyYWZvcm1Qcm92aWRlcikge1xuICAgICAgICByZXR1cm4gbmV3IGNka3RuLkltcG9ydGFibGVSZXNvdXJjZShzY29wZSwgaW1wb3J0VG9JZCwgeyB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6IFwicGFnZXJkdXR5X3NlcnZpY2VfY3VzdG9tX2ZpZWxkXCIsIGltcG9ydElkOiBpbXBvcnRGcm9tSWQsIHByb3ZpZGVyIH0pO1xuICAgICAgfVxuXG4gIC8vID09PT09PT09PT09XG4gIC8vIElOSVRJQUxJWkVSXG4gIC8vID09PT09PT09PT09XG5cbiAgLyoqXG4gICogQ3JlYXRlIGEgbmV3IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvc2VydmljZV9jdXN0b21fZmllbGQgcGFnZXJkdXR5X3NlcnZpY2VfY3VzdG9tX2ZpZWxkfSBSZXNvdXJjZVxuICAqXG4gICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgKiBAcGFyYW0gaWQgVGhlIHNjb3BlZCBjb25zdHJ1Y3QgSUQuIE11c3QgYmUgdW5pcXVlIGFtb25nc3Qgc2libGluZ3MgaW4gdGhlIHNhbWUgc2NvcGVcbiAgKiBAcGFyYW0gb3B0aW9ucyBTZXJ2aWNlQ3VzdG9tRmllbGRDb25maWdcbiAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZzogU2VydmljZUN1c3RvbUZpZWxkQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICdwYWdlcmR1dHlfc2VydmljZV9jdXN0b21fZmllbGQnLFxuICAgICAgdGVycmFmb3JtR2VuZXJhdG9yTWV0YWRhdGE6IHtcbiAgICAgICAgcHJvdmlkZXJOYW1lOiAncGFnZXJkdXR5JyxcbiAgICAgICAgcHJvdmlkZXJWZXJzaW9uOiAnMy4zMS4wJyxcbiAgICAgICAgcHJvdmlkZXJWZXJzaW9uQ29uc3RyYWludDogJ34+IDMuMCdcbiAgICAgIH0sXG4gICAgICBwcm92aWRlcjogY29uZmlnLnByb3ZpZGVyLFxuICAgICAgZGVwZW5kc09uOiBjb25maWcuZGVwZW5kc09uLFxuICAgICAgY291bnQ6IGNvbmZpZy5jb3VudCxcbiAgICAgIGxpZmVjeWNsZTogY29uZmlnLmxpZmVjeWNsZSxcbiAgICAgIHByb3Zpc2lvbmVyczogY29uZmlnLnByb3Zpc2lvbmVycyxcbiAgICAgIGNvbm5lY3Rpb246IGNvbmZpZy5jb25uZWN0aW9uLFxuICAgICAgZm9yRWFjaDogY29uZmlnLmZvckVhY2hcbiAgICB9KTtcbiAgICB0aGlzLl9kYXRhVHlwZSA9IGNvbmZpZy5kYXRhVHlwZTtcbiAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSBjb25maWcuZGVmYXVsdFZhbHVlO1xuICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gY29uZmlnLmRlc2NyaXB0aW9uO1xuICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gY29uZmlnLmRpc3BsYXlOYW1lO1xuICAgIHRoaXMuX2VuYWJsZWQgPSBjb25maWcuZW5hYmxlZDtcbiAgICB0aGlzLl9maWVsZFR5cGUgPSBjb25maWcuZmllbGRUeXBlO1xuICAgIHRoaXMuX25hbWUgPSBjb25maWcubmFtZTtcbiAgICB0aGlzLl9maWVsZE9wdGlvbi5pbnRlcm5hbFZhbHVlID0gY29uZmlnLmZpZWxkT3B0aW9uO1xuICB9XG5cbiAgLy8gPT09PT09PT09PVxuICAvLyBBVFRSSUJVVEVTXG4gIC8vID09PT09PT09PT1cblxuICAvLyBkYXRhX3R5cGUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfZGF0YVR5cGU/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnZGF0YV90eXBlJyk7XG4gIH1cbiAgcHVibGljIHNldCBkYXRhVHlwZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZGF0YVR5cGUgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgZGF0YVR5cGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVR5cGU7XG4gIH1cblxuICAvLyBkZWZhdWx0X3ZhbHVlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogdHJ1ZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHByaXZhdGUgX2RlZmF1bHRWYWx1ZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgZGVmYXVsdFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnZGVmYXVsdF92YWx1ZScpO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVmYXVsdFZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXREZWZhdWx0VmFsdWUoKSB7XG4gICAgdGhpcy5fZGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkZWZhdWx0VmFsdWVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgLy8gZGVzY3JpcHRpb24gLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiB0cnVlLCByZXF1aXJlZDogZmFsc2VcbiAgcHJpdmF0ZSBfZGVzY3JpcHRpb24/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnZGVzY3JpcHRpb24nKTtcbiAgfVxuICBwdWJsaWMgc2V0IGRlc2NyaXB0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IHZhbHVlO1xuICB9XG4gIHB1YmxpYyByZXNldERlc2NyaXB0aW9uKCkge1xuICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8vIGRpc3BsYXlfbmFtZSAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9kaXNwbGF5TmFtZT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgZGlzcGxheU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdkaXNwbGF5X25hbWUnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGRpc3BsYXlOYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBkaXNwbGF5TmFtZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTtcbiAgfVxuXG4gIC8vIGVuYWJsZWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9lbmFibGVkPzogYm9vbGVhbiB8IGNka3RuLklSZXNvbHZhYmxlOyBcbiAgcHVibGljIGdldCBlbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmdldEJvb2xlYW5BdHRyaWJ1dGUoJ2VuYWJsZWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IGVuYWJsZWQodmFsdWU6IGJvb2xlYW4gfCBjZGt0bi5JUmVzb2x2YWJsZSkge1xuICAgIHRoaXMuX2VuYWJsZWQgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRFbmFibGVkKCkge1xuICAgIHRoaXMuX2VuYWJsZWQgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IGVuYWJsZWRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5hYmxlZDtcbiAgfVxuXG4gIC8vIGZpZWxkX3R5cGUgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfZmllbGRUeXBlPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBmaWVsZFR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdmaWVsZF90eXBlJyk7XG4gIH1cbiAgcHVibGljIHNldCBmaWVsZFR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkVHlwZSA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBmaWVsZFR5cGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRUeXBlO1xuICB9XG5cbiAgLy8gaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2lkJyk7XG4gIH1cblxuICAvLyBuYW1lIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX25hbWU/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCduYW1lJyk7XG4gIH1cbiAgcHVibGljIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IG5hbWVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmFtZTtcbiAgfVxuXG4gIC8vIHNlbGYgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBzZWxmQXR0cmlidXRlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFN0cmluZ0F0dHJpYnV0ZSgnc2VsZicpO1xuICB9XG5cbiAgLy8gc3VtbWFyeSAtIGNvbXB1dGVkOiB0cnVlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiBmYWxzZVxuICBwdWJsaWMgZ2V0IHN1bW1hcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCdzdW1tYXJ5Jyk7XG4gIH1cblxuICAvLyB0eXBlIC0gY29tcHV0ZWQ6IHRydWUsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IGZhbHNlXG4gIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ3R5cGUnKTtcbiAgfVxuXG4gIC8vIGZpZWxkX29wdGlvbiAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IHRydWUsIHJlcXVpcmVkOiBmYWxzZVxuICBwcml2YXRlIF9maWVsZE9wdGlvbiA9IG5ldyBTZXJ2aWNlQ3VzdG9tRmllbGRGaWVsZE9wdGlvbkxpc3QodGhpcywgXCJmaWVsZF9vcHRpb25cIiwgZmFsc2UpO1xuICBwdWJsaWMgZ2V0IGZpZWxkT3B0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE9wdGlvbjtcbiAgfVxuICBwdWJsaWMgcHV0RmllbGRPcHRpb24odmFsdWU6IFNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uW10gfCBjZGt0bi5JUmVzb2x2YWJsZSkge1xuICAgIHRoaXMuX2ZpZWxkT3B0aW9uLmludGVybmFsVmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgcmVzZXRGaWVsZE9wdGlvbigpIHtcbiAgICB0aGlzLl9maWVsZE9wdGlvbi5pbnRlcm5hbFZhbHVlID0gdW5kZWZpbmVkO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBmaWVsZE9wdGlvbklucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZE9wdGlvbi5pbnRlcm5hbFZhbHVlO1xuICB9XG5cbiAgLy8gPT09PT09PT09XG4gIC8vIFNZTlRIRVNJU1xuICAvLyA9PT09PT09PT1cblxuICBwcm90ZWN0ZWQgc3ludGhlc2l6ZUF0dHJpYnV0ZXMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhX3R5cGU6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2RhdGFUeXBlKSxcbiAgICAgIGRlZmF1bHRfdmFsdWU6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX2RlZmF1bHRWYWx1ZSksXG4gICAgICBkZXNjcmlwdGlvbjogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fZGVzY3JpcHRpb24pLFxuICAgICAgZGlzcGxheV9uYW1lOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9kaXNwbGF5TmFtZSksXG4gICAgICBlbmFibGVkOiBjZGt0bi5ib29sZWFuVG9UZXJyYWZvcm0odGhpcy5fZW5hYmxlZCksXG4gICAgICBmaWVsZF90eXBlOiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl9maWVsZFR5cGUpLFxuICAgICAgbmFtZTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0odGhpcy5fbmFtZSksXG4gICAgICBmaWVsZF9vcHRpb246IGNka3RuLmxpc3RNYXBwZXIoc2VydmljZUN1c3RvbUZpZWxkRmllbGRPcHRpb25Ub1RlcnJhZm9ybSwgdHJ1ZSkodGhpcy5fZmllbGRPcHRpb24uaW50ZXJuYWxWYWx1ZSksXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplSGNsQXR0cmlidXRlcygpOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgY29uc3QgYXR0cnMgPSB7XG4gICAgICBkYXRhX3R5cGU6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2RhdGFUeXBlKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdF92YWx1ZToge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fZGVmYXVsdFZhbHVlKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRpb246IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2Rlc2NyaXB0aW9uKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgZGlzcGxheV9uYW1lOiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl9kaXNwbGF5TmFtZSksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIGVuYWJsZWQ6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLmJvb2xlYW5Ub0hjbFRlcnJhZm9ybSh0aGlzLl9lbmFibGVkKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgfSxcbiAgICAgIGZpZWxkX3R5cGU6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX2ZpZWxkVHlwZSksXG4gICAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgICB0eXBlOiBcInNpbXBsZVwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcInN0cmluZ1wiLFxuICAgICAgfSxcbiAgICAgIG5hbWU6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLnN0cmluZ1RvSGNsVGVycmFmb3JtKHRoaXMuX25hbWUpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJzdHJpbmdcIixcbiAgICAgIH0sXG4gICAgICBmaWVsZF9vcHRpb246IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLmxpc3RNYXBwZXJIY2woc2VydmljZUN1c3RvbUZpZWxkRmllbGRPcHRpb25Ub0hjbFRlcnJhZm9ybSwgdHJ1ZSkodGhpcy5fZmllbGRPcHRpb24uaW50ZXJuYWxWYWx1ZSksXG4gICAgICAgIGlzQmxvY2s6IHRydWUsXG4gICAgICAgIHR5cGU6IFwibGlzdFwiLFxuICAgICAgICBzdG9yYWdlQ2xhc3NUeXBlOiBcIlNlcnZpY2VDdXN0b21GaWVsZEZpZWxkT3B0aW9uTGlzdFwiLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgLy8gcmVtb3ZlIHVuZGVmaW5lZCBhdHRyaWJ1dGVzXG4gICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhdHRycykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgKSlcbiAgfVxufVxuIl19
|