@alauda-fe/network 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/esm2022/index.mjs +2 -14
  2. package/esm2022/lib/types/k8s-exports.mjs +29 -2
  3. package/esm2022/lib/types/resource-definition.mjs +11 -1
  4. package/esm2022/lib/utils/domain-exports.mjs +16 -0
  5. package/esm2022/lib/utils/validators-exports.mjs +1 -1
  6. package/index.d.ts +1 -13
  7. package/lib/types/k8s-exports.d.ts +248 -1
  8. package/lib/types/resource-definition.d.ts +24 -0
  9. package/package.json +1 -1
  10. package/styles.css +1 -1
  11. package/esm2022/lib/components/loadbalancer-spec-form/component.mjs +0 -251
  12. package/esm2022/lib/components/service-annotations-form/annotations.component.mjs +0 -675
  13. package/esm2022/lib/components/service-annotations-form-item/annotations.component.mjs +0 -105
  14. package/esm2022/lib/features/network-policy/components/add-peer-rule-handler/component.mjs +0 -69
  15. package/esm2022/lib/features/network-policy/components/ip-block-display/component.mjs +0 -54
  16. package/esm2022/lib/features/network-policy/components/label-selector-display/component.mjs +0 -117
  17. package/esm2022/lib/features/network-policy/components/peer-container/component.mjs +0 -81
  18. package/esm2022/lib/features/network-policy/components/pod-review/component.mjs +0 -250
  19. package/esm2022/lib/features/network-policy/components/rule-table/component.mjs +0 -269
  20. package/esm2022/lib/features/network-policy/form/network-policy/component.mjs +0 -429
  21. package/esm2022/lib/features/network-policy/form/network-policy-ip-block/component.mjs +0 -102
  22. package/esm2022/lib/features/network-policy/form/network-policy-peer/component.mjs +0 -247
  23. package/esm2022/lib/features/network-policy/form/network-policy-ports/component.mjs +0 -161
  24. package/esm2022/lib/features/network-policy/form/network-policy-remote-except-input/component.mjs +0 -128
  25. package/esm2022/lib/features/network-policy/form/network-policy-rule/component.mjs +0 -142
  26. package/esm2022/lib/services/alb-api.service.mjs +0 -68
  27. package/esm2022/lib/services/subnet-util.service.mjs +0 -118
  28. package/esm2022/lib/types/alb-exports.mjs +0 -14
  29. package/esm2022/lib/types/metallb-exports.mjs +0 -2
  30. package/esm2022/lib/utils/alb-exports.mjs +0 -108
  31. package/esm2022/lib/utils/alb-internals.mjs +0 -2
  32. package/esm2022/lib/utils/common-exports.mjs +0 -22
  33. package/lib/components/loadbalancer-spec-form/component.d.ts +0 -34
  34. package/lib/components/service-annotations-form/annotations.component.d.ts +0 -74
  35. package/lib/components/service-annotations-form-item/annotations.component.d.ts +0 -14
  36. package/lib/features/network-policy/components/add-peer-rule-handler/component.d.ts +0 -8
  37. package/lib/features/network-policy/components/ip-block-display/component.d.ts +0 -7
  38. package/lib/features/network-policy/components/label-selector-display/component.d.ts +0 -13
  39. package/lib/features/network-policy/components/peer-container/component.d.ts +0 -18
  40. package/lib/features/network-policy/components/pod-review/component.d.ts +0 -37
  41. package/lib/features/network-policy/components/rule-table/component.d.ts +0 -21
  42. package/lib/features/network-policy/form/network-policy/component.d.ts +0 -70
  43. package/lib/features/network-policy/form/network-policy-ip-block/component.d.ts +0 -23
  44. package/lib/features/network-policy/form/network-policy-peer/component.d.ts +0 -43
  45. package/lib/features/network-policy/form/network-policy-ports/component.d.ts +0 -17
  46. package/lib/features/network-policy/form/network-policy-remote-except-input/component.d.ts +0 -23
  47. package/lib/features/network-policy/form/network-policy-rule/component.d.ts +0 -28
  48. package/lib/services/alb-api.service.d.ts +0 -18
  49. package/lib/services/subnet-util.service.d.ts +0 -26
  50. package/lib/types/alb-exports.d.ts +0 -52
  51. package/lib/types/metallb-exports.d.ts +0 -65
  52. package/lib/utils/alb-exports.d.ts +0 -16
  53. package/lib/utils/alb-internals.d.ts +0 -10
  54. /package/lib/utils/{common-exports.d.ts → domain-exports.d.ts} +0 -0
@@ -1,247 +0,0 @@
1
- import { FormModule } from '@alauda/ui';
2
- import { ERRORS_MAPPER_MODULE, EffectDirectiveModule, KeyValueFormTableComponent, PurePipe, TRANSLATE_MODULE, TranslateService, getK8sResourceLabelErrorMapper$, k8sResourceLabelValidator, } from '@alauda-fe/common';
3
- import { CommonModule } from '@angular/common';
4
- import { ChangeDetectionStrategy, Component, EventEmitter, Injector, Input, Output, } from '@angular/core';
5
- import { ReactiveFormsModule } from '@angular/forms';
6
- import { has } from 'lodash-es';
7
- import { BaseResourceFormGroupComponent } from 'ng-resource-form-util';
8
- import { NetworkPolicyPeerContainerComponent, PeerFooterDirective, PeerTitleDirective, } from '../../components/peer-container/component';
9
- import { PodPreviewComponent } from '../../components/pod-review/component';
10
- import { NetworkPolicyIpBlockFormComponent } from '../network-policy-ip-block/component';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@alauda-fe/common";
13
- import * as i2 from "@angular/common";
14
- import * as i3 from "@angular/forms";
15
- import * as i4 from "@alauda/ui";
16
- const _c0 = (a0, a1) => ({ cluster: a0, project: a1 });
17
- function NetworkPolicyPeerFormComponent_ng_container_2_ng_template_11_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelementStart(0, "span", 13);
19
- i0.ɵɵtext(1);
20
- i0.ɵɵpipe(2, "translate");
21
- i0.ɵɵelementEnd();
22
- } if (rf & 2) {
23
- const ctx_r1 = i0.ɵɵnextContext(2);
24
- i0.ɵɵadvance();
25
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "network." + ctx_r1.policyType + "_cluster_level_namespace_selector_no_data_tip"));
26
- } }
27
- function NetworkPolicyPeerFormComponent_ng_container_2_ng_template_19_Template(rf, ctx) { if (rf & 1) {
28
- i0.ɵɵelementStart(0, "span", 13);
29
- i0.ɵɵtext(1);
30
- i0.ɵɵpipe(2, "translate");
31
- i0.ɵɵelementEnd();
32
- } if (rf & 2) {
33
- const ctx_r1 = i0.ɵɵnextContext(2);
34
- i0.ɵɵadvance();
35
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "network." + ctx_r1.policyType + "_cluster_level_pod_selector_no_data_tip"));
36
- } }
37
- function NetworkPolicyPeerFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
38
- const _r1 = i0.ɵɵgetCurrentView();
39
- i0.ɵɵelementContainerStart(0);
40
- i0.ɵɵelementStart(1, "acl-network-policy-peer-container", 5);
41
- i0.ɵɵlistener("deleteRule", function NetworkPolicyPeerFormComponent_ng_container_2_Template_acl_network_policy_peer_container_deleteRule_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.deletePeer.next()); });
42
- i0.ɵɵelementStart(2, "div", 6);
43
- i0.ɵɵtext(3);
44
- i0.ɵɵpipe(4, "translate");
45
- i0.ɵɵelementEnd();
46
- i0.ɵɵelementStart(5, "aui-form-item", 7)(6, "label", 8);
47
- i0.ɵɵtext(7);
48
- i0.ɵɵpipe(8, "translate");
49
- i0.ɵɵelementEnd();
50
- i0.ɵɵelement(9, "acl-key-value-form-table", 9);
51
- i0.ɵɵpipe(10, "async");
52
- i0.ɵɵtemplate(11, NetworkPolicyPeerFormComponent_ng_container_2_ng_template_11_Template, 3, 3, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
53
- i0.ɵɵelementEnd();
54
- i0.ɵɵelementStart(13, "aui-form-item", 10)(14, "label", 8);
55
- i0.ɵɵtext(15);
56
- i0.ɵɵpipe(16, "translate");
57
- i0.ɵɵelementEnd();
58
- i0.ɵɵelement(17, "acl-key-value-form-table", 9);
59
- i0.ɵɵpipe(18, "async");
60
- i0.ɵɵtemplate(19, NetworkPolicyPeerFormComponent_ng_container_2_ng_template_19_Template, 3, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
61
- i0.ɵɵelementEnd();
62
- i0.ɵɵelementStart(21, "div", 11);
63
- i0.ɵɵelement(22, "acl-pod-preview", 12);
64
- i0.ɵɵpipe(23, "translate");
65
- i0.ɵɵelementEnd()();
66
- i0.ɵɵelementContainerEnd();
67
- } if (rf & 2) {
68
- let tmp_14_0;
69
- let tmp_15_0;
70
- const zeroStateTemplate_r3 = i0.ɵɵreference(12);
71
- const zeroPodStateTemplate_r4 = i0.ɵɵreference(20);
72
- const ctx_r1 = i0.ɵɵnextContext();
73
- i0.ɵɵadvance(3);
74
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 13, "network.pod_in_current_cluster"));
75
- i0.ɵɵadvance(4);
76
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 15, "network.namespace_selector"), " ");
77
- i0.ɵɵadvance(2);
78
- i0.ɵɵproperty("zeroStateTemplate", zeroStateTemplate_r3)("validator", ctx_r1.labelValidator)("errorMapper", i0.ɵɵpipeBind1(10, 17, ctx_r1.labelErrorMapper$));
79
- i0.ɵɵadvance(6);
80
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(16, 19, "network.pod_selector"), " ");
81
- i0.ɵɵadvance(2);
82
- i0.ɵɵproperty("zeroStateTemplate", zeroPodStateTemplate_r4)("validator", ctx_r1.labelValidator)("errorMapper", i0.ɵɵpipeBind1(18, 21, ctx_r1.labelErrorMapper$));
83
- i0.ɵɵadvance(5);
84
- i0.ɵɵproperty("hint", i0.ɵɵpipeBind1(23, 23, "network.pod_affected_by_rule_hint"))("baseParams", i0.ɵɵpureFunction2(25, _c0, ctx_r1.baseParams.cluster, ctx_r1.baseParams.project))("podLabelSelector", (tmp_14_0 = ctx_r1.form.get("podSelector.matchLabels")) == null ? null : tmp_14_0.value)("namespaceLabelSelector", (tmp_15_0 = ctx_r1.form.get("namespaceSelector.matchLabels")) == null ? null : tmp_15_0.value);
85
- } }
86
- function NetworkPolicyPeerFormComponent_ng_container_3_ng_template_11_Template(rf, ctx) { if (rf & 1) {
87
- i0.ɵɵelementStart(0, "span", 13);
88
- i0.ɵɵtext(1);
89
- i0.ɵɵpipe(2, "translate");
90
- i0.ɵɵelementEnd();
91
- } if (rf & 2) {
92
- const ctx_r1 = i0.ɵɵnextContext(2);
93
- i0.ɵɵadvance();
94
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "network." + ctx_r1.policyType + "_namespace_level_pod_selector_no_data_tip"));
95
- } }
96
- function NetworkPolicyPeerFormComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
97
- const _r5 = i0.ɵɵgetCurrentView();
98
- i0.ɵɵelementContainerStart(0);
99
- i0.ɵɵelementStart(1, "acl-network-policy-peer-container", 5);
100
- i0.ɵɵlistener("deleteRule", function NetworkPolicyPeerFormComponent_ng_container_3_Template_acl_network_policy_peer_container_deleteRule_1_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.deletePeer.next()); });
101
- i0.ɵɵelementStart(2, "div", 6);
102
- i0.ɵɵtext(3);
103
- i0.ɵɵpipe(4, "translate");
104
- i0.ɵɵelementEnd();
105
- i0.ɵɵelementStart(5, "aui-form-item", 10)(6, "label", 8);
106
- i0.ɵɵtext(7);
107
- i0.ɵɵpipe(8, "translate");
108
- i0.ɵɵelementEnd();
109
- i0.ɵɵelement(9, "acl-key-value-form-table", 9);
110
- i0.ɵɵpipe(10, "async");
111
- i0.ɵɵtemplate(11, NetworkPolicyPeerFormComponent_ng_container_3_ng_template_11_Template, 3, 3, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
112
- i0.ɵɵelementEnd();
113
- i0.ɵɵelementStart(13, "div", 11);
114
- i0.ɵɵelement(14, "acl-pod-preview", 14);
115
- i0.ɵɵpipe(15, "translate");
116
- i0.ɵɵelementEnd()();
117
- i0.ɵɵelementContainerEnd();
118
- } if (rf & 2) {
119
- let tmp_9_0;
120
- const zeroNsStateTemplate_r6 = i0.ɵɵreference(12);
121
- const ctx_r1 = i0.ɵɵnextContext();
122
- i0.ɵɵadvance(3);
123
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 8, "network.pod_in_current_namespace"), " ");
124
- i0.ɵɵadvance(4);
125
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 10, "network.pod_selector"), " ");
126
- i0.ɵɵadvance(2);
127
- i0.ɵɵproperty("zeroStateTemplate", zeroNsStateTemplate_r6)("validator", ctx_r1.labelValidator)("errorMapper", i0.ɵɵpipeBind1(10, 12, ctx_r1.labelErrorMapper$));
128
- i0.ɵɵadvance(5);
129
- i0.ɵɵproperty("hint", i0.ɵɵpipeBind1(15, 14, "network.pod_affected_by_rule_hint"))("baseParams", ctx_r1.baseParams)("podLabelSelector", (tmp_9_0 = ctx_r1.form.get("podSelector.matchLabels")) == null ? null : tmp_9_0.value);
130
- } }
131
- function NetworkPolicyPeerFormComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
132
- const _r7 = i0.ɵɵgetCurrentView();
133
- i0.ɵɵelementContainerStart(0);
134
- i0.ɵɵelementStart(1, "acl-network-policy-peer-container", 5);
135
- i0.ɵɵlistener("deleteRule", function NetworkPolicyPeerFormComponent_ng_container_4_Template_acl_network_policy_peer_container_deleteRule_1_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.deletePeer.next()); });
136
- i0.ɵɵelementStart(2, "div", 6);
137
- i0.ɵɵtext(3);
138
- i0.ɵɵpipe(4, "translate");
139
- i0.ɵɵelementEnd();
140
- i0.ɵɵelement(5, "acl-network-policy-ip-block-form", 15);
141
- i0.ɵɵelementEnd();
142
- i0.ɵɵelementContainerEnd();
143
- } if (rf & 2) {
144
- const ctx_r1 = i0.ɵɵnextContext();
145
- i0.ɵɵadvance(3);
146
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 2, "network.ip_segment"));
147
- i0.ɵɵadvance(2);
148
- i0.ɵɵproperty("cluster", ctx_r1.baseParams.cluster);
149
- } }
150
- export const getPeerType = (peer) => {
151
- if ((has(peer, 'namespaceSelector') && has(peer, 'podSelector')) ||
152
- has(peer, 'namespaceSelector')) {
153
- return 'clusterLevel';
154
- }
155
- if (has(peer, 'podSelector')) {
156
- return 'namespaceLevel';
157
- }
158
- if (has(peer, 'ipBlock')) {
159
- return 'ipBlock';
160
- }
161
- };
162
- export class NetworkPolicyPeerFormComponent extends BaseResourceFormGroupComponent {
163
- constructor(injector, translate) {
164
- super(injector);
165
- this.translate = translate;
166
- this.deletePeer = new EventEmitter();
167
- this.labelValidator = k8sResourceLabelValidator;
168
- this.labelErrorMapper$ = getK8sResourceLabelErrorMapper$(this.translate);
169
- this.getPeerType = getPeerType;
170
- }
171
- createForm() {
172
- return this.fb.group({
173
- ...(has(this.peer, 'namespaceSelector')
174
- ? {
175
- namespaceSelector: this.fb.group({
176
- matchLabels: this.peer?.namespaceSelector || {},
177
- }),
178
- }
179
- : null),
180
- ...(has(this.peer, 'podSelector')
181
- ? {
182
- podSelector: this.fb.group({
183
- matchLabels: this.peer?.podSelector || {},
184
- }),
185
- }
186
- : null),
187
- ...(has(this.peer, 'ipBlock')
188
- ? {
189
- ipBlock: this.peer?.ipBlock || null,
190
- }
191
- : null),
192
- });
193
- }
194
- static { this.ɵfac = function NetworkPolicyPeerFormComponent_Factory(t) { return new (t || NetworkPolicyPeerFormComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.TranslateService)); }; }
195
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NetworkPolicyPeerFormComponent, selectors: [["acl-network-policy-peer-form"]], inputs: { baseParams: "baseParams", policyType: "policyType", peer: "peer" }, outputs: { deletePeer: "deletePeer" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 8, consts: [["zeroStateTemplate", ""], ["zeroPodStateTemplate", ""], ["zeroNsStateTemplate", ""], [3, "formGroup", "ngSwitch"], [4, "ngSwitchCase"], [3, "deleteRule"], ["alkPeerTitle", ""], ["formGroupName", "namespaceSelector"], ["auiFormItemLabel", ""], ["formControlName", "matchLabels", "auiFormItemControl", "", 3, "zeroStateTemplate", "validator", "errorMapper"], ["formGroupName", "podSelector", 1, "last-form-item-no-margin"], ["alkPeerFooter", ""], [3, "hint", "baseParams", "podLabelSelector", "namespaceLabelSelector"], [1, "empty-placeholder", "!tw-border-0", "!tw-min-h-[48px]", "!tw-py-14"], [3, "hint", "baseParams", "podLabelSelector"], ["auiFormItemControl", "", "formControlName", "ipBlock", 3, "cluster"]], template: function NetworkPolicyPeerFormComponent_Template(rf, ctx) { if (rf & 1) {
196
- i0.ɵɵelementStart(0, "form", 3);
197
- i0.ɵɵpipe(1, "pure");
198
- i0.ɵɵtemplate(2, NetworkPolicyPeerFormComponent_ng_container_2_Template, 24, 28, "ng-container", 4)(3, NetworkPolicyPeerFormComponent_ng_container_3_Template, 16, 16, "ng-container", 4)(4, NetworkPolicyPeerFormComponent_ng_container_4_Template, 6, 4, "ng-container", 4);
199
- i0.ɵɵelementEnd();
200
- } if (rf & 2) {
201
- i0.ɵɵproperty("formGroup", ctx.form)("ngSwitch", i0.ɵɵpipeBind2(1, 5, ctx.peer, ctx.getPeerType));
202
- i0.ɵɵadvance(2);
203
- i0.ɵɵproperty("ngSwitchCase", "clusterLevel");
204
- i0.ɵɵadvance();
205
- i0.ɵɵproperty("ngSwitchCase", "namespaceLevel");
206
- i0.ɵɵadvance();
207
- i0.ɵɵproperty("ngSwitchCase", "ipBlock");
208
- } }, dependencies: [EffectDirectiveModule,
209
- CommonModule, i2.NgSwitch, i2.NgSwitchCase, i2.AsyncPipe, ReactiveFormsModule, i3.ɵNgNoValidate, i3.NgControlStatus, i3.NgControlStatusGroup, i3.FormGroupDirective, i3.FormControlName, i3.FormGroupName, FormModule, i4.FormItemComponent, i4.FormItemLabelDirective, i4.FormItemControlDirective, i1.TranslatePipe, KeyValueFormTableComponent,
210
- PodPreviewComponent,
211
- NetworkPolicyPeerContainerComponent,
212
- NetworkPolicyIpBlockFormComponent,
213
- PurePipe,
214
- PeerFooterDirective,
215
- PeerTitleDirective], encapsulation: 2, changeDetection: 0 }); }
216
- }
217
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NetworkPolicyPeerFormComponent, [{
218
- type: Component,
219
- args: [{ standalone: true, selector: 'acl-network-policy-peer-form', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
220
- EffectDirectiveModule,
221
- CommonModule,
222
- ReactiveFormsModule,
223
- FormModule,
224
- TRANSLATE_MODULE,
225
- ERRORS_MAPPER_MODULE,
226
- KeyValueFormTableComponent,
227
- PodPreviewComponent,
228
- NetworkPolicyPeerContainerComponent,
229
- NetworkPolicyIpBlockFormComponent,
230
- PurePipe,
231
- PeerFooterDirective,
232
- PeerTitleDirective,
233
- ], template: "<form\n [formGroup]=\"form\"\n [ngSwitch]=\"peer | pure: getPeerType\"\n>\n <!-- \u5F53\u524D\u96C6\u7FA4\u4E0B\u7684 Pod -->\n <ng-container *ngSwitchCase=\"'clusterLevel'\">\n <acl-network-policy-peer-container (deleteRule)=\"deletePeer.next()\">\n <div alkPeerTitle>{{ 'network.pod_in_current_cluster' | translate }}</div>\n\n <aui-form-item formGroupName=\"namespaceSelector\">\n <label auiFormItemLabel>\n {{ 'network.namespace_selector' | translate }}\n </label>\n <acl-key-value-form-table\n [zeroStateTemplate]=\"zeroStateTemplate\"\n formControlName=\"matchLabels\"\n auiFormItemControl\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n <ng-template #zeroStateTemplate>\n <span\n class=\"empty-placeholder !tw-border-0 !tw-min-h-[48px] !tw-py-14\"\n >{{\n 'network.' +\n policyType +\n '_cluster_level_namespace_selector_no_data_tip' | translate\n }}</span\n >\n </ng-template>\n </aui-form-item>\n\n <aui-form-item\n class=\"last-form-item-no-margin\"\n formGroupName=\"podSelector\"\n >\n <label auiFormItemLabel>\n {{ 'network.pod_selector' | translate }}\n </label>\n <acl-key-value-form-table\n [zeroStateTemplate]=\"zeroPodStateTemplate\"\n formControlName=\"matchLabels\"\n auiFormItemControl\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n <ng-template #zeroPodStateTemplate>\n <span\n class=\"empty-placeholder !tw-border-0 !tw-min-h-[48px] !tw-py-14\"\n >{{\n 'network.' +\n policyType +\n '_cluster_level_pod_selector_no_data_tip' | translate\n }}</span\n >\n </ng-template>\n </aui-form-item>\n\n <div alkPeerFooter>\n <acl-pod-preview\n [hint]=\"'network.pod_affected_by_rule_hint' | translate\"\n [baseParams]=\"{\n cluster: baseParams.cluster,\n project: baseParams.project,\n }\"\n [podLabelSelector]=\"form.get('podSelector.matchLabels')?.value\"\n [namespaceLabelSelector]=\"\n form.get('namespaceSelector.matchLabels')?.value\n \"\n ></acl-pod-preview>\n </div>\n </acl-network-policy-peer-container>\n </ng-container>\n\n <!-- \u5F53\u524D\u547D\u540D\u7A7A\u95F4\u4E0B\u7684 Pod -->\n <ng-container *ngSwitchCase=\"'namespaceLevel'\">\n <acl-network-policy-peer-container (deleteRule)=\"deletePeer.next()\">\n <div alkPeerTitle>\n {{ 'network.pod_in_current_namespace' | translate }}\n </div>\n\n <aui-form-item\n class=\"last-form-item-no-margin\"\n formGroupName=\"podSelector\"\n >\n <label auiFormItemLabel>\n {{ 'network.pod_selector' | translate }}\n </label>\n <acl-key-value-form-table\n [zeroStateTemplate]=\"zeroNsStateTemplate\"\n formControlName=\"matchLabels\"\n auiFormItemControl\n [validator]=\"labelValidator\"\n [errorMapper]=\"labelErrorMapper$ | async\"\n ></acl-key-value-form-table>\n <ng-template #zeroNsStateTemplate>\n <span\n class=\"empty-placeholder !tw-border-0 !tw-min-h-[48px] !tw-py-14\"\n >{{\n 'network.' +\n policyType +\n '_namespace_level_pod_selector_no_data_tip' | translate\n }}</span\n >\n </ng-template>\n </aui-form-item>\n\n <div alkPeerFooter>\n <acl-pod-preview\n [hint]=\"'network.pod_affected_by_rule_hint' | translate\"\n [baseParams]=\"baseParams\"\n [podLabelSelector]=\"form.get('podSelector.matchLabels')?.value\"\n ></acl-pod-preview>\n </div>\n </acl-network-policy-peer-container>\n </ng-container>\n\n <!-- IP \u6BB5 -->\n <ng-container *ngSwitchCase=\"'ipBlock'\">\n <acl-network-policy-peer-container (deleteRule)=\"deletePeer.next()\">\n <div alkPeerTitle>{{ 'network.ip_segment' | translate }}</div>\n\n <acl-network-policy-ip-block-form\n auiFormItemControl\n [cluster]=\"baseParams.cluster\"\n formControlName=\"ipBlock\"\n ></acl-network-policy-ip-block-form>\n </acl-network-policy-peer-container>\n </ng-container>\n</form>\n" }]
234
- }], () => [{ type: i0.Injector }, { type: i1.TranslateService }], { baseParams: [{
235
- type: Input,
236
- args: [{ required: true }]
237
- }], policyType: [{
238
- type: Input,
239
- args: [{ required: true }]
240
- }], peer: [{
241
- type: Input,
242
- args: [{ required: true }]
243
- }], deletePeer: [{
244
- type: Output
245
- }] }); })();
246
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NetworkPolicyPeerFormComponent, { className: "NetworkPolicyPeerFormComponent", filePath: "lib/features/network-policy/form/network-policy-peer/component.ts", lineNumber: 74 }); })();
247
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvZmVhdHVyZXMvbmV0d29yay1wb2xpY3kvZm9ybS9uZXR3b3JrLXBvbGljeS1wZWVyL2NvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvbmV0d29yay9zcmMvbGliL2ZlYXR1cmVzL25ldHdvcmstcG9saWN5L2Zvcm0vbmV0d29yay1wb2xpY3ktcGVlci90ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBRWhCLCtCQUErQixFQUMvQix5QkFBeUIsR0FDMUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJdkUsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxtQkFBbUIsRUFDbkIsa0JBQWtCLEdBQ25CLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlDQUFpQyxF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QXNFRSxvRkEyQ1A7WUFXMUMsaUJBQU87O1lBL0hMLEFBREEsb0NBQWtCLDZEQUNtQjtZQUd0QixlQUE0QjtZQUE1Qiw2Q0FBNEI7WUFzRTVCLGNBQThCO1lBQTlCLCtDQUE4QjtZQTJDOUIsY0FBdUI7WUFBdkIsd0NBQXVCOzRCRDVEcEMscUJBQXFCO1lBQ3JCLFlBQVksOENBQ1osbUJBQW1CLDhIQUNuQixVQUFVLGtHQUdWLDBCQUEwQjtZQUMxQixtQkFBbUI7WUFDbkIsbUNBQW1DO1lBQ25DLGlDQUFpQztZQUNqQyxRQUFRO1lBQ1IsbUJBQW1CO1lBQ25CLGtCQUFrQjs7aUZBR1QsOEJBQThCO2NBckIxQyxTQUFTOzZCQUNJLElBQUksWUFDTiw4QkFBOEIsbUJBRXZCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AscUJBQXFCO29CQUNyQixZQUFZO29CQUNaLG1CQUFtQjtvQkFDbkIsVUFBVTtvQkFDVixnQkFBZ0I7b0JBQ2hCLG9CQUFvQjtvQkFDcEIsMEJBQTBCO29CQUMxQixtQkFBbUI7b0JBQ25CLG1DQUFtQztvQkFDbkMsaUNBQWlDO29CQUNqQyxRQUFRO29CQUNSLG1CQUFtQjtvQkFDbkIsa0JBQWtCO2lCQUNuQjt3RUFJRCxVQUFVO2tCQURULEtBQUs7bUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBSXpCLFVBQVU7a0JBRFQsS0FBSzttQkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFJekIsSUFBSTtrQkFESCxLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUl6QixVQUFVO2tCQURULE1BQU07O2tGQVZJLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Nb2R1bGUgfSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEVSUk9SU19NQVBQRVJfTU9EVUxFLFxuICBFZmZlY3REaXJlY3RpdmVNb2R1bGUsXG4gIEtleVZhbHVlRm9ybVRhYmxlQ29tcG9uZW50LFxuICBQdXJlUGlwZSxcbiAgVFJBTlNMQVRFX01PRFVMRSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgV29ya3NwYWNlLFxuICBnZXRLOHNSZXNvdXJjZUxhYmVsRXJyb3JNYXBwZXIkLFxuICBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgaGFzIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJhc2VSZXNvdXJjZUZvcm1Hcm91cENvbXBvbmVudCB9IGZyb20gJ25nLXJlc291cmNlLWZvcm0tdXRpbCc7XG5cbmltcG9ydCB7IE5ldHdvcmtQb2xpY3lQZWVyLCBQb2xpY3lUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMvazhzLWV4cG9ydHMnO1xuaW1wb3J0IHsgTmV0d29ya1BvbGljeVBlZXJUeXBlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9hZGQtcGVlci1ydWxlLWhhbmRsZXIvY29tcG9uZW50JztcbmltcG9ydCB7XG4gIE5ldHdvcmtQb2xpY3lQZWVyQ29udGFpbmVyQ29tcG9uZW50LFxuICBQZWVyRm9vdGVyRGlyZWN0aXZlLFxuICBQZWVyVGl0bGVEaXJlY3RpdmUsXG59IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvcGVlci1jb250YWluZXIvY29tcG9uZW50JztcbmltcG9ydCB7IFBvZFByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3BvZC1yZXZpZXcvY29tcG9uZW50JztcbmltcG9ydCB7IE5ldHdvcmtQb2xpY3lJcEJsb2NrRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL25ldHdvcmstcG9saWN5LWlwLWJsb2NrL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBnZXRQZWVyVHlwZSA9IChwZWVyOiBOZXR3b3JrUG9saWN5UGVlcik6IE5ldHdvcmtQb2xpY3lQZWVyVHlwZSA9PiB7XG4gIGlmIChcbiAgICAoaGFzKHBlZXIsICduYW1lc3BhY2VTZWxlY3RvcicpICYmIGhhcyhwZWVyLCAncG9kU2VsZWN0b3InKSkgfHxcbiAgICBoYXMocGVlciwgJ25hbWVzcGFjZVNlbGVjdG9yJylcbiAgKSB7XG4gICAgcmV0dXJuICdjbHVzdGVyTGV2ZWwnO1xuICB9XG5cbiAgaWYgKGhhcyhwZWVyLCAncG9kU2VsZWN0b3InKSkge1xuICAgIHJldHVybiAnbmFtZXNwYWNlTGV2ZWwnO1xuICB9XG5cbiAgaWYgKGhhcyhwZWVyLCAnaXBCbG9jaycpKSB7XG4gICAgcmV0dXJuICdpcEJsb2NrJztcbiAgfVxufTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYWNsLW5ldHdvcmstcG9saWN5LXBlZXItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZvcm1Nb2R1bGUsXG4gICAgVFJBTlNMQVRFX01PRFVMRSxcbiAgICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgICBLZXlWYWx1ZUZvcm1UYWJsZUNvbXBvbmVudCxcbiAgICBQb2RQcmV2aWV3Q29tcG9uZW50LFxuICAgIE5ldHdvcmtQb2xpY3lQZWVyQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIE5ldHdvcmtQb2xpY3lJcEJsb2NrRm9ybUNvbXBvbmVudCxcbiAgICBQdXJlUGlwZSxcbiAgICBQZWVyRm9vdGVyRGlyZWN0aXZlLFxuICAgIFBlZXJUaXRsZURpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmV0d29ya1BvbGljeVBlZXJGb3JtQ29tcG9uZW50IGV4dGVuZHMgQmFzZVJlc291cmNlRm9ybUdyb3VwQ29tcG9uZW50PE5ldHdvcmtQb2xpY3lQZWVyPiB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGJhc2VQYXJhbXM6IFdvcmtzcGFjZTtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwb2xpY3lUeXBlOiBMb3dlcmNhc2U8UG9saWN5VHlwZT47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcGVlcjogTmV0d29ya1BvbGljeVBlZXI7XG5cbiAgQE91dHB1dCgpXG4gIGRlbGV0ZVBlZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgbGFiZWxWYWxpZGF0b3IgPSBrOHNSZXNvdXJjZUxhYmVsVmFsaWRhdG9yO1xuICBsYWJlbEVycm9yTWFwcGVyJCA9IGdldEs4c1Jlc291cmNlTGFiZWxFcnJvck1hcHBlciQodGhpcy50cmFuc2xhdGUpO1xuICBnZXRQZWVyVHlwZSA9IGdldFBlZXJUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgb3ZlcnJpZGUgY3JlYXRlRm9ybSgpIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICAuLi4oaGFzKHRoaXMucGVlciwgJ25hbWVzcGFjZVNlbGVjdG9yJylcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBuYW1lc3BhY2VTZWxlY3RvcjogdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAgIG1hdGNoTGFiZWxzOiB0aGlzLnBlZXI/Lm5hbWVzcGFjZVNlbGVjdG9yIHx8IHt9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwpLFxuICAgICAgLi4uKGhhcyh0aGlzLnBlZXIsICdwb2RTZWxlY3RvcicpXG4gICAgICAgID8ge1xuICAgICAgICAgICAgcG9kU2VsZWN0b3I6IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgICBtYXRjaExhYmVsczogdGhpcy5wZWVyPy5wb2RTZWxlY3RvciB8fCB7fSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH1cbiAgICAgICAgOiBudWxsKSxcbiAgICAgIC4uLihoYXModGhpcy5wZWVyLCAnaXBCbG9jaycpXG4gICAgICAgID8ge1xuICAgICAgICAgICAgaXBCbG9jazogdGhpcy5wZWVyPy5pcEJsb2NrIHx8IG51bGwsXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwpLFxuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybVxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICBbbmdTd2l0Y2hdPVwicGVlciB8IHB1cmU6IGdldFBlZXJUeXBlXCJcbj5cbiAgPCEtLSDlvZPliY3pm4bnvqTkuIvnmoQgUG9kIC0tPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2x1c3RlckxldmVsJ1wiPlxuICAgIDxhY2wtbmV0d29yay1wb2xpY3ktcGVlci1jb250YWluZXIgKGRlbGV0ZVJ1bGUpPVwiZGVsZXRlUGVlci5uZXh0KClcIj5cbiAgICAgIDxkaXYgYWxrUGVlclRpdGxlPnt7ICduZXR3b3JrLnBvZF9pbl9jdXJyZW50X2NsdXN0ZXInIHwgdHJhbnNsYXRlIH19PC9kaXY+XG5cbiAgICAgIDxhdWktZm9ybS1pdGVtIGZvcm1Hcm91cE5hbWU9XCJuYW1lc3BhY2VTZWxlY3RvclwiPlxuICAgICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgICAgICB7eyAnbmV0d29yay5uYW1lc3BhY2Vfc2VsZWN0b3InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxhY2wta2V5LXZhbHVlLWZvcm0tdGFibGVcbiAgICAgICAgICBbemVyb1N0YXRlVGVtcGxhdGVdPVwiemVyb1N0YXRlVGVtcGxhdGVcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1hdGNoTGFiZWxzXCJcbiAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICBbdmFsaWRhdG9yXT1cImxhYmVsVmFsaWRhdG9yXCJcbiAgICAgICAgICBbZXJyb3JNYXBwZXJdPVwibGFiZWxFcnJvck1hcHBlciQgfCBhc3luY1wiXG4gICAgICAgID48L2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN6ZXJvU3RhdGVUZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlciAhdHctYm9yZGVyLTAgIXR3LW1pbi1oLVs0OHB4XSAhdHctcHktMTRcIlxuICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICduZXR3b3JrLicgK1xuICAgICAgICAgICAgICAgIHBvbGljeVR5cGUgK1xuICAgICAgICAgICAgICAgICdfY2x1c3Rlcl9sZXZlbF9uYW1lc3BhY2Vfc2VsZWN0b3Jfbm9fZGF0YV90aXAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgICAgY2xhc3M9XCJsYXN0LWZvcm0taXRlbS1uby1tYXJnaW5cIlxuICAgICAgICBmb3JtR3JvdXBOYW1lPVwicG9kU2VsZWN0b3JcIlxuICAgICAgPlxuICAgICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgICAgICB7eyAnbmV0d29yay5wb2Rfc2VsZWN0b3InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxhY2wta2V5LXZhbHVlLWZvcm0tdGFibGVcbiAgICAgICAgICBbemVyb1N0YXRlVGVtcGxhdGVdPVwiemVyb1BvZFN0YXRlVGVtcGxhdGVcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1hdGNoTGFiZWxzXCJcbiAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICBbdmFsaWRhdG9yXT1cImxhYmVsVmFsaWRhdG9yXCJcbiAgICAgICAgICBbZXJyb3JNYXBwZXJdPVwibGFiZWxFcnJvck1hcHBlciQgfCBhc3luY1wiXG4gICAgICAgID48L2FjbC1rZXktdmFsdWUtZm9ybS10YWJsZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN6ZXJvUG9kU3RhdGVUZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlciAhdHctYm9yZGVyLTAgIXR3LW1pbi1oLVs0OHB4XSAhdHctcHktMTRcIlxuICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICduZXR3b3JrLicgK1xuICAgICAgICAgICAgICAgIHBvbGljeVR5cGUgK1xuICAgICAgICAgICAgICAgICdfY2x1c3Rlcl9sZXZlbF9wb2Rfc2VsZWN0b3Jfbm9fZGF0YV90aXAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgICAgPGRpdiBhbGtQZWVyRm9vdGVyPlxuICAgICAgICA8YWNsLXBvZC1wcmV2aWV3XG4gICAgICAgICAgW2hpbnRdPVwiJ25ldHdvcmsucG9kX2FmZmVjdGVkX2J5X3J1bGVfaGludCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtiYXNlUGFyYW1zXT1cIntcbiAgICAgICAgICAgIGNsdXN0ZXI6IGJhc2VQYXJhbXMuY2x1c3RlcixcbiAgICAgICAgICAgIHByb2plY3Q6IGJhc2VQYXJhbXMucHJvamVjdCxcbiAgICAgICAgICB9XCJcbiAgICAgICAgICBbcG9kTGFiZWxTZWxlY3Rvcl09XCJmb3JtLmdldCgncG9kU2VsZWN0b3IubWF0Y2hMYWJlbHMnKT8udmFsdWVcIlxuICAgICAgICAgIFtuYW1lc3BhY2VMYWJlbFNlbGVjdG9yXT1cIlxuICAgICAgICAgICAgZm9ybS5nZXQoJ25hbWVzcGFjZVNlbGVjdG9yLm1hdGNoTGFiZWxzJyk/LnZhbHVlXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvYWNsLXBvZC1wcmV2aWV3PlxuICAgICAgPC9kaXY+XG4gICAgPC9hY2wtbmV0d29yay1wb2xpY3ktcGVlci1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0g5b2T5YmN5ZG95ZCN56m66Ze05LiL55qEIFBvZCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ25hbWVzcGFjZUxldmVsJ1wiPlxuICAgIDxhY2wtbmV0d29yay1wb2xpY3ktcGVlci1jb250YWluZXIgKGRlbGV0ZVJ1bGUpPVwiZGVsZXRlUGVlci5uZXh0KClcIj5cbiAgICAgIDxkaXYgYWxrUGVlclRpdGxlPlxuICAgICAgICB7eyAnbmV0d29yay5wb2RfaW5fY3VycmVudF9uYW1lc3BhY2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGF1aS1mb3JtLWl0ZW1cbiAgICAgICAgY2xhc3M9XCJsYXN0LWZvcm0taXRlbS1uby1tYXJnaW5cIlxuICAgICAgICBmb3JtR3JvdXBOYW1lPVwicG9kU2VsZWN0b3JcIlxuICAgICAgPlxuICAgICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD5cbiAgICAgICAgICB7eyAnbmV0d29yay5wb2Rfc2VsZWN0b3InIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxhY2wta2V5LXZhbHVlLWZvcm0tdGFibGVcbiAgICAgICAgICBbemVyb1N0YXRlVGVtcGxhdGVdPVwiemVyb05zU3RhdGVUZW1wbGF0ZVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWF0Y2hMYWJlbHNcIlxuICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgIFt2YWxpZGF0b3JdPVwibGFiZWxWYWxpZGF0b3JcIlxuICAgICAgICAgIFtlcnJvck1hcHBlcl09XCJsYWJlbEVycm9yTWFwcGVyJCB8IGFzeW5jXCJcbiAgICAgICAgPjwvYWNsLWtleS12YWx1ZS1mb3JtLXRhYmxlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3plcm9Oc1N0YXRlVGVtcGxhdGU+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiZW1wdHktcGxhY2Vob2xkZXIgIXR3LWJvcmRlci0wICF0dy1taW4taC1bNDhweF0gIXR3LXB5LTE0XCJcbiAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAnbmV0d29yay4nICtcbiAgICAgICAgICAgICAgICBwb2xpY3lUeXBlICtcbiAgICAgICAgICAgICAgICAnX25hbWVzcGFjZV9sZXZlbF9wb2Rfc2VsZWN0b3Jfbm9fZGF0YV90aXAnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvYXVpLWZvcm0taXRlbT5cblxuICAgICAgPGRpdiBhbGtQZWVyRm9vdGVyPlxuICAgICAgICA8YWNsLXBvZC1wcmV2aWV3XG4gICAgICAgICAgW2hpbnRdPVwiJ25ldHdvcmsucG9kX2FmZmVjdGVkX2J5X3J1bGVfaGludCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtiYXNlUGFyYW1zXT1cImJhc2VQYXJhbXNcIlxuICAgICAgICAgIFtwb2RMYWJlbFNlbGVjdG9yXT1cImZvcm0uZ2V0KCdwb2RTZWxlY3Rvci5tYXRjaExhYmVscycpPy52YWx1ZVwiXG4gICAgICAgID48L2FjbC1wb2QtcHJldmlldz5cbiAgICAgIDwvZGl2PlxuICAgIDwvYWNsLW5ldHdvcmstcG9saWN5LXBlZXItY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIElQIOautSAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2lwQmxvY2snXCI+XG4gICAgPGFjbC1uZXR3b3JrLXBvbGljeS1wZWVyLWNvbnRhaW5lciAoZGVsZXRlUnVsZSk9XCJkZWxldGVQZWVyLm5leHQoKVwiPlxuICAgICAgPGRpdiBhbGtQZWVyVGl0bGU+e3sgJ25ldHdvcmsuaXBfc2VnbWVudCcgfCB0cmFuc2xhdGUgfX08L2Rpdj5cblxuICAgICAgPGFjbC1uZXR3b3JrLXBvbGljeS1pcC1ibG9jay1mb3JtXG4gICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICBbY2x1c3Rlcl09XCJiYXNlUGFyYW1zLmNsdXN0ZXJcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpcEJsb2NrXCJcbiAgICAgID48L2FjbC1uZXR3b3JrLXBvbGljeS1pcC1ibG9jay1mb3JtPlxuICAgIDwvYWNsLW5ldHdvcmstcG9saWN5LXBlZXItY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cbiJdfQ==
@@ -1,161 +0,0 @@
1
- import { ButtonModule, FormModule, IconModule, InputModule, SelectModule, } from '@alauda/ui';
2
- import { ArrayFormTableModule, ERRORS_MAPPER_MODULE, EffectDirectiveModule, INT_ZERO_PATTERN, TRANSLATE_MODULE, } from '@alauda-fe/common';
3
- import { CommonModule } from '@angular/common';
4
- import { ChangeDetectionStrategy, Component, Injector, Input, } from '@angular/core';
5
- import { ControlContainer, ReactiveFormsModule, Validators, } from '@angular/forms';
6
- import { BaseResourceFormArrayComponent, } from 'ng-resource-form-util';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/forms";
9
- import * as i2 from "@alauda-fe/common";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "@alauda/ui";
12
- const _c0 = a0 => ({ range: a0 });
13
- function NetworkPolicyPortsFormComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
14
- i0.ɵɵelementContainerStart(0, 5);
15
- i0.ɵɵelementStart(1, "th", 6);
16
- i0.ɵɵtext(2);
17
- i0.ɵɵpipe(3, "translate");
18
- i0.ɵɵelementEnd();
19
- i0.ɵɵelementStart(4, "th", 7);
20
- i0.ɵɵtext(5);
21
- i0.ɵɵpipe(6, "translate");
22
- i0.ɵɵelementEnd();
23
- i0.ɵɵelementContainerEnd();
24
- } if (rf & 2) {
25
- i0.ɵɵadvance(2);
26
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 2, "network.protocol"), " ");
27
- i0.ɵɵadvance(3);
28
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 4, "network.port"), " ");
29
- } }
30
- function NetworkPolicyPortsFormComponent_ng_container_2_aui_option_3_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵelementStart(0, "aui-option", 14);
32
- i0.ɵɵtext(1);
33
- i0.ɵɵelementEnd();
34
- } if (rf & 2) {
35
- const protocol_r1 = ctx.$implicit;
36
- i0.ɵɵproperty("value", protocol_r1);
37
- i0.ɵɵadvance();
38
- i0.ɵɵtextInterpolate1(" ", protocol_r1, " ");
39
- } }
40
- function NetworkPolicyPortsFormComponent_ng_container_2_acl_errors_mapper_6_Template(rf, ctx) { if (rf & 1) {
41
- i0.ɵɵelement(0, "acl-errors-mapper", 15);
42
- i0.ɵɵpipe(1, "translate");
43
- } if (rf & 2) {
44
- const control_r2 = i0.ɵɵnextContext().$implicit;
45
- i0.ɵɵproperty("errors", control_r2.get("port").errors)("errorsMapper", i0.ɵɵpureFunction1(4, _c0, i0.ɵɵpipeBind1(1, 2, "network.port_range_placeholder_lite")));
46
- } }
47
- function NetworkPolicyPortsFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
48
- i0.ɵɵelementContainerStart(0, 8);
49
- i0.ɵɵelementStart(1, "td", 9)(2, "aui-select", 10);
50
- i0.ɵɵtemplate(3, NetworkPolicyPortsFormComponent_ng_container_2_aui_option_3_Template, 2, 2, "aui-option", 11);
51
- i0.ɵɵelementEnd()();
52
- i0.ɵɵelementStart(4, "td", 9);
53
- i0.ɵɵelement(5, "input", 12);
54
- i0.ɵɵtemplate(6, NetworkPolicyPortsFormComponent_ng_container_2_acl_errors_mapper_6_Template, 2, 6, "acl-errors-mapper", 13);
55
- i0.ɵɵelementEnd();
56
- i0.ɵɵelementContainerEnd();
57
- } if (rf & 2) {
58
- const control_r2 = ctx.$implicit;
59
- const ctx_r2 = i0.ɵɵnextContext();
60
- i0.ɵɵproperty("formGroup", control_r2);
61
- i0.ɵɵadvance(3);
62
- i0.ɵɵproperty("ngForOf", ctx_r2.PROTOCOLS);
63
- i0.ɵɵadvance(3);
64
- i0.ɵɵproperty("ngIf", control_r2.get("port").dirty || ctx_r2.controlContainer.formDirective.submitted);
65
- } }
66
- function NetworkPolicyPortsFormComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
67
- const _r4 = i0.ɵɵgetCurrentView();
68
- i0.ɵɵelementContainerStart(0);
69
- i0.ɵɵelementStart(1, "button", 16);
70
- i0.ɵɵlistener("click", function NetworkPolicyPortsFormComponent_ng_container_3_Template_button_click_1_listener() { const index_r5 = i0.ɵɵrestoreView(_r4).index; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.remove(index_r5)); });
71
- i0.ɵɵelement(2, "aui-icon", 17);
72
- i0.ɵɵelementEnd();
73
- i0.ɵɵelementContainerEnd();
74
- } if (rf & 2) {
75
- i0.ɵɵadvance();
76
- i0.ɵɵproperty("square", true)("plain", true);
77
- } }
78
- function NetworkPolicyPortsFormComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵelementContainerStart(0);
80
- i0.ɵɵelementStart(1, "span", 18);
81
- i0.ɵɵtext(2);
82
- i0.ɵɵpipe(3, "translate");
83
- i0.ɵɵelementEnd();
84
- i0.ɵɵelementContainerEnd();
85
- } if (rf & 2) {
86
- const ctx_r2 = i0.ɵɵnextContext();
87
- i0.ɵɵadvance(2);
88
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 1, "network." + ctx_r2.policyType + "_rule_ports_no_data_tip"));
89
- } }
90
- export class NetworkPolicyPortsFormComponent extends BaseResourceFormArrayComponent {
91
- constructor(injector, controlContainer) {
92
- super(injector);
93
- this.controlContainer = controlContainer;
94
- this.PROTOCOLS = ['TCP', 'UDP'];
95
- }
96
- getOnFormArrayResizeFn() {
97
- return () => this.createNewPortControl();
98
- }
99
- adaptFormModel(formModel) {
100
- return formModel.map(({ protocol, port, endPort }) => ({
101
- protocol,
102
- port: INT_ZERO_PATTERN.pattern.test(port) ? +port : port,
103
- ...(endPort && { endPort }),
104
- }));
105
- }
106
- createNewPortControl(model) {
107
- return this.fb.group({
108
- protocol: model?.protocol || 'TCP',
109
- port: [model?.port || '', [Validators.required, this.portValidator]],
110
- endPort: [model?.endPort],
111
- });
112
- }
113
- portValidator(portCtrl) {
114
- const port = portCtrl.value;
115
- if (!port) {
116
- return;
117
- }
118
- if (INT_ZERO_PATTERN.pattern.test(port) &&
119
- !(+port >= 1 && +port <= 65_535)) {
120
- return {
121
- range: true,
122
- };
123
- }
124
- if (!/^[\da-z]+(?:-[\da-z]+)*$/.test(port) || /^0\d+/.test(port)) {
125
- return {
126
- pattern: true,
127
- };
128
- }
129
- }
130
- static { this.ɵfac = function NetworkPolicyPortsFormComponent_Factory(t) { return new (t || NetworkPolicyPortsFormComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.ControlContainer)); }; }
131
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NetworkPolicyPortsFormComponent, selectors: [["acl-network-policy-ports-form"]], inputs: { policyType: "policyType" }, standalone: true, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 5, vars: 2, consts: [[3, "add", "remove", "formGroup", "rows"], ["required", "", 4, "aclArrayFormTableHeader"], [3, "formGroup", 4, "aclArrayFormTableRow"], [4, "aclArrayFormTableRowControl"], [4, "aclArrayFormTableZeroState"], ["required", ""], ["width", "30%"], ["width", "70%", 1, "tw-required-mark"], [3, "formGroup"], [1, "!tw-align-top"], ["auiFormItemControl", "", "formControlName", "protocol"], [3, "value", 4, "ngFor", "ngForOf"], ["required", "", "aui-input", "", "auiFormItemControl", "", "formControlName", "port"], [3, "errors", "errorsMapper", 4, "ngIf"], [3, "value"], [3, "errors", "errorsMapper"], ["aui-button", "text", "type", "button", 3, "click", "square", "plain"], ["icon", "minus_circle"], [1, "empty-placeholder", "!tw-border-0", "!tw-min-h-[48px]", "!tw-pt-14", "!tw-pb-14"]], template: function NetworkPolicyPortsFormComponent_Template(rf, ctx) { if (rf & 1) {
132
- i0.ɵɵelementStart(0, "acl-array-form-table", 0);
133
- i0.ɵɵlistener("add", function NetworkPolicyPortsFormComponent_Template_acl_array_form_table_add_0_listener() { return ctx.add(); })("remove", function NetworkPolicyPortsFormComponent_Template_acl_array_form_table_remove_0_listener($event) { return ctx.remove($event); });
134
- i0.ɵɵtemplate(1, NetworkPolicyPortsFormComponent_ng_container_1_Template, 7, 6, "ng-container", 1)(2, NetworkPolicyPortsFormComponent_ng_container_2_Template, 7, 3, "ng-container", 2)(3, NetworkPolicyPortsFormComponent_ng_container_3_Template, 3, 2, "ng-container", 3)(4, NetworkPolicyPortsFormComponent_ng_container_4_Template, 4, 3, "ng-container", 4);
135
- i0.ɵɵelementEnd();
136
- } if (rf & 2) {
137
- i0.ɵɵproperty("formGroup", ctx.form)("rows", ctx.form.controls);
138
- } }, dependencies: [EffectDirectiveModule, i2.E2eAttributeBindingDirective, i2.ValidatorsDirective, CommonModule, i3.NgForOf, i3.NgIf, ReactiveFormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgControlStatusGroup, i1.RequiredValidator, i1.FormGroupDirective, i1.FormControlName, FormModule, i4.FormItemControlDirective, ButtonModule, i4.ButtonComponent, IconModule, i4.IconComponent, InputModule, i4.InputComponent, SelectModule, i4.SelectComponent, i4.OptionComponent, i2.TranslatePipe, i2.ErrorsMapperComponent, ArrayFormTableModule, i2.ArrayFormTableComponent, i2.ArrayFormTableHeaderDirective, i2.ArrayFormTableRowControlDirective, i2.ArrayFormTableRowDirective, i2.ArrayFormTableZeroStateDirective], encapsulation: 2, changeDetection: 0 }); }
139
- }
140
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NetworkPolicyPortsFormComponent, [{
141
- type: Component,
142
- args: [{ standalone: true, selector: 'acl-network-policy-ports-form', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
143
- EffectDirectiveModule,
144
- CommonModule,
145
- ReactiveFormsModule,
146
- FormModule,
147
- ButtonModule,
148
- IconModule,
149
- InputModule,
150
- SelectModule,
151
- TRANSLATE_MODULE,
152
- ERRORS_MAPPER_MODULE,
153
- ArrayFormTableModule,
154
- SelectModule,
155
- ], template: "<acl-array-form-table\n [formGroup]=\"$any(form)\"\n [rows]=\"form.controls\"\n (add)=\"add()\"\n (remove)=\"remove($event)\"\n>\n <ng-container\n *aclArrayFormTableHeader\n required\n >\n <th width=\"30%\">\n {{ 'network.protocol' | translate }}\n </th>\n <th\n width=\"70%\"\n class=\"tw-required-mark\"\n >\n {{ 'network.port' | translate }}\n </th>\n </ng-container>\n\n <ng-container\n *aclArrayFormTableRow=\"let control; let index = index\"\n [formGroup]=\"control\"\n >\n <td class=\"!tw-align-top\">\n <aui-select\n auiFormItemControl\n formControlName=\"protocol\"\n >\n <aui-option\n *ngFor=\"let protocol of PROTOCOLS\"\n [value]=\"protocol\"\n >\n {{ protocol }}\n </aui-option>\n </aui-select>\n </td>\n <td class=\"!tw-align-top\">\n <input\n required\n aui-input\n auiFormItemControl\n formControlName=\"port\"\n />\n <acl-errors-mapper\n *ngIf=\"\n control.get('port').dirty ||\n $any(controlContainer.formDirective).submitted\n \"\n [errors]=\"control.get('port').errors\"\n [errorsMapper]=\"{\n range: 'network.port_range_placeholder_lite' | translate,\n }\"\n ></acl-errors-mapper>\n </td>\n </ng-container>\n\n <ng-container *aclArrayFormTableRowControl=\"let control; let index = index\">\n <button\n aui-button=\"text\"\n type=\"button\"\n (click)=\"remove(index)\"\n [square]=\"true\"\n [plain]=\"true\"\n >\n <aui-icon icon=\"minus_circle\"></aui-icon>\n </button>\n </ng-container>\n\n <ng-container *aclArrayFormTableZeroState>\n <span\n class=\"empty-placeholder !tw-border-0 !tw-min-h-[48px] !tw-pt-14 !tw-pb-14\"\n >{{\n 'network.' + policyType + '_rule_ports_no_data_tip' | translate\n }}</span\n >\n </ng-container>\n</acl-array-form-table>\n" }]
156
- }], () => [{ type: i0.Injector }, { type: i1.ControlContainer }], { policyType: [{
157
- type: Input,
158
- args: [{ required: true }]
159
- }] }); })();
160
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(NetworkPolicyPortsFormComponent, { className: "NetworkPolicyPortsFormComponent", filePath: "lib/features/network-policy/form/network-policy-ports/component.ts", lineNumber: 56 }); })();
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9uZXR3b3JrL3NyYy9saWIvZmVhdHVyZXMvbmV0d29yay1wb2xpY3kvZm9ybS9uZXR3b3JrLXBvbGljeS1wb3J0cy9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL25ldHdvcmsvc3JjL2xpYi9mZWF0dXJlcy9uZXR3b3JrLXBvbGljeS9mb3JtL25ldHdvcmstcG9saWN5LXBvcnRzL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEdBQ2IsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLGdCQUFnQixFQUNoQixnQkFBZ0IsR0FDakIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZ0JBQWdCLEVBR2hCLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsOEJBQThCLEdBRS9CLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0lDekI3QixnQ0FHQztJQUNDLDZCQUFnQjtJQUNkLFlBQ0Y7O0lBQUEsaUJBQUs7SUFDTCw2QkFHQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQUs7OztJQVBILGVBQ0Y7SUFERSx5RUFDRjtJQUtFLGVBQ0Y7SUFERSxxRUFDRjs7O0lBWUksc0NBR0M7SUFDQyxZQUNGO0lBQUEsaUJBQWE7OztJQUhY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QUFaQSxBQXJDQSxBQWZBLGtHQUdDLHFGQWVBLHFGQWtDMkUscUZBWWxDO1lBUTVDLGlCQUF1Qjs7WUE1RXJCLEFBREEsb0NBQXdCLDJCQUNGOzRCRHVDcEIscUJBQXFCLDJEQUNyQixZQUFZLHVCQUNaLG1CQUFtQix5SUFDbkIsVUFBVSwrQkFDVixZQUFZLHNCQUNaLFVBQVUsb0JBQ1YsV0FBVyxxQkFDWCxZQUFZLHNGQUdaLG9CQUFvQjs7aUZBSVgsK0JBQStCO2NBcEIzQyxTQUFTOzZCQUNJLElBQUksWUFDTiwrQkFBK0IsbUJBRXhCLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AscUJBQXFCO29CQUNyQixZQUFZO29CQUNaLG1CQUFtQjtvQkFDbkIsVUFBVTtvQkFDVixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCxZQUFZO29CQUNaLGdCQUFnQjtvQkFDaEIsb0JBQW9CO29CQUNwQixvQkFBb0I7b0JBQ3BCLFlBQVk7aUJBQ2I7d0VBUUQsVUFBVTtrQkFEVCxLQUFLO21CQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTs7a0ZBTGQsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBGb3JtTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgU2VsZWN0TW9kdWxlLFxufSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEFycmF5Rm9ybVRhYmxlTW9kdWxlLFxuICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgRWZmZWN0RGlyZWN0aXZlTW9kdWxlLFxuICBJTlRfWkVST19QQVRURVJOLFxuICBUUkFOU0xBVEVfTU9EVUxFLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xDb250YWluZXIsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtR3JvdXAsXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIEJhc2VSZXNvdXJjZUZvcm1BcnJheUNvbXBvbmVudCxcbiAgT25Gb3JtQXJyYXlSZXNpemVGbixcbn0gZnJvbSAnbmctcmVzb3VyY2UtZm9ybS11dGlsJztcblxuaW1wb3J0IHsgTmV0d29ya1BvbGljeVBvcnQsIFBvbGljeVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcy9rOHMtZXhwb3J0cyc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1uZXR3b3JrLXBvbGljeS1wb3J0cy1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBFZmZlY3REaXJlY3RpdmVNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBTZWxlY3RNb2R1bGUsXG4gICAgVFJBTlNMQVRFX01PRFVMRSxcbiAgICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbiAgICBBcnJheUZvcm1UYWJsZU1vZHVsZSxcbiAgICBTZWxlY3RNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5ldHdvcmtQb2xpY3lQb3J0c0Zvcm1Db21wb25lbnQgZXh0ZW5kcyBCYXNlUmVzb3VyY2VGb3JtQXJyYXlDb21wb25lbnQ8XG4gIE5ldHdvcmtQb2xpY3lQb3J0LFxuICBOZXR3b3JrUG9saWN5UG9ydCxcbiAgRm9ybUdyb3VwXG4+IHtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcG9saWN5VHlwZTogTG93ZXJjYXNlPFBvbGljeVR5cGU+O1xuXG4gIFBST1RPQ09MUyA9IFsnVENQJywgJ1VEUCddIGFzIGNvbnN0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICByZWFkb25seSBjb250cm9sQ29udGFpbmVyOiBDb250cm9sQ29udGFpbmVyLFxuICApIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cblxuICBvdmVycmlkZSBnZXRPbkZvcm1BcnJheVJlc2l6ZUZuKCk6IE9uRm9ybUFycmF5UmVzaXplRm4ge1xuICAgIHJldHVybiAoKSA9PiB0aGlzLmNyZWF0ZU5ld1BvcnRDb250cm9sKCk7XG4gIH1cblxuICBvdmVycmlkZSBhZGFwdEZvcm1Nb2RlbChmb3JtTW9kZWw6IE5ldHdvcmtQb2xpY3lQb3J0W10pOiBOZXR3b3JrUG9saWN5UG9ydFtdIHtcbiAgICByZXR1cm4gZm9ybU1vZGVsLm1hcCgoeyBwcm90b2NvbCwgcG9ydCwgZW5kUG9ydCB9KSA9PiAoe1xuICAgICAgcHJvdG9jb2wsXG4gICAgICBwb3J0OiBJTlRfWkVST19QQVRURVJOLnBhdHRlcm4udGVzdChwb3J0IGFzIHN0cmluZykgPyArcG9ydCA6IHBvcnQsXG4gICAgICAuLi4oZW5kUG9ydCAmJiB7IGVuZFBvcnQgfSksXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVOZXdQb3J0Q29udHJvbChtb2RlbD86IE5ldHdvcmtQb2xpY3lQb3J0KSB7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgcHJvdG9jb2w6IG1vZGVsPy5wcm90b2NvbCB8fCAnVENQJyxcbiAgICAgIHBvcnQ6IFttb2RlbD8ucG9ydCB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMucG9ydFZhbGlkYXRvcl1dLFxuICAgICAgZW5kUG9ydDogW21vZGVsPy5lbmRQb3J0XSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcG9ydFZhbGlkYXRvcihwb3J0Q3RybDogRm9ybUNvbnRyb2wpIHtcbiAgICBjb25zdCBwb3J0OiBzdHJpbmcgPSBwb3J0Q3RybC52YWx1ZTtcbiAgICBpZiAoIXBvcnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBJTlRfWkVST19QQVRURVJOLnBhdHRlcm4udGVzdChwb3J0KSAmJlxuICAgICAgISgrcG9ydCA+PSAxICYmICtwb3J0IDw9IDY1XzUzNSlcbiAgICApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJhbmdlOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoIS9eW1xcZGEtel0rKD86LVtcXGRhLXpdKykqJC8udGVzdChwb3J0KSB8fCAvXjBcXGQrLy50ZXN0KHBvcnQpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXR0ZXJuOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiIsIjxhY2wtYXJyYXktZm9ybS10YWJsZVxuICBbZm9ybUdyb3VwXT1cIiRhbnkoZm9ybSlcIlxuICBbcm93c109XCJmb3JtLmNvbnRyb2xzXCJcbiAgKGFkZCk9XCJhZGQoKVwiXG4gIChyZW1vdmUpPVwicmVtb3ZlKCRldmVudClcIlxuPlxuICA8bmctY29udGFpbmVyXG4gICAgKmFjbEFycmF5Rm9ybVRhYmxlSGVhZGVyXG4gICAgcmVxdWlyZWRcbiAgPlxuICAgIDx0aCB3aWR0aD1cIjMwJVwiPlxuICAgICAge3sgJ25ldHdvcmsucHJvdG9jb2wnIHwgdHJhbnNsYXRlIH19XG4gICAgPC90aD5cbiAgICA8dGhcbiAgICAgIHdpZHRoPVwiNzAlXCJcbiAgICAgIGNsYXNzPVwidHctcmVxdWlyZWQtbWFya1wiXG4gICAgPlxuICAgICAge3sgJ25ldHdvcmsucG9ydCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3RoPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyXG4gICAgKmFjbEFycmF5Rm9ybVRhYmxlUm93PVwibGV0IGNvbnRyb2w7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICBbZm9ybUdyb3VwXT1cImNvbnRyb2xcIlxuICA+XG4gICAgPHRkIGNsYXNzPVwiIXR3LWFsaWduLXRvcFwiPlxuICAgICAgPGF1aS1zZWxlY3RcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByb3RvY29sXCJcbiAgICAgID5cbiAgICAgICAgPGF1aS1vcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgcHJvdG9jb2wgb2YgUFJPVE9DT0xTXCJcbiAgICAgICAgICBbdmFsdWVdPVwicHJvdG9jb2xcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvdG9jb2wgfX1cbiAgICAgICAgPC9hdWktb3B0aW9uPlxuICAgICAgPC9hdWktc2VsZWN0PlxuICAgIDwvdGQ+XG4gICAgPHRkIGNsYXNzPVwiIXR3LWFsaWduLXRvcFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAgIGF1aS1pbnB1dFxuICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicG9ydFwiXG4gICAgICAvPlxuICAgICAgPGFjbC1lcnJvcnMtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgY29udHJvbC5nZXQoJ3BvcnQnKS5kaXJ0eSB8fFxuICAgICAgICAgICRhbnkoY29udHJvbENvbnRhaW5lci5mb3JtRGlyZWN0aXZlKS5zdWJtaXR0ZWRcbiAgICAgICAgXCJcbiAgICAgICAgW2Vycm9yc109XCJjb250cm9sLmdldCgncG9ydCcpLmVycm9yc1wiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICAgIHJhbmdlOiAnbmV0d29yay5wb3J0X3JhbmdlX3BsYWNlaG9sZGVyX2xpdGUnIHwgdHJhbnNsYXRlLFxuICAgICAgICB9XCJcbiAgICAgID48L2FjbC1lcnJvcnMtbWFwcGVyPlxuICAgIDwvdGQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlUm93Q29udHJvbD1cImxldCBjb250cm9sOyBsZXQgaW5kZXggPSBpbmRleFwiPlxuICAgIDxidXR0b25cbiAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cInJlbW92ZShpbmRleClcIlxuICAgICAgW3NxdWFyZV09XCJ0cnVlXCJcbiAgICAgIFtwbGFpbl09XCJ0cnVlXCJcbiAgICA+XG4gICAgICA8YXVpLWljb24gaWNvbj1cIm1pbnVzX2NpcmNsZVwiPjwvYXVpLWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKmFjbEFycmF5Rm9ybVRhYmxlWmVyb1N0YXRlPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImVtcHR5LXBsYWNlaG9sZGVyICF0dy1ib3JkZXItMCAhdHctbWluLWgtWzQ4cHhdICF0dy1wdC0xNCAhdHctcGItMTRcIlxuICAgICAgPnt7XG4gICAgICAgICduZXR3b3JrLicgKyBwb2xpY3lUeXBlICsgJ19ydWxlX3BvcnRzX25vX2RhdGFfdGlwJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L3NwYW5cbiAgICA+XG4gIDwvbmctY29udGFpbmVyPlxuPC9hY2wtYXJyYXktZm9ybS10YWJsZT5cbiJdfQ==