@serve.zone/interfaces 22.0.0 → 23.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/changelog.md +12 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/appstore/types.d.ts +31 -16
- package/dist_ts/appstore/types.js +208 -11
- package/dist_ts/data/deploymentoperation.js +6 -20
- package/dist_ts/data/deploymentpreflight.d.ts +2 -6
- package/dist_ts/data/deploymentpreflight.js +1 -1
- package/dist_ts/data/hostedapp.d.ts +40 -14
- package/dist_ts/data/hostedapp.js +90 -1
- package/dist_ts/data/immutableimage.d.ts +30 -1
- package/dist_ts/data/immutableimage.js +103 -1
- package/dist_ts/data/index.d.ts +0 -2
- package/dist_ts/data/index.js +1 -3
- package/dist_ts/data/secret.d.ts +186 -13
- package/dist_ts/data/secret.js +543 -45
- package/dist_ts/data/service.d.ts +0 -39
- package/dist_ts/data/service.js +1 -77
- package/dist_ts/data/settings.d.ts +62 -43
- package/dist_ts/data/settings.js +34 -2
- package/dist_ts/platform/storage.d.ts +13 -14
- package/dist_ts/platform/storage.js +1 -1
- package/dist_ts/platform/storagemigration.d.ts +8 -8
- package/dist_ts/platform/storagemigration.golden.d.ts +2 -2
- package/dist_ts/platform/storagemigration.golden.js +19 -88
- package/dist_ts/platform/storagemigration.js +46 -58
- package/dist_ts/platform/types.d.ts +5 -19
- package/dist_ts/plugins.d.ts +2 -1
- package/dist_ts/plugins.js +3 -2
- package/dist_ts/requests/hostedapp.d.ts +12 -9
- package/dist_ts/requests/hostedapp.js +38 -1
- package/dist_ts/requests/index.d.ts +1 -3
- package/dist_ts/requests/index.js +2 -4
- package/dist_ts/requests/platform.d.ts +0 -1
- package/dist_ts/requests/secret.d.ts +23 -17
- package/dist_ts/requests/secret.js +161 -2
- package/dist_ts/requests/service.d.ts +0 -13
- package/dist_ts/requests/settings.d.ts +3 -3
- package/dist_ts/runtime.d.ts +78 -26
- package/dist_ts/runtime.js +219 -19
- package/package.json +2 -1
- package/readme.md +106 -28
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/appstore/types.ts +251 -25
- package/ts/data/deploymentoperation.ts +7 -31
- package/ts/data/deploymentpreflight.ts +2 -5
- package/ts/data/hostedapp.ts +144 -18
- package/ts/data/immutableimage.ts +150 -1
- package/ts/data/index.ts +0 -2
- package/ts/data/secret.ts +775 -53
- package/ts/data/service.ts +0 -118
- package/ts/data/settings.ts +70 -80
- package/ts/platform/storage.ts +15 -16
- package/ts/platform/storagemigration.golden.ts +18 -95
- package/ts/platform/storagemigration.ts +57 -87
- package/ts/platform/types.ts +6 -19
- package/ts/plugins.ts +2 -0
- package/ts/requests/hostedapp.ts +50 -9
- package/ts/requests/index.ts +0 -4
- package/ts/requests/platform.ts +0 -1
- package/ts/requests/secret.ts +204 -9
- package/ts/requests/service.ts +0 -16
- package/ts/requests/settings.ts +3 -3
- package/ts/runtime.ts +314 -41
- package/dist_ts/data/secretbundle.d.ts +0 -57
- package/dist_ts/data/secretbundle.js +0 -2
- package/dist_ts/data/secretgroup.d.ts +0 -52
- package/dist_ts/data/secretgroup.js +0 -2
- package/dist_ts/requests/secretbundle.d.ts +0 -75
- package/dist_ts/requests/secretbundle.js +0 -4
- package/dist_ts/requests/secretgroup.d.ts +0 -52
- package/dist_ts/requests/secretgroup.js +0 -4
- package/ts/data/secretbundle.ts +0 -65
- package/ts/data/secretgroup.ts +0 -58
- package/ts/requests/secretbundle.ts +0 -103
- package/ts/requests/secretgroup.ts +0 -74
|
@@ -9,7 +9,7 @@ const capabilities = {
|
|
|
9
9
|
encryptedInTransit: true,
|
|
10
10
|
};
|
|
11
11
|
const delivery = {
|
|
12
|
-
type: 'environment',
|
|
12
|
+
type: 'launcher-environment',
|
|
13
13
|
keys: {
|
|
14
14
|
endpoint: 'APP_S3_ENDPOINT',
|
|
15
15
|
bucket: 'APP_S3_BUCKET',
|
|
@@ -18,13 +18,9 @@ const delivery = {
|
|
|
18
18
|
secretAccessKey: 'APP_S3_SECRET_KEY',
|
|
19
19
|
},
|
|
20
20
|
};
|
|
21
|
-
const
|
|
22
|
-
secretBundleId: 'service-storage',
|
|
23
|
-
accessKeyIdKey: 'object.accessKeyId',
|
|
24
|
-
secretAccessKeyKey: 'object.secretAccessKey',
|
|
25
|
-
};
|
|
21
|
+
const credentialManagementScope = 'platform:object-storage-binding';
|
|
26
22
|
const sourceBinding = {
|
|
27
|
-
schemaVersion:
|
|
23
|
+
schemaVersion: 2,
|
|
28
24
|
id: 'binding-object',
|
|
29
25
|
serviceId: 'service-app',
|
|
30
26
|
requestId: 'object-data',
|
|
@@ -45,7 +41,7 @@ const sourceBinding = {
|
|
|
45
41
|
bucket: 'source-bucket',
|
|
46
42
|
region: 'local',
|
|
47
43
|
},
|
|
48
|
-
|
|
44
|
+
credentialManagementScope,
|
|
49
45
|
delivery,
|
|
50
46
|
versioning: false,
|
|
51
47
|
createdAt: 1_700_000_000_000,
|
|
@@ -77,20 +73,20 @@ const target = {
|
|
|
77
73
|
accessMode: 'readWrite',
|
|
78
74
|
delivery,
|
|
79
75
|
},
|
|
80
|
-
|
|
76
|
+
credentialManagementScope,
|
|
81
77
|
};
|
|
82
78
|
const preparationSnapshotPayload = {
|
|
83
|
-
schemaVersion:
|
|
79
|
+
schemaVersion: 2,
|
|
84
80
|
binding: sourceBinding,
|
|
85
81
|
recordRevision: 12,
|
|
86
82
|
capturedAt: 1_700_000_000_010,
|
|
87
83
|
};
|
|
88
84
|
const preparationSnapshot = {
|
|
89
85
|
...preparationSnapshotPayload,
|
|
90
|
-
snapshotDigest: '
|
|
86
|
+
snapshotDigest: 'ac8166a9888144d11dc7419f60be055eeb6f392ec41a254a9f9b2a7b3df1fba7',
|
|
91
87
|
};
|
|
92
88
|
const prepareRequest = {
|
|
93
|
-
schemaVersion:
|
|
89
|
+
schemaVersion: 2,
|
|
94
90
|
migrationId: 'migration-object-capacity',
|
|
95
91
|
sourceControlSnapshot: preparationSnapshot,
|
|
96
92
|
workloadGeneration: 8,
|
|
@@ -98,7 +94,7 @@ const prepareRequest = {
|
|
|
98
94
|
};
|
|
99
95
|
const candidateBinding = {
|
|
100
96
|
...sourceBinding,
|
|
101
|
-
requestDigest: '
|
|
97
|
+
requestDigest: '3f864862041002e25b790b3bc7afbe37c399a006f385e1def9f679a93d4fa173',
|
|
102
98
|
generation: 4,
|
|
103
99
|
observedGeneration: 3,
|
|
104
100
|
status: 'provisioning',
|
|
@@ -117,91 +113,26 @@ const candidateBinding = {
|
|
|
117
113
|
updatedAt: 1_700_000_000_020,
|
|
118
114
|
};
|
|
119
115
|
export const storageMigrationCanonicalDigestGoldenVectors = deepFreezeValue({
|
|
120
|
-
version:
|
|
116
|
+
version: 2,
|
|
121
117
|
targetRequest: {
|
|
122
118
|
input: target.request,
|
|
123
|
-
canonicalJson: '{"accessMode":"readWrite","capacity":{"limit":"1TiB","request":"500GiB"},'
|
|
124
|
-
|
|
125
|
-
'"endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION",' +
|
|
126
|
-
'"secretAccessKey":"APP_S3_SECRET_KEY"},"type":"environment"},' +
|
|
127
|
-
'"id":"object-data","kind":"objectStorage","reclaimPolicy":"retain",' +
|
|
128
|
-
'"storageClass":"backupCapacity"}',
|
|
129
|
-
sha256: '2096dfa1f6db50d670cbb4d6436f38c2eec383435c99346e31d0d1a9e0b1beba',
|
|
119
|
+
canonicalJson: '{"accessMode":"readWrite","capacity":{"limit":"1TiB","request":"500GiB"},"delivery":{"keys":{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET","endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION","secretAccessKey":"APP_S3_SECRET_KEY"},"type":"launcher-environment"},"id":"object-data","kind":"objectStorage","reclaimPolicy":"retain","storageClass":"backupCapacity"}',
|
|
120
|
+
sha256: '3f864862041002e25b790b3bc7afbe37c399a006f385e1def9f679a93d4fa173',
|
|
130
121
|
},
|
|
131
122
|
preparationSnapshot: {
|
|
132
123
|
input: preparationSnapshotPayload,
|
|
133
|
-
canonicalJson: '{"binding":{"accessMode":"readWrite","capabilities":{"backup":true,'
|
|
134
|
-
|
|
135
|
-
'"performanceTier":"capacity","snapshots":"none","topology":"singleNode"},' +
|
|
136
|
-
'"connection":{"bucket":"source-bucket","endpoint":"https://source.example.test",' +
|
|
137
|
-
'"region":"local"},"createdAt":1700000000000,"credentials":' +
|
|
138
|
-
'{"accessKeyIdKey":"object.accessKeyId","secretAccessKeyKey":"object.secretAccessKey",' +
|
|
139
|
-
'"secretBundleId":"service-storage"},"delivery":{"keys":' +
|
|
140
|
-
'{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET",' +
|
|
141
|
-
'"endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION",' +
|
|
142
|
-
'"secretAccessKey":"APP_S3_SECRET_KEY"},"type":"environment"},' +
|
|
143
|
-
'"generation":3,"id":"binding-object","kind":"objectStorage",' +
|
|
144
|
-
'"observedGeneration":3,"policy":{"classId":"source-object","revision":"1"},' +
|
|
145
|
-
'"requestDigest":"1111111111111111111111111111111111111111111111111111111111111111",' +
|
|
146
|
-
'"requestId":"object-data","resourceRef":"source-resource","schemaVersion":1,' +
|
|
147
|
-
'"serviceId":"service-app","status":"ready","updatedAt":1700000000001,' +
|
|
148
|
-
'"versioning":false},"capturedAt":1700000000010,"recordRevision":12,"schemaVersion":1}',
|
|
149
|
-
sha256: '35870a0c3ca7f2ee70d0ae7f83109bec23a8ce59bf8efef1c94221a496210439',
|
|
124
|
+
canonicalJson: '{"binding":{"accessMode":"readWrite","capabilities":{"backup":true,"durability":"persistent","encryptedInTransit":true,"hardQuota":true,"performanceTier":"capacity","snapshots":"none","topology":"singleNode"},"connection":{"bucket":"source-bucket","endpoint":"https://source.example.test","region":"local"},"createdAt":1700000000000,"credentialManagementScope":"platform:object-storage-binding","delivery":{"keys":{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET","endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION","secretAccessKey":"APP_S3_SECRET_KEY"},"type":"launcher-environment"},"generation":3,"id":"binding-object","kind":"objectStorage","observedGeneration":3,"policy":{"classId":"source-object","revision":"1"},"requestDigest":"1111111111111111111111111111111111111111111111111111111111111111","requestId":"object-data","resourceRef":"source-resource","schemaVersion":2,"serviceId":"service-app","status":"ready","updatedAt":1700000000001,"versioning":false},"capturedAt":1700000000010,"recordRevision":12,"schemaVersion":2}',
|
|
125
|
+
sha256: 'ac8166a9888144d11dc7419f60be055eeb6f392ec41a254a9f9b2a7b3df1fba7',
|
|
150
126
|
},
|
|
151
127
|
prepareRequest: {
|
|
152
128
|
input: prepareRequest,
|
|
153
|
-
canonicalJson: '{"migrationId":"migration-object-capacity","schemaVersion":1,'
|
|
154
|
-
|
|
155
|
-
'"capabilities":{"backup":true,"durability":"persistent",' +
|
|
156
|
-
'"encryptedInTransit":true,"hardQuota":true,"performanceTier":"capacity",' +
|
|
157
|
-
'"snapshots":"none","topology":"singleNode"},"connection":' +
|
|
158
|
-
'{"bucket":"source-bucket","endpoint":"https://source.example.test","region":"local"},' +
|
|
159
|
-
'"createdAt":1700000000000,"credentials":{"accessKeyIdKey":"object.accessKeyId",' +
|
|
160
|
-
'"secretAccessKeyKey":"object.secretAccessKey","secretBundleId":"service-storage"},' +
|
|
161
|
-
'"delivery":{"keys":{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET",' +
|
|
162
|
-
'"endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION",' +
|
|
163
|
-
'"secretAccessKey":"APP_S3_SECRET_KEY"},"type":"environment"},' +
|
|
164
|
-
'"generation":3,"id":"binding-object","kind":"objectStorage",' +
|
|
165
|
-
'"observedGeneration":3,"policy":{"classId":"source-object","revision":"1"},' +
|
|
166
|
-
'"requestDigest":"1111111111111111111111111111111111111111111111111111111111111111",' +
|
|
167
|
-
'"requestId":"object-data","resourceRef":"source-resource","schemaVersion":1,' +
|
|
168
|
-
'"serviceId":"service-app","status":"ready","updatedAt":1700000000001,' +
|
|
169
|
-
'"versioning":false},"capturedAt":1700000000010,"recordRevision":12,' +
|
|
170
|
-
'"schemaVersion":1,"snapshotDigest":' +
|
|
171
|
-
'"35870a0c3ca7f2ee70d0ae7f83109bec23a8ce59bf8efef1c94221a496210439"},' +
|
|
172
|
-
'"target":{"credentials":{"accessKeyIdKey":"object.accessKeyId",' +
|
|
173
|
-
'"secretAccessKeyKey":"object.secretAccessKey","secretBundleId":"service-storage"},' +
|
|
174
|
-
'"policy":{"classId":"capacity-object","revision":"4"},"request":' +
|
|
175
|
-
'{"accessMode":"readWrite","capacity":{"limit":"1TiB","request":"500GiB"},' +
|
|
176
|
-
'"delivery":{"keys":{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET",' +
|
|
177
|
-
'"endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION",' +
|
|
178
|
-
'"secretAccessKey":"APP_S3_SECRET_KEY"},"type":"environment"},' +
|
|
179
|
-
'"id":"object-data","kind":"objectStorage","reclaimPolicy":"retain",' +
|
|
180
|
-
'"storageClass":"backupCapacity"},"storageClass":{"kind":"objectStorage",' +
|
|
181
|
-
'"purpose":"backup","required":{"backup":true,"durability":"persistent",' +
|
|
182
|
-
'"performanceTier":"capacity"}}},"workloadGeneration":8}',
|
|
183
|
-
sha256: 'ecbb40ec9bfa20b9f4372eb0d00eaf79c3e84dd3132c5bde7e65ba3fec55e595',
|
|
129
|
+
canonicalJson: '{"migrationId":"migration-object-capacity","schemaVersion":2,"sourceControlSnapshot":{"binding":{"accessMode":"readWrite","capabilities":{"backup":true,"durability":"persistent","encryptedInTransit":true,"hardQuota":true,"performanceTier":"capacity","snapshots":"none","topology":"singleNode"},"connection":{"bucket":"source-bucket","endpoint":"https://source.example.test","region":"local"},"createdAt":1700000000000,"credentialManagementScope":"platform:object-storage-binding","delivery":{"keys":{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET","endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION","secretAccessKey":"APP_S3_SECRET_KEY"},"type":"launcher-environment"},"generation":3,"id":"binding-object","kind":"objectStorage","observedGeneration":3,"policy":{"classId":"source-object","revision":"1"},"requestDigest":"1111111111111111111111111111111111111111111111111111111111111111","requestId":"object-data","resourceRef":"source-resource","schemaVersion":2,"serviceId":"service-app","status":"ready","updatedAt":1700000000001,"versioning":false},"capturedAt":1700000000010,"recordRevision":12,"schemaVersion":2,"snapshotDigest":"ac8166a9888144d11dc7419f60be055eeb6f392ec41a254a9f9b2a7b3df1fba7"},"target":{"credentialManagementScope":"platform:object-storage-binding","policy":{"classId":"capacity-object","revision":"4"},"request":{"accessMode":"readWrite","capacity":{"limit":"1TiB","request":"500GiB"},"delivery":{"keys":{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET","endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION","secretAccessKey":"APP_S3_SECRET_KEY"},"type":"launcher-environment"},"id":"object-data","kind":"objectStorage","reclaimPolicy":"retain","storageClass":"backupCapacity"},"storageClass":{"kind":"objectStorage","purpose":"backup","required":{"backup":true,"durability":"persistent","performanceTier":"capacity"}}},"workloadGeneration":8}',
|
|
130
|
+
sha256: '7682ed6f8c8b64d4c677ea91c04e4261bfe5326a3fb905d5da093f51e4b2dbbe',
|
|
184
131
|
},
|
|
185
132
|
candidateBinding: {
|
|
186
133
|
input: candidateBinding,
|
|
187
|
-
canonicalJson: '{"accessMode":"readWrite","capabilities":{"backup":true,'
|
|
188
|
-
|
|
189
|
-
'"performanceTier":"capacity","snapshots":"none","topology":"singleNode"},' +
|
|
190
|
-
'"capacity":{"granted":"500GiB","limit":"1TiB","requested":"500GiB"},' +
|
|
191
|
-
'"connection":{"bucket":"destination-bucket",' +
|
|
192
|
-
'"endpoint":"https://destination.example.test","region":"local"},' +
|
|
193
|
-
'"createdAt":1700000000000,"credentials":{"accessKeyIdKey":"object.accessKeyId",' +
|
|
194
|
-
'"secretAccessKeyKey":"object.secretAccessKey","secretBundleId":"service-storage"},' +
|
|
195
|
-
'"delivery":{"keys":{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET",' +
|
|
196
|
-
'"endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION",' +
|
|
197
|
-
'"secretAccessKey":"APP_S3_SECRET_KEY"},"type":"environment"},' +
|
|
198
|
-
'"generation":4,"id":"binding-object","kind":"objectStorage",' +
|
|
199
|
-
'"observedGeneration":3,"policy":{"classId":"capacity-object","revision":"4"},' +
|
|
200
|
-
'"requestDigest":"2096dfa1f6db50d670cbb4d6436f38c2eec383435c99346e31d0d1a9e0b1beba",' +
|
|
201
|
-
'"requestId":"object-data","resourceRef":"destination-resource",' +
|
|
202
|
-
'"schemaVersion":1,"serviceId":"service-app","status":"provisioning",' +
|
|
203
|
-
'"updatedAt":1700000000020,"versioning":false}',
|
|
204
|
-
sha256: 'b49017f41cd86626ccb05ffa5fb591994a5e20fad9856182b1a1d4c964c6177c',
|
|
134
|
+
canonicalJson: '{"accessMode":"readWrite","capabilities":{"backup":true,"durability":"persistent","encryptedInTransit":true,"hardQuota":true,"performanceTier":"capacity","snapshots":"none","topology":"singleNode"},"capacity":{"granted":"500GiB","limit":"1TiB","requested":"500GiB"},"connection":{"bucket":"destination-bucket","endpoint":"https://destination.example.test","region":"local"},"createdAt":1700000000000,"credentialManagementScope":"platform:object-storage-binding","delivery":{"keys":{"accessKeyId":"APP_S3_ACCESS_KEY","bucket":"APP_S3_BUCKET","endpoint":"APP_S3_ENDPOINT","region":"APP_S3_REGION","secretAccessKey":"APP_S3_SECRET_KEY"},"type":"launcher-environment"},"generation":4,"id":"binding-object","kind":"objectStorage","observedGeneration":3,"policy":{"classId":"capacity-object","revision":"4"},"requestDigest":"3f864862041002e25b790b3bc7afbe37c399a006f385e1def9f679a93d4fa173","requestId":"object-data","resourceRef":"destination-resource","schemaVersion":2,"serviceId":"service-app","status":"provisioning","updatedAt":1700000000020,"versioning":false}',
|
|
135
|
+
sha256: '6e5c954466b600f81d1f19dcdd7ef426be99dc12ae33103e4d0c238e0070de71',
|
|
205
136
|
},
|
|
206
137
|
});
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZW1pZ3JhdGlvbi5nb2xkZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9wbGF0Zm9ybS9zdG9yYWdlbWlncmF0aW9uLmdvbGRlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFlOUQsTUFBTSxZQUFZLEdBQUc7SUFDbkIsZUFBZSxFQUFFLFVBQVU7SUFDM0IsVUFBVSxFQUFFLFlBQVk7SUFDeEIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsU0FBUyxFQUFFLElBQUk7SUFDZixTQUFTLEVBQUUsTUFBTTtJQUNqQixNQUFNLEVBQUUsSUFBSTtJQUNaLGtCQUFrQixFQUFFLElBQUk7Q0FDaEIsQ0FBQztBQUVYLE1BQU0sUUFBUSxHQUFHO0lBQ2YsSUFBSSxFQUFFLHNCQUFzQjtJQUM1QixJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUUsaUJBQWlCO1FBQzNCLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLFdBQVcsRUFBRSxtQkFBbUI7UUFDaEMsZUFBZSxFQUFFLG1CQUFtQjtLQUNyQztDQUNPLENBQUM7QUFFWCxNQUFNLHlCQUF5QixHQUFHLGlDQUFpQyxDQUFDO0FBRXBFLE1BQU0sYUFBYSxHQUFnQztJQUNqRCxhQUFhLEVBQUUsQ0FBQztJQUNoQixFQUFFLEVBQUUsZ0JBQWdCO0lBQ3BCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLFNBQVMsRUFBRSxhQUFhO0lBQ3hCLGFBQWEsRUFDWCxrRUFBa0U7SUFDcEUsSUFBSSxFQUFFLGVBQWU7SUFDckIsVUFBVSxFQUFFLENBQUM7SUFDYixrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLGVBQWU7UUFDeEIsUUFBUSxFQUFFLEdBQUc7S0FDZDtJQUNELFlBQVk7SUFDWixXQUFXLEVBQUUsaUJBQWlCO0lBQzlC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
|