UNPKG

24.4 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const node_storage_common_1 = require("@neo-one/node-storage-common");
4const utils_1 = require("@neo-one/utils");
5const convertAddChange = (changeIn) => {
6 const change = changeIn;
7 switch (change.type) {
8 case 'account':
9 return [
10 {
11 type: 'add',
12 model: 'account',
13 key: node_storage_common_1.keys.typeKeyToSerializeKey.account(change.value),
14 value: change.value,
15 },
16 ];
17 case 'accountUnclaimed':
18 return [
19 {
20 type: 'add',
21 model: 'accountUnclaimed',
22 key: node_storage_common_1.keys.typeKeyToSerializeKey.accountUnclaimed({
23 hash: change.value.hash,
24 input: change.value.input,
25 }),
26 value: change.value,
27 },
28 ];
29 case 'accountUnspent':
30 return [
31 {
32 type: 'add',
33 model: 'accountUnspent',
34 key: node_storage_common_1.keys.typeKeyToSerializeKey.accountUnspent({
35 hash: change.value.hash,
36 input: change.value.input,
37 }),
38 value: change.value,
39 },
40 ];
41 case 'action':
42 return [
43 {
44 type: 'add',
45 model: 'action',
46 key: node_storage_common_1.keys.typeKeyToSerializeKey.action({
47 index: change.value.index,
48 }),
49 value: change.value,
50 },
51 ];
52 case 'asset':
53 return [
54 {
55 type: 'add',
56 model: 'asset',
57 key: node_storage_common_1.keys.typeKeyToSerializeKey.asset(change.value),
58 value: change.value,
59 },
60 ];
61 case 'block':
62 return [
63 {
64 type: 'add',
65 model: 'block',
66 key: node_storage_common_1.keys.typeKeyToSerializeKey.block(change.value),
67 value: change.value,
68 },
69 {
70 type: 'add',
71 model: 'block',
72 key: `${change.value.index}`,
73 value: change.value,
74 },
75 ];
76 case 'blockData':
77 return [
78 {
79 type: 'add',
80 model: 'blockData',
81 key: node_storage_common_1.keys.typeKeyToSerializeKey.blockData(change.value),
82 value: change.value,
83 },
84 ];
85 case 'header':
86 return [
87 {
88 type: 'add',
89 model: 'header',
90 key: node_storage_common_1.keys.typeKeyToSerializeKey.header(change.value),
91 value: change.value,
92 },
93 {
94 type: 'add',
95 model: 'header',
96 key: `${change.value.index}`,
97 value: change.value,
98 },
99 ];
100 case 'transaction':
101 return [
102 {
103 type: 'add',
104 model: 'transaction',
105 key: node_storage_common_1.keys.typeKeyToSerializeKey.transaction(change.value),
106 value: change.value,
107 },
108 ];
109 case 'output':
110 return [
111 {
112 type: 'add',
113 model: 'output',
114 key: node_storage_common_1.keys.typeKeyToSerializeKey.output({
115 hash: change.value.hash,
116 index: change.value.index,
117 }),
118 value: change.value.output,
119 },
120 ];
121 case 'transactionData':
122 return [
123 {
124 type: 'add',
125 model: 'transactionData',
126 key: node_storage_common_1.keys.typeKeyToSerializeKey.transactionData(change.value),
127 value: change.value,
128 },
129 ];
130 case 'contract':
131 return [
132 {
133 type: 'add',
134 model: 'contract',
135 key: node_storage_common_1.keys.typeKeyToSerializeKey.contract(change.value),
136 value: change.value,
137 },
138 ];
139 case 'storageItem':
140 return [
141 {
142 type: 'add',
143 model: 'storageItem',
144 key: node_storage_common_1.keys.typeKeyToSerializeKey.storageItem({
145 hash: change.value.hash,
146 key: change.value.key,
147 }),
148 value: change.value,
149 },
150 ];
151 case 'validator':
152 return [
153 {
154 type: 'add',
155 model: 'validator',
156 key: node_storage_common_1.keys.typeKeyToSerializeKey.validator({
157 publicKey: change.value.publicKey,
158 }),
159 value: change.value,
160 },
161 ];
162 case 'invocationData':
163 return [
164 {
165 type: 'add',
166 model: 'invocationData',
167 key: node_storage_common_1.keys.typeKeyToSerializeKey.invocationData(change.value),
168 value: change.value,
169 },
170 ];
171 case 'validatorsCount':
172 return [
173 {
174 type: 'add',
175 model: 'validatorsCount',
176 key: node_storage_common_1.keys.validatorsCountKey.toString(),
177 value: change.value,
178 },
179 ];
180 default:
181 utils_1.utils.assertNever(change);
182 throw new Error('For TS');
183 }
184};
185const convertDeleteChange = (change) => {
186 switch (change.type) {
187 case 'account':
188 return {
189 type: 'delete',
190 model: 'account',
191 key: node_storage_common_1.keys.typeKeyToSerializeKey.account(change.key),
192 };
193 case 'accountUnclaimed':
194 return {
195 type: 'delete',
196 model: 'accountUnclaimed',
197 key: node_storage_common_1.keys.typeKeyToSerializeKey.accountUnclaimed(change.key),
198 };
199 case 'accountUnspent':
200 return {
201 type: 'delete',
202 model: 'accountUnspent',
203 key: node_storage_common_1.keys.typeKeyToSerializeKey.accountUnclaimed(change.key),
204 };
205 case 'contract':
206 return {
207 type: 'delete',
208 model: 'contract',
209 key: node_storage_common_1.keys.typeKeyToSerializeKey.contract(change.key),
210 };
211 case 'storageItem':
212 return {
213 type: 'delete',
214 model: 'storageItem',
215 key: node_storage_common_1.keys.typeKeyToSerializeKey.storageItem(change.key),
216 };
217 case 'validator':
218 return {
219 type: 'delete',
220 model: 'validator',
221 key: node_storage_common_1.keys.typeKeyToSerializeKey.validator(change.key),
222 };
223 default:
224 utils_1.utils.assertNever(change);
225 throw new Error('For TS');
226 }
227};
228exports.convertChange = (change) => {
229 if (change.type === 'add') {
230 return convertAddChange(change.change);
231 }
232 if (change.type === 'delete') {
233 return [convertDeleteChange(change.change)];
234 }
235 utils_1.utils.assertNever(change);
236 throw new Error('For TS');
237};
238
239//# sourceMappingURL=data:application/json;charset=utf8;base64,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O0lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDNUIsQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtbm9kZS1zdG9yYWdlLWNhY2hlL3NyYy9jb252ZXJ0Q2hhbmdlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkQ2hhbmdlLCBDaGFuZ2UsIERlbGV0ZUNoYW5nZSB9IGZyb20gJ0BuZW8tb25lL25vZGUtY29yZSc7XG5pbXBvcnQgeyBrZXlzIH0gZnJvbSAnQG5lby1vbmUvbm9kZS1zdG9yYWdlLWNvbW1vbic7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJ0BuZW8tb25lL3V0aWxzJztcblxuZXhwb3J0IHR5cGUgQ2FjaGVDaGFuZ2UgPVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgbm8tYW55XG4gIHwgeyByZWFkb25seSB0eXBlOiAnYWRkJzsgcmVhZG9ubHkgbW9kZWw6IHN0cmluZzsgcmVhZG9ubHkga2V5OiBzdHJpbmc7IHJlYWRvbmx5IHZhbHVlOiBhbnkgfVxuICB8IHsgcmVhZG9ubHkgdHlwZTogJ2RlbGV0ZSc7IHJlYWRvbmx5IG1vZGVsOiBzdHJpbmc7IHJlYWRvbmx5IGtleTogc3RyaW5nIH07XG5cbmNvbnN0IGNvbnZlcnRBZGRDaGFuZ2UgPSAoY2hhbmdlSW46IEFkZENoYW5nZSk6IHJlYWRvbmx5IENhY2hlQ2hhbmdlW10gPT4ge1xuICBjb25zdCBjaGFuZ2UgPSBjaGFuZ2VJbjtcbiAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgIGNhc2UgJ2FjY291bnQnOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnYWNjb3VudCcsXG4gICAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleS5hY2NvdW50KGNoYW5nZS52YWx1ZSksXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICdhY2NvdW50VW5jbGFpbWVkJzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2FjY291bnRVbmNsYWltZWQnLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkuYWNjb3VudFVuY2xhaW1lZCh7XG4gICAgICAgICAgICBoYXNoOiBjaGFuZ2UudmFsdWUuaGFzaCxcbiAgICAgICAgICAgIGlucHV0OiBjaGFuZ2UudmFsdWUuaW5wdXQsXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ2FjY291bnRVbnNwZW50JzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2FjY291bnRVbnNwZW50JyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5LmFjY291bnRVbnNwZW50KHtcbiAgICAgICAgICAgIGhhc2g6IGNoYW5nZS52YWx1ZS5oYXNoLFxuICAgICAgICAgICAgaW5wdXQ6IGNoYW5nZS52YWx1ZS5pbnB1dCxcbiAgICAgICAgICB9KSxcblxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgY2FzZSAnYWN0aW9uJzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2FjdGlvbicsXG4gICAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleS5hY3Rpb24oe1xuICAgICAgICAgICAgaW5kZXg6IGNoYW5nZS52YWx1ZS5pbmRleCxcbiAgICAgICAgICB9KSxcblxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgY2FzZSAnYXNzZXQnOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnYXNzZXQnLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkuYXNzZXQoY2hhbmdlLnZhbHVlKSxcbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ2Jsb2NrJzpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYWRkJyxcbiAgICAgICAgICBtb2RlbDogJ2Jsb2NrJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5LmJsb2NrKGNoYW5nZS52YWx1ZSksXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcblxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICdibG9jaycsXG4gICAgICAgICAga2V5OiBgJHtjaGFuZ2UudmFsdWUuaW5kZXh9YCxcbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ2Jsb2NrRGF0YSc6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICdibG9ja0RhdGEnLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkuYmxvY2tEYXRhKGNoYW5nZS52YWx1ZSksXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICdoZWFkZXInOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnaGVhZGVyJyxcbiAgICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5LmhlYWRlcihjaGFuZ2UudmFsdWUpLFxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG5cbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnaGVhZGVyJyxcbiAgICAgICAgICBrZXk6IGAke2NoYW5nZS52YWx1ZS5pbmRleH1gLFxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgY2FzZSAndHJhbnNhY3Rpb24nOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAndHJhbnNhY3Rpb24nLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkudHJhbnNhY3Rpb24oY2hhbmdlLnZhbHVlKSxcbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ291dHB1dCc6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICdvdXRwdXQnLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkub3V0cHV0KHtcbiAgICAgICAgICAgIGhhc2g6IGNoYW5nZS52YWx1ZS5oYXNoLFxuICAgICAgICAgICAgaW5kZXg6IGNoYW5nZS52YWx1ZS5pbmRleCxcbiAgICAgICAgICB9KSxcblxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUub3V0cHV0LFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ3RyYW5zYWN0aW9uRGF0YSc6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICd0cmFuc2FjdGlvbkRhdGEnLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkudHJhbnNhY3Rpb25EYXRhKGNoYW5nZS52YWx1ZSksXG4gICAgICAgICAgdmFsdWU6IGNoYW5nZS52YWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICBjYXNlICdjb250cmFjdCc6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICdjb250cmFjdCcsXG4gICAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleS5jb250cmFjdChjaGFuZ2UudmFsdWUpLFxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgY2FzZSAnc3RvcmFnZUl0ZW0nOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnc3RvcmFnZUl0ZW0nLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkuc3RvcmFnZUl0ZW0oe1xuICAgICAgICAgICAgaGFzaDogY2hhbmdlLnZhbHVlLmhhc2gsXG4gICAgICAgICAgICBrZXk6IGNoYW5nZS52YWx1ZS5rZXksXG4gICAgICAgICAgfSksXG5cbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ3ZhbGlkYXRvcic6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICd2YWxpZGF0b3InLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkudmFsaWRhdG9yKHtcbiAgICAgICAgICAgIHB1YmxpY0tleTogY2hhbmdlLnZhbHVlLnB1YmxpY0tleSxcbiAgICAgICAgICB9KSxcblxuICAgICAgICAgIHZhbHVlOiBjaGFuZ2UudmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgY2FzZSAnaW52b2NhdGlvbkRhdGEnOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhZGQnLFxuICAgICAgICAgIG1vZGVsOiAnaW52b2NhdGlvbkRhdGEnLFxuICAgICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkuaW52b2NhdGlvbkRhdGEoY2hhbmdlLnZhbHVlKSxcbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGNhc2UgJ3ZhbGlkYXRvcnNDb3VudCc6XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FkZCcsXG4gICAgICAgICAgbW9kZWw6ICd2YWxpZGF0b3JzQ291bnQnLFxuICAgICAgICAgIGtleToga2V5cy52YWxpZGF0b3JzQ291bnRLZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICB2YWx1ZTogY2hhbmdlLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICB1dGlscy5hc3NlcnROZXZlcihjaGFuZ2UpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb3IgVFMnKTtcbiAgfVxufTtcblxuY29uc3QgY29udmVydERlbGV0ZUNoYW5nZSA9IChjaGFuZ2U6IERlbGV0ZUNoYW5nZSk6IENhY2hlQ2hhbmdlID0+IHtcbiAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgIGNhc2UgJ2FjY291bnQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgIG1vZGVsOiAnYWNjb3VudCcsXG4gICAgICAgIGtleToga2V5cy50eXBlS2V5VG9TZXJpYWxpemVLZXkuYWNjb3VudChjaGFuZ2Uua2V5KSxcbiAgICAgIH07XG5cbiAgICBjYXNlICdhY2NvdW50VW5jbGFpbWVkJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBtb2RlbDogJ2FjY291bnRVbmNsYWltZWQnLFxuICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5LmFjY291bnRVbmNsYWltZWQoY2hhbmdlLmtleSksXG4gICAgICB9O1xuXG4gICAgY2FzZSAnYWNjb3VudFVuc3BlbnQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgIG1vZGVsOiAnYWNjb3VudFVuc3BlbnQnLFxuICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5LmFjY291bnRVbmNsYWltZWQoY2hhbmdlLmtleSksXG4gICAgICB9O1xuXG4gICAgY2FzZSAnY29udHJhY3QnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgIG1vZGVsOiAnY29udHJhY3QnLFxuICAgICAgICBrZXk6IGtleXMudHlwZUtleVRvU2VyaWFsaXplS2V5LmNvbnRyYWN0KGNoYW5nZS5rZXkpLFxuICAgICAgfTtcblxuICAgIGNhc2UgJ3N0b3JhZ2VJdGVtJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICBtb2RlbDogJ3N0b3JhZ2VJdGVtJyxcbiAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleS5zdG9yYWdlSXRlbShjaGFuZ2Uua2V5KSxcbiAgICAgIH07XG5cbiAgICBjYXNlICd2YWxpZGF0b3InOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgIG1vZGVsOiAndmFsaWRhdG9yJyxcbiAgICAgICAga2V5OiBrZXlzLnR5cGVLZXlUb1NlcmlhbGl6ZUtleS52YWxpZGF0b3IoY2hhbmdlLmtleSksXG4gICAgICB9O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHV0aWxzLmFzc2VydE5ldmVyKGNoYW5nZSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvciBUUycpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydENoYW5nZSA9IChjaGFuZ2U6IENoYW5nZSkgPT4ge1xuICBpZiAoY2hhbmdlLnR5cGUgPT09ICdhZGQnKSB7XG4gICAgcmV0dXJuIGNvbnZlcnRBZGRDaGFuZ2UoY2hhbmdlLmNoYW5nZSk7XG4gIH1cblxuICBpZiAoY2hhbmdlLnR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgcmV0dXJuIFtjb252ZXJ0RGVsZXRlQ2hhbmdlKGNoYW5nZS5jaGFuZ2UpXTtcbiAgfVxuXG4gIHV0aWxzLmFzc2VydE5ldmVyKGNoYW5nZSk7XG4gIHRocm93IG5ldyBFcnJvcignRm9yIFRTJyk7XG59O1xuIl19