This repository has been archived by the owner on Apr 29, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathvalidationPackage.json
265 lines (265 loc) · 40.8 KB
/
validationPackage.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
{
"Chain": {
"Emap": {
"QmNrvuRMyp3EEHB2p2YTQSmRhN37T1bnRiFcyNZp7GXpMJ": 1,
"QmYWZUcz7qR3nHqKx4TbzVA9rZN4vZfoqSccdZ2o2Y4Pdp": 4,
"QmZ9aNE37BX8hN1NtsxodvyKykeGZgFCR1LCKWxy8vGSpA": 7,
"QmaEwAzgvGe2Eg9f1rBANX65B8NN7VUfd5nSqZm6biX9SS": 0,
"Qmam3RcdqRcDEWrvZTtkseFP2iP57PKcjC6LEzuVHZbHJB": 6,
"Qmc9wG9Je5HRzNcAG57dM7PRh2JbzNeaFgmZpMfofKJaoA": 3,
"QmdksisNZRmPcwePkbwuTcUexnxup6TWArrQrfKWsZY1LK": 2,
"QmeiaUoWnDySbwCwcLD6nwJyAwDbLpw2EYc2nLCFFJVPUn": 5
},
"Entries": [
{
"C": "ewogICAgIlZlcnNpb24iOiAwLAogICAgIlVVSUQiOiAiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwIiwKICAgICJOYW1lIjogImNsdXR0ZXIiLAogICAgIlByb3BlcnRpZXMiOiB7CiAgICAgICAgImRlc2NyaXB0aW9uIjogImRpc3RyaWJ1dGVkIG1pY3JvLWJsb2dnaW5nIChUd2l0dGVyIGNsb25lKSIsCiAgICAgICAgImVuYWJsZURpcmVjdG9yeUFjY2VzcyI6ICJ0cnVlIiwKICAgICAgICAibGFuZ3VhZ2UiOiAiZW4iCiAgICB9LAogICAgIlByb3BlcnRpZXNTY2hlbWEiOiAie1xuXHRcInRpdGxlXCI6IFwiUHJvcGVydGllcyBTY2hlbWFcIixcblx0XCJ0eXBlXCI6IFwib2JqZWN0XCIsXG5cdFwicHJvcGVydGllc1wiOiB7XG5cdFx0XCJkZXNjcmlwdGlvblwiOiB7XG5cdFx0XHRcInR5cGVcIjogXCJzdHJpbmdcIlxuXHRcdH0sXG5cdFx0XCJsYW5ndWFnZVwiOiB7XG5cdFx0XHRcInR5cGVcIjogXCJzdHJpbmdcIlxuXHRcdH0sXG5cdFx0XCJlbmFibGVEaXJlY3RvcnlBY2Nlc3NcIjoge1xuXHRcdFx0XCJ0eXBlXCI6IFwic3RyaW5nXCJcblx0XHR9XG5cdH1cbn1cbiIsCiAgICAiQWdlbnRJZGVudGl0eVNjaGVtYSI6ICIiLAogICAgIkJhc2VkT24iOiB7CiAgICAgICAgIkgiOiBudWxsCiAgICB9LAogICAgIlJlcXVpcmVzVmVyc2lvbiI6IDE4LAogICAgIkRIVENvbmZpZyI6IHsKICAgICAgICAiSGFzaFR5cGUiOiAic2hhMi0yNTYiLAogICAgICAgICJOZWlnaGJvcmhvb2RTaXplIjogMAogICAgfSwKICAgICJQcm9nZW5pdG9yIjogewogICAgICAgICJJZGVudGl0eSI6ICIiLAogICAgICAgICJQdWJLZXkiOiBudWxsCiAgICB9LAogICAgIlpvbWVzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIk5hbWUiOiAiY2x1dHRlciIsCiAgICAgICAgICAgICJEZXNjcmlwdGlvbiI6ICJ6b21lIHRoYXQgaW1wbGVtZW50cyBtaWNyby1ibG9nZ2luZyIsCiAgICAgICAgICAgICJDb2RlIjogIlxuZnVuY3Rpb24gZ2V0UHJvcGVydHkobmFtZSkgeyAgICAgICAgICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiB5b3UgaW50ZW5kIHRvIGV4cG9zZVxuICAgIHJldHVybiBwcm9wZXJ0eShuYW1lKTsgICAgICAgICAgICAgIC8vIFJldHJpZXZlcyBhIHByb3BlcnR5IG9mIHRoZSBob2xvY2hhaW4gZnJvbSB0aGUgRE5BIChlLmcuLCBOYW1lLCBMYW5ndWFnZVxufVxuZnVuY3Rpb24gYXBwUHJvcGVydHkobmFtZSkgeyAgICAgICAgICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiB5b3UgaW50ZW5kIHRvIGV4cG9zZVxuICAgIGlmIChuYW1lID09IFwiQXBwX0FnZW50X0hhc2hcIikge3JldHVybiBBcHAuQWdlbnQuSGFzaDt9XG4gICAgaWYgKG5hbWUgPT0gXCJBcHBfQWdlbnRfU3RyaW5nXCIpICB7cmV0dXJuIEFwcC5BZ2VudC5TdHJpbmc7fVxuICAgIGlmIChuYW1lID09IFwiQXBwX0tleV9IYXNoXCIpICAge3JldHVybiAgIEFwcC5LZXkuSGFzaDt9XG4gICAgaWYgKG5hbWUgPT0gXCJBcHBfRE5BX0hhc2hcIikgICB7cmV0dXJuICAgQXBwLkROQS5IYXNoO31cbiAgICByZXR1cm4gXCJFcnJvcjogTm8gQXBwIFByb3BlcnR5IHdpdGggbmFtZTogXCIgKyBuYW1lO1xufVxuXG5mdW5jdGlvbiBuZXdIYW5kbGUoaGFuZGxlKXtcbiAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICctLVx1MDAzZVx1MDAzZURIVDpDaGVjayB0byBzZWUgaWYgJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnIGhhcyBhbnkgZXhpc2l0bmcgaGFuZGxlc1x1MDAzYy9tZXJtYWlkXHUwMDNlJyk7XG4gIHZhciBoYW5kbGVzID0gZ2V0TGlua3MoQXBwLktleS5IYXNoLCAnaGFuZGxlJyk7XG4gIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlREhULVx1MDAzZVx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJzpyZXR1cm5zIGFueSBoYW5kbGVzXHUwMDNjL21lcm1haWRcdTAwM2UnKTtcbiAgaWYgKGhhbmRsZXMubGVuZ3RoIFx1MDAzZSAwKSB7XG4gICAgaWYoYW5jaG9yRXhpc3RzKCdoYW5kbGUnLCBoYW5kbGUpID09PSAnZmFsc2UnKXtcbiAgICAgIHZhciBvbGRLZXkgPSBoYW5kbGVzWzBdLkhhc2g7XG4gICAgICB2YXIga2V5ID0gdXBkYXRlKCdoYW5kbGUnLCBhbmNob3IoJ2hhbmRsZScsIGhhbmRsZSksIG9sZEtleSk7XG4gICAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICc6JyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnIGhhcyBhIGhhbmRsZSBzbyB1cGRhdGUgaXRcdTAwM2MvbWVybWFpZFx1MDAzZScpO1xuICAgICAgY29tbWl0KCdoYW5kbGVfbGlua3MnLFxuICAgICAgICB7TGlua3M6W1xuICAgICAgICAgICB7QmFzZTogQXBwLktleS5IYXNoLCBMaW5rOiBvbGRLZXksIFRhZzogJ2hhbmRsZScsIExpbmtBY3Rpb246IEhDLkxpbmtBY3Rpb24uRGVsfSxcbiAgICAgICAgICAge0Jhc2U6IEFwcC5LZXkuSGFzaCwgTGluazoga2V5LCBUYWc6ICdoYW5kbGUnfVxuICAgICAgICBdfSk7XG4gICAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2VESFQ6VXBkYXRlIGxpbmsgdG8gJyArIGhhbmRsZSArICcgaW4gXCJoYW5kbGVfbGlua3NcIlx1MDAzYy9tZXJtYWlkXHUwMDNlJyk7XG4gICAgICBjb21taXQoJ2RpcmVjdG9yeV9saW5rcycsXG4gICAgICAgIHtMaW5rczpbXG4gICAgICAgICAgIHtCYXNlOiBBcHAuRE5BLkhhc2gsIExpbms6IG9sZEtleSwgVGFnOiAnaGFuZGxlJywgTGlua0FjdGlvbjogSEMuTGlua0FjdGlvbi5EZWx9LFxuICAgICAgICAgICB7QmFzZTogQXBwLkROQS5IYXNoLCBMaW5rOiBrZXksIFRhZzogJ2hhbmRsZSd9XG4gICAgICAgIF19KTtcbiAgICAgIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnLVx1MDAzZVx1MDAzZURIVDpVcGRhdGUgbGluayB0byAnICsgaGFuZGxlICsgJyBpbiBcImRpcmVjdG9yeV9saW5rc1wiXHUwMDNjL21lcm1haWRcdTAwM2UnKTtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGRlYnVnKCdIYW5kbGVJblVzZScpXG4gICAgICByZXR1cm4gJ0hhbmRsZUluVXNlJztcbiAgICB9XG4gIH1cbiAgaWYoYW5jaG9yRXhpc3RzKCdoYW5kbGUnLCBoYW5kbGUpID09PSAnZmFsc2UnKXtcbiAgICB2YXIgbmV3SGFuZGxlS2V5ID0gY29tbWl0KCdoYW5kbGUnLCBhbmNob3IoJ2hhbmRsZScsIGhhbmRsZSkpO1xuICAgIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnLVx1MDAzZVx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJzpjb21taXQgbmV3IGhhbmRsZVx1MDAzYy9tZXJtYWlkXHUwMDNlJyk7XG4gICAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICctXHUwMDNlXHUwMDNlREhUOlB1Ymxpc2ggJyArIGhhbmRsZSArICdcdTAwM2MvbWVybWFpZFx1MDAzZScpO1xuICAgIGNvbW1pdCgnaGFuZGxlX2xpbmtzJywge0xpbmtzOiBbe0Jhc2U6IEFwcC5LZXkuSGFzaCwgTGluazogbmV3SGFuZGxlS2V5LCBUYWc6ICdoYW5kbGUnfV19KTtcbiAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2VESFQ6TGluayAnICsgaGFuZGxlICsgJyB0byBcImhhbmRsZV9saW5rc1wiXHUwMDNjL21lcm1haWRcdTAwM2UnKTtcbiAgICBjb21taXQoJ2RpcmVjdG9yeV9saW5rcycsIHtMaW5rczogW3tCYXNlOiBBcHAuRE5BLkhhc2gsIExpbms6IG5ld0hhbmRsZUtleSwgVGFnOiAnZGlyZWN0b3J5J31dfSk7XG4gICAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICctXHUwMDNlXHUwMDNlREhUOkxpbmsgJyArIGhhbmRsZSArICcgdG8gXCJkaXJlY3RvcnlfbGlua3NcIlx1MDAzYy9tZXJtYWlkXHUwMDNlJyk7XG4gICAgcmV0dXJuIG5ld0hhbmRsZUtleTtcbiAgfSBlbHNlIHtcbiAgICAvLyBkZWJ1ZygnSGFuZGxlSW5Vc2UnKVxuICAgIHJldHVybiAnSGFuZGxlSW5Vc2UnO1xuICB9XG59XG5cbi8vIHJldHVybnMgdGhlIGhhbmRsZSBvZiBhbiBhZ2VudCBieSBsb29raW5nIGl0IHVwIG9uIHRoZSB1c2VyJ3MgREhUIGVudHJ5LCB0aGUgbGFzdCBoYW5kbGUgd2lsbCBiZSB0aGUgY3VycmVudCBvbmU/XG5mdW5jdGlvbiBnZXRIYW5kbGUoaGFuZGxlS2V5KSB7XG4gIHZhciBsaW5rcyA9IGdldExpbmtzKGhhbmRsZUtleSwgJ2hhbmRsZScsIHtMb2FkOiB0cnVlfSk7XG4gIC8vIGRlYnVnKGxpbmtzKVxuICAgIHZhciBhbmNob3JIYXNoID0gbGlua3NbMF0uRW50cnkucmVwbGFjZSgvXCIvZywgJycpO1xuICAgIHJldHVybiBnZXQoYW5jaG9ySGFzaCkuYW5jaG9yVGV4dDtcbn1cblxuZnVuY3Rpb24gZ2V0QWdlbnQoaGFuZGxlKSB7XG4gIGlmKGFuY2hvckV4aXN0cygnaGFuZGxlJywgaGFuZGxlKSA9PT0gJ2ZhbHNlJyl7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdldChhbmNob3IoJ2hhbmRsZScsIGhhbmRsZSksIHtHZXRNYXNrOiBIQy5HZXRNYXNrLlNvdXJjZXN9KVswXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRIYW5kbGVzKCkge1xuICAgIGlmIChwcm9wZXJ0eShcImVuYWJsZURpcmVjdG9yeUFjY2Vzc1wiKSAhPSBcInRydWVcIikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICB2YXIgbGlua3MgPSBnZXRMaW5rcyhBcHAuRE5BLkhhc2gsIFwiZGlyZWN0b3J5XCIse0xvYWQ6dHJ1ZX0pO1xuICAgIC8vIGRlYnVnKGxpbmtzKVxuICAgIHZhciBoYW5kbGVzID0gW107XG4gICAgZm9yICh2YXIgaT0wO2kgXHUwMDNjbGlua3MubGVuZ3RoO2krKykge1xuICAgICAgdmFyIGhhbmRsZUhhc2ggPSBsaW5rc1tpXS5Tb3VyY2U7XG4gICAgICB2YXIgaGFuZGxlID0gZ2V0KGxpbmtzW2ldLkVudHJ5KS5hbmNob3JUZXh0O1xuICAgICAgaGFuZGxlcy5wdXNoKHsnaGFuZGxlSGFzaCc6IGhhbmRsZUhhc2gsJ2hhbmRsZSc6IGhhbmRsZX0pO1xuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlcztcbn1cblxuZnVuY3Rpb24gZm9sbG93KGhhbmRsZSkge1xuICAvLyBFeHBlY3RzIGEgaGFuZGxlIG9mIHRoZSBwZXJzb24geW91IHdhbnQgdG8gZm9sbG93XG4gICAvLyBDb21taXRzIGEgbmV3IGZvbGxvdyBlbnRyeSB0byBteSBzb3VyY2UgY2hhaW5cbiAgIC8vIE9uIHRoZSBESFQsIHB1dHMgYSBsaW5rIG9uIHRoZWlyIGhhc2ggdG8gbXkgaGFzaCBhcyBhIFwiZm9sbG93ZXJcIlxuICAgLy8gT24gdGhlIERIVCwgcHV0cyBhIGxpbmsgb24gbXkgaGFzaCB0byB0aGVpciBoYXNoIGFzIGEgXCJmb2xsb3dpbmdcIlxuICAgIHZhciBoYW5kbGVIYXNoID0gbWFrZUhhc2goJ2hhbmRsZScsIGhhbmRsZSk7XG4gICAgcmV0dXJuIGNvbW1pdChcImZvbGxvd1wiLFxuICAgICAgICAgICAgICAgICAge0xpbmtzOltcbiAgICAgICAgICAgICAgICAgICAgICB7QmFzZTpoYW5kbGVIYXNoLExpbms6YW5jaG9ySGFzaCgpLFRhZzpcImZvbGxvd2Vyc1wifSxcbiAgICAgICAgICAgICAgICAgICAgICB7QmFzZTphbmNob3JIYXNoKCksTGluazpoYW5kbGVIYXNoLFRhZzpcImZvbGxvd2luZ1wifVxuICAgICAgICAgICAgICAgICAgXX0pO1xuICAgIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnLVx1MDAzZVx1MDAzZURIVDpMaW5rICcgKyBBcHAuQWdlbnQuU3RyaW5nICsgJyB0byAnICsgaGFuZGxlICsgJ1x1MDAzYy9tZXJtYWlkXHUwMDNlJyk7XG5cbn1cblxuLy8gZ2V0IGEgbGlzdCBvZiBhbGwgdGhlIHBlb3BsZSBmcm9tIHRoZSBESFQgYSB1c2VyIGlzIGZvbGxvd2luZyBvciBmb2xsb3dzXG5mdW5jdGlvbiBnZXRGb2xsb3cocGFyYW1zKSB7XG4gICAgdmFyIHR5cGUgPSBwYXJhbXMudHlwZTtcbiAgICB2YXIgIGJhc2UgPSBwYXJhbXMuZnJvbTtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKCh0eXBlID09IFwiZm9sbG93ZXJzXCIpIHx8ICh0eXBlID09IFwiZm9sbG93aW5nXCIpKSB7XG4gICAgICAgIHJlc3VsdFtcInJlc3VsdFwiXSA9IGRvR2V0TGluayhiYXNlLHR5cGUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmVzdWx0W1wiZXJyb3JcIl0gPSBcImJhZCB0eXBlOiBcIit0eXBlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBwb3N0KHBvc3QpIHtcbiAgICB2YXIga2V5ID0gY29tbWl0KCdwb3N0JywgcG9zdCk7ICAgICAgICAvLyBDb21taXRzIHRoZSBwb3N0IGJsb2NrIHRvIG15IHNvdXJjZSBjaGFpbiwgYXNzaWducyByZXN1bHRpbmcgaGFzaCB0byAna2V5J1xuICAgIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnLVx1MDAzZVx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJzpjb21taXQgbmV3IHBvc3RcdTAwM2MvbWVybWFpZFx1MDAzZScpO1xuICAgIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnLVx1MDAzZVx1MDAzZURIVDpQdWJsaXNoIG5ldyBwb3N0XHUwMDNjL21lcm1haWRcdTAwM2UnKTtcblxuICAgIC8vIE9uIHRoZSBESFQsIHB1dHMgYSBsaW5rIG9uIG15IGFuY2hvciB0byB0aGUgbmV3IHBvc3RcbiAgICBjb21taXQoXCJwb3N0X2xpbmtzXCIse0xpbmtzOlt7QmFzZTogYW5jaG9ySGFzaCgpLCBMaW5rOiBrZXksIFRhZzogXCJwb3N0XCJ9XX0pO1xuICAgIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnLVx1MDAzZVx1MDAzZURIVDpMaW5rIHBvc3QgdG8gXCJwb3N0X2xpbmtzXCJcdTAwM2MvbWVybWFpZFx1MDAzZScpO1xuXG4gICAgLy8gZGVidWcoa2V5KTtcbiAgICByZXR1cm4ga2V5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm5zIHRoZSBoYXNoIGtleSBvZiB0aGUgbmV3IHBvc3QgdG8gdGhlIGNhbGxpbmcgZnVuY3Rpb25cbn1cblxuZnVuY3Rpb24gcG9zdE1vZChwYXJhbXMpIHtcbiAgICB2YXIga2V5ID0gdXBkYXRlKCdwb3N0JywgcGFyYW1zLnBvc3QsIHBhcmFtcy5oYXNoKTtcbiAgICAvLyBjb21taXQoJ3Bvc3RfbGlua3MnLFxuICAgIC8vICAge0xpbmtzOltcbiAgICAvLyAgICAgIHtCYXNlOiBBcHAuS2V5Lkhhc2gsIExpbms6IG9sZEtleSwgVGFnOiAnaGFuZGxlJywgTGlua0FjdGlvbjogSEMuTGlua0FjdGlvbi5EZWx9LFxuICAgIC8vICAgICAge0Jhc2U6IEFwcC5LZXkuSGFzaCwgTGluazoga2V5LCBUYWc6ICdoYW5kbGUnfVxuICAgIC8vICAgXX0pXG4gICAgcmV0dXJuIGtleTtcbn1cblxuLy8gVE9ETyBhZGQgXCJsYXN0IDEwXCIgb3IgXCJzaW5jZSB0aW1lc3RhbXBcIiB3aGVuIHF1ZXJ5IGluZm8gaXMgc3VwcG9ydGVkXG5mdW5jdGlvbiBnZXRQb3N0c0J5KGhhbmRsZXMpIHtcbiAgICAvLyBGcm9tIHRoZSBESFQsIGdldHMgYWxsIFwicG9zdFwiIG1ldGFkYXRhIGVudHJpZXMgbGlua2VkIGZyb20gdGhpcyB1c2VyQWRkcmVzc1xuICAgIHZhciBwb3N0cyA9IFtdO1xuICAgIGZvciAodmFyIGk9MDtpXHUwMDNjaGFuZGxlcy5sZW5ndGg7aSsrKSB7XG4gICAgICAgIHZhciBhdXRob3IgPSBhbmNob3IoJ2hhbmRsZScsIGhhbmRsZXNbaV0pO1xuICAgICAgICB2YXIgYXV0aG9yUG9zdHMgPSBkb0dldExpbmtMb2FkKGF1dGhvciwgJ3Bvc3QnKTtcbiAgICAgICAgLy8gYWRkIGluIHRoZSBhdXRob3JcbiAgICAgICAgZm9yKHZhciBqPTA7alx1MDAzY2F1dGhvclBvc3RzLmxlbmd0aDtqKyspIHtcbiAgICAgICAgICAgIHZhciBwb3N0ID0gYXV0aG9yUG9zdHNbal07XG4gICAgICAgICAgICBwb3N0LmF1dGhvciA9IGF1dGhvcjtcbiAgICAgICAgICAgIHBvc3RzLnB1c2gocG9zdCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBvc3RzO1xufVxuXG5mdW5jdGlvbiBnZXRQb3N0KHBhcmFtcykge1xuICB2YXIgcG9zdCwgcmF3UG9zdCA9IGdldChwYXJhbXMucG9zdEhhc2gse0dldE1hc2s6SEMuR2V0TWFzay5BbGx9KTtcbiAgaWYgKHJhd1Bvc3QgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBwb3N0ID0ge1xuICAgICAgcG9zdDogcmF3UG9zdC5FbnRyeSxcbiAgICAgIGF1dGhvcjogcmF3UG9zdC5Tb3VyY2VzWzBdLFxuICAgICAgSDogcGFyYW1zLnBvc3RIYXNoXG4gICAgfTtcbiAgICByZXR1cm4gcG9zdDtcbiAgfVxufVxuXG4vLyBoZWxwZXIgZnVuY3Rpb24gdG8gZG8gZ2V0TGlua3MgY2FsbCwgaGFuZGxlIHRoZSBuby1saW5rIGVycm9yIGNhc2UsIGFuZCBjb3B5IHRoZSByZXR1cm5lZCBlbnRyeSB2YWx1ZXMgaW50byBhIG5pY2VyIGFycmF5XG5mdW5jdGlvbiBkb0dldExpbmtMb2FkKGJhc2UsIHRhZykge1xuICAgIC8vIGdldCB0aGUgdGFnIGZyb20gdGhlIGJhc2UgaW4gdGhlIERIVFxuICAgIHZhciBsaW5rcyA9IGdldExpbmtzKGJhc2UsIHRhZyx7TG9hZDp0cnVlfSk7XG4gICAgdmFyIGxpbmtzX2ZpbGxlZCA9IFtdO1xuICAgIGZvciAodmFyIGk9MDtpIFx1MDAzY2xpbmtzLmxlbmd0aDtpKyspIHtcbiAgICAgICAgdmFyIGxpbmsgPSB7SDpsaW5rc1tpXS5IYXNofTtcbiAgICAgICAgbGlua1t0YWddID0gbGlua3NbaV0uRW50cnk7XG4gICAgICAgIGxpbmtzX2ZpbGxlZC5wdXNoKGxpbmspO1xuICAgIH1cbiAgICByZXR1cm4gbGlua3NfZmlsbGVkO1xufVxuXG4vLyBoZWxwZXIgZnVuY3Rpb24gdG8gY2FsbCBnZXRMaW5rcywgaGFuZGxlIHRoZSBubyBsaW5rcyBlbnRyeSBlcnJvciwgYW5kIGJ1aWxkIGEgc2ltcGxlciBsaW5rcyBhcnJheS5cbmZ1bmN0aW9uIGRvR2V0TGluayhiYXNlLHRhZykge1xuICAgIC8vIGdldCB0aGUgdGFnIGZyb20gdGhlIGJhc2UgaW4gdGhlIERIVFxuICAgIHZhciBsaW5rcyA9IGdldExpbmtzKGJhc2UsIHRhZyx7TG9hZDpmYWxzZX0pO1xuICAgIC8vIGRlYnVnKFwiTGlua3M6XCIrSlNPTi5zdHJpbmdpZnkobGlua3MpKTtcbiAgICB2YXIgbGlua3NfZmlsbGVkID0gW107XG4gICAgZm9yICh2YXIgaT0wO2kgXHUwMDNjbGlua3MubGVuZ3RoO2krKykge1xuICAgICAgICBsaW5rc19maWxsZWQucHVzaChsaW5rc1tpXS5IYXNoKTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmtzX2ZpbGxlZDtcbn1cblxuZnVuY3Rpb24gYW5jaG9yKGFuY2hvclR5cGUsIGFuY2hvclRleHQpe1xuICByZXR1cm4gY2FsbCgnYW5jaG9ycycsICdhbmNob3InLCB7YW5jaG9yVHlwZTogYW5jaG9yVHlwZSwgYW5jaG9yVGV4dDogYW5jaG9yVGV4dH0pLnJlcGxhY2UoL1wiL2csICcnKTtcbn1cblxuZnVuY3Rpb24gYW5jaG9ySGFzaChhcHBLZXlIYXNoKXtcbiAgLy8gZGVidWcoJ2FwcEtleUhhc2ggJyArIGFwcEtleUhhc2gpXG4gIGlmKGFwcEtleUhhc2ggPT09IHVuZGVmaW5lZCl7XG4gICAgYXBwS2V5SGFzaCA9IEFwcC5LZXkuSGFzaDtcbiAgfVxuICByZXR1cm4gZ2V0TGlua3MoYXBwS2V5SGFzaCwgJ2hhbmRsZScsIHtMb2FkOiB0cnVlfSlbMF0uRW50cnkucmVwbGFjZSgvXCIvZywgJycpO1xufVxuXG5mdW5jdGlvbiBhbmNob3JFeGlzdHMoYW5jaG9yVHlwZSwgYW5jaG9yVGV4dCl7XG4gIHJldHVybiBjYWxsKCdhbmNob3JzJywgJ2V4aXN0cycsIHthbmNob3JUeXBlOiBhbmNob3JUeXBlLCBhbmNob3JUZXh0OiBhbmNob3JUZXh0fSk7XG59XG5cbi8vIEdFTkVTSVMgLSBDYWxsZWQgb25seSB3aGVuIHlvdXIgc291cmNlIGNoYWluIGlzIGdlbmVyYXRlZDonaGMgZ2VuIGNoYWluIFx1MDAzY25hbWVcdTAwM2UnXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5mdW5jdGlvbiBnZW5lc2lzKCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAnaGMgZ2VuIGNoYWluJyBjYWxscyB0aGUgZ2VuZXNpcyBmdW5jdGlvbiBpbiBldmVyeSB6b21lIGZpbGUgZm9yIHRoZSBhcHBcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gICBWQUxJREFUSU9OIGZ1bmN0aW9ucyBmb3IgKkVWRVJZKiBjaGFuZ2UgbWFkZSB0byBESFQgZW50cnkgLVxuLy8gICAgIEV2ZXJ5IERIVCBub2RlIHVzZXMgdGhlaXIgb3duIGNvcHkgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIHZhbGlkYXRlXG4vLyAgICAgYW55IGFuZCBhbGwgY2hhbmdlcyByZXF1ZXN0ZWQgYmVmb3JlIGFjY2VwdGluZy4gcHV0IC8gbW9kIC8gZGVsIFx1MDAyNiBtZXRhc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbW1pdChlbnRyeV90eXBlLGVudHJ5LGhlYWRlcixwa2csc291cmNlcykge1xuICAgIGRlYnVnKFwiQ2x1dHRlciB2YWxpZGF0ZSBjb21taXQ6IFwiKyBKU09OLnN0cmluZ2lmeShwa2cpKTtcbiAgICByZXR1cm4gdmFsaWRhdGUoZW50cnlfdHlwZSxlbnRyeSxoZWFkZXIsc291cmNlcyk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHV0KGVudHJ5X3R5cGUsZW50cnksaGVhZGVyLHBrZyxzb3VyY2VzKSB7XG4gICAgZGVidWcoXCJDbHV0dGVyIHZhbGlkYXRlIHB1dDogXCIrIEpTT04uc3RyaW5naWZ5KHBrZykpO1xuICAgIHJldHVybiB2YWxpZGF0ZShlbnRyeV90eXBlLGVudHJ5LGhlYWRlcixzb3VyY2VzKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGUoZW50cnlfdHlwZSxlbnRyeSxoZWFkZXIsc291cmNlcykge1xuICAgIGlmIChlbnRyeV90eXBlPT1cInBvc3RcIikge1xuICAgICAgICB2YXIgbCA9IGVudHJ5Lm1lc3NhZ2UubGVuZ3RoO1xuICAgICAgICBpZiAobFx1MDAzZTAgXHUwMDI2XHUwMDI2IGxcdTAwM2MyNTYpIHtyZXR1cm4gdHJ1ZTt9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGVudHJ5X3R5cGU9PVwiaGFuZGxlXCIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChlbnRyeV90eXBlPT1cImZvbGxvd1wiKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuLy8gQXJlIHRoZXJlIHR5cGVzIG9mIHRhZ3MgdGhhdCB5b3UgbmVlZCBzcGVjaWFsIHBlcm1pc3Npb24gdG8gYWRkIGxpbmtzP1xuLy8gRXhhbXBsZXM6XG4vLyAgIC0gT25seSBCb2Igc2hvdWxkIGJlIGFibGUgdG8gbWFrZSBCb2IgYSBcImZvbGxvd2VyXCIgb2YgQWxpY2Vcbi8vICAgLSBPbmx5IEJvYiBzaG91bGQgYmUgYWJsZSB0byBsaXN0IEFsaWNlIGluIGhpcyBwZW9wbGUgaGUgaXMgXCJmb2xsb3dpbmdcIlxuZnVuY3Rpb24gdmFsaWRhdGVMaW5rKGxpbmtFbnRyeVR5cGUsYmFzZUhhc2gsbGlua3MscGtnLHNvdXJjZXMpe1xuICAgLy8gZGVidWcoXCJDbHV0dGVyIHZhbGlkYXRlIGxpbms6IFwiICsgc291cmNlcyk7XG4gICAgLy8gaWYgKGxpbmtFbnRyeVR5cGU9PVwiaGFuZGxlX2xpbmtzXCIpIHtcbiAgICAvLyAgICAgdmFyIGxlbmd0aCA9IGxpbmtzLmxlbmd0aDtcbiAgICAvLyAgICAgLy8gYSB2YWxpZCBoYW5kbGUgaXMgd2hlbjpcbiAgICAvL1xuICAgIC8vICAgICAvLyB0aGVyZSBzaG91bGQganVzdCBiZSBvbmUgb3IgdHdvIGxpbmtzIG9ubHlcbiAgICAvLyAgICAgaWYgKGxlbmd0aD09Mikge1xuICAgIC8vICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIG1vZGlmeSBpdCB3aWxsIGhhdmUgdHdvIGxpbmtzIHRoZSBmaXJzdCBvZiB3aGljaFxuICAgIC8vICAgICAgICAgLy8gd2lsbCBiZSB0aGUgZGVsIGFuZCB0aGUgc2Vjb25kIHRoZSBuZXcgbGluay5cbiAgICAvLyAgICAgICAgIGlmIChsaW5rc1swXS5MaW5rQWN0aW9uICE9IEhDLkxpbmtBY3Rpb24uRGVsKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgICAgICBpZiAobGlua3NbMV0uTGlua0FjdGlvbiAhPSBIQy5MaW5rQWN0aW9uLkFkZCkgcmV0dXJuIGZhbHNlO1xuICAgIC8vICAgICB9IGVsc2UgaWYgKGxlbmd0aD09MSkge1xuICAgIC8vICAgICAgICAgLy8gaWYgdGhpcyBpcyBhIG5ldyBoYW5kbGUsIHRoZXJlIHdpbGwganVzdCBiZSBvbmUgQWRkIGxpbmtcbiAgICAvLyAgICAgICAgIGlmIChsaW5rc1swXS5MaW5rQWN0aW9uICE9IEhDLkxpbmtBY3Rpb24uQWRkKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgIH0gZWxzZSB7cmV0dXJuIGZhbHNlO31cbiAgICAvL1xuICAgIC8vICAgICBmb3IgKHZhciBpPTA7aVx1MDAzY2xlbmd0aDtpKyspIHtcbiAgICAvLyAgICAgICAgIHZhciBsaW5rID0gbGlua3NbaV07XG4gICAgLy8gICAgICAgICAvLyB0aGUgYmFzZSBtdXN0IGJlIHRoaXMgYmFzZVxuICAgIC8vICAgICAgICAgaWYgKGxpbmsuQmFzZSAhPSBiYXNlSGFzaCkgcmV0dXJuIGZhbHNlO1xuICAgIC8vICAgICAgICAgLy8gdGhlIGJhc2UgbXVzdCBiZSB0aGUgc291cmNlXG4gICAgLy8gICAgICAgICBpZiAobGluay5CYXNlICE9IHNvdXJjZXNbMF0pIHJldHVybiBmYWxzZTtcbiAgICAvLyAgICAgICAgIC8vIFRoZSB0YWcgbmFtZSBzaG91bGQgYmUgXCJoYW5kbGVcIlxuICAgIC8vICAgICAgICAgaWYgKGxpbmsuVGFnICE9IFwiaGFuZGxlXCIpIHJldHVybiBmYWxzZTtcbiAgICAvLyAgICAgICAgIC8vVE9ETyBjaGVjayBzb21ldGhpbmcgYWJvdXQgdGhlIGxpbmssIGkuZS4gZ2V0IGl0IGFuZCBjaGVjayBpdCdzIHR5cGU/XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcmV0dXJuIHRydWU7XG4gICAgLy8gfVxuICAgIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVNb2QoZW50cnlfdHlwZSxlbnRyeSxoZWFkZXIscmVwbGFjZXMscGtnLHNvdXJjZXMpIHtcbiAgICAvLyBkZWJ1ZyhcIkNsdXR0ZXIgdmFsaWRhdGUgbW9kOiBcIitlbnRyeV90eXBlK1wiIGhlYWRlcjpcIitKU09OLnN0cmluZ2lmeShoZWFkZXIpK1wiIHJlcGxhY2VzOlwiK0pTT04uc3RyaW5naWZ5KHJlcGxhY2VzKSk7XG4gICAgaWYgKGVudHJ5X3R5cGUgPT0gXCJoYW5kbGVcIikge1xuICAgICAgICAvLyBjaGVjayB0aGF0IHRoZSBzb3VyY2UgaXMgdGhlIHNhbWUgYXMgdGhlIGNyZWF0b3JcbiAgICAgICAgLy8gVE9ETyB3ZSBjb3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlIHByZXZpb3VzIGxpbmsgaW4gdGhlIHR5cGUtY2hhaW4gaXMgdGhlIHJlcGxhY2VzIGhhc2guXG4gICAgICAgIHZhciBvcmlnX3NvdXJjZXMgPSBnZXQocmVwbGFjZXMse0dldE1hc2s6SEMuR2V0TWFzay5Tb3VyY2VzfSk7XG4gICAgICAgIGlmIChpc0VycihvcmlnX3NvdXJjZXMpIHx8IG9yaWdfc291cmNlcyA9PSB1bmRlZmluZWQgfHwgb3JpZ19zb3VyY2VzLmxlbmd0aCAhPTEgfHwgb3JpZ19zb3VyY2VzWzBdICE9IHNvdXJjZXNbMF0pIHtyZXR1cm4gZmFsc2U7fVxuXG4gICAgfSBlbHNlIGlmIChlbnRyeV90eXBlID09IFwicG9zdFwiKSB7XG4gICAgICAgIC8vIHRoZXJlIG11c3QgYWN0dWFsbHkgYmUgYSBtZXNzYWdlXG4gICAgICAgIGlmIChlbnRyeS5tZXNzYWdlID09IFwiXCIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIG9yaWcgPSBnZXQocmVwbGFjZXMse0dldE1hc2s6SEMuR2V0TWFzay5Tb3VyY2VzK0hDLkdldE1hc2suRW50cnl9KTtcblxuICAgICAgICAvLyBjaGVjayB0aGF0IHNvdXJjZSBpcyBzYW1lIGFzIGNyZWF0b3JcbiAgICAgICAgaWYgKG9yaWcuU291cmNlcy5sZW5ndGggIT0xIHx8IG9yaWcuU291cmNlc1swXSAhPSBzb3VyY2VzWzBdKSB7cmV0dXJuIGZhbHNlO31cblxuICAgICAgICB2YXIgb3JpZ19tZXNzYWdlID0gb3JpZy5FbnRyeS5tZXNzYWdlO1xuICAgICAgICAvLyBtZXNzYWdlIG11c3QgYWN0dWFsbHkgYmUgZGlmZmVyZW50XG4gICAgICAgIHJldHVybiBvcmlnX21lc3NhZ2UgIT0gZW50cnkubWVzc2FnZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiB2YWxpZGF0ZURlbChlbnRyeV90eXBlLGhhc2gscGtnLHNvdXJjZXMpIHtcbiAgLy8gZGVidWcoJ0NsdXR0ZXIgdmFsaWRhdGVEZWw6JyArIHNvdXJjZXMpXG4gIHJldHVybiB0cnVlO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVQdXRQa2coZW50cnlfdHlwZSkge1xuICB2YXIgcmVxID0ge307XG4gIHJlcVtIQy5Qa2dSZXEuQ2hhaW5dPUhDLlBrZ1JlcS5DaGFpbk9wdC5GdWxsO1xuICByZXR1cm4gcmVxO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVNb2RQa2coZW50cnlfdHlwZSkge1xuICAvLyBkZWJ1ZygnQ2x1dHRlciB2YWxpZGF0ZU1vZFBrZycpXG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVEZWxQa2coZW50cnlfdHlwZSkge1xuICAvLyBkZWJ1ZygnQ2x1dHRlciB2YWxpZGF0ZURlbFBrZycpXG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gdmFsaWRhdGVMaW5rUGtnKGVudHJ5X3R5cGUpIHtcbiAgLy8gZGVidWcoJ0NsdXR0ZXIgdmFsaWRhdGVMaW5rUGtnJylcbiAgcmV0dXJuIG51bGw7XG59XG4iLAogICAgICAgICAgICAiRW50cmllcyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiTmFtZSI6ICJkdW1teSIsCiAgICAgICAgICAgICAgICAgICAgIkRhdGFGb3JtYXQiOiAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAiU2hhcmluZyI6ICJwdWJsaWMiLAogICAgICAgICAgICAgICAgICAgICJTY2hlbWEiOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiTmFtZSI6ICJoYW5kbGUiLAogICAgICAgICAgICAgICAgICAgICJEYXRhRm9ybWF0IjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIlNoYXJpbmciOiAicHVibGljIiwKICAgICAgICAgICAgICAgICAgICAiU2NoZW1hIjogIiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAicG9zdCIsCiAgICAgICAgICAgICAgICAgICAgIkRhdGFGb3JtYXQiOiAianNvbiIsCiAgICAgICAgICAgICAgICAgICAgIlNoYXJpbmciOiAicHVibGljIiwKICAgICAgICAgICAgICAgICAgICAiU2NoZW1hIjogIntcbiAgICBcInRpdGxlXCI6IFwiUG9zdCBTY2hlbWFcIixcbiAgICBcInR5cGVcIjogXCJvYmplY3RcIixcbiAgICBcInByb3BlcnRpZXNcIjoge1xuXHRcIm1lc3NhZ2VcIjoge1xuXHQgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCJcblx0fSxcblx0XCJzdGFtcFwiOiB7XG5cdCAgICBcInR5cGVcIjogXCJpbnRlZ2VyXCJcblx0fVxuICAgIH0sXG4gICAgXCJyZXF1aXJlZFwiOiBbXCJtZXNzYWdlXCIsXCJzdGFtcFwiXVxufVxuIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiTmFtZSI6ICJwb3N0X2xpbmtzIiwKICAgICAgICAgICAgICAgICAgICAiRGF0YUZvcm1hdCI6ICJsaW5rcyIsCiAgICAgICAgICAgICAgICAgICAgIlNoYXJpbmciOiAiIiwKICAgICAgICAgICAgICAgICAgICAiU2NoZW1hIjogIiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAiaGFuZGxlX2xpbmtzIiwKICAgICAgICAgICAgICAgICAgICAiRGF0YUZvcm1hdCI6ICJsaW5rcyIsCiAgICAgICAgICAgICAgICAgICAgIlNoYXJpbmciOiAiIiwKICAgICAgICAgICAgICAgICAgICAiU2NoZW1hIjogIiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAiZGlyZWN0b3J5X2xpbmtzIiwKICAgICAgICAgICAgICAgICAgICAiRGF0YUZvcm1hdCI6ICJsaW5rcyIsCiAgICAgICAgICAgICAgICAgICAgIlNoYXJpbmciOiAiIiwKICAgICAgICAgICAgICAgICAgICAiU2NoZW1hIjogIiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAiZm9sbG93IiwKICAgICAgICAgICAgICAgICAgICAiRGF0YUZvcm1hdCI6ICJsaW5rcyIsCiAgICAgICAgICAgICAgICAgICAgIlNoYXJpbmciOiAiIiwKICAgICAgICAgICAgICAgICAgICAiU2NoZW1hIjogIiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAidW5mb2xsb3ciLAogICAgICAgICAgICAgICAgICAgICJEYXRhRm9ybWF0IjogImxpbmtzIiwKICAgICAgICAgICAgICAgICAgICAiU2hhcmluZyI6ICIiLAogICAgICAgICAgICAgICAgICAgICJTY2hlbWEiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiUmlib3NvbWVUeXBlIjogImpzIiwKICAgICAgICAgICAgIkZ1bmN0aW9ucyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiTmFtZSI6ICJnZXRQcm9wZXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgIkNhbGxpbmdUeXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIkV4cG9zdXJlIjogInB1YmxpYyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAiYXBwUHJvcGVydHkiLAogICAgICAgICAgICAgICAgICAgICJDYWxsaW5nVHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICJFeHBvc3VyZSI6ICJwdWJsaWMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJOYW1lIjogImZvbGxvdyIsCiAgICAgICAgICAgICAgICAgICAgIkNhbGxpbmdUeXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIkV4cG9zdXJlIjogInB1YmxpYyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAidW5mb2xsb3ciLAogICAgICAgICAgICAgICAgICAgICJDYWxsaW5nVHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICJFeHBvc3VyZSI6ICJwdWJsaWMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJOYW1lIjogInBvc3QiLAogICAgICAgICAgICAgICAgICAgICJDYWxsaW5nVHlwZSI6ICJqc29uIiwKICAgICAgICAgICAgICAgICAgICAiRXhwb3N1cmUiOiAicHVibGljIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiTmFtZSI6ICJnZXRQb3N0IiwKICAgICAgICAgICAgICAgICAgICAiQ2FsbGluZ1R5cGUiOiAianNvbiIsCiAgICAgICAgICAgICAgICAgICAgIkV4cG9zdXJlIjogInB1YmxpYyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAicG9zdE1vZCIsCiAgICAgICAgICAgICAgICAgICAgIkNhbGxpbmdUeXBlIjogImpzb24iLAogICAgICAgICAgICAgICAgICAgICJFeHBvc3VyZSI6ICJwdWJsaWMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJOYW1lIjogImdldFBvc3RzQnkiLAogICAgICAgICAgICAgICAgICAgICJDYWxsaW5nVHlwZSI6ICJqc29uIiwKICAgICAgICAgICAgICAgICAgICAiRXhwb3N1cmUiOiAicHVibGljIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiTmFtZSI6ICJuZXdIYW5kbGUiLAogICAgICAgICAgICAgICAgICAgICJDYWxsaW5nVHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICJFeHBvc3VyZSI6ICJwdWJsaWMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJOYW1lIjogImdldEhhbmRsZSIsCiAgICAgICAgICAgICAgICAgICAgIkNhbGxpbmdUeXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIkV4cG9zdXJlIjogInB1YmxpYyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAiZ2V0QWdlbnQiLAogICAgICAgICAgICAgICAgICAgICJDYWxsaW5nVHlwZSI6ICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICJFeHBvc3VyZSI6ICJwdWJsaWMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJOYW1lIjogImdldEZvbGxvdyIsCiAgICAgICAgICAgICAgICAgICAgIkNhbGxpbmdUeXBlIjogImpzb24iLAogICAgICAgICAgICAgICAgICAgICJFeHBvc3VyZSI6ICJwdWJsaWMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJOYW1lIjogImdldEhhbmRsZXMiLAogICAgICAgICAgICAgICAgICAgICJDYWxsaW5nVHlwZSI6ICJqc29uIiwKICAgICAgICAgICAgICAgICAgICAiRXhwb3N1cmUiOiAicHVibGljIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiQnJpZGdlRnVuY3MiOiBudWxsLAogICAgICAgICAgICAiQnJpZGdlVG8iOiB7CiAgICAgICAgICAgICAgICAiSCI6IG51bGwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIkNvbmZpZyI6IHsKICAgICAgICAgICAgICAgICJFcnJvckhhbmRsaW5nIjogInRocm93RXJyb3JzIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJOYW1lIjogImFuY2hvcnMiLAogICAgICAgICAgICAiRGVzY3JpcHRpb24iOiAiYW5jaG9ycyBtaXhpbiIsCiAgICAgICAgICAgICJDb2RlIjogImZ1bmN0aW9uIGFuY2hvcihhbmNob3Ipe1xuICB2YXIgYW5jaG9yVHlwZSA9IHthbmNob3JUeXBlOiBhbmNob3IuYW5jaG9yVHlwZSwgYW5jaG9yVGV4dDogJyd9XG4gIHZhciByb290QW5jaG9ydHlwZSA9ICB7YW5jaG9yVHlwZTogJ2FuY2hvclR5cGVzJywgYW5jaG9yVGV4dDogJyd9XG4gIHZhciBhbmNob3JIYXNoID0gbWFrZUhhc2goJ2FuY2hvcicsIGFuY2hvcilcbiAgdmFyIGFuY2hvckdldCA9IGdldChhbmNob3JIYXNoKVxuICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2VESFQ6Q2hlY2sgdG8gc2VlIGlmICcgKyBhbmNob3IuYW5jaG9yVGV4dCArICcgaXMgYWxyZWFkeSB0YWtlblx1MDAzYy9tZXJtYWlkXHUwMDNlJylcbiAgLy8gZGVidWcoJ2FuY2hvckdldCAnICsgYW5jaG9yR2V0KVxuICBpZihhbmNob3JHZXQgPT09IG51bGwpe1xuICAgIHZhciBhbmNob3JUeXBlID0ge2FuY2hvclR5cGU6IGFuY2hvci5hbmNob3JUeXBlLCBhbmNob3JUZXh0OiAnJ31cbiAgICB2YXIgcm9vdEFuY2hvcnR5cGUgPSAge2FuY2hvclR5cGU6ICdhbmNob3JUeXBlcycsIGFuY2hvclRleHQ6ICcnfVxuICAgIHZhciBhbmNob3JUeXBlR2V0ID0gZ2V0KG1ha2VIYXNoKCdhbmNob3InLCBhbmNob3JUeXBlKSlcbiAgICAvLyBkZWJ1ZygnYW5jaG9yVHlwZUdldCAnICsgYW5jaG9yVHlwZUdldClcbiAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy0tXHUwMDNlXHUwMDNlREhUOkNoZWNrIHRvIHNlZSBpZiAnICsgYW5jaG9yLmFuY2hvclR5cGUgKyAnIGhhcyBiZWVuIHNldHVwXHUwMDNjL21lcm1haWRcdTAwM2UnKVxuICAgIGlmKGFuY2hvclR5cGVHZXQgPT09IG51bGwpe1xuICAgICAgdmFyIHJvb3RBbmNob3JUeXBlSGFzaCA9IGdldChtYWtlSGFzaCgnYW5jaG9yJywgcm9vdEFuY2hvcnR5cGUpKVxuICAgICAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICctLVx1MDAzZVx1MDAzZURIVDpDaGVjayB0byBzZWUgaWYgdGhlIFJvb3Qgb2YgYWxsIGFuY2hvcnMgaGFzIGJlZW4gc2V0dXBcdTAwM2MvbWVybWFpZFx1MDAzZScpXG4gICAgICBpZiAocm9vdEFuY2hvclR5cGVIYXNoID09PSBudWxsKXtcbiAgICAgICAgcm9vdEFuY2hvclR5cGVIYXNoID0gY29tbWl0KCdhbmNob3InLCByb290QW5jaG9ydHlwZSlcbiAgICAgICAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICctXHUwMDNlXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnOmNvbW1pdCBSb290IG9mIGFsbCBhbmNob3JzIHRvIGxvY2FsIGNoYWluXHUwMDNjL21lcm1haWRcdTAwM2UnKVxuICAgICAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2VESFQ6UHVibGlzaCBSb290IG9mIGFsbCBhbmNob3JzXHUwMDNjL21lcm1haWRcdTAwM2UnKVxuICAgICAgICAvLyBkZWJ1ZygnUm9vdCBBbmNob3IgVHlwZSBDcmVhdGVkOiAnICsgcm9vdEFuY2hvclR5cGVIYXNoKVxuICAgICAgfVxuICAgICAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2VESFQtLVx1MDAzZVx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJzpSZXR1cm4gdGhlIFJvb3QgQW5jaG9yIFR5cGVcdTAwM2MvbWVybWFpZFx1MDAzZScpXG4gICAgICB2YXIgYW5jaG9yVHlwZUhhc2ggPSBjb21taXQoJ2FuY2hvcicsIGFuY2hvclR5cGUpXG4gICAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICc6Y29tbWl0ICcgKyBhbmNob3IuYW5jaG9yVHlwZSArICcgdG8gbG9jYWwgY2hhaW5cdTAwM2MvbWVybWFpZFx1MDAzZScpXG4gICAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2VESFQ6UHVibGlzaCAnICsgYW5jaG9yLmFuY2hvclR5cGUgKyAnXHUwMDNjL21lcm1haWRcdTAwM2UnKVxuICAgICAgLy8gZGVidWcoJ0FuY2hvciBUeXBlIENyZWF0ZWQ6ICcgKyBhbmNob3JUeXBlSGFzaClcbiAgICAgIGNvbW1pdCgnYW5jaG9yX2xpbmsnLCB7IExpbmtzOlt7QmFzZTogcm9vdEFuY2hvclR5cGVIYXNoLCBMaW5rOiBhbmNob3JUeXBlSGFzaCwgVGFnOiBhbmNob3JUeXBlLmFuY2hvclR5cGV9XX0pXG4gICAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2VESFQ6TGluayAnICsgYW5jaG9yLmFuY2hvclR5cGUgKyAnIHRvIFJvb3Qgb2YgYWxsIGFuY2hvcnNcdTAwM2MvbWVybWFpZFx1MDAzZScpXG5cbiAgICB9IGVsc2Uge1xuICAgICAgYW5jaG9yVHlwZUhhc2ggPSBtYWtlSGFzaCgnYW5jaG9yJywgYW5jaG9yVHlwZSlcbiAgICAgIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlREhULS1cdTAwM2VcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICc6UmV0dXJuIHRoZSBhbmNob3JUeXBlICcgKyBhbmNob3IuYW5jaG9yVHlwZSArICdcdTAwM2MvbWVybWFpZFx1MDAzZScpXG4gICAgfVxuICAgIGFuY2hvckhhc2ggPSBjb21taXQoJ2FuY2hvcicsIGFuY2hvcilcbiAgICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZScgKyBBcHAuQWdlbnQuU3RyaW5nICsgJy1cdTAwM2VcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICc6Y29tbWl0ICcgKyBhbmNob3IuYW5jaG9yVGV4dCArICcgaGFzIGJlZW4gc2V0dXBcdTAwM2MvbWVybWFpZFx1MDAzZScpXG4gICAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICctXHUwMDNlXHUwMDNlREhUOlB1Ymxpc2ggJyArIGFuY2hvci5hbmNob3JUZXh0ICsgJ1x1MDAzYy9tZXJtYWlkXHUwMDNlJylcbiAgICAvLyBkZWJ1ZygnQW5jaG9yIENyZWF0ZWQgJyArIGFuY2hvckhhc2gpXG4gICAgY29tbWl0KCdhbmNob3JfbGluaycsICB7IExpbmtzOlt7QmFzZTogYW5jaG9yVHlwZUhhc2gsIExpbms6IGFuY2hvckhhc2gsIFRhZzogYW5jaG9yLmFuY2hvclRleHR9XX0pXG4gICAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICctXHUwMDNlXHUwMDNlREhUOkxpbmsgJyArIGFuY2hvci5hbmNob3JUZXh0ICsgJyB0byAnICsgYW5jaG9yVHlwZS5hbmNob3JUeXBlICsgJ1x1MDAzYy9tZXJtYWlkXHUwMDNlJylcbiAgfVxuICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZURIVC0tXHUwMDNlXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnOlJldHVybiB0aGUgYW5jaG9yIGZvciAnICsgYW5jaG9yLmFuY2hvclRleHQgKyAnXHUwMDNjL21lcm1haWRcdTAwM2UnKVxuICByZXR1cm4gYW5jaG9ySGFzaFxufVxuXG5mdW5jdGlvbiBleGlzdHMoYW5jaG9yKXtcbiAgdmFyIGtleSA9IGdldChtYWtlSGFzaCgnYW5jaG9yJywgYW5jaG9yKSlcbiAgZGVidWcoJ1x1MDAzY21lcm1haWRcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICctLVx1MDAzZVx1MDAzZURIVDpDaGVjayB0byBzZWUgaWYgJyArIGFuY2hvci5hbmNob3JUZXh0ICsgJyBleGlzdHNcdTAwM2MvbWVybWFpZFx1MDAzZScpXG5cbiAgLy8gZGVidWcoa2V5KVxuICBpZihrZXkgIT09IG51bGwpe1xuICAgIGRlYnVnKCdcdTAwM2NtZXJtYWlkXHUwMDNlREhULS1cdTAwM2VcdTAwM2UnICsgQXBwLkFnZW50LlN0cmluZyArICc6JyArIGFuY2hvci5hbmNob3JUZXh0ICsgJyBleGlzdHNcdTAwM2MvbWVybWFpZFx1MDAzZScpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBkZWJ1ZygnXHUwMDNjbWVybWFpZFx1MDAzZURIVC0tXHUwMDNlXHUwMDNlJyArIEFwcC5BZ2VudC5TdHJpbmcgKyAnOicgKyBhbmNob3IuYW5jaG9yVGV4dCArICcgZG9lcyBub3QgZXhpc3RcdTAwM2MvbWVybWFpZFx1MDAzZScpXG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBhbmNob3JzKHR5cGUpe1xuICB2YXIgbGlua3MgPSBnZXRMaW5rcyhtYWtlSGFzaCgnYW5jaG9yJywge2FuY2hvclR5cGU6IHR5cGUsIGFuY2hvclRleHQ6ICcnfSksICcnKVxuICAvLyBkZWJ1ZyhsaW5rcylcbiAgcmV0dXJuIGxpbmtzXG59XG5cbmZ1bmN0aW9uIGdlbmVzaXMoKSB7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVB1dChlbnRyeV90eXBlLGVudHJ5LGhlYWRlcixwa2csc291cmNlcykge1xuICAvLyBkZWJ1ZygnQW5jaG9ycyB2YWxpZGF0ZVB1dDonICsgc291cmNlcylcbiAgcmV0dXJuIHZhbGlkYXRlQ29tbWl0KGVudHJ5X3R5cGUsZW50cnksaGVhZGVyLHBrZyxzb3VyY2VzKVxufVxuZnVuY3Rpb24gdmFsaWRhdGVDb21taXQoZW50cnlfdHlwZSxlbnRyeSxoZWFkZXIscGtnLHNvdXJjZXMpIHtcbiAgLy8gZGVidWcoJ0FuY2hvcnMgdmFsaWRhdGVQdXQ6JyArIHNvdXJjZXMpXG4gICAgaWYgKGVudHJ5X3R5cGUgPT0gJ2FuY2hvcicpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gICAgaWYgKGVudHJ5X3R5cGUgPT0gJ2FuY2hvcl9saW5rJykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZVxufVxuXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVMaW5rKGxpbmtpbmdFbnRyeVR5cGUsYmFzZUhhc2gsbGlua0hhc2gscGtnLHNvdXJjZXMpe1xuICAvLyBkZWJ1ZygnQW5jaG9ycyB2YWxpZGF0ZUxpbms6JyArIHNvdXJjZXMpXG4gIHJldHVybiB0cnVlXG59XG5mdW5jdGlvbiB2YWxpZGF0ZU1vZChlbnRyeV90eXBlLGhhc2gsbmV3SGFzaCxwa2csc291cmNlcyl7XG4gIC8vIGRlYnVnKCdBbmNob3JzIHZhbGlkYXRlTW9kOicgKyBzb3VyY2VzKVxuICByZXR1cm4gdHJ1ZVxufVxuZnVuY3Rpb24gdmFsaWRhdGVEZWwoZW50cnlfdHlwZSxoYXNoLHBrZyxzb3VyY2VzKSB7XG4gIC8vIGRlYnVnKCdBbmNob3JzIHZhbGlkYXRlRGVsOicgKyBzb3VyY2VzKVxuICByZXR1cm4gdHJ1ZVxufVxuZnVuY3Rpb24gdmFsaWRhdGVQdXRQa2coZW50cnlfdHlwZSkge1xuICAvLyBkZWJ1ZygnQW5jaG9ycyB2YWxpZGF0ZVB1dFBrZycpXG4gIHJldHVybiBudWxsXG59XG5mdW5jdGlvbiB2YWxpZGF0ZU1vZFBrZyhlbnRyeV90eXBlKSB7XG4gIC8vIGRlYnVnKCdBbmNob3JzIHZhbGlkYXRlTW9kUGtnJylcbiAgcmV0dXJuIG51bGxcbn1cbmZ1bmN0aW9uIHZhbGlkYXRlRGVsUGtnKGVudHJ5X3R5cGUpIHtcbiAgLy8gZGVidWcoJ0FuY2hvcnMgdmFsaWRhdGVEZWxQa2cnKVxuICByZXR1cm4gbnVsbFxufVxuZnVuY3Rpb24gdmFsaWRhdGVMaW5rUGtnKGVudHJ5X3R5cGUpIHtcbiAgLy8gZGVidWcoJ0FuY2hvcnMgdmFsaWRhdGVMaW5rUGtnJylcbiAgcmV0dXJuIG51bGxcbn1cbiIsCiAgICAgICAgICAgICJFbnRyaWVzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJOYW1lIjogImFuY2hvciIsCiAgICAgICAgICAgICAgICAgICAgIkRhdGFGb3JtYXQiOiAianNvbiIsCiAgICAgICAgICAgICAgICAgICAgIlNoYXJpbmciOiAicHVibGljIiwKICAgICAgICAgICAgICAgICAgICAiU2NoZW1hIjogIntcblx0XCJ0aXRsZVwiOiBcIkFuY2hvciBTY2hlbWFcIixcblx0XCJ0eXBlXCI6IFwib2JqZWN0XCIsXG5cdFwicHJvcGVydGllc1wiOiB7XG5cdFx0XCJhbmNob3JUeXBlXCI6IHtcblx0XHRcdFwidHlwZVwiOiBcInN0cmluZ1wiXG5cdFx0fSxcblx0XHRcImFuY2hvclRleHRcIjoge1xuXHRcdFx0XCJ0eXBlXCI6IFwic3RyaW5nXCJcblx0XHR9XG5cdH0sXG4gICAgXCJyZXF1aXJlZFwiOiBbXCJhbmNob3JUeXBlXCJdXG59XG4iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJOYW1lIjogImFuY2hvcl9saW5rIiwKICAgICAgICAgICAgICAgICAgICAiRGF0YUZvcm1hdCI6ICJsaW5rcyIsCiAgICAgICAgICAgICAgICAgICAgIlNoYXJpbmciOiAiIiwKICAgICAgICAgICAgICAgICAgICAiU2NoZW1hIjogIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgIlJpYm9zb21lVHlwZSI6ICJqcyIsCiAgICAgICAgICAgICJGdW5jdGlvbnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAiYW5jaG9yIiwKICAgICAgICAgICAgICAgICAgICAiQ2FsbGluZ1R5cGUiOiAianNvbiIsCiAgICAgICAgICAgICAgICAgICAgIkV4cG9zdXJlIjogInB1YmxpYyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAiZXhpc3RzIiwKICAgICAgICAgICAgICAgICAgICAiQ2FsbGluZ1R5cGUiOiAianNvbiIsCiAgICAgICAgICAgICAgICAgICAgIkV4cG9zdXJlIjogInB1YmxpYyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIk5hbWUiOiAiYW5jaG9ycyIsCiAgICAgICAgICAgICAgICAgICAgIkNhbGxpbmdUeXBlIjogInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIkV4cG9zdXJlIjogInB1YmxpYyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgIkJyaWRnZUZ1bmNzIjogbnVsbCwKICAgICAgICAgICAgIkJyaWRnZVRvIjogewogICAgICAgICAgICAgICAgIkgiOiBudWxsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJDb25maWciOiB7CiAgICAgICAgICAgICAgICAiRXJyb3JIYW5kbGluZyI6ICJyZXR1cm5FcnJvclZhbHVlIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgXQp9Cg=="
},
{
"C": {
"Identity": "[email protected]",
"PublicKey": "CAESID37VQJX187wd8tEPwSel72q0xOchOYRlSV0y61t3BNA",
"Revocation": null
}
},
{
"C": "{\"anchorText\":\"\",\"anchorType\":\"anchorTypes\"}"
},
{
"C": "{\"anchorText\":\"\",\"anchorType\":\"handle\"}"
},
{
"C": "{\"Links\":[{\"Base\":\"QmdksisNZRmPcwePkbwuTcUexnxup6TWArrQrfKWsZY1LK\",\"Link\":\"Qmc9wG9Je5HRzNcAG57dM7PRh2JbzNeaFgmZpMfofKJaoA\",\"Tag\":\"handle\"}]}"
},
{
"C": "{\"anchorText\":\"Archer\",\"anchorType\":\"handle\"}"
},
{
"C": "{\"Links\":[{\"Base\":\"Qmc9wG9Je5HRzNcAG57dM7PRh2JbzNeaFgmZpMfofKJaoA\",\"Link\":\"QmeiaUoWnDySbwCwcLD6nwJyAwDbLpw2EYc2nLCFFJVPUn\",\"Tag\":\"Archer\"}]}"
},
{
"C": "QmeiaUoWnDySbwCwcLD6nwJyAwDbLpw2EYc2nLCFFJVPUn"
}
],
"Hashes": [
{
"H": "EiDqRkWtt28WT4E1oknYiaqd/gtzD4cQ0u8mNHushrljOw=="
},
{
"H": "EiDSpZZP8kGuPJFQChep9WQnagbcQSqaFGKtYWaGeFCYcA=="
},
{
"H": "EiBge+ZX9DhqjsZbaPXAwGQAXvT4IKc+Umhmyf9CBJNNhw=="
},
{
"H": "EiAlOnQ+j/+0dsr2R69B3k11NV4DLfo3z5iz9+vmm375Qw=="
},
{
"H": "EiAT3UbreBCoasEkN9vUvN9xKZjjCBU1VTwmbolHAygT2g=="
},
{
"H": "EiBNy1ReY1AyycE+2BZl7PRPu7lwT13AwVw6SGbTYIcmZw=="
},
{
"H": "EiBElU9+5LOu5CtvwLkKEy6OOnfpvvyPjfi+9x5Xzg25+A=="
},
{
"H": "EiCwptIpxymIRzJ98axzZaeddRB+YOcNknKI/7KDkGPz/w=="
}
],
"Headers": [
{
"Change": {
"Action": "",
"Hash": {
"H": "AA=="
}
},
"EntryLink": {
"H": "EiCw1V+rsucE6CMGWX1dfYR1/Mu+sqgS2MrAQdmZ1J5vow=="
},
"HeaderLink": {
"H": "AA=="
},
"Sig": {
"S": "OPp1Na6fKiqvyCDvx+cNQ7jFY4n+4vuJkITBOw9foo5IOOMLoPWVmvwxvfkEk4EM5EzvMGyNCl4CTht3qBuWAg=="
},
"Time": "2018-03-09T11:59:52.006034+11:00",
"Type": "%dna",
"TypeLink": {
"H": "AA=="
}
},
{
"Change": {
"Action": "",
"Hash": {
"H": "AA=="
}
},
"EntryLink": {
"H": "EiAHwbxw/euOLLhtrOrACvWKlklr5FOyo/EZwPllGovLVQ=="
},
"HeaderLink": {
"H": "EiDqRkWtt28WT4E1oknYiaqd/gtzD4cQ0u8mNHushrljOw=="
},
"Sig": {
"S": "rOI2O8sqztsg94U028v2IGfl15R+SI+h6bZqY+8HMSciSABt28zgPpoZa9LnZhx1zAARUuXwrtO7BAhRQZ//Bg=="
},
"Time": "2018-03-09T11:59:52.006771+11:00",
"Type": "%agent",
"TypeLink": {
"H": "AA=="
}
},
{
"Change": {
"Action": "",
"Hash": {
"H": "AA=="
}
},
"EntryLink": {
"H": "EiDlE/UTb0rlwqD3KxHLPzsjmM7ZuqsV8Y4Wi4rEO4hQuA=="
},
"HeaderLink": {
"H": "EiDSpZZP8kGuPJFQChep9WQnagbcQSqaFGKtYWaGeFCYcA=="
},
"Sig": {
"S": "nJkofcMsQ2cq4btOkm/GlY+ZlwL14CJUNfla09eiL66SusRoPlXZGu0HmdK0OpOSGvcE7ASXIhCKFi9p759xBw=="
},
"Time": "2018-03-09T12:00:00.019113+11:00",
"Type": "anchor",
"TypeLink": {
"H": "AA=="
}
},
{
"Change": {
"Action": "",
"Hash": {
"H": "AA=="
}
},
"EntryLink": {
"H": "EiDNRPGi3e8QquOeJp64pAqGWIp3Dmo/C84H0ZPz91zyIQ=="
},
"HeaderLink": {
"H": "EiBge+ZX9DhqjsZbaPXAwGQAXvT4IKc+Umhmyf9CBJNNhw=="
},
"Sig": {
"S": "NfUVfRqNbGYm0CLokop/3A9eiY4wg843yuK8EeERLRf1i95VWF4/HI/vSu4OoWEdVHZztRqERhZnNkkhjlZ0Ag=="
},
"Time": "2018-03-09T12:00:00.023454+11:00",
"Type": "anchor",
"TypeLink": {
"H": "EiBge+ZX9DhqjsZbaPXAwGQAXvT4IKc+Umhmyf9CBJNNhw=="
}
},
{
"Change": {
"Action": "",
"Hash": {
"H": "AA=="
}
},
"EntryLink": {
"H": "EiCXHsLM9Z5HV+FwJuQ839eNVf3PTrGqrEU4FccqXFAIdw=="
},
"HeaderLink": {
"H": "EiAlOnQ+j/+0dsr2R69B3k11NV4DLfo3z5iz9+vmm375Qw=="
},
"Sig": {
"S": "sirTy/EnNnjY3TUyXNhSxoCbB/3swuEcJh2AVgbk+vZy2LqKdPcnKOOMYKy4u1Xebb1G/QqC847obVFvEr9IDA=="
},
"Time": "2018-03-09T12:00:00.026316+11:00",
"Type": "anchor_link",
"TypeLink": {
"H": "AA=="
}
},
{
"Change": {
"Action": "",
"Hash": {
"H": "AA=="
}
},
"EntryLink": {
"H": "EiDzWPyH8yturNwhTaDqJn7pIuUtbyh2sjS9rykbRrIskw=="
},
"HeaderLink": {
"H": "EiAT3UbreBCoasEkN9vUvN9xKZjjCBU1VTwmbolHAygT2g=="
},
"Sig": {
"S": "RdSB1Wsi4gabWl7wtxPpkolQJjguQ4OQUr2dYt+tWp4IUythIOQPHrYiOpkjBDOTivpN8jd7LFI+yVyjLaIpBw=="
},
"Time": "2018-03-09T12:00:00.030567+11:00",
"Type": "anchor",
"TypeLink": {
"H": "EiAlOnQ+j/+0dsr2R69B3k11NV4DLfo3z5iz9+vmm375Qw=="
}
},
{
"Change": {
"Action": "",
"Hash": {
"H": "AA=="
}
},
"EntryLink": {
"H": "EiC4i94CBpHFBlScWDudaCFvEL0hNaMxk3TYUKSW5qaLdA=="
},
"HeaderLink": {
"H": "EiBNy1ReY1AyycE+2BZl7PRPu7lwT13AwVw6SGbTYIcmZw=="
},
"Sig": {
"S": "SGDysM2aGQwldqTSNdSaxCxLsA8p/eza6d2gmhL/cMvlqoa5qY3sK/44hBfji7Zu91mXF+mBtKM4G8AiUFaRDQ=="
},
"Time": "2018-03-09T12:00:00.033354+11:00",
"Type": "anchor_link",
"TypeLink": {
"H": "EiAT3UbreBCoasEkN9vUvN9xKZjjCBU1VTwmbolHAygT2g=="
}
},
{
"Change": {
"Action": "",
"Hash": {
"H": "AA=="
}
},
"EntryLink": {
"H": "EiCgmkHD+SQbqWxr6u5ZTQjwS3pz3BE3Ng13SUluZ6fbuw=="
},
"HeaderLink": {
"H": "EiBElU9+5LOu5CtvwLkKEy6OOnfpvvyPjfi+9x5Xzg25+A=="
},
"Sig": {
"S": "lyY4RXqszRRmkf1k+X0Hl/3RdKMq6dMQaO5+OIL+UTAWGibPz7uJ9reftv08eHodObXYplcVvPo5AqZI+bBbBA=="
},
"Time": "2018-03-09T12:00:00.036339+11:00",
"Type": "handle",
"TypeLink": {
"H": "AA=="
}
}
],
"Hmap": {
"QmPgC9uPsdFRqmG9r4haPfupJkTSdKziZzi1YyrDMkyze5": 4,
"QmQqyVTTMt6GDHMyT6pkrCfEVDJauN3paZqc6TGBkqD6NE": 3,
"QmSxNV2M2F32Q76UQ9veHxLmkas97pt1JyMysmi1it992F": 6,
"QmTaKvmvW3dNUcVZKSUetkvktEunALBoAT6nEYYSH4NcQE": 5,
"QmUqHRfi1AN2Yw23fc3F7BBSNG8bXLL45UDkUc1LctHmTc": 2,
"QmaEE13mAyrGkrswcdp7vwRgztJ8UvGZR7rMifBGic9QTG": 7,
"QmcWvmju1SGArRKTFP67Dddjmnnxm7aBZpYQ36jjhBHKhy": 1,
"Qme7AG2Wu6Cp25aiVD2eZozgV5qg2oJcDaF4LvZAi5WwNz": 0
},
"TypeTops": {
"%agent": 1,
"%dna": 0,
"anchor": 5,
"anchor_link": 6,
"handle": 7
}
}
}