-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvanity-eth.html
270 lines (269 loc) · 922 KB
/
vanity-eth.html
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
266
267
268
269
270
<!-- Saved from http://localhost:3000/ at 2023-06-26T12:41:51Z using monolith v2.7.0 -->
<!DOCTYPE html><html lang="en_US"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Vanity-ETH | Ethereum vanity address generator</title>
<meta property="og:title" content="Vanity-ETH">
<meta property="og:locale" content="en_US">
<meta name="description" content="Vanity-ETH is an open source generator using your web browser to generate Ethereum
vanity addresses. You can get a custom ETH vanity address right now without the need to install any software.
Vanity-ETH provides an encrypted keystore compatible with MyEtherWallet, MetaMask, Mist, and geth.">
<meta property="og:description" content="Vanity-ETH is an open source generator using your web browser to generate Ethereum
vanity addresses. You can get a custom ETH vanity address right now without the need to install any software.
Vanity-ETH provides an encrypted keystore compatible with MyEtherWallet, MetaMask, Mist, and geth.">
<link rel="canonical" href="https://vanity-eth.tk/">
<meta property="og:url" content="https://vanity-eth.tk/">
<meta property="og:site_name" content="Vanity-ETH">
<meta name="google-site-verification" content="DFWJVWz9IRrh-wjBxn0Y8ith5FTqMeJTSUtuJ595BEs">
<link rel="apple-touch-icon" sizes="180x180" href="http://localhost:3000/apple-touch-icon.png">
<!--[if IE]><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /><![endif]-->
<link rel="icon" type="image/png" sizes="16x16" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACDVBMVEUP77MP8LMP7rMP7LQO6LUO5LYO4LgN27kN1roM0bwMzL4Lxr8LwMEKusMJtMUJq8cP77MP77MJr8YIqcgP7rMIo8kHncsHl80Gks8GjNAFh9IFgtMEfdQEedYEddcDctgKusMDb9kDb9kDbtkJssUIo8kFjNAEhtEDgdMDb9kDbtkP7LQO6bUO5bYO4bcN3LkN17oM0rwMzL0Lx78LwcEKu8IKtcQN6bUK5LUK4LYK3LgIwMAGusIGs8MIrsYIqMgz6cF579d97dla5NAO0rwKwcFMztJ82N951OAxttEGoskM5bU45sTo/Pj////Y9/Qk0cQKxr8VvsXC7fDp9/o2s9QFnMsN4bcR3bqs8uf5/v1W19MHwMAHusI8xdDu+vut3+4MnswGls0J1rlf4tL6/v6Y5OUGtMR61OD7/v5fvt4DlcwGkc8L0rsj0cTV9fTU8/Qfu8kQsci76O/X7/chodIFkM4Gi9CP4+L3/f1MxNYyuNHq+PqS0OkGjNAFhtJEy9Hx+/yO1uZwy+Dz+v1GrNsCitAFgdMJu8IUuMe+6vDV7/bH6fPC4/MTkdMEhtIEfdUKu8MFrcVxzt/9/v/8/v52vuYChdEEedYJr8YGqMcssNHi9Pnm8/ovmtoCgNMEddcIqcgIosoKnsyO0OjU7PfU6/eTyuwKhNQDcdgHnMsPldAXk9QXj9UOhtX5rM6fAAAAK3RSTlMEW8rn6Ojo6Ojo6OjnylsEW+vrW8nJ5+jo6Ojo6Ojo58nJ61sEyujo6MoE/6dL1AAAAAFiS0dEThlhcd8AAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQflCAUPJQxn6kCTAAABFklEQVQY02NgYGRiZmFlY+fg5OLm4eXjZxAQ1NbR1dM3MDQyNjE1ExJmENE2t7C0AvGtbWzt7EUZmM0dHJ2cXYyMXd3cPTy9xBhYvH18/fwDAl2Dgv1CQsPEGVjDIyL9oqJjYuPi/RISkyQY2PSTU1L90kzTM/wys7JzJBnYDXLz8v0KCouK/UpKy8qlGDgMjQIr/Cqrqmv8anPq6qUZOI2MYxoa/Zqa/Vpa2+rbZRi4jE06Orv8unv8evv62yfIMnCbTDSbNNlvylS/adPbJ8yQY+AxNZs5a/YcP7+58+ZPmLFAnkHBbObCRYuXLF22fAWQv1KRgU/IftGqpNVr1q4D8ZWUGVSEVcXEJdTUNWRk5eQ1lbUAC79RF4V5LoMAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjEtMDgtMDVUMTU6Mzc6MTIrMDA6MDDIZ/wLAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIxLTA4LTA1VDE1OjM3OjEyKzAwOjAwuTpEtwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAABJRU5ErkJggg==">
<link rel="manifest" href="http://localhost:3000/site.webmanifest">
<link rel="mask-icon" href="http://localhost:3000/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<script async="" defer="" data-website-id="9086c519-8c4a-4f8e-9dfe-daee3739238a" src="data:application/javascript;charset=UTF-8;base64,IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT10W2VdO3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxpPWFyZ3VtZW50cy5sZW5ndGg7aS0tOyllW2ldPWFyZ3VtZW50c1tpXTtyZXR1cm4gbi5hcHBseShudWxsLGUpLGEuYXBwbHkodCxlKX19LGU9ZnVuY3Rpb24oKXt2YXIgdD13aW5kb3cuZG9Ob3RUcmFjayxlPXdpbmRvdy5uYXZpZ2F0b3Isbj13aW5kb3cuZXh0ZXJuYWwsYT0ibXNUcmFja2luZ1Byb3RlY3Rpb25FbmFibGVkIixpPXR8fGUuZG9Ob3RUcmFja3x8ZS5tc0RvTm90VHJhY2t8fG4mJmEgaW4gbiYmblthXSgpO3JldHVybiIxIj09aXx8InllcyI9PT1pfTshZnVuY3Rpb24obil7dmFyIGE9bi5zY3JlZW4saT1hLndpZHRoLHI9YS5oZWlnaHQsbz1uLm5hdmlnYXRvci5sYW5ndWFnZSxjPW4ubG9jYXRpb24sdT1jLmhvc3RuYW1lLHM9Yy5wYXRobmFtZSxsPWMuc2VhcmNoLGQ9bi5sb2NhbFN0b3JhZ2UsZj1uLmRvY3VtZW50LHY9bi5oaXN0b3J5LHA9Zi5xdWVyeVNlbGVjdG9yKCJzY3JpcHRbZGF0YS13ZWJzaXRlLWlkXSIpO2lmKHApe3ZhciBtLGgsZz1wLmdldEF0dHJpYnV0ZS5iaW5kKHApLHk9ZygiZGF0YS13ZWJzaXRlLWlkIiksdz1nKCJkYXRhLWhvc3QtdXJsIiksYj0iZmFsc2UiIT09ZygiZGF0YS1hdXRvLXRyYWNrIiksUz1nKCJkYXRhLWRvLW5vdC10cmFjayIpLGs9ImZhbHNlIiE9PWcoImRhdGEtY3NzLWV2ZW50cyIpLEU9ZygiZGF0YS1kb21haW5zIil8fCIiLFQ9RS5zcGxpdCgiLCIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHJpbSgpfSkpLE49L151bWFtaS0tKFthLXpdKyktLShbXHddK1tcdy1dKikkLyxPPSJbY2xhc3MqPSd1bWFtaS0tJ10iLHE9ZnVuY3Rpb24oKXtyZXR1cm4gZCYmZC5nZXRJdGVtKCJ1bWFtaS5kaXNhYmxlZCIpfHxTJiZlKCl8fEUmJiFULmluY2x1ZGVzKHUpfSxBPXc/KG09dykmJm0ubGVuZ3RoPjEmJm0uZW5kc1dpdGgoIi8iKT9tLnNsaWNlKDAsLTEpOm06cC5zcmMuc3BsaXQoIi8iKS5zbGljZSgwLC0xKS5qb2luKCIvIiksaj1pKyJ4IityLEw9e30sXz0iIitzK2wseD1mLnJlZmVycmVyLEg9ZnVuY3Rpb24oKXtyZXR1cm57d2Vic2l0ZTp5LGhvc3RuYW1lOnUsc2NyZWVuOmosbGFuZ3VhZ2U6byx1cmw6X319LFA9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7dFtuXT1lW25dfSkpLHR9LFI9ZnVuY3Rpb24odCxlKXtxKCl8fGZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vcGVuKCJQT1NUIix0LCEwKSxhLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsImFwcGxpY2F0aW9uL2pzb24iKSxoJiZhLnNldFJlcXVlc3RIZWFkZXIoIngtdW1hbWktY2FjaGUiLGgpLGEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PWEucmVhZHlTdGF0ZSYmbihhLnJlc3BvbnNlKX0sYS5zZW5kKEpTT04uc3RyaW5naWZ5KGUpKX0oQSsiL2FwaS9jb2xsZWN0Iix7dHlwZTp0LHBheWxvYWQ6ZX0sKGZ1bmN0aW9uKHQpe3JldHVybiBoPXR9KSl9LEo9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PXQmJih0PV8pLHZvaWQgMD09PWUmJihlPXgpLHZvaWQgMD09PW4mJihuPXkpLFIoInBhZ2V2aWV3IixQKEgoKSx7d2Vic2l0ZTpuLHVybDp0LHJlZmVycmVyOmV9KSl9LE09ZnVuY3Rpb24odCxlLG4sYSl7dm9pZCAwPT09ZSYmKGU9ImN1c3RvbSIpLHZvaWQgMD09PW4mJihuPV8pLHZvaWQgMD09PWEmJihhPXkpLFIoImV2ZW50IixQKEgoKSx7d2Vic2l0ZTphLHVybDpuLGV2ZW50X3R5cGU6ZSxldmVudF92YWx1ZTp0fSkpfSx6PWZ1bmN0aW9uKHQpe3ZhciBlPXQucXVlcnlTZWxlY3RvckFsbChPKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGUsQyl9LEM9ZnVuY3Rpb24odCl7KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikuc3BsaXQoIiAiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihOLnRlc3QoZSkpe3ZhciBuPWUuc3BsaXQoIi0tIiksYT1uWzFdLGk9blsyXSxyPUxbZV0/TFtlXTpMW2VdPWZ1bmN0aW9uKCl7IkEiPT09dC50YWdOYW1lP2Z1bmN0aW9uKHQsZSl7dmFyIG49SCgpO24uZXZlbnRfdHlwZT1lLG4uZXZlbnRfdmFsdWU9dDt2YXIgYT1KU09OLnN0cmluZ2lmeSh7dHlwZToiZXZlbnQiLHBheWxvYWQ6bn0pO2ZldGNoKEErIi9hcGkvY29sbGVjdCIse21ldGhvZDoiUE9TVCIsYm9keTphLGtlZXBhbGl2ZTohMH0pfShpLGEpOk0oaSxhKX07dC5hZGRFdmVudExpc3RlbmVyKGEsciwhMCl9fSkpfSxEPWZ1bmN0aW9uKHQsZSxuKXtpZihuKXt4PV87dmFyIGE9bi50b1N0cmluZygpOyhfPSJodHRwIj09PWEuc3Vic3RyaW5nKDAsNCk/Ii8iK2Euc3BsaXQoIi8iKS5zcGxpY2UoMykuam9pbigiLyIpOmEpIT09eCYmSigpfX07aWYoIW4udW1hbWkpe3ZhciBJPWZ1bmN0aW9uKHQpe3JldHVybiBNKHQpfTtJLnRyYWNrVmlldz1KLEkudHJhY2tFdmVudD1NLG4udW1hbWk9SX1pZihiJiYhcSgpKXt2LnB1c2hTdGF0ZT10KHYsInB1c2hTdGF0ZSIsRCksdi5yZXBsYWNlU3RhdGU9dCh2LCJyZXBsYWNlU3RhdGUiLEQpO3ZhciBWPWZ1bmN0aW9uKCl7ImNvbXBsZXRlIj09PWYucmVhZHlTdGF0ZSYmKEooKSxrJiYoeihmKSxuZXcgTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24odCl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldDtDKGUpLHooZSl9KSl9KSkub2JzZXJ2ZShmLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pKSl9O2YuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsViwhMCksVigpfX19KHdpbmRvdyl9KCk7Cg=="></script>
<link href="css/app.05396ab5.css" as="style">
<link href="css/chunk-vendors.502acf74.css" as="style">
<link href="js/app.cfab15d4.js" as="script">
<link href="js/chunk-vendors.6533d65f.js" as="script">
<link href="data:text/css;charset=utf-8;base64,aHRtbC5yZW1vZGFsLWlzLWxvY2tlZHtvdmVyZmxvdzpoaWRkZW47dG91Y2gtYWN0aW9uOm5vbmV9LnJlbW9kYWwsW2RhdGEtcmVtb2RhbC1pZF17ZGlzcGxheTpub25lfS5yZW1vZGFsLW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5O3RvcDotNTAwMHB4O3JpZ2h0Oi01MDAwcHg7Ym90dG9tOi01MDAwcHg7bGVmdDotNTAwMHB4O2Rpc3BsYXk6bm9uZX0ucmVtb2RhbC13cmFwcGVye3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTAwMDA7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7ZGlzcGxheTpub25lO292ZXJmbG93OmF1dG87dGV4dC1hbGlnbjpjZW50ZXI7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9LnJlbW9kYWwtd3JhcHBlcjphZnRlcntkaXNwbGF5OmlubGluZS1ibG9jaztoZWlnaHQ6MTAwJTttYXJnaW4tbGVmdDotMC4wNWVtO2NvbnRlbnQ6IiJ9LnJlbW9kYWwtb3ZlcmxheSwucmVtb2RhbC13cmFwcGVye2JhY2tmYWNlLXZpc2liaWxpdHk6aGlkZGVufS5yZW1vZGFse3Bvc2l0aW9uOnJlbGF0aXZlO291dGxpbmU6bm9uZTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbW96LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTt0ZXh0LXNpemUtYWRqdXN0OjEwMCV9LnJlbW9kYWwtaXMtaW5pdGlhbGl6ZWR7ZGlzcGxheTppbmxpbmUtYmxvY2t9LnJlbW9kYWwtYmcucmVtb2RhbC1pcy1vcGVuZWQsLnJlbW9kYWwtYmcucmVtb2RhbC1pcy1vcGVuaW5ne2ZpbHRlcjpibHVyKDNweCl9LnJlbW9kYWwtb3ZlcmxheXtiYWNrZ3JvdW5kOnJnYmEoNDMsNDYsNTYsMC45KX0ucmVtb2RhbC1vdmVybGF5LnJlbW9kYWwtaXMtY2xvc2luZywucmVtb2RhbC1vdmVybGF5LnJlbW9kYWwtaXMtb3BlbmluZ3thbmltYXRpb24tZHVyYXRpb246MC4zczthbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzfS5yZW1vZGFsLW92ZXJsYXkucmVtb2RhbC1pcy1vcGVuaW5ne2FuaW1hdGlvbi1uYW1lOnJlbW9kYWwtb3ZlcmxheS1vcGVuaW5nLWtleWZyYW1lc30ucmVtb2RhbC1vdmVybGF5LnJlbW9kYWwtaXMtY2xvc2luZ3thbmltYXRpb24tbmFtZTpyZW1vZGFsLW92ZXJsYXktY2xvc2luZy1rZXlmcmFtZXN9LnJlbW9kYWwtd3JhcHBlcntwYWRkaW5nOjEwcHggMTBweCAwfS5yZW1vZGFse2JveC1zaXppbmc6Ym9yZGVyLWJveDt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MTBweDtwYWRkaW5nOjM1cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7Y29sb3I6IzJiMmUzODtiYWNrZ3JvdW5kOiNmZmZ9LnJlbW9kYWwucmVtb2RhbC1pcy1jbG9zaW5nLC5yZW1vZGFsLnJlbW9kYWwtaXMtb3BlbmluZ3thbmltYXRpb24tZHVyYXRpb246MC4zczthbmltYXRpb24tZmlsbC1tb2RlOmZvcndhcmRzfS5yZW1vZGFsLnJlbW9kYWwtaXMtb3BlbmluZ3thbmltYXRpb24tbmFtZTpyZW1vZGFsLW9wZW5pbmcta2V5ZnJhbWVzfS5yZW1vZGFsLnJlbW9kYWwtaXMtY2xvc2luZ3thbmltYXRpb24tbmFtZTpyZW1vZGFsLWNsb3Npbmcta2V5ZnJhbWVzfS5yZW1vZGFsLC5yZW1vZGFsLXdyYXBwZXI6YWZ0ZXJ7dmVydGljYWwtYWxpZ246bWlkZGxlfS5yZW1vZGFsLWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OnZpc2libGU7d2lkdGg6MzVweDtoZWlnaHQ6MzVweDttYXJnaW46MDtwYWRkaW5nOjA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpjb2xvciAwLjJzO3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOiM5NTk3OWM7Ym9yZGVyOjA7b3V0bGluZTowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9LnJlbW9kYWwtY2xvc2U6Zm9jdXMsLnJlbW9kYWwtY2xvc2U6aG92ZXJ7Y29sb3I6IzJiMmUzOH0ucmVtb2RhbC1jbG9zZTpiZWZvcmV7Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhIENZLE5pbWJ1cyBTYW5zIEwsc2Fucy1zZXJpZiFpbXBvcnRhbnQ7Zm9udC1zaXplOjI1cHg7bGluZS1oZWlnaHQ6MzVweDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7ZGlzcGxheTpibG9jazt3aWR0aDozNXB4O2NvbnRlbnQ6IsOXIjt0ZXh0LWFsaWduOmNlbnRlcn0ucmVtb2RhbC1jYW5jZWwsLnJlbW9kYWwtY29uZmlybXtmb250OmluaGVyaXQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7b3ZlcmZsb3c6dmlzaWJsZTttaW4td2lkdGg6MTEwcHg7bWFyZ2luOjA7cGFkZGluZzoxMnB4IDA7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuMnM7dGV4dC1hbGlnbjpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjowO291dGxpbmU6MH0ucmVtb2RhbC1jb25maXJte2NvbG9yOiNmZmY7YmFja2dyb3VuZDojODFjNzg0fS5yZW1vZGFsLWNvbmZpcm06Zm9jdXMsLnJlbW9kYWwtY29uZmlybTpob3ZlcntiYWNrZ3JvdW5kOiM2NmJiNmF9LnJlbW9kYWwtY2FuY2Vse2NvbG9yOiNmZmY7YmFja2dyb3VuZDojZTU3MzczfS5yZW1vZGFsLWNhbmNlbDpmb2N1cywucmVtb2RhbC1jYW5jZWw6aG92ZXJ7YmFja2dyb3VuZDojZWY1MzUwfS5yZW1vZGFsLWNhbmNlbDo6LW1vei1mb2N1cy1pbm5lciwucmVtb2RhbC1jbG9zZTo6LW1vei1mb2N1cy1pbm5lciwucmVtb2RhbC1jb25maXJtOjotbW96LWZvY3VzLWlubmVye3BhZGRpbmc6MDtib3JkZXI6MH1Aa2V5ZnJhbWVzIHJlbW9kYWwtb3BlbmluZy1rZXlmcmFtZXN7MCV7dHJhbnNmb3JtOnNjYWxlKDEuMDUpO29wYWNpdHk6MH10b3t0cmFuc2Zvcm06bm9uZTtvcGFjaXR5OjE7ZmlsdGVyOmJsdXIoMCl9fUBrZXlmcmFtZXMgcmVtb2RhbC1jbG9zaW5nLWtleWZyYW1lc3swJXt0cmFuc2Zvcm06c2NhbGUoMSk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTpzY2FsZSgwLjk1KTtvcGFjaXR5OjA7ZmlsdGVyOmJsdXIoMCl9fUBrZXlmcmFtZXMgcmVtb2RhbC1vdmVybGF5LW9wZW5pbmcta2V5ZnJhbWVzezAle29wYWNpdHk6MH10b3tvcGFjaXR5OjF9fUBrZXlmcmFtZXMgcmVtb2RhbC1vdmVybGF5LWNsb3Npbmcta2V5ZnJhbWVzezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjB9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo2NDFweCl7LnJlbW9kYWx7bWF4LXdpZHRoOjcwMHB4fX0ubHQtaWU5IC5yZW1vZGFsLW92ZXJsYXl7YmFja2dyb3VuZDojMmIyZTM4fS5sdC1pZTkgLnJlbW9kYWx7d2lkdGg6NzAwcHh9" rel="stylesheet">
<link href="data:text/css;charset=utf-8;base64,ZGl2W2RhdGEtdi0xMDViZDI3OF17bWFyZ2luLWJvdHRvbTo4ZW07Y29sb3I6I2ZmZjtmb250LWZhbWlseTpNb250c2VycmF0LHNhbnMtc2VyaWY7dGV4dC1hbGlnbjpjZW50ZXJ9ZGl2IGgxW2RhdGEtdi0xMDViZDI3OF17Zm9udC1zaXplOjNlbTtmb250LXdlaWdodDo3MDA7Ym9yZGVyOjRweCBzb2xpZCAjZmZmO3dpZHRoOjcuOGVtO21hcmdpbjowIGF1dG99ZGl2IHBbZGF0YS12LTEwNWJkMjc4XXtmb250LXNpemU6MS41ZW07bGV0dGVyLXNwYWNpbmc6MnB4O2ZvbnQtd2VpZ2h0OjQwMDttYXJnaW4tdG9wOjFlbX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEyODBweCl7aDFbZGF0YS12LTEwNWJkMjc4XXtmb250LXNpemU6Mi44ZW19fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTAyNHB4KXtkaXZbZGF0YS12LTEwNWJkMjc4XXttYXJnaW4tYm90dG9tOjRlbX1kaXYgaDFbZGF0YS12LTEwNWJkMjc4XXtmb250LXNpemU6Mi41ZW07Ym9yZGVyLXdpZHRoOjNweH1kaXYgcFtkYXRhLXYtMTA1YmQyNzhde2ZvbnQtc2l6ZToxLjRlbTttYXJnaW4tdG9wOjAuOGVtfX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjY0MHB4KXtkaXZbZGF0YS12LTEwNWJkMjc4XXttYXJnaW4tYm90dG9tOjRlbX1kaXYgaDFbZGF0YS12LTEwNWJkMjc4XXtmb250LXNpemU6Mi4yZW19ZGl2IHBbZGF0YS12LTEwNWJkMjc4XXtmb250LXNpemU6MS4zZW07bWFyZ2luLXRvcDowLjdlbX19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7aDFbZGF0YS12LTEwNWJkMjc4XXtmb250LXNpemU6MmVtO2JvcmRlci13aWR0aDoycHh9cFtkYXRhLXYtMTA1YmQyNzhde2ZvbnQtc2l6ZToxLjJlbX19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDozMjBweCl7aDFbZGF0YS12LTEwNWJkMjc4XXtmb250LXNpemU6MS42ZW19cFtkYXRhLXYtMTA1YmQyNzhde2ZvbnQtc2l6ZToxZW19fS5wW2RhdGEtdi0yODg1YTk5YV0scFtkYXRhLXYtMjg4NWE5OWFde21hcmdpbjoxNXB4IDAgMjBweDtjb2xvcjojNWQ1ZDVkO292ZXJmbG93LXg6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9LnAgLm1vbm9zcGFjZVtkYXRhLXYtMjg4NWE5OWFdLHAgLm1vbm9zcGFjZVtkYXRhLXYtMjg4NWE5OWFde2ZvbnQtZmFtaWx5OlJvYm90byBNb25vLENvdXJpZXIgTmV3LENvdXJpZXIsbW9ub3NwYWNlO2ZvbnQtc2l6ZTowLjg1ZW19LnNob3J0Y3V0W2RhdGEtdi0yODg1YTk5YV17dGV4dC1hbGlnbjpjZW50ZXJ9LnNob3J0Y3V0IC5idXR0b24tbGFyZ2VbZGF0YS12LTI4ODVhOTlhXXt3aWR0aDoxNTBweDttYXJnaW46MTVweCAwIDM1cHh9LnBhbmVsW2RhdGEtdi0xNzQ3OGFlZF17YmFja2dyb3VuZC1jb2xvcjojZjU1OTU5O2NvbG9yOiNmZmZ9LnBhbmVsIGFbZGF0YS12LTE3NDc4YWVkXSwucGFuZWwgYVtkYXRhLXYtMTc0NzhhZWRdOmhvdmVyLC5wYW5lbCBhW2RhdGEtdi0xNzQ3OGFlZF06dmlzaXRlZHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2NvbG9yOiNmZmZ9LnBhbmVsW2RhdGEtdi0wZDEzNGY2YV17bWluLWhlaWdodDoyODBweH0uZXJyb3ItdGV4dFtkYXRhLXYtMGQxMzRmNmFde2ZvbnQtc2l6ZToxNHB4O2NvbG9yOiNmNTU5NTl9aW5wdXQuZXJyb3JbZGF0YS12LTBkMTM0ZjZhXXtib3JkZXI6MXB4IHNvbGlkICNmNTU5NTl9LmV4YW1wbGVbZGF0YS12LTBkMTM0ZjZhXXtmb250LXNpemU6MTRweDt3b3JkLWJyZWFrOmJyZWFrLWFsbDtjb2xvcjojNWQ1ZDVkfS5leGFtcGxlIGJbZGF0YS12LTBkMTM0ZjZhXXtjb2xvcjojMzUzNTM1fS5leGFtcGxlIC5tb25vc3BhY2VbZGF0YS12LTBkMTM0ZjZhXXtmb250LWZhbWlseTpSb2JvdG8gTW9ubyxDb3VyaWVyIE5ldyxDb3VyaWVyLG1vbm9zcGFjZX0uY29udHJvbHNbZGF0YS12LTBkMTM0ZjZhXXttYXJnaW46MTJweCAwfS5jb250cm9scz5kaXZbZGF0YS12LTBkMTM0ZjZhXXtwYWRkaW5nOjVweCAwfS5jb250cm9scyAuY2hlY2tib3hbZGF0YS12LTBkMTM0ZjZhXXttYXJnaW4tYm90dG9tOjRweDtwYWRkaW5nLWxlZnQ6MzBweDtsaW5lLWhlaWdodDoyN3B4O2N1cnNvcjpwb2ludGVyO3Bvc2l0aW9uOnJlbGF0aXZlO2NvbG9yOiMzNTM1MzU7Zm9udC13ZWlnaHQ6NDAwfS5jb250cm9scyAuY2hlY2tib3hbZGF0YS12LTBkMTM0ZjZhXTpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206MH0uY29udHJvbHMgLmNoZWNrYm94IGlbZGF0YS12LTBkMTM0ZjZhXXtsZWZ0OjE3LjVlbX0uY29udHJvbHMgLmNoZWNrYm94IGkubGVmdFtkYXRhLXYtMGQxMzRmNmFdLC5jb250cm9scyAuY2hlY2tib3ggaVtkYXRhLXYtMGQxMzRmNmFde3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbTo0cHg7ZGlzcGxheTpibG9jazt3aWR0aDoxOXB4O2hlaWdodDoxOXB4O291dGxpbmU6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM5N2EyYTh9LmNvbnRyb2xzIC5jaGVja2JveCBpLmxlZnRbZGF0YS12LTBkMTM0ZjZhXXtsZWZ0OjB9LmNvbnRyb2xzIC5jaGVja2JveCBpbnB1dFtkYXRhLXYtMGQxMzRmNmFde3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTk5OTlweH0uY29udHJvbHMgLmNoZWNrYm94IGlucHV0K2lbZGF0YS12LTBkMTM0ZjZhXTphZnRlcntjb250ZW50OiIiO2JhY2tncm91bmQ6dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUF3QUFBQUpDQVlBQUFBR3VNMVVBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBRHZiYVZSWWRGaE5URHBqYjIwdVlXUnZZbVV1ZUcxd0FBQUFBQUE4UDNod1lXTnJaWFFnWW1WbmFXNDlJdSs3dnlJZ2FXUTlJbGMxVFRCTmNFTmxhR2xJZW5KbFUzcE9WR042YTJNNVpDSS9QZ284ZURwNGJYQnRaWFJoSUhodGJHNXpPbmc5SW1Ga2IySmxPbTV6T20xbGRHRXZJaUI0T25odGNIUnJQU0pCWkc5aVpTQllUVkFnUTI5eVpTQTFMalV0WXpBeU1TQTNPUzR4TlRVM056SXNJREl3TVRRdk1ERXZNVE10TVRrNk5EUTZNREFnSUNBZ0lDQWdJQ0krQ2lBZ0lEeHlaR1k2VWtSR0lIaHRiRzV6T25Ka1pqMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNVGs1T1M4d01pOHlNaTF5WkdZdGMzbHVkR0Y0TFc1ekl5SStDaUFnSUNBZ0lEeHlaR1k2UkdWelkzSnBjSFJwYjI0Z2NtUm1PbUZpYjNWMFBTSWlDaUFnSUNBZ0lDQWdJQ0FnSUhodGJHNXpPbmh0Y0QwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0x5SUtJQ0FnSUNBZ0lDQWdJQ0FnZUcxc2JuTTZaR005SW1oMGRIQTZMeTl3ZFhKc0xtOXlaeTlrWXk5bGJHVnRaVzUwY3k4eExqRXZJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenB3YUc5MGIzTm9iM0E5SW1oMGRIQTZMeTl1Y3k1aFpHOWlaUzVqYjIwdmNHaHZkRzl6YUc5d0x6RXVNQzhpQ2lBZ0lDQWdJQ0FnSUNBZ0lIaHRiRzV6T25odGNFMU5QU0pvZEhSd09pOHZibk11WVdSdlltVXVZMjl0TDNoaGNDOHhMakF2Ylcwdklnb2dJQ0FnSUNBZ0lDQWdJQ0I0Yld4dWN6cHpkRVYyZEQwaWFIUjBjRG92TDI1ekxtRmtiMkpsTG1OdmJTOTRZWEF2TVM0d0wzTlVlWEJsTDFKbGMyOTFjbU5sUlhabGJuUWpJZ29nSUNBZ0lDQWdJQ0FnSUNCNGJXeHVjenAwYVdabVBTSm9kSFJ3T2k4dmJuTXVZV1J2WW1VdVkyOXRMM1JwWm1Zdk1TNHdMeUlLSUNBZ0lDQWdJQ0FnSUNBZ2VHMXNibk02WlhocFpqMGlhSFIwY0RvdkwyNXpMbUZrYjJKbExtTnZiUzlsZUdsbUx6RXVNQzhpUGdvZ0lDQWdJQ0FnSUNBOGVHMXdPa055WldGMGIzSlViMjlzUGtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hYYVc1a2IzZHpLVHd2ZUcxd09rTnlaV0YwYjNKVWIyOXNQZ29nSUNBZ0lDQWdJQ0E4ZUcxd09rTnlaV0YwWlVSaGRHVStNakF4T0Mwd01pMHlOVlF4TXpvMU5EbzFOU3N3TVRvd01Ed3ZlRzF3T2tOeVpXRjBaVVJoZEdVK0NpQWdJQ0FnSUNBZ0lEeDRiWEE2VFc5a2FXWjVSR0YwWlQ0eU1ERTRMVEEwTFRJelZESXdPalE0T2pJMUt6QXlPakF3UEM5NGJYQTZUVzlrYVdaNVJHRjBaVDRLSUNBZ0lDQWdJQ0FnUEhodGNEcE5aWFJoWkdGMFlVUmhkR1UrTWpBeE9DMHdOQzB5TTFReU1EbzBPRG95TlNzd01qb3dNRHd2ZUcxd09rMWxkR0ZrWVhSaFJHRjBaVDRLSUNBZ0lDQWdJQ0FnUEdSak9tWnZjbTFoZEQ1cGJXRm5aUzl3Ym1jOEwyUmpPbVp2Y20xaGRENEtJQ0FnSUNBZ0lDQWdQSEJvYjNSdmMyaHZjRHBEYjJ4dmNrMXZaR1UrTXp3dmNHaHZkRzl6YUc5d09rTnZiRzl5VFc5a1pUNEtJQ0FnSUNBZ0lDQWdQSEJvYjNSdmMyaHZjRHBKUTBOUWNtOW1hV3hsUG5OU1IwSWdTVVZETmpFNU5qWXRNaTR4UEM5d2FHOTBiM05vYjNBNlNVTkRVSEp2Wm1sc1pUNEtJQ0FnSUNBZ0lDQWdQSGh0Y0UxTk9rbHVjM1JoYm1ObFNVUStlRzF3TG1scFpEbzBOMlpoWmpjNE1DMHdNR1ZrTFRBd05HVXRPVEF5TnkwMlltWTVOMkU1WldFME5qZzhMM2h0Y0UxTk9rbHVjM1JoYm1ObFNVUStDaUFnSUNBZ0lDQWdJRHg0YlhCTlRUcEViMk4xYldWdWRFbEVQbmh0Y0M1a2FXUTZaVEU1Tmpsak1qSXRORE01WVMwMVlUUmpMV0U0TmpndE5XTTFORFEyTXpoa01HTmlQQzk0YlhCTlRUcEViMk4xYldWdWRFbEVQZ29nSUNBZ0lDQWdJQ0E4ZUcxd1RVMDZUM0pwWjJsdVlXeEViMk4xYldWdWRFbEVQbmh0Y0M1a2FXUTZaVEU1Tmpsak1qSXRORE01WVMwMVlUUmpMV0U0TmpndE5XTTFORFEyTXpoa01HTmlQQzk0YlhCTlRUcFBjbWxuYVc1aGJFUnZZM1Z0Wlc1MFNVUStDaUFnSUNBZ0lDQWdJRHg0YlhCTlRUcElhWE4wYjNKNVBnb2dJQ0FnSUNBZ0lDQWdJQ0E4Y21SbU9sTmxjVDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSEprWmpwc2FTQnlaR1k2Y0dGeWMyVlVlWEJsUFNKU1pYTnZkWEpqWlNJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwaFkzUnBiMjQrWTNKbFlYUmxaRHd2YzNSRmRuUTZZV04wYVc5dVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQThjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENTRiWEF1YVdsa09tVXhPVFk1WXpJeUxUUXpPV0V0TldFMFl5MWhPRFk0TFRWak5UUTBOak00WkRCallqd3ZjM1JGZG5RNmFXNXpkR0Z1WTJWSlJENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQSE4wUlhaME9uZG9aVzQrTWpBeE9DMHdNaTB5TlZReE16bzFORG8xTlNzd01Ub3dNRHd2YzNSRmRuUTZkMmhsYmo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT25OdlpuUjNZWEpsUVdkbGJuUStRV1J2WW1VZ1VHaHZkRzl6YUc5d0lFTkRJREl3TVRRZ0tGZHBibVJ2ZDNNcFBDOXpkRVYyZERwemIyWjBkMkZ5WlVGblpXNTBQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQThMM0prWmpwc2FUNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmtaanBzYVNCeVpHWTZjR0Z5YzJWVWVYQmxQU0pTWlhOdmRYSmpaU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBoWTNScGIyNCtjMkYyWldROEwzTjBSWFowT21GamRHbHZiajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhOMFJYWjBPbWx1YzNSaGJtTmxTVVErZUcxd0xtbHBaRHBtWVRnM05UWmlOeTFtTWpKbUxUSm1ORGN0WVdRek1DMHpOREV6T1RBeE56QmpNR004TDNOMFJYWjBPbWx1YzNSaGJtTmxTVVErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHAzYUdWdVBqSXdNVGd0TURRdE1qTlVNakE2TkRFNk1UQXJNREk2TURBOEwzTjBSWFowT25kb1pXNCtDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh6ZEVWMmREcHpiMlowZDJGeVpVRm5aVzUwUGtGa2IySmxJRkJvYjNSdmMyaHZjQ0JEUXlBeU1ERTBJQ2hYYVc1a2IzZHpLVHd2YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BITjBSWFowT21Ob1lXNW5aV1ErTHp3dmMzUkZkblE2WTJoaGJtZGxaRDRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQQzl5WkdZNmJHaytDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaR1k2YkdrZ2NtUm1PbkJoY25ObFZIbHdaVDBpVW1WemIzVnlZMlVpUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2WVdOMGFXOXVQbk5oZG1Wa1BDOXpkRVYyZERwaFkzUnBiMjQrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4emRFVjJkRHBwYm5OMFlXNWpaVWxFUG5odGNDNXBhV1E2TkRkbVlXWTNPREF0TURCbFpDMHdNRFJsTFRrd01qY3RObUptT1RkaE9XVmhORFk0UEM5emRFVjJkRHBwYm5OMFlXNWpaVWxFUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGMzUkZkblE2ZDJobGJqNHlNREU0TFRBMExUSXpWREl3T2pRNE9qSTFLekF5T2pBd1BDOXpkRVYyZERwM2FHVnVQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4YzNSRmRuUTZjMjltZEhkaGNtVkJaMlZ1ZEQ1QlpHOWlaU0JRYUc5MGIzTm9iM0FnUTBNZ01qQXhOQ0FvVjJsdVpHOTNjeWs4TDNOMFJYWjBPbk52Wm5SM1lYSmxRV2RsYm5RK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHpkRVYyZERwamFHRnVaMlZrUGk4OEwzTjBSWFowT21Ob1lXNW5aV1ErQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Y21SbU9teHBQZ29nSUNBZ0lDQWdJQ0FnSUNBOEwzSmtaanBUWlhFK0NpQWdJQ0FnSUNBZ0lEd3ZlRzF3VFUwNlNHbHpkRzl5ZVQ0S0lDQWdJQ0FnSUNBZ1BIUnBabVk2VDNKcFpXNTBZWFJwYjI0K01Ud3ZkR2xtWmpwUGNtbGxiblJoZEdsdmJqNEtJQ0FnSUNBZ0lDQWdQSFJwWm1ZNldGSmxjMjlzZFhScGIyNCtOekl3TURBd0x6RXdNREF3UEM5MGFXWm1PbGhTWlhOdmJIVjBhVzl1UGdvZ0lDQWdJQ0FnSUNBOGRHbG1aanBaVW1WemIyeDFkR2x2Ymo0M01qQXdNREF2TVRBd01EQThMM1JwWm1ZNldWSmxjMjlzZFhScGIyNCtDaUFnSUNBZ0lDQWdJRHgwYVdabU9sSmxjMjlzZFhScGIyNVZibWwwUGpJOEwzUnBabVk2VW1WemIyeDFkR2x2YmxWdWFYUStDaUFnSUNBZ0lDQWdJRHhsZUdsbU9rTnZiRzl5VTNCaFkyVStNVHd2WlhocFpqcERiMnh2Y2xOd1lXTmxQZ29nSUNBZ0lDQWdJQ0E4WlhocFpqcFFhWGhsYkZoRWFXMWxibk5wYjI0K01USThMMlY0YVdZNlVHbDRaV3hZUkdsdFpXNXphVzl1UGdvZ0lDQWdJQ0FnSUNBOFpYaHBaanBRYVhobGJGbEVhVzFsYm5OcGIyNCtPVHd2WlhocFpqcFFhWGhsYkZsRWFXMWxibk5wYjI0K0NpQWdJQ0FnSUR3dmNtUm1Pa1JsYzJOeWFYQjBhVzl1UGdvZ0lDQThMM0prWmpwU1JFWStDand2ZURwNGJYQnRaWFJoUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lBb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQUtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQW84UDNod1lXTnJaWFFnWlc1a1BTSjNJajgra2xrVlBBQUFBQ0JqU0ZKTkFBQjZKUUFBZ0lNQUFQbi9BQUNBNlFBQWRUQUFBT3BnQUFBNm1BQUFGMitTWDhWR0FBQUFjVWxFUVZSNDJwVE9zUW1EVUJDQTRTOFBHeVd6cEUxYSs0QXJPSm9JR1VDd1NwTWl5UW9aSlhXYUUwUVVYNjQ2anUrSE81U3Z0NHlwTUtBck12R0lHdElmK0lFbXhmR1VnYS80cHZqdGlmTWVubDdxY01ROW9rME1CVzZ4OXhGOWNGbkRVMkFSYmVKNU1JOWFOR3NZZmdNQXVsa2RiVFdWNXd3QUFBQUFTVVZPUks1Q1lJST0iKSBuby1yZXBlYXQ7dG9wOjRweDtsZWZ0OjNweDt3aWR0aDoxNXB4O2hlaWdodDoxNXB4O3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MH0uY29udHJvbHMgLmNoZWNrYm94IGlucHV0OmNoZWNrZWQraVtkYXRhLXYtMGQxMzRmNmFdOmFmdGVye29wYWNpdHk6MX0uY29udHJvbHMgLnN3aXRjaFtkYXRhLXYtMGQxMzRmNmFde3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjQwcHg7aGVpZ2h0OjI0cHg7bWFyZ2luOjAgNXB4fS5jb250cm9scyAuc3dpdGNoIGlucHV0W2RhdGEtdi0wZDEzNGY2YV17dmlzaWJpbGl0eTpoaWRkZW59LmNvbnRyb2xzIC5zbGlkZXJbZGF0YS12LTBkMTM0ZjZhXXtwb3NpdGlvbjphYnNvbHV0ZTtjdXJzb3I6cG9pbnRlcjt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtiYWNrZ3JvdW5kLWNvbG9yOiMwY2QzYmM7dHJhbnNpdGlvbjowLjJzfS5jb250cm9scyAuc2xpZGVyW2RhdGEtdi0wZDEzNGY2YV06YmVmb3Jle3Bvc2l0aW9uOmFic29sdXRlO2NvbnRlbnQ6IiI7aGVpZ2h0OjE2cHg7d2lkdGg6MTZweDtsZWZ0OjRweDtib3R0b206NHB4O2JhY2tncm91bmQtY29sb3I6I2ZmZjt0cmFuc2l0aW9uOjAuMnN9aW5wdXQ6Y2hlY2tlZCsuc2xpZGVyW2RhdGEtdi0wZDEzNGY2YV17YmFja2dyb3VuZC1jb2xvcjojMGNkM2JjfWlucHV0OmZvY3VzKy5zbGlkZXJbZGF0YS12LTBkMTM0ZjZhXXtib3gtc2hhZG93OjAgMCAxcHggIzBjZDNiY31pbnB1dDpjaGVja2VkKy5zbGlkZXJbZGF0YS12LTBkMTM0ZjZhXTpiZWZvcmV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTZweCl9LnRocmVhZHMgaDRbZGF0YS12LTBkMTM0ZjZhXXtkaXNwbGF5OmlubGluZX0udGhyZWFkcyBpbnB1dFt0eXBlPWJ1dHRvbl0uc3F1YXJlLWJ0bltkYXRhLXYtMGQxMzRmNmFde2Rpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7bWFyZ2luOjAgNXB4IDJweCAwO3BhZGRpbmc6MDtsaW5lLWhlaWdodDoxZW19Lmp1c3RpZnktY29udGVudC1jZW50ZXJbZGF0YS12LTBkMTM0ZjZhXXtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5zcGlubmVyW2RhdGEtdi0wZDEzNGY2YV17d2lkdGg6NjRweDtoZWlnaHQ6NjRweDttYXJnaW46MThweH0uc3Bpbm5lcj5kaXZbZGF0YS12LTBkMTM0ZjZhXXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo1MXB4O2hlaWdodDo1MXB4O21hcmdpbjo2cHg7Ym9yZGVyOjZweCBzb2xpZCAjMGNkM2JjO2JvcmRlci1yYWRpdXM6NTAlO2FuaW1hdGlvbjpsZHMtcmluZy1kYXRhLXYtMGQxMzRmNmEgMS4ycyBjdWJpYy1iZXppZXIoMC41LDAsMC41LDEpIGluZmluaXRlO2JvcmRlci1jb2xvcjojMGNkM2JjIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50fS5zcGlubmVyPmRpdltkYXRhLXYtMGQxMzRmNmFdOmZpcnN0LWNoaWxke2FuaW1hdGlvbi1kZWxheTotMC40NXN9LnNwaW5uZXI+ZGl2W2RhdGEtdi0wZDEzNGY2YV06bnRoLWNoaWxkKDIpe2FuaW1hdGlvbi1kZWxheTotMC4zc30uc3Bpbm5lcj5kaXZbZGF0YS12LTBkMTM0ZjZhXTpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi0wLjE1c31Aa2V5ZnJhbWVzIGxkcy1yaW5nLWRhdGEtdi0wZDEzNGY2YXswJXt0cmFuc2Zvcm06cm90YXRlKDBkZWcpfXRve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX0ucGFuZWw+ZGl2W2RhdGEtdi02NjQ1NTZhMV06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tYm90dG9tOjE3cHh9LnBhbmVsW2RhdGEtdi02NjQ1NTZhMV17bWluLWhlaWdodDoyODBweDtwYWRkaW5nLWJvdHRvbTozLjJlbX0ucGFuZWw+ZGl2W2RhdGEtdi02NjQ1NTZhMV06bm90KC5wZXJjZW50YWdlKXtjbGVhcjpib3RofS5wcm9iYWJpbGl0eVtkYXRhLXYtNjY0NTU2YTFde3dpZHRoOjg1JTttYXJnaW46NXB4IDA7aGVpZ2h0OjE4cHg7YmFja2dyb3VuZDojZTBlMGUwO2Zsb2F0OmxlZnR9LnByb2JhYmlsaXR5LWJhcltkYXRhLXYtNjY0NTU2YTFde2hlaWdodDoxMDAlO3dpZHRoOjA7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kLWNvbG9yOiMwY2QzYmN9LnBlcmNlbnRhZ2VbZGF0YS12LTY2NDU1NmExXXtmbG9hdDpyaWdodDt3aWR0aDoxNS4wMDAwMDElO3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDotMTBweDtsZWZ0OjE1cHh9LnBlcmNlbnRhZ2UgZGl2W2RhdGEtdi02NjQ1NTZhMV17Zm9udC1zaXplOjEycHh9LnBlcmNlbnRhZ2UgaDVbZGF0YS12LTY2NDU1NmExXXtjb2xvcjojMzUzNTM1O2ZvbnQtd2VpZ2h0OjUwMH0ub3V0cHV0W2RhdGEtdi02NjQ1NTZhMV17Zm9udC1mYW1pbHk6Um9ib3RvIE1vbm8sQ291cmllciBOZXcsQ291cmllcixtb25vc3BhY2U7Y29sb3I6IzVkNWQ1ZDttYXJnaW4tbGVmdDoxNXB4O3dvcmQtYnJlYWs6YnJlYWstYWxsfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpey5wZXJjZW50YWdlW2RhdGEtdi02NjQ1NTZhMV17bGVmdDotNXB4fS5wcm9iYWJpbGl0eVtkYXRhLXYtNjY0NTU2YTFde3dpZHRoOjgwJX19I2lkZW50aWNvbltkYXRhLXYtMDVjOWJiYTZde3dpZHRoOjQ4cHg7aGVpZ2h0OjQ4cHg7bWFyZ2luOjAgMTVweDtiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTB9Lm91dHB1dFtkYXRhLXYtMDVjOWJiYTZde2ZvbnQtZmFtaWx5OlJvYm90byBNb25vLENvdXJpZXIgTmV3LENvdXJpZXIsbW9ub3NwYWNlO2NvbG9yOiM1ZDVkNWQ7bWFyZ2luLWxlZnQ6MTVweDt3b3JkLWJyZWFrOmJyZWFrLWFsbDtmb250LXNpemU6MTVweH0ucGFuZWw+ZGl2W2RhdGEtdi0wNWM5YmJhNl06bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tYm90dG9tOjE1cHh9LnNhdmVbZGF0YS12LTA1YzliYmE2XXttYXJnaW4tdG9wOjMwcHh9LnNhdmUgaVtkYXRhLXYtMDVjOWJiYTZde21hcmdpbi1yaWdodDo4cHg7dG9wOjJweDtwb3NpdGlvbjpyZWxhdGl2ZX1AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjk5MnB4KXsuc2F2ZVtkYXRhLXYtMDVjOWJiYTZde21hcmdpbi10b3A6MH19LnJlbW9kYWwtb3ZlcmxheXtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMC44NSl9LnJlbW9kYWx7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMzNTM1MzV9LnJlbW9kYWwgLnRpdGxle21hcmdpbi1ib3R0b206NDVweH0ucmVtb2RhbCAucmVtb2RhbC1jbG9zZXtvdXRsaW5lOm5vbmU7bWFyZ2luOjhweH0ucmVtb2RhbCAucmVtb2RhbC1jbG9zZTpiZWZvcmV7Zm9udC1zaXplOjJlbX0ucmVtb2RhbCAucmVtb2RhbC1jbG9zZTpob3Zlcntjb2xvcjojMzUzNTM1fS5yZW1vZGFsIC5oaWRkZW57ZGlzcGxheTpub25lfS5zaG93LXBhc3N3b3Jke3Bvc2l0aW9uOmFic29sdXRlO2JvcmRlcjpub25lO2ZvbnQtc2l6ZToyNHB4O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y29sb3I6IzM1MzUzNTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MHB4LDEycHgpO291dGxpbmU6bm9uZSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzpub25lIWltcG9ydGFudDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZX1hOmhvdmVyIC5vY3RvLWFybVtkYXRhLXYtODg3ZjZkZWVde2FuaW1hdGlvbjpvY3RvY2F0LXdhdmUtZGF0YS12LTg4N2Y2ZGVlIDAuNTZzIGVhc2UtaW4tb3V0fWEgaW1nW2RhdGEtdi04ODdmNmRlZV0sYSBzdmdbZGF0YS12LTg4N2Y2ZGVlXXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3JkZXI6MDtyaWdodDowfUBrZXlmcmFtZXMgb2N0b2NhdC13YXZlLWRhdGEtdi04ODdmNmRlZXswJSx0b3t0cmFuc2Zvcm06cm90YXRlKDApfTIwJSw2MC4wMDAwMDQle3RyYW5zZm9ybTpyb3RhdGUoLTI1ZGVnKX00MCUsODAle3RyYW5zZm9ybTpyb3RhdGUoMTBkZWcpfX1AbWVkaWEobWF4LXdpZHRoOjUwMHB4KXthOmhvdmVyIC5vY3RvLWFybVtkYXRhLXYtODg3ZjZkZWVde2FuaW1hdGlvbjpub25lfWEgLm9jdG8tYXJtW2RhdGEtdi04ODdmNmRlZV17YW5pbWF0aW9uOm9jdG9jYXQtd2F2ZS1kYXRhLXYtODg3ZjZkZWUgMC41NnMgZWFzZS1pbi1vdXR9fWZvb3RlcltkYXRhLXYtMTY3YTQyMWNde3BhZGRpbmc6MXJlbSAwIDAuNXJlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Y29sb3I6IzVkNWQ1ZH1mb290ZXIgYVtkYXRhLXYtMTY3YTQyMWNde3RleHQtZGVjb3JhdGlvbjpub25lfWZvb3RlciAuYWRkcmVzc1tkYXRhLXYtMTY3YTQyMWNde21hcmdpbi1ib3R0b206MjBweDtjb2xvcjojMzUzNTM1fWZvb3RlciAuYWRkcmVzcyBhW2RhdGEtdi0xNjdhNDIxY117Zm9udC1mYW1pbHk6Um9ib3RvIE1vbm8sQ291cmllciBOZXcsQ291cmllcixtb25vc3BhY2U7bWFyZ2luLWxlZnQ6MTVweDt3b3JkLWJyZWFrOmJyZWFrLWFsbH1mb290ZXIgLmxpbmtzW2RhdGEtdi0xNjdhNDIxY117dGV4dC1hbGlnbjpyaWdodH1mb290ZXIgLmxpbmtzIGFbZGF0YS12LTE2N2E0MjFjXXttYXJnaW4tcmlnaHQ6MzBweDtwYWRkaW5nLWJvdHRvbToycHh9Zm9vdGVyIC5saW5rcyBhIGlbZGF0YS12LTE2N2E0MjFjXXtmb250LXNpemU6MS4yZW19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo0ODBweCl7Zm9vdGVyW2RhdGEtdi0xNjdhNDIxY117cGFkZGluZy1ib3R0b206MWVtfX0qLDphZnRlciw6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH1odG1se2ZvbnQtZmFtaWx5OnNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4xNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6cmdiYSgwLDAsMCwwKX1hcnRpY2xlLGFzaWRlLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31ib2R5e21hcmdpbjowO2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFNlZ29lIFVJLFJvYm90byxIZWx2ZXRpY2EgTmV1ZSxBcmlhbCxOb3RvIFNhbnMsTGliZXJhdGlvbiBTYW5zLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sLE5vdG8gQ29sb3IgRW1vamk7Zm9udC1zaXplOjFyZW07Zm9udC13ZWlnaHQ6NDAwO2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojMjEyNTI5O3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9W3RhYmluZGV4PSItMSJdOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSl7b3V0bGluZTowIWltcG9ydGFudH1ocntib3gtc2l6aW5nOmNvbnRlbnQtYm94O2hlaWdodDowO292ZXJmbG93OnZpc2libGV9aDEsaDIsaDMsaDQsaDUsaDZ7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MC41cmVtfXB7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MXJlbX1hYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdLGFiYnJbdGl0bGVde3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7LXdlYmtpdC10ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lIGRvdHRlZDtjdXJzb3I6aGVscDtib3JkZXItYm90dG9tOjA7LXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6bm9uZTt0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6bm9uZX1hZGRyZXNze2ZvbnQtc3R5bGU6bm9ybWFsO2xpbmUtaGVpZ2h0OmluaGVyaXR9YWRkcmVzcyxkbCxvbCx1bHttYXJnaW4tYm90dG9tOjFyZW19ZGwsb2wsdWx7bWFyZ2luLXRvcDowfW9sIG9sLG9sIHVsLHVsIG9sLHVsIHVse21hcmdpbi1ib3R0b206MH1kdHtmb250LXdlaWdodDo3MDB9ZGR7bWFyZ2luLWJvdHRvbTowLjVyZW07bWFyZ2luLWxlZnQ6MH1ibG9ja3F1b3Rle21hcmdpbjowIDAgMXJlbX1iLHN0cm9uZ3tmb250LXdlaWdodDpib2xkZXJ9c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0wLjI1ZW19c3Vwe3RvcDotMC41ZW19YXtjb2xvcjojMDA3YmZmO3RleHQtZGVjb3JhdGlvbjpub25lO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9YTpob3Zlcntjb2xvcjojMDA1NmIzO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTpub3QoW2hyZWZdKTpub3QoW2NsYXNzXSksYTpub3QoW2hyZWZdKTpub3QoW2NsYXNzXSk6aG92ZXJ7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZX1jb2RlLGtiZCxwcmUsc2FtcHtmb250LWZhbWlseTpTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LXNpemU6MWVtfXByZXttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbToxcmVtO292ZXJmbG93OmF1dG87LW1zLW92ZXJmbG93LXN0eWxlOnNjcm9sbGJhcn1maWd1cmV7bWFyZ2luOjAgMCAxcmVtfWltZ3tib3JkZXItc3R5bGU6bm9uZX1pbWcsc3Zne3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1zdmd7b3ZlcmZsb3c6aGlkZGVufXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX1jYXB0aW9ue3BhZGRpbmctdG9wOjAuNzVyZW07cGFkZGluZy1ib3R0b206MC43NXJlbTtjb2xvcjojNmM3NTdkO3RleHQtYWxpZ246bGVmdDtjYXB0aW9uLXNpZGU6Ym90dG9tfXRoe3RleHQtYWxpZ246aW5oZXJpdDt0ZXh0LWFsaWduOi13ZWJraXQtbWF0Y2gtcGFyZW50fWxhYmVse2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1ib3R0b206MC41cmVtfWJ1dHRvbntib3JkZXItcmFkaXVzOjB9YnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSl7b3V0bGluZTowfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7bWFyZ2luOjA7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fWJ1dHRvbixpbnB1dHtvdmVyZmxvdzp2aXNpYmxlfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1bcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfXNlbGVjdHt3b3JkLXdyYXA6bm9ybWFsfVt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF0sYnV0dG9uey13ZWJraXQtYXBwZWFyYW5jZTpidXR0b259W3R5cGU9YnV0dG9uXTpub3QoOmRpc2FibGVkKSxbdHlwZT1yZXNldF06bm90KDpkaXNhYmxlZCksW3R5cGU9c3VibWl0XTpub3QoOmRpc2FibGVkKSxidXR0b246bm90KDpkaXNhYmxlZCl7Y3Vyc29yOnBvaW50ZXJ9W3R5cGU9YnV0dG9uXTo6LW1vei1mb2N1cy1pbm5lcixbdHlwZT1yZXNldF06Oi1tb3otZm9jdXMtaW5uZXIsW3R5cGU9c3VibWl0XTo6LW1vei1mb2N1cy1pbm5lcixidXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7cGFkZGluZzowO2JvcmRlci1zdHlsZTpub25lfWlucHV0W3R5cGU9Y2hlY2tib3hdLGlucHV0W3R5cGU9cmFkaW9de2JveC1zaXppbmc6Ym9yZGVyLWJveDtwYWRkaW5nOjB9dGV4dGFyZWF7b3ZlcmZsb3c6YXV0bztyZXNpemU6dmVydGljYWx9ZmllbGRzZXR7bWluLXdpZHRoOjA7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowfWxlZ2VuZHtkaXNwbGF5OmJsb2NrO3dpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbi1ib3R0b206MC41cmVtO2ZvbnQtc2l6ZToxLjVyZW07bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0O3doaXRlLXNwYWNlOm5vcm1hbH1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1bdHlwZT1udW1iZXJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFt0eXBlPW51bWJlcl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXtvdXRsaW5lLW9mZnNldDotMnB4Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfVt0eXBlPXNlYXJjaF06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbntmb250OmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbn1vdXRwdXR7ZGlzcGxheTppbmxpbmUtYmxvY2t9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbTtjdXJzb3I6cG9pbnRlcn10ZW1wbGF0ZXtkaXNwbGF5Om5vbmV9W2hpZGRlbl17ZGlzcGxheTpub25lIWltcG9ydGFudH0uY29udGFpbmVyLC5jb250YWluZXItZmx1aWQsLmNvbnRhaW5lci1sZywuY29udGFpbmVyLW1kLC5jb250YWluZXItc20sLmNvbnRhaW5lci14bHt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweDttYXJnaW4tcmlnaHQ6YXV0bzttYXJnaW4tbGVmdDphdXRvfUBtZWRpYShtaW4td2lkdGg6NTc2cHgpey5jb250YWluZXIsLmNvbnRhaW5lci1zbXttYXgtd2lkdGg6NTQwcHh9fUBtZWRpYShtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXIsLmNvbnRhaW5lci1tZCwuY29udGFpbmVyLXNte21heC13aWR0aDo3MjBweH19QG1lZGlhKG1pbi13aWR0aDo5OTJweCl7LmNvbnRhaW5lciwuY29udGFpbmVyLWxnLC5jb250YWluZXItbWQsLmNvbnRhaW5lci1zbXttYXgtd2lkdGg6OTYwcHh9fUBtZWRpYShtaW4td2lkdGg6MTIwMHB4KXsuY29udGFpbmVyLC5jb250YWluZXItbGcsLmNvbnRhaW5lci1tZCwuY29udGFpbmVyLXNtLC5jb250YWluZXIteGx7bWF4LXdpZHRoOjExNDBweH19LnJvd3tkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXJpZ2h0Oi0xNXB4O21hcmdpbi1sZWZ0Oi0xNXB4fS5uby1ndXR0ZXJze21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjB9Lm5vLWd1dHRlcnM+LmNvbCwubm8tZ3V0dGVycz5bY2xhc3MqPWNvbC1de3BhZGRpbmctcmlnaHQ6MDtwYWRkaW5nLWxlZnQ6MH0uY29sLC5jb2wtMSwuY29sLTIsLmNvbC0zLC5jb2wtNCwuY29sLTUsLmNvbC02LC5jb2wtNywuY29sLTgsLmNvbC05LC5jb2wtMTAsLmNvbC0xMSwuY29sLTEyLC5jb2wtYXV0bywuY29sLWxnLC5jb2wtbGctMSwuY29sLWxnLTIsLmNvbC1sZy0zLC5jb2wtbGctNCwuY29sLWxnLTUsLmNvbC1sZy02LC5jb2wtbGctNywuY29sLWxnLTgsLmNvbC1sZy05LC5jb2wtbGctMTAsLmNvbC1sZy0xMSwuY29sLWxnLTEyLC5jb2wtbGctYXV0bywuY29sLW1kLC5jb2wtbWQtMSwuY29sLW1kLTIsLmNvbC1tZC0zLC5jb2wtbWQtNCwuY29sLW1kLTUsLmNvbC1tZC02LC5jb2wtbWQtNywuY29sLW1kLTgsLmNvbC1tZC05LC5jb2wtbWQtMTAsLmNvbC1tZC0xMSwuY29sLW1kLTEyLC5jb2wtbWQtYXV0bywuY29sLXNtLC5jb2wtc20tMSwuY29sLXNtLTIsLmNvbC1zbS0zLC5jb2wtc20tNCwuY29sLXNtLTUsLmNvbC1zbS02LC5jb2wtc20tNywuY29sLXNtLTgsLmNvbC1zbS05LC5jb2wtc20tMTAsLmNvbC1zbS0xMSwuY29sLXNtLTEyLC5jb2wtc20tYXV0bywuY29sLXhsLC5jb2wteGwtMSwuY29sLXhsLTIsLmNvbC14bC0zLC5jb2wteGwtNCwuY29sLXhsLTUsLmNvbC14bC02LC5jb2wteGwtNywuY29sLXhsLTgsLmNvbC14bC05LC5jb2wteGwtMTAsLmNvbC14bC0xMSwuY29sLXhsLTEyLC5jb2wteGwtYXV0b3twb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO3BhZGRpbmctcmlnaHQ6MTVweDtwYWRkaW5nLWxlZnQ6MTVweH0uY29se2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0ucm93LWNvbHMtMT4qe2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9LnJvdy1jb2xzLTI+KntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0ucm93LWNvbHMtMz4qe2ZsZXg6MCAwIDMzLjMzMzMzNiU7bWF4LXdpZHRoOjMzLjMzMzMzNiV9LnJvdy1jb2xzLTQ+KntmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0ucm93LWNvbHMtNT4qe2ZsZXg6MCAwIDIwJTttYXgtd2lkdGg6MjAlfS5yb3ctY29scy02Pip7ZmxleDowIDAgMTYuNjY2NjY4JTttYXgtd2lkdGg6MTYuNjY2NjY4JX0uY29sLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDoxMDAlfS5jb2wtMXtmbGV4OjAgMCA4LjMzMzMzNCU7bWF4LXdpZHRoOjguMzMzMzM0JX0uY29sLTJ7ZmxleDowIDAgMTYuNjY2NjY4JTttYXgtd2lkdGg6MTYuNjY2NjY4JX0uY29sLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNvbC00e2ZsZXg6MCAwIDMzLjMzMzMzNiU7bWF4LXdpZHRoOjMzLjMzMzMzNiV9LmNvbC01e2ZsZXg6MCAwIDQxLjY2NjY2NCU7bWF4LXdpZHRoOjQxLjY2NjY2NCV9LmNvbC02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jb2wtN3tmbGV4OjAgMCA1OC4zMzMzMzIlO21heC13aWR0aDo1OC4zMzMzMzIlfS5jb2wtOHtmbGV4OjAgMCA2Ni42NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY3JX0uY29sLTl7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNvbC0xMHtmbGV4OjAgMCA4My4zMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzJX0uY29sLTExe2ZsZXg6MCAwIDkxLjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjclfS5jb2wtMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0ub3JkZXItZmlyc3R7b3JkZXI6LTF9Lm9yZGVyLWxhc3R7b3JkZXI6MTN9Lm9yZGVyLTB7b3JkZXI6MH0ub3JkZXItMXtvcmRlcjoxfS5vcmRlci0ye29yZGVyOjJ9Lm9yZGVyLTN7b3JkZXI6M30ub3JkZXItNHtvcmRlcjo0fS5vcmRlci01e29yZGVyOjV9Lm9yZGVyLTZ7b3JkZXI6Nn0ub3JkZXItN3tvcmRlcjo3fS5vcmRlci04e29yZGVyOjh9Lm9yZGVyLTl7b3JkZXI6OX0ub3JkZXItMTB7b3JkZXI6MTB9Lm9yZGVyLTExe29yZGVyOjExfS5vcmRlci0xMntvcmRlcjoxMn0ub2Zmc2V0LTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzQlfS5vZmZzZXQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjglfS5vZmZzZXQtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzNiV9Lm9mZnNldC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NCV9Lm9mZnNldC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMyJX0ub2Zmc2V0LTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjclfS5vZmZzZXQtOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMyV9Lm9mZnNldC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NyV9QG1lZGlhKG1pbi13aWR0aDo1NzZweCl7LmNvbC1zbXtmbGV4LWJhc2lzOjA7ZmxleC1ncm93OjE7bWF4LXdpZHRoOjEwMCV9LnJvdy1jb2xzLXNtLTE+KntmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5yb3ctY29scy1zbS0yPip7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LnJvdy1jb2xzLXNtLTM+KntmbGV4OjAgMCAzMy4zMzMzMzYlO21heC13aWR0aDozMy4zMzMzMzYlfS5yb3ctY29scy1zbS00Pip7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LnJvdy1jb2xzLXNtLTU+KntmbGV4OjAgMCAyMCU7bWF4LXdpZHRoOjIwJX0ucm93LWNvbHMtc20tNj4qe2ZsZXg6MCAwIDE2LjY2NjY2OCU7bWF4LXdpZHRoOjE2LjY2NjY2OCV9LmNvbC1zbS1hdXRve2ZsZXg6MCAwIGF1dG87d2lkdGg6YXV0bzttYXgtd2lkdGg6MTAwJX0uY29sLXNtLTF7ZmxleDowIDAgOC4zMzMzMzQlO21heC13aWR0aDo4LjMzMzMzNCV9LmNvbC1zbS0ye2ZsZXg6MCAwIDE2LjY2NjY2OCU7bWF4LXdpZHRoOjE2LjY2NjY2OCV9LmNvbC1zbS0ze2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5jb2wtc20tNHtmbGV4OjAgMCAzMy4zMzMzMzYlO21heC13aWR0aDozMy4zMzMzMzYlfS5jb2wtc20tNXtmbGV4OjAgMCA0MS42NjY2NjQlO21heC13aWR0aDo0MS42NjY2NjQlfS5jb2wtc20tNntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0uY29sLXNtLTd7ZmxleDowIDAgNTguMzMzMzMyJTttYXgtd2lkdGg6NTguMzMzMzMyJX0uY29sLXNtLTh7ZmxleDowIDAgNjYuNjY2NjclO21heC13aWR0aDo2Ni42NjY2NyV9LmNvbC1zbS05e2ZsZXg6MCAwIDc1JTttYXgtd2lkdGg6NzUlfS5jb2wtc20tMTB7ZmxleDowIDAgODMuMzMzMzMlO21heC13aWR0aDo4My4zMzMzMyV9LmNvbC1zbS0xMXtmbGV4OjAgMCA5MS42NjY2NyU7bWF4LXdpZHRoOjkxLjY2NjY3JX0uY29sLXNtLTEye2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9Lm9yZGVyLXNtLWZpcnN0e29yZGVyOi0xfS5vcmRlci1zbS1sYXN0e29yZGVyOjEzfS5vcmRlci1zbS0we29yZGVyOjB9Lm9yZGVyLXNtLTF7b3JkZXI6MX0ub3JkZXItc20tMntvcmRlcjoyfS5vcmRlci1zbS0ze29yZGVyOjN9Lm9yZGVyLXNtLTR7b3JkZXI6NH0ub3JkZXItc20tNXtvcmRlcjo1fS5vcmRlci1zbS02e29yZGVyOjZ9Lm9yZGVyLXNtLTd7b3JkZXI6N30ub3JkZXItc20tOHtvcmRlcjo4fS5vcmRlci1zbS05e29yZGVyOjl9Lm9yZGVyLXNtLTEwe29yZGVyOjEwfS5vcmRlci1zbS0xMXtvcmRlcjoxMX0ub3JkZXItc20tMTJ7b3JkZXI6MTJ9Lm9mZnNldC1zbS0we21hcmdpbi1sZWZ0OjB9Lm9mZnNldC1zbS0xe21hcmdpbi1sZWZ0OjguMzMzMzM0JX0ub2Zmc2V0LXNtLTJ7bWFyZ2luLWxlZnQ6MTYuNjY2NjY4JX0ub2Zmc2V0LXNtLTN7bWFyZ2luLWxlZnQ6MjUlfS5vZmZzZXQtc20tNHttYXJnaW4tbGVmdDozMy4zMzMzMzYlfS5vZmZzZXQtc20tNXttYXJnaW4tbGVmdDo0MS42NjY2NjQlfS5vZmZzZXQtc20tNnttYXJnaW4tbGVmdDo1MCV9Lm9mZnNldC1zbS03e21hcmdpbi1sZWZ0OjU4LjMzMzMzMiV9Lm9mZnNldC1zbS04e21hcmdpbi1sZWZ0OjY2LjY2NjY3JX0ub2Zmc2V0LXNtLTl7bWFyZ2luLWxlZnQ6NzUlfS5vZmZzZXQtc20tMTB7bWFyZ2luLWxlZnQ6ODMuMzMzMzMlfS5vZmZzZXQtc20tMTF7bWFyZ2luLWxlZnQ6OTEuNjY2NjclfX1AbWVkaWEobWluLXdpZHRoOjc2OHB4KXsuY29sLW1ke2ZsZXgtYmFzaXM6MDtmbGV4LWdyb3c6MTttYXgtd2lkdGg6MTAwJX0ucm93LWNvbHMtbWQtMT4qe2ZsZXg6MCAwIDEwMCU7bWF4LXdpZHRoOjEwMCV9LnJvdy1jb2xzLW1kLTI+KntmbGV4OjAgMCA1MCU7bWF4LXdpZHRoOjUwJX0ucm93LWNvbHMtbWQtMz4qe2ZsZXg6MCAwIDMzLjMzMzMzNiU7bWF4LXdpZHRoOjMzLjMzMzMzNiV9LnJvdy1jb2xzLW1kLTQ+KntmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0ucm93LWNvbHMtbWQtNT4qe2ZsZXg6MCAwIDIwJTttYXgtd2lkdGg6MjAlfS5yb3ctY29scy1tZC02Pip7ZmxleDowIDAgMTYuNjY2NjY4JTttYXgtd2lkdGg6MTYuNjY2NjY4JX0uY29sLW1kLWF1dG97ZmxleDowIDAgYXV0bzt3aWR0aDphdXRvO21heC13aWR0aDoxMDAlfS5jb2wtbWQtMXtmbGV4OjAgMCA4LjMzMzMzNCU7bWF4LXdpZHRoOjguMzMzMzM0JX0uY29sLW1kLTJ7ZmxleDowIDAgMTYuNjY2NjY4JTttYXgtd2lkdGg6MTYuNjY2NjY4JX0uY29sLW1kLTN7ZmxleDowIDAgMjUlO21heC13aWR0aDoyNSV9LmNvbC1tZC00e2ZsZXg6MCAwIDMzLjMzMzMzNiU7bWF4LXdpZHRoOjMzLjMzMzMzNiV9LmNvbC1tZC01e2ZsZXg6MCAwIDQxLjY2NjY2NCU7bWF4LXdpZHRoOjQxLjY2NjY2NCV9LmNvbC1tZC02e2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5jb2wtbWQtN3tmbGV4OjAgMCA1OC4zMzMzMzIlO21heC13aWR0aDo1OC4zMzMzMzIlfS5jb2wtbWQtOHtmbGV4OjAgMCA2Ni42NjY2NyU7bWF4LXdpZHRoOjY2LjY2NjY3JX0uY29sLW1kLTl7ZmxleDowIDAgNzUlO21heC13aWR0aDo3NSV9LmNvbC1tZC0xMHtmbGV4OjAgMCA4My4zMzMzMyU7bWF4LXdpZHRoOjgzLjMzMzMzJX0uY29sLW1kLTExe2ZsZXg6MCAwIDkxLjY2NjY3JTttYXgtd2lkdGg6OTEuNjY2NjclfS5jb2wtbWQtMTJ7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0ub3JkZXItbWQtZmlyc3R7b3JkZXI6LTF9Lm9yZGVyLW1kLWxhc3R7b3JkZXI6MTN9Lm9yZGVyLW1kLTB7b3JkZXI6MH0ub3JkZXItbWQtMXtvcmRlcjoxfS5vcmRlci1tZC0ye29yZGVyOjJ9Lm9yZGVyLW1kLTN7b3JkZXI6M30ub3JkZXItbWQtNHtvcmRlcjo0fS5vcmRlci1tZC01e29yZGVyOjV9Lm9yZGVyLW1kLTZ7b3JkZXI6Nn0ub3JkZXItbWQtN3tvcmRlcjo3fS5vcmRlci1tZC04e29yZGVyOjh9Lm9yZGVyLW1kLTl7b3JkZXI6OX0ub3JkZXItbWQtMTB7b3JkZXI6MTB9Lm9yZGVyLW1kLTExe29yZGVyOjExfS5vcmRlci1tZC0xMntvcmRlcjoxMn0ub2Zmc2V0LW1kLTB7bWFyZ2luLWxlZnQ6MH0ub2Zmc2V0LW1kLTF7bWFyZ2luLWxlZnQ6OC4zMzMzMzQlfS5vZmZzZXQtbWQtMnttYXJnaW4tbGVmdDoxNi42NjY2NjglfS5vZmZzZXQtbWQtM3ttYXJnaW4tbGVmdDoyNSV9Lm9mZnNldC1tZC00e21hcmdpbi1sZWZ0OjMzLjMzMzMzNiV9Lm9mZnNldC1tZC01e21hcmdpbi1sZWZ0OjQxLjY2NjY2NCV9Lm9mZnNldC1tZC02e21hcmdpbi1sZWZ0OjUwJX0ub2Zmc2V0LW1kLTd7bWFyZ2luLWxlZnQ6NTguMzMzMzMyJX0ub2Zmc2V0LW1kLTh7bWFyZ2luLWxlZnQ6NjYuNjY2NjclfS5vZmZzZXQtbWQtOXttYXJnaW4tbGVmdDo3NSV9Lm9mZnNldC1tZC0xMHttYXJnaW4tbGVmdDo4My4zMzMzMyV9Lm9mZnNldC1tZC0xMXttYXJnaW4tbGVmdDo5MS42NjY2NyV9fUBtZWRpYShtaW4td2lkdGg6OTkycHgpey5jb2wtbGd7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5yb3ctY29scy1sZy0xPip7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0ucm93LWNvbHMtbGctMj4qe2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5yb3ctY29scy1sZy0zPip7ZmxleDowIDAgMzMuMzMzMzM2JTttYXgtd2lkdGg6MzMuMzMzMzM2JX0ucm93LWNvbHMtbGctND4qe2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5yb3ctY29scy1sZy01Pip7ZmxleDowIDAgMjAlO21heC13aWR0aDoyMCV9LnJvdy1jb2xzLWxnLTY+KntmbGV4OjAgMCAxNi42NjY2NjglO21heC13aWR0aDoxNi42NjY2NjglfS5jb2wtbGctYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOjEwMCV9LmNvbC1sZy0xe2ZsZXg6MCAwIDguMzMzMzM0JTttYXgtd2lkdGg6OC4zMzMzMzQlfS5jb2wtbGctMntmbGV4OjAgMCAxNi42NjY2NjglO21heC13aWR0aDoxNi42NjY2NjglfS5jb2wtbGctM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY29sLWxnLTR7ZmxleDowIDAgMzMuMzMzMzM2JTttYXgtd2lkdGg6MzMuMzMzMzM2JX0uY29sLWxnLTV7ZmxleDowIDAgNDEuNjY2NjY0JTttYXgtd2lkdGg6NDEuNjY2NjY0JX0uY29sLWxnLTZ7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNvbC1sZy03e2ZsZXg6MCAwIDU4LjMzMzMzMiU7bWF4LXdpZHRoOjU4LjMzMzMzMiV9LmNvbC1sZy04e2ZsZXg6MCAwIDY2LjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjclfS5jb2wtbGctOXtmbGV4OjAgMCA3NSU7bWF4LXdpZHRoOjc1JX0uY29sLWxnLTEwe2ZsZXg6MCAwIDgzLjMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMlfS5jb2wtbGctMTF7ZmxleDowIDAgOTEuNjY2NjclO21heC13aWR0aDo5MS42NjY2NyV9LmNvbC1sZy0xMntmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5vcmRlci1sZy1maXJzdHtvcmRlcjotMX0ub3JkZXItbGctbGFzdHtvcmRlcjoxM30ub3JkZXItbGctMHtvcmRlcjowfS5vcmRlci1sZy0xe29yZGVyOjF9Lm9yZGVyLWxnLTJ7b3JkZXI6Mn0ub3JkZXItbGctM3tvcmRlcjozfS5vcmRlci1sZy00e29yZGVyOjR9Lm9yZGVyLWxnLTV7b3JkZXI6NX0ub3JkZXItbGctNntvcmRlcjo2fS5vcmRlci1sZy03e29yZGVyOjd9Lm9yZGVyLWxnLTh7b3JkZXI6OH0ub3JkZXItbGctOXtvcmRlcjo5fS5vcmRlci1sZy0xMHtvcmRlcjoxMH0ub3JkZXItbGctMTF7b3JkZXI6MTF9Lm9yZGVyLWxnLTEye29yZGVyOjEyfS5vZmZzZXQtbGctMHttYXJnaW4tbGVmdDowfS5vZmZzZXQtbGctMXttYXJnaW4tbGVmdDo4LjMzMzMzNCV9Lm9mZnNldC1sZy0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2OCV9Lm9mZnNldC1sZy0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LWxnLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzM2JX0ub2Zmc2V0LWxnLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY0JX0ub2Zmc2V0LWxnLTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQtbGctN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzIlfS5vZmZzZXQtbGctOHttYXJnaW4tbGVmdDo2Ni42NjY2NyV9Lm9mZnNldC1sZy05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LWxnLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzJX0ub2Zmc2V0LWxnLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY3JX19QG1lZGlhKG1pbi13aWR0aDoxMjAwcHgpey5jb2wteGx7ZmxleC1iYXNpczowO2ZsZXgtZ3JvdzoxO21heC13aWR0aDoxMDAlfS5yb3ctY29scy14bC0xPip7ZmxleDowIDAgMTAwJTttYXgtd2lkdGg6MTAwJX0ucm93LWNvbHMteGwtMj4qe2ZsZXg6MCAwIDUwJTttYXgtd2lkdGg6NTAlfS5yb3ctY29scy14bC0zPip7ZmxleDowIDAgMzMuMzMzMzM2JTttYXgtd2lkdGg6MzMuMzMzMzM2JX0ucm93LWNvbHMteGwtND4qe2ZsZXg6MCAwIDI1JTttYXgtd2lkdGg6MjUlfS5yb3ctY29scy14bC01Pip7ZmxleDowIDAgMjAlO21heC13aWR0aDoyMCV9LnJvdy1jb2xzLXhsLTY+KntmbGV4OjAgMCAxNi42NjY2NjglO21heC13aWR0aDoxNi42NjY2NjglfS5jb2wteGwtYXV0b3tmbGV4OjAgMCBhdXRvO3dpZHRoOmF1dG87bWF4LXdpZHRoOjEwMCV9LmNvbC14bC0xe2ZsZXg6MCAwIDguMzMzMzM0JTttYXgtd2lkdGg6OC4zMzMzMzQlfS5jb2wteGwtMntmbGV4OjAgMCAxNi42NjY2NjglO21heC13aWR0aDoxNi42NjY2NjglfS5jb2wteGwtM3tmbGV4OjAgMCAyNSU7bWF4LXdpZHRoOjI1JX0uY29sLXhsLTR7ZmxleDowIDAgMzMuMzMzMzM2JTttYXgtd2lkdGg6MzMuMzMzMzM2JX0uY29sLXhsLTV7ZmxleDowIDAgNDEuNjY2NjY0JTttYXgtd2lkdGg6NDEuNjY2NjY0JX0uY29sLXhsLTZ7ZmxleDowIDAgNTAlO21heC13aWR0aDo1MCV9LmNvbC14bC03e2ZsZXg6MCAwIDU4LjMzMzMzMiU7bWF4LXdpZHRoOjU4LjMzMzMzMiV9LmNvbC14bC04e2ZsZXg6MCAwIDY2LjY2NjY3JTttYXgtd2lkdGg6NjYuNjY2NjclfS5jb2wteGwtOXtmbGV4OjAgMCA3NSU7bWF4LXdpZHRoOjc1JX0uY29sLXhsLTEwe2ZsZXg6MCAwIDgzLjMzMzMzJTttYXgtd2lkdGg6ODMuMzMzMzMlfS5jb2wteGwtMTF7ZmxleDowIDAgOTEuNjY2NjclO21heC13aWR0aDo5MS42NjY2NyV9LmNvbC14bC0xMntmbGV4OjAgMCAxMDAlO21heC13aWR0aDoxMDAlfS5vcmRlci14bC1maXJzdHtvcmRlcjotMX0ub3JkZXIteGwtbGFzdHtvcmRlcjoxM30ub3JkZXIteGwtMHtvcmRlcjowfS5vcmRlci14bC0xe29yZGVyOjF9Lm9yZGVyLXhsLTJ7b3JkZXI6Mn0ub3JkZXIteGwtM3tvcmRlcjozfS5vcmRlci14bC00e29yZGVyOjR9Lm9yZGVyLXhsLTV7b3JkZXI6NX0ub3JkZXIteGwtNntvcmRlcjo2fS5vcmRlci14bC03e29yZGVyOjd9Lm9yZGVyLXhsLTh7b3JkZXI6OH0ub3JkZXIteGwtOXtvcmRlcjo5fS5vcmRlci14bC0xMHtvcmRlcjoxMH0ub3JkZXIteGwtMTF7b3JkZXI6MTF9Lm9yZGVyLXhsLTEye29yZGVyOjEyfS5vZmZzZXQteGwtMHttYXJnaW4tbGVmdDowfS5vZmZzZXQteGwtMXttYXJnaW4tbGVmdDo4LjMzMzMzNCV9Lm9mZnNldC14bC0ye21hcmdpbi1sZWZ0OjE2LjY2NjY2OCV9Lm9mZnNldC14bC0ze21hcmdpbi1sZWZ0OjI1JX0ub2Zmc2V0LXhsLTR7bWFyZ2luLWxlZnQ6MzMuMzMzMzM2JX0ub2Zmc2V0LXhsLTV7bWFyZ2luLWxlZnQ6NDEuNjY2NjY0JX0ub2Zmc2V0LXhsLTZ7bWFyZ2luLWxlZnQ6NTAlfS5vZmZzZXQteGwtN3ttYXJnaW4tbGVmdDo1OC4zMzMzMzIlfS5vZmZzZXQteGwtOHttYXJnaW4tbGVmdDo2Ni42NjY2NyV9Lm9mZnNldC14bC05e21hcmdpbi1sZWZ0Ojc1JX0ub2Zmc2V0LXhsLTEwe21hcmdpbi1sZWZ0OjgzLjMzMzMzJX0ub2Zmc2V0LXhsLTExe21hcmdpbi1sZWZ0OjkxLjY2NjY3JX19QGZvbnQtZmFjZXtmb250LWZhbWlseTpMYXRvO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6bG9jYWwoIkxhdG8gUmVndWxhciIpLGxvY2FsKCJMYXRvLVJlZ3VsYXIiKSx1cmwoImRhdGE6Zm9udC93b2ZmMjtiYXNlNjQsZDA5R01nQUJBQUFBQUZzVUFCQUFBQUFBNjRRQUFGcTNBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUc2UktISEFHWUFDQlBBZ3VDWTFsRVF3S2c0a2tndTRiQzROQUFBRTJBaVFEaG5JRUlBV0ZHQWVFUXd4TEd5SGJCOWcyallJSDV3SENzU2VKT2hJaGJCd21nR1BHUlFkeTJEaVlZSnN2bnYzL241bFV4dGcrYlA4RlNMUFVzakp5RytFc0V2SlpwaVlpV3M5WmRlQitYMnFkTWRhVzVsSFh1b1ZqeUQ2UjVJV2tJU290ekoxS1RHWm5RdExqMlhIYVhRSFp0NVVWcWVhRGhnM0Irc1RYRk4vYjJYWlIxeVR2b2piVjJmQ3pvdHZseFZXbE9ad0VGcmlwWmtWN0VFRk9IRjkvMmRtRmsvNG5Qbk9ncXlIaGw2eC9xS2cycnZLaklLbDNIS09TbGZYMFRzSWtFVy9scXdDN3BTM2tLUEtJVzBkNC9sdjczWGt6aTFzU2J5UU9UYlUwVzRnaVVqVTBEdWtueE52WFVNd2dWQ283TUdlV0hFRWhRSVV3TkExZ2dRNkkxZHptcHNUa0xEekoxNi9NSzdrQmNKdjQwdkk4bnFpSUtQaEFVRHlJai9ma3lCVXZBb3A0UVBHY24yblBTa3N6eXl6WFBaNXFyLzVlNS96WmFnLzRmLzdiNmwzNzZDMkI2bVpneHVHcGRCZzZva1Q4TDEvaGVlQ3F2VGxQb0NFcnloSTQxZE1sV3FTdytaUCt2WG5YTGEreUpqa282SXpyQjFFNDEwNkNyK2RpZjJkbTk4NEM0eEk5c2dqcmVTQTlqOXBEV3kyemR2cnhGVlZFTzZnb1NpaktjeThUU1AyeG9GQUFDMkdQZEdZcnN1NW1KVU9YTHZuL0RyaG9rcStJVm1EcmNqTHJmUHJuQTYybjJXMmwxaUJUd2o2SG9YckdCZ2Z5NnQvL0FQNXNwM1MxWGZEZE5uSHdkeXRhcUxrdmtlbGhlckdpUDdja0orNmY1SzE2R2hBQXdlQ0ViZGE5VU1BRXZUcDdBbWQ3eHV3VGMreFNrV1NqVXNJSkE1TlpwQkZySDQwWXZ0WUlNdnJDRm9nTkJNQ2YrNm5yMVlndlpLOXlwSUJ6LzZJcTZjbC9VMEFSSlpVeEZ6S2l5QUgrVWNRYjBCOVFDcHRlUVhsYjZMUm1kbGNDa1p5QXN5L2FKK0JqREUzOTliWFZtMm11ODBFVlF0VElCRzFSazNiY0UyTG5BNzVySHY3LzFaWGhvZ0hTRmsvbkI4Z08wSUpDbXVGcVp5c3BLQS9WYVdwMTFiVW5FSklkWllMRjZZVTgxQnBOZlNiYXRnUkw2MytveUlUTnRwSGNqaE52aHBhY1g3Z0tDTU9qbFhPaEI5b1Jici8xZjJrS2JRcldUcTM2MFY0REhaQkpJZmt2SWlIT2tjN2ZxMXFWL2dlQmJHcXNldTFZMDlyMVoxT0pvalJ6bVRQUjFrVmJHMTFkUkR4ODRCSDRBS2dHeWU0bXFXbE9VZTBrdFNXMW94bVBEMEJxMEF6bHI5Mlo3dG4xa2ZNK3ZMb2czWmtndXJvZ3ZDaTdyT3ZpN0hqKy81ZnZiSFpDbFFoNUYycmtFeTVXemcvMVVHM3A4a0tYajFxc0hQbm5YMmU2L2k5TE9ZZnRsTW5qRGVPcFBOSzBkZnI2a2kzcnk0NWxIY2txSGFCRHRrTStoeTUya01CaFh3aWQ4RGs0TnBreWxYRm4zdnF5REIyN2pZUmJoM0hxSzN5ZFBKazMwNHFqbjU1MXRxdzBJaUttNXVyR09UVUxTSkZMVmhZb0I0OVBhVjk3clQ4VXNXWmJXdE1zbUpuM1hmLzIwLzlTaUxtOVAwMUV3RVk5RkJYVTJkLzlHZFA4UGxkNnA3Wi9qa1Fmb0RuTjFBakNWanZtc2xRck5lbVkzM3QyWUpEc1RqdlpIcEJJUXR6K21WQkFIcDFHV0ErK2pTRGdzdlJ4Y1FSZ0Z1Q3VFS3crWGlHTFAyZEh3S1UrQ3lpcUc0UWdSeVQyM1dmZlRyMm5wM0JmdHo5V3FoOW1YRnducDFmenNmNEppeVB6bzE1ZmxxK1RWU2MvZEkycGErZEh6Y1ZPMWVzWG53RTVoVSt2TnN4V3NwVU1mMnlZTWJkMGZkSUlIL2VNb3A3L29Mbk1jVE85VGo3VDA1NTMvc2svdUpTL29iYk9FY0JWODZQZGk4OTVFb04wQ1UwSmFCd0RuOWtmdVViMS95SlcyTmlSUno2RkZGT2lEc0lUU0dRcWs4WG02ZkIxaFNLeFJDcVRLNVJHTUdERGdZY0FFV0pTa1NBakRSWHBaSkJGRWNVWU1XSE5NMmJLSEpJMVcvWWNPWFBsenBNM2YzOFhMRlM0U05GdXV1MnUreDU2TEZhOFJNbFNwY3VFaFVkRVJzZVVMVmUrUXNYK2phMWVvMmF0Mm5YcTFxdmZvR0ZmNHdvTG1lTGUyRWVKOEtoem9GOEhKQnZuejByVTlqVFFsczc1V3RiSlJvSnRaa2N1eXlIczVPTG00ZVVyMUI0R1J5QlJvVy9DS0ZuSnlTc29Wc2w1V1VVMXJMck43TEZVeG5rZS9peHNQSkVTc2VmWGJxVGtXNEFnaXYwVGZGUElOR3VXWjZGYTdWTURyWFZ3N3hyZE84MUJ6dm8zS1BtaEdLdE5Dc3dFR1dOVmJIUHN4SCthWUFnSmk0aTZIaDk0VUo4WUhJRkVZV1RsNUJVVVU3c0pxNjRyYWFpYTMrcDI0M1V5WGNaZTQvV1ZEQXkzUHNUVkp1UVd0NUpvazIxL1JwUnUxTEthUm1zZEhJZmpoSXViaDVldlltN2lFcEpTMGpLRnltSndCQktGa1pXVFYxREVWcHU3dDN5ZTFNTmJJSWhpbm9DVEhIOGxpSkN3aUtqcnV1SGN1bk9mMm53WHZuei9GMTNDNENKSUpmSTJSMURpc3lJb2loaVZYR3BlRGUyNHFsSUgxckkrWmtOZ203VWx1TE85eTl6VHNxL2hvUHBRcDRIOElKYzdTT3o4OGkzUWZvbGdDQW1MaUxxdUdGZGNRbEpLV3FaUVhneU9RS0thQm94a2swTmVRYkZLb0t5aTJqVUpkdFYxWm9PcnQxSDZHQmgrZkI0bmVWenM1UkErMjBLbElvTmlwWkpWajFvQnlPdDFTNkZzenRzTTZQN01nb2lDVXVwVjA5RDJOOW5WcytqdXNxYXN6OWxJc00xNXkvZzJaNGQ1MTkwK1BHRDcwSlkrZVFhRFAySTBKcy9VZE9aY25nVnhyRlcyNU5uYmdUbk54YzNEeTFkK0dCUVNGaEYxWFRHOWNRbEpLV2taS0F5T1FLS2F0c0lnbXh6eUNvcFZzbEpXVWUwYVpGZGROOWlnbXNscmRWdHB4N3A2NmE4emtPSHRGVXNjRnppTjN4ZXZmeUxMK2JOcHBSWDFPcHFnN1ZXSmRRWG04WllIQWVuVG12eStQR1JrdlN3ZVRSQUVRUkFySGJNU0R3bEpLV21aUW1rTWprQ2lNTEp5OGdxS1dIV05iNFE0em5HYTN0WmZFckdsc204QmdpaStlNFEvL1FZZjQ5dmJ0bllkN1ZFSHVjSmVBOEplZnRtZ2tMQ0lxT3MvL0xnK25XV3Y2QnNZdnZ5Y3lKNmRXdXJ5TFVBUVJhbTlhMml0ZzhjdCtWMnZCMld3OXdQQ1huNlhRU0ZoRVZIWGhYckg0QWdrQ2lNcko2K2dtTm81dHV2Mkd1Z2JHQzdGY1ZMR3d5K2hxTGowS1RPV3FZdk1yR1ZMV1ZNcjdiMk9ibnJLeUpYd1RzKzl4MEpjUWxKS1dpWnQxdU1MNFQvWnE3VDFscExVempXMDFzRlFHQnlCUkdGazVlUVZGTEZ2WDhhMUZaaElLaktWMnArRzFqcTRITGFjWE53OHZIeUYrc1BnQ0NRS0l5c25yNkNJdlJxeDkxOGs5Zm9XSUlqaTIxdjIydTBhL3lwQkN3bUxpTHIrbzdkWmF1Zlk5NFZ4MVVwRTluQ3FhYTluZTk5Q3hqSEhhUzV1SGw2K1BPemYveXNPd2dOL1d3UmZVMUxPMndZY1B3Y0ZjUlE5SVR5NTI1N0NwbTNNOGkvVWkxMWJCdy8wOHdnOHdIUElPYlU3QnhsamRka1FlL3M1UVFrSmk0aTZyaHZxMXAzN2Z1Q3ZyVksvU1VQVlJGbzZ1dW5MSUVPV3ZFVHFEWDVBMk5VMTlBME10d1J4S2FFYmNTc0pKZVBnNU9MbTRlV3J0cHRlbjhZSnVMenY1K1UyUHlBaFN3VEVMUkwzS0E3NDhvUGhucFROMTl6V3k4NEtTWW9EQVBod0hPQUFGOGZOV2hDdVdYMEFXR00wQm1RS3l0eVhPT0pZcTJ3QjJkdkI3eFFYTnc4djN5Kzd1aDBUanlNaEtTVXRVeWpBNEFna3FtbWNzV3h5eUNzb1Zna3ZxNmhlZG9zQk9JQnpBZWNDenJGMjB0VmJBV0FiWHNmeHdPWHdza2E4OGx0SWlhTWtITms4SVRFRlp6VFBrblAyRnNZc251YkVwZmRnWkl1RE9PSGk1dUhsR3gvSXBvZFd0NmtPNlpKZXZTK0tZNGNIL3J4TDcvbjNaL1JqakdKaVptWFQxTkxSWFQ2UFk0R1hrWXZ3UFU3cG5hWVhMSTY3L3ZhZEg5dzhNV3BoTlp1bWxvN3VQbVZjUk1nUW9XSTlsQ0R1ZVdUODBFWHZxZVJOUjg4R3RLQlo2VVJ0UVFPdGRYQVowQjhROW5JZ1RpNXVIbDYrWDNiMzU0ZUFZazdpU0VoS1Njc1VhZ0dESTVBb2pLeWN2SUxpeWUrRnNObDF0S0ZxTTNyVlJ3ZUdTekFPZzRjL2lqQXA5UllJb3FnSjV0UThqYyt5Rm1yZUZkNWpIeWo2TzRiOGNJeUd4T2FiZGdlVW9paUtvazRlWFN3S3d4Z01CZ1BEUG1RdjQ2RGNoOWpPNFVjSk1mRk5pVXQrR3dOb2NKK2VZYytDT1E4TGMrdFJvMi9hYkFNaGhCREtlZXlIMnl1RDZsSVZHQmwwR0Iwdyt4ZnB1dlVpVUt2WWw3SERpTHI2YUNHTEFvTFZTZjZRbURueTd1MFp3OFo0RkVQc3dGcHZnQUJWUS91ajMxWFhuNzJOdGF1ZHRiVzFyWTIxVFROQUc0QitXb2R0K1Q0eEFzZ0FHczhsN3Yxb3FEdFM3TDRBY0FVQTlGOHpDa0M5T1NoRExWVjBXU256QWcrZVZreUhXWWVua0Ywc1ZtNGhLUytVdDhvN0Y1Q2htRGJETVJLVE1LTnJEeGYvRy91WTYzMW5VcS95WkFpbW1SUy9UeXBuZVI5bk1XdVUvdTkvMzcrV2RzQitjMmFOR2hKeTd4dGdSY3Z6U3Q4TGE5SWZxZkt5M3F0bGdQOUh6dVJEbjZqdExKLyt3V1pSQW1qTE11NE5uTkl1Ti9EZkhvdi9JbW4rQnhaK0ptL2UxZmZpK1hueVhNOU9uQitienI5elFBamRsdjAxaEM2T2Y1UGpXOEgvWU8xVjkxWkY5a2hsSXN2MUpCdFRaOEZacGVUZmhoeXduSG01N3hJQ0VvbjRvTEJseEhPVlNQaGlnRE1za2ZidjZBUm9MRkFUSVdFRHc3cU01d3EySVpqMVBxOUZreG96YlhsVkRJTldqK1dRNjJ3YXFsdHBmQWVjeHFndlBYQzVsdnRUSkc1SU5nY3ZNRVBtelNDZWVqNmlzUnRaZlVpMWd4bXFOSFpNVVhYNExMQ04xTDNjLzVqaE50NWc5dTEwcEZ6TC8vYk5CTTdJWUpqQ3Z6VSt5cmRITXJNeEpOZ09kSTRsTmlTNGhDZ3dPK1JGbHd6cTk5Nm4xcEFpRTVKSGpReEd0aHdXcjVJcGJHTWEwNzhqNTMxdUNDQzFUN0pOUXdacEpqYXpnTllkbStxYmxFTmNsYzNNY1drZkhiSU5iTDl1S0tBUE1ENWg2VEE4RHpBbGZzVkE1ejhTQUxlLzJIRmZCUEFjVlAwRXpTaHJnQmE1aFJxaHZSc2F4bWV5SVRkZmd5Zm9KY0VlcVNYZUVEWlRkRkgzK20xbTNScEtITVlPYk45NmpuQ2EzY0gwdzU5QkdNVjI5YWhJb1o2SEZMTlV0Y2RpNFNReTBFaSthem40K2lvZGRIYU5jV2tkL2hxVll6U1JValdXMUd4YXJKZjhXeXVRRXNBY1JWbTJockhiQXJkeGR3NUpnUkhIMFRxVFhhNTVtM2JIemtnNTFRY2FlRGJwUllqWVZySU5LZklpemhBd0dYZEg2aUpSeG1iVk1vNTM1ak96bk54UTkwWFNLZDM1cldiaE9HZG9rcEZLbERURnJMR0U1Wlp6b0U2UlN4WnVxWFgzbUhjd3NRbWpsT0RjWG5meUFweDFHRGEyQm9OVmxrUk1ncXpkWXdIWmJsRHlMT1BlMk9UdG5jUFVjaDExZXBFVWN0c0gxM3FSUzFxd3pqdXdqaG41Zk8wTmdEWUUxQUU2TDdyWlVtMUtOMmF6NUJaNnVMbkpTSU50YVRLQTJQT3BkU2wwQURPcnkxa3dpcDdWODNzL0hGc0N6OVVCQ1hvcjBKQlRnaHJuTWFPc0ZmbzBkT0VJdUM0NE16TGNQbXk1NHdZN2RsN2g2VDYzUWwwQ0NtNTJGckxMdDYydlZKL3U3V0R0c3NnZHRhTk1MSmswcmJZZUZlNEQzQ0tWZ2NLeEpXSTJxSkFrV2hWOER5bWd1MUJNWU5Bb01HbFV0dmFRQXJZTHV3TU9qUUdYeG9CSFk2Q1RoQU9meGtHWHhrRkE0KzZ3c2xPaVNpOEVyZVVESUVLWlpjZXk4WUFOSi9uSjFEZUFzZ0JVUHdtZzhSMUEzZ0hVSThES2s5aXlFWEo0M1RVV2drcktIc1RXbU9ZdklwdFEwVGtxam5HZW1LUVVIWmRIMkl0dXBBUk0ySmJZV1ViQ1ROSjV3TnR1empiczdMOVFhTnp0T1drV1IyYVJraU9PczJ0UFhrbEZheDNRRW1rSWNhUTFhZ0JUNkVtS2ZINHNpL1FqU2pEN3V2QXdpNkNFbkZKUVRDZUVLR2pqYjNVMExzUlFLY2x6U2FscXVKWUVqTWdqTFE3UlRORE94YlZtN1lrN05tbTZzQ1gxV0hFRG15REVVYVJ1Q2pacDhFRzFyNlNDWVM1cHozVE9hUXhqeHhxcVJHOFBESE9wam96SHc1UkxKUlFCa2dZSExnQUZDeGtFem9aNVlOa2R3dHhCRVA0NUp5dFNPUEcrbFhqUFFVQ0ZPVzRvajdFVkdqSkxsRVlRUWZHQVgxUXBzVmFrMDhFNWV4dGVtbkl1Wm9yYWZDQmt4NzJseERCd1R5U3JVM3NTV29WcHp4QnM0dU80dkJDenZCQUdRc0VjbXNWZGhaYy9yR0FaZFNIRCtibHdSdlVYakVSR3EwVUpWWWFsb0VJbDhrTmxlV2dlSjhLNW1uMXdvKytpUVJ2b0FQeDVEZ0hWVlB5cFBFVnRsamNyWW5YNXJJclQ5NkZaSGlBc3VzVUo3UDRPQ05sYTRzZ25zYXpHZjUvRUd3ZndscFVQSFA3M01nbnkwazVyZ1dSbjU1Vk5zaFdhd3VTenovKzNaMGhyaU9XcUdMRlVYNjMwdi9LOUVzckxSMU5RMUovZjJjbDBtTklRcEVFUUZqb25reDN2UUNqT2o1ekxOMzVPZTRva0F5OENObUc1V2g0YmtOZlBUUk9UVS9EWkhnOUtWNmVHYjJ2V1B6THE2UDR5R3k0MUozMVhib1FJTTFGbzkxRmFrZzhuRnRkNHFBT01CT3M1T2dIVHcyUCt1ZHFYTjJRS2JhRzlyZHNkUVRRRC9mOHRVNlNEWHAxaG1kNmowMlZteGZXY0IrdFRPd3hhcDQybDFiVEg3RnhxNlh4NjJXSHVVcVFXb0tQYWhDcG9sbUpybm94SytrME51eGhxblUrUDhEbWp4OUZvOGlXa2hVamtrMDNvbVVDQVpqNkNnQXE5QjhVVmgrRGJjU3N5K0VWOVV1L1VoeS9uNjdZcFg2TGtoZFZRYmtTNVRZUlpUN1NKOXIxYmZuWldCZ2s4bTlIZmJKZEF3U2N6RDZMUjM4RHFMWFVqRDd6enpXS3o0YkErZ1IzcXlFbHRJbWt2S3YvVDJTOUtPb2lnZ2xaTVJjNUY2a3NQdjFOQ1VZT1c3ejRpZFZPN2Q4blJweXV5S2h4d3cxSnJSRFd2aEVhem9VaTNmdWNicU9YYVF4Z1JWaUxKUzVKckxycFpURVVZSDVPSW9CT1lPUkhMRGhCaUFtNDZ0dnh2Kzlld0ZjalUzcmFWelZ4OHFWbnhpN3l0a1loNjdkampmMXZIUkRyMnNYeURuNUFJNDFJZGRzdHFuRGVCL3JCQ3BMV3ZyS2RJeTJycklMdTZ6S3cwbDJZWW5PQ2xMZ2U4UDJjeWNIc2k4RWk5cXZjR3Z4WFJJdzBvVlluYkxtaWIvdzhRWVNHTmhlUzR0anpmTVY3VytlY0h5WCtqUldocjJIck1Xc3VHYjR5TTRLNm9RaGlrSWxjcitwSmNQZEtrdEhuemZDNm5VclE3SzJvcUgyNnI5bVVtYkg2T2EyRkdPaTRDLzJYc0NBTVdDd09OcUQwSER0WG9EeXhpS2J1enBWUnJqVkV0Um9wcTZUbGQrSzNvUURoZjdkQjhibTdZK2k5QWJPZC9QZWhGdW54bmZ5dkxTVFBaREl6eVBUK3FWd3hxajQ0dkFldzluM240R2RDRmJNOU5palFyYnNhWGlqaDNWcm1sOCtYMVhVajlmajIxUFJMOUdZVHFwTldXQkZHY3hObFprc2RaQUNlSGRlbmdrOHNJNlU1LzRnSUhwSm1QNWZnU01IWERpL0xnaWZKbUd4amYyNWE2MndsM1BxVGZmUjBFbmdGZDNmS2hXd2k1NXcvS2F6KzBVVHFQRUQzWTdrRzYwNzFZb0lqVjAyNGw0MEMwZGV0ZzFkN1l3c1d3alpYYkxCSnJEZFl0NVZNaHRsUHdFZmdIRmo4T1dDRjhvV1Nkdk16QlFaSWtJZ0o1WmVJNlZ2YncrS2Q2UTRPRWs0bnJUMS9rVmlLQmVKdG1QckkzNCtPeGhIT3JCNmxJYmVmTTFpQ0lzSytEMFdlcjlxNm9ROTQ5dlc0a1lpMnBrRmVSbTFoV3FtaUhQb2x6M0NCbWFKbmxrRTZ5SFprSklNcmxGbEtXZ2JWcGhKdHYrWmZGbkpRVlJPSUVjYlZXVVdELzdtTjVsRVBFQzR0WWlHcStiTlBLVmpaNzNpb1VFUjRwR3lyM1JhUjZzU2pMTERaSHAwcEY2cTJ3bXhFMjBLSXBEUFNtUHBrZE41eXpUM0N5a3I1dy84MHlLRzlLVmFwcFQ4aXNvVG92aU9wZlNnWWVwdk4yekZSUnFlNW1STk5kaWpBb3RkcnZXTzVGZy8xR3lFMVl3RXhwczBrZnNmWUh2RitWZ0RIVHNBT0M5QkR5SGRYcUtuUDlWbGJNcEtHK0g5NkJxQnNQMlp0YUNISWpJSXBoSWttbnJvT1J1eFRwV0FBejhIdEY2QXZMUDlhYWVsU24yQnNiOFBxazEzdTlWS0VRYXdFK0FzT2oybmx3NmJ6QWRnTGJMdDJwSDBFOUNUa2dOUitsNTg3K1hIenJzbm1kYy9vcTkrcmxvdG9vS2RYc01TbzBxTVkxczBoR2VCdE9xZW8vTHdkTnB6ZDRKL0czNHl2c1FsbGdENHZLV0k1bWtIbTU2V1R1RlZiZFNQWG9ybnRGZnB4NVVtZHBURTgycmt1QzRRUytGNGdLWTZaOXVwam5aN0pTd0dEcVRCZER5Y1VHTFlEcDJZWkxYMFgyME8xd2kzL1Y0MHBJUHlFRHozNnA5TVhtMU03bFZtWmpqaEIzSGJ0ZW5XMDJLdHBiVmxOOHV4UHoyc0h0ZFdSdllydkt3YmNLSzdGVEloVUxQbnEvcUpRQ3FVSkZnTVFQajNhNHRIaHlzTGp4enRpcEJMU0IzVmtEa3ZJU1JqbEVRbGcrS0g2QnFDMU9OcDlhN2s1YzVWQ251cFIwUFJLMUFnbUZhL1plU2lHQUNpbENmT0p2R2wrMUFucDZ0NW5lSDlaN2ZaMEZpS1BoSUcrcXpSdmYveDlBRVhuSEVvSDVUYUhnMEw4c1daWlJuRm90YmwzVStjREZ5Z1I2UWcxOG40aWs1WkdEcmxnaVhYdXlGMG01TjNYcmFRMmc1YkxHOVp4SHFOQTIrdXhLZndxVjRMdjMrMUJvaDFudnFrcmQwM0JYNTlVcXlzdDJ3RlVXcFpleHR6NXNFNUxKOXFtS2hiUUFhaHNDeWgzenJhRmZvYmxEWFVOL0E2aTlvNTNXd1orNUlCT1RLRFZmNTdDVXppK0lEcTlJRnhMQ1gvNjFmM2lKOCtySTl4M0xac0x0Sm5yY0M1aUwzMk1rVHFSWml3cWtTSmVPT0RiYy91UXExL05jWTB1NGkxbG8wMDg5Ly9lV3ZiQzIxVU9aZ0dSK3ZLd0VyNmM5cllTZkUwTzIrblhCcGRlQ0hEK3N4TzZZb2d3NjdGamJxZ3FtblVuOHdmTUNXM1d6WEcza0gvc3hWZllUbGR0TFNxUndRczBwUm10ZVNxcEtTU1c1VVY0V09aNUwyVUhXc1FSVHVObExUWFZTQXY0bzB5ajEyWWlCbWZqUVFQUDFNL3ZOU2VxRFEwSElEKzFGeVFFZEtjeG5Rc2pzczI1cStSczkwWTRNUi84bDNRc0ZxSkJXNEVFQ0hORGlZS3I3VnhQS1pIVW9abjFySElpVmVqQWQyQkthVE9mejRhMUNpNFZPczBjWjhtT2pyTFg0bGRrUHFoMU9mejlNNmxXUDZwUXcwS2NXTWZ0dlN0OVlRdlBCakI1eHRTbjA2cHRWMGlKK0RzN0dtUGE1SWxDczFFODlHZEYrSFkvaTBzSDc5S05WQkk2eDZBb0tONVJSOFRpTGlGcFBueDVDMjdpZXI0VHllUDZXNDFHSGlGb2N4Q0hFdlZpay8ydjdVU0ZWTFQyN1NqL2VsZGplbk11cEg2c0hBYjNzZVlYQWFjaEc2SWd5aFRIUGNFRFNNV01BSmh3Nm1QbnVNN1U3ck50Mm82N1hpU0oxbkt5OTlhb0hJWmpQbEx4TEhucmYxNDFZWFF5ejA3ZVM1U1FOdnllMlZVQ3Ewc2s3RlZUdUhkNHd2aGVVWm9hOGg3VUNtUDhhVkR6ajlNNGNJSXpyYlpIcmtXb0I5KzZPWG5qYjdJaTJqK3dtZTZ3S25FSm1YMGNucXNJbjdTd3ZmcUdSSG5yVmU2ajJMVVZvK3BXTER3ZDd4NGJBRXZ2VGpTd010d2d0ZHhQR0UvWU9uRmdIR0ZtRktMcnE2QU1ZbFdJcUQrbXQ5SUtEUExwRkxrMFRaNDVOcmFqbld6RmE1K2xadndVdzU2VWRVaGFFN2d3ckc1RzFsTUU2cUtWTVVJbnpwaUZ4VGw1S0tTRU0waFgzNlVQTUI5b0RRbkw0SnZnR1h0ejY0eWVkdHNrWHR1b3pZMW4xSlMxQ2gzZndhRUl6SVlGdXZmOWdsR1ZBaUtTUFYvY3FmWHRGTHBUSVF6RW5vRlFwUjhaSVFFZnZqQlpBN0RQMGVxRFZha1YyVWl1MzFlaDBEWWQ5Mjk5MU5CelNJaHBNcEg5djZGdmtFYnNqc1k5djkrV1E2L3hmcmZ4MFE1aVlwYUxTUlFPNUZmaExSbWc4TEhMQ2RrbWFxakNPRHdHRmp2NUYzY0dEdXNLbGFXbEswWFNQZTFvQThoVEFESHNXTDFDNDhidGZKODdrVk4vNmpMYlByRFFuVDJyOTNJQ3JqQU12MVBDcm1ya2pha0NZSCtWUlQvQ0JqdDJnQ2dhUVJxQ1duaDFnR0tuVE9PYWNZOG1Lamc2YWo4QXRQRGtQeVU0T1ZoRmpmWVUvcVpZRFk5ejB0WTdsRWNNLzVmLzNiWTNBam84TEthM1k3K2gxZUFYQkRuY2ZEelpkY29CQTdDK1p3UGg3b0QrbkxnT01YZ1pwQUhZWWpjV0tlanFhZ0xXVzJja2RWSklhaVlQS1RtNHR3eVpZSHc2RFlhMXV3R0EzM0xFd2I0ejc5VG5tZFN0TW8yZjBLTkoxRSs2QUgyd3htN3BEdnJqL3M3azVRcjFUTWkyR2ZQUzJYV0hMVFB1TG1WdCsyVmNvblI2R3JQZXhjN1NydmtobXZIRGk4T09EeGxtNnpBbTRTTExqTDhrT29aY3oxTUdXbmZ1TEU1ZlBSZmVTR1FlaDYzM3RWdGwxYTFyL0lqUCtzbVFmSGF0WFhjaGhjYVBFaGpFWHoyVUdQZ2RMc3cvMFlBQTdvd3hTY3JPYVErd3RLdHhLejdkWnVkcGpERXgxUHE5MzJpQStIa3BKaExsMEQvRVFLeENQV2FBK2dsRk1yODFReFkrVlZVMXpEWGFPMzNuc0FWRTN0RWNHc2o3TFVLNytIOGwyV2d5ZGdjd0l2WUwzWng0V0JyMzNYU1RiWlFYOTdNdTFLREZSeVZKQ3UxeGx4aVhUeTNBeUZhNWRLc2QxeU5MTGNIUmFPVTZhanUvb2xWRzkwMWVSdlZBb3N0ZmZzSFFxQmFiNlNvYWFBNEE2ZUt1YUt1Y1hvYzJVaXZvdFp6M2JKZUpVS2FGTnJpcGpBOXZvVHNXTTAyaVZlbFNWakpYbWI3Q01wTFJ2ZDJtVzdCREdqTEFsTWtzU1V4SmZBaUxiT2hkVENwNDcwMzNESTRWKzNYQStOc0RWbnh4TmwyMmVSRkV4dy9ZY2oyaVBFcXN5eGwxS1RoaHVqMitpYlBWUXB1clBnaEhSYUhSMUhtY2treGxlbjFwUUtxSDVKdkRqMWdnNFVVMmFyTUVZVDdvdkJaZWJRdE1nbzB6N3hUVGE5TzRDb21IY1F0TjZuR0pFK1cvRncvbEhWTWtPTHRlbUJUaHVtZjRoK2JIdnM5b2EzK2ZrUnlvVzF5ekFUMTl6Y1IzV0h5NGFzUTlob2g3TjZyQXJuaG5QTmRzZlNaU2FXaW1TYzlwY0pzQWRhWWRrVmY2UjRtRjdjRUQyZVUrS2tXZ3pteHZHbmRWRVVTTkN2ZmRvdzdoN05BSFpMVnJnQmVYNWtIdHpPMWFkYVdDVm83djdxbFdIYjBDd3c5OTlDTHFnRHo0ME9MdWhhOFBjOE55NnJuV3pGWm0xRUlkMysySHdwODgrd2JGZU9iZ3NadHI1T3orN09kL2Q5TVR5UStRTVcvUEFLVnN6K1c3RE81U2kyTnpqazJ3RFhsZjc4bERyYmw3NTZNL0QwaGN2bmhKNTlCMDhveWd1T2FWSXpLaENqMU9uaEo1OWgwNHBTb3BuUkhTUjU3R1RVekgzTXJwcVNGUnFLT2xkWlo4YXE5NU5CeG4vRU81V3didWlybUV3bGxzblpxVnJ2VEtXUDJOYUF3Q0VkUU0rYXQxTStsaDBXUjVsSkV1RTZ4TFhHOHBQVmJmVWlwM1FEM3pkdll0T0pYbytCN3lMUFprR2FtRkFTWEp5VUJZak1STWVFNVB1eHlUaVU4YnJ2OEhzdHVWa3VEcXJoZXRyZGVOUlI5RG5aOUpIQ1NYWmlWMFNPdEpBRnFYSE52Y0Y5dTl0MDNESFdrcjJrRFJsRTBTamh0VU5GZkw4MkNEZ2cxSlBJdkJPRUp1V3JBM2o4VXg0YmdvcUcwZUNaNHNZZzBHbUZoV2dlVmxNQ1V3bkpxSFRhZkVadm93bW5PQTAyK3NQbDhVcUtyTzdtZWVHQWg2b0dhdXBBMTdBdTZ2Q1JzYW10OUJoWVVLSGMxWS9KcUo0NkE5eGk1UXFJeVRidEp0aU5wUEdNc3VFUjN0YlR6S0trODFRVFlnczJqbWE1d1gzREdlaGN1QTBYaFZPcXNUV3BkRFFoUUplUllnd3h1eCt3NGd3aisxOEVMeTlSRDVLTkJmUnh2TTBySm5taHNPczRxSTVlbDBqOVpBcFMzSkRWV040Y1EyS0dQOVFqcXhEaHh4a0JKWHl4U1VZRnR1TVRSVmpqRlJtbUVrb01JYlEyR2E4S0RXMGFDdnQvS2dJK2JvUkJkejc0eTlCVGFpcDhSOW1yTis0NzNhdk1WQmRDL2NUbXdvWTY3TjZWeC9vUUpsQ3lxYkxoWWs5cGJyeHVGejExcmhFRGhLV202ZU5JUjJvWFh5OVdjejFqUVg3aVlZQlpnbWF6d3pPVGVEaTlhbVVRbmg4ZkNGY1NBbzNZWmI0NnkxaGZNZk1EVTFrZXFkSFJDSVVaRW9PaWt3T084VktaSVNsUkg4alBSZklFdzlGRit2Skd6VlpqTzBOTlhzWit2eWR0S29hOGt4K0VyZ2tyQ0JCbjUveDErSVh2Nm1EcEF6SnlzSWVMSFNTRmxyRTQrbURrNmxGb1h4ZVNFRXlIVzFnYy9Rb0Nyc2tuSmNTcEJ0cnVyUTd0cEo2YzJQSDdkSXp1MzhrVklxOWErUThYcjJteWYxcjNQeGowdVdPOWl0aldZL2l2cmsxNDlYRDl1c1MwN3ZTZjJzRENHOWZOcnQ5S3l6NnJyMWpqaVQ2SmhYMzFiMEpMMTdEdGJkR2ViM2hFcFJCZWVBRVlTZFdMWW10NHZFeHhmUlVjUUl6R29WMzMxanJ1TU14RkVPbUV3VkVPaDJqU0Fqelp3d0p2TENKY3QrREtVNWV2NjJVNW5UbjM2TUw3QThuQkdxdVUwcWNxSXNoU0ZBRWs5ZytHcEtNdktlcDk0eWlnYVlGTG1Yb1BiZ1JnZkJYUFpBSVJTeFZoeDVVOUNxdmJPcTlUcS90ZktuYmUxQ3p2R2EzQVhBcy9GV3hldU1MaWpUeWhSTm9BNVJpWUxtSjkrNE5LYjUxdVQ3c1RISE1qNXE1dnFIWnZQUEVvb3p2Z3Jha3RKVmxyWTA2VWxpVWNNVFFNY1Q3cjhydjhRUmU1a2Jtb2ZYaHZQcWtORjFrRzROTmtWc1NwRU9BNWI2Wk85TGFPdExVM2w3ckEzNGRQUTkrM0FGNXdKUUJSYnVBOU5HemN3Q2pQN2FmSWRSbWszb1YwUWcxVmFLbDBJQmI0RnUzZDZaVDF6VVhuaUJWRS9zL3gwZ3FVWHg2UUZhY2NVdnoxcWdlUUZjRkNKSlJxcGpHRFJYYjdJOXpyWUxkTHZKU0ZicS9TL2R2L3Nld2YxN3RQRG1wZHo2OTRHRFlOdjVFclpRa0tRdDgzSjBYNjdJNTNtb1Bzdm1Nb0djTi8xcHJKLzlhKzlCaFhnRlo1eUwzNCtMRkxwZVVyUmNuZFBiSFQ5cmtqVU1CZHFQUWNadTg0NmQwOWhlMnRiT3V0SzAreVRQTHNtWG1rN3kyUWRhVktpcG9kSHpmSGV4RzdNdDk0MmFBM2VpMlAzN0wvSEcrZm9sTzJiN0lxd09rbkZVeUVBOHVTYmpucVhNck9ZYVdsOGUxb3pkNHBHMnhNWnljMXp0UFR1VTVuNWwzS2RnbFd3T3REeStnM294UnJQSjJDeDM0WFJsWTdTV3BXUkwwREhPdXRuYnpmK2tiT1p2eVZOSU11UDIyL1d4TExEWFpOaTBkV0x1NG5KS0w0aC9lVlpOT2w3WHVaQlNyOWQ0K3lqQTNPc2hqZnlRMUw0Z3BDV3hWelMzc2hSSlFIUFJpekIxdlpUdGloNytlS2VRY0d6SEVUZS95WEJkaXFYNUhuRVgwMlVLVlF3c0Fvd3MvR1NlTHRvZlRMRnNiODJuRjcvUk5tMU52d2lXbEY0N0RWbWUyYkxjdnlBOEtQOWpjai9YQjl2dHAya0w4UWI2Ny9kYXRoaDIvQVA5Y051K09Hb1gxZnlZOElZYTRRZjQ2TEM4WDh2NFI0WmRZcUIvd3Y1OHh0Y05aSGhjbmRFN0hGMndONCtNMmhsSFhPVTFjbXhadENoWGJRa0NBeGV4N3JXM29aRXE1dVZYYWgxWjd1elplYmRmNDVuS0ZTa2puVkxWQ29OMzhBbVZuOXc5SmJXYnlkcDJXc2FPejZudHF5OVBSWjVMR01Ka2dySmphczJ0MDlsbGZsc2RGWGZEaGxDM0dKa2E0c1g5Ym9Gbi9qM3RMclNldDBRdi9hWlhKZjVEWGRaK1BhYzVQSEU3bjQ5cFUrbFpPcWtmVTBRbmludWh1czhYK2MvQncvOCt5NW1BNU55dy91WGxYeTg1ZjdoUFBIUjlNY25OZm9BZm4rRE1vR2lRMTNsK0VTeUFKY21Kcmc1dkRhbU55SktTYXRLemtxZHFhQTR5eXZpZGFrU3cydmJiRUJaUWhpaTdEU0JpRktDNDlLRHVlUWtyTmpxMUZOd2ZYUm1mTFNNM1pmTktBc1hpS1VsaDluc2RoWFdBOUhkMSs1Y3ZpbDJ2YngyNk5wdlhGNXhSR3JsUGxMK1RYQzI0TWI3cWhhRzl2bFpGTjJsNS9WUEpVeFhoekN2c1R4Z0JqMmd6N1p2YVNmTDRHRnU3dUJRcXZlUkUrNS9oNGJRbEUzKytxQUU5SEoyRCtWOWVqN1VudEpiSDZYZy9JODRrSTQwV0VyZFFBUHoveGRLYUtOdGQ0akR5aGhIbHQ4RjRlblFNZllzeDEwOW9GNEY4WWN5Ti8zLy9qMkFJb3NiNGlVZnRIanVNQTJmWDRyZTlldlpnSGR6WTBLYldURmZpQlBOQ2h5Vi9qU0Fza3hJM3MzYkNia3l4TTVONjljMk1SVE16cU4xNTdtamlNVVRZeUpmS1FPWEljejRlSFJwNnI5QnB2SEVBQTdPRW1KbmdYZUFZUWhCbndMZ2lUYU1WWTRQdC92SUphZDVQblc3cUlUYnNGbkQzbTdBWXlUYmgvVXdrSXhxaFoxOUhpYm01WXlyNFFxcjF0V01odTBBQzcweVBJTzZxQjFXRk95elArZi82MjltTWVhTXU5bDFhRVdpSE13dkhNTlBPSUVuU1dKeWsrRDhHallMU01CRXJKc094dHpLeU5zRkpicmFFb0VlVGdCeENQeVlhdkV0R0NzRkxXRnB1bXdRN0lMc0Z3S1I1MDVNUDdOMnB0WnVHRkVYaGFhUERvb1gyVzZJMEFDd2V6a3RpVHlnTGxBRVhUR2ozZmFJcWZOL1ZQaXZKeXUzbVJOSWYwQ2pUSXMwclJLb3hodjhKUnlxUFpneHQrUEtsQkRsQlUyU0dXM0NnSnBmWWZWOWZnVEQ2VXlDMk40bXZRQThxTWtFRmVUbEVrblNLQlZ5UjVRTFpGa0NtaTg5eVM3RWxHVlR0OW9iNDA2V3gxNy80VXMyRTcvWjFsOFFhOTFyV1dMSmpPS2xJTVVEVXQwUXQxcjI5Z1FwU2YyWlpFakR3QXNMRFlnZ0MrY2hTcnNuLy9uLzRrWkpSZCttaUNzU3hwVjFHb3Q5ZWtWVFp1UUpKbERtZlRjdUNNZ0hmdTRIMFJaUHQwa2g1bDlJZ3QyTWRzN21iOTJHWWdINjNwL0k1ZjJ0b3lzdGE5TFNqSlA0L0N6UXEyZUo3SU5EclJwNENjYmJrS2ZLY3Fvd2tub28vWUtHMys4dlVMNTBKa1BncEtKcXJGTDhjU0RDOWZRUzN6ZWUxSjlkOVk1dXBQRm5HSjFWcFpMMWJDZXZEWkdSeTROdHUxeHFiUm9RYVVIUkduWUZMSU5UVlozeEdOeHVtd1lrNU1UalF2UzU4SzN4NUpKWUwvZC81bTJRNlI5bVp5aWRVNmFUL1d5ellSUGNhQ1pqcm0yeGJhMmZjeVUyS1FvYXpRSWlpWFhlb2x3SVZRNGxOaVVuMHJ2TG5ZVEZOeFVhR3BPQlBydzYwUSsxbzB3d0FMQjZSaytsaHF2cVF4UnFvTkc1QjNIT2d3Nnh1TGhOMjhPUEtyWlZEYjhuSmkrV1lpakkrOEFZTXRJUk5nc0NUa0VneDJBeWxZTEwvMnlZbCtlbnBLRVlidm56WmpuKzN6bTZ1RG03T0F3aGFUc1JOc3NVVU9MMmpDZ1pzK0pNdmYzL0NhTE8rL09yUFMrL0pTMytkdDRBZlgrT05QN3NBam54d0VXTEFnb0k2RmRuRnR1UnVIbHczb3RVNzVzZlJlUlVaK1k2bDNEcE11bEJGeUlKR2kra2k1R2p1WTBYR2dveXEvVm9NUndFOGlWUW03RmRXcXE3S29KdWFiejVaMnhabDNMcWF3SjlNS3VZdjFHWG5Pem5pQVU5OUZuYStxcHA0ZHRRTnM0ejZZM2RCRk8xdGRSWnNIVkU3Z2lzL2Q2MGQrT0hSNDVNZjFmQ09CcXc0Y1ZLa0NCN2c1UnNMc0dqbkFqbTlBcjNXcElndW1zNHZoUjdjU28vazNrOVdlR0R6dkRyeDhoMDAvNWNDeldKMGdXUWJnSDNpYnpKbE1LekRlbGVWMk03SWRCV3ZSb0JIenBuL0xseGowTTF3enZKem5LeU01amhFS05sYm1oOUk4NXNIdGVxakxjRlJtZldGSVhzZERyRVp3Mk10Vlp1Q0JvN0FzY05DVVg5QVNCNVhwazR2SURPTEVZK1NKekloS3RYd2dJdE13U3o4Y1FxdlA5UENvYXhGNUowYWx3Qkw3a0tFWE9PZ3NuMXkvckdCT0lrWkZJZUVNNmFJT25GdzduclQrd2puWDZ1YU94cUphdDFRZ2F3Y3dtQWhQZFZkbElsdVFPZVM3RVQ2RDF3UU9MdHNJMGxzdGVFdXF4OUp5cDdtZ29WRFF3NG1qdkQ2Z0NGQmszcTQwbUdTYTBEOWJuVit0QXBhSFFZZXpBSDBYcnF6Y01uZldEWnUrN0NsZ245ZU41WWtxd09QbGZ2Qmh3VUtmMlpsS0tmV2tidjkxdGFETk13VTRJcmk2ZXRLTlppSzdzZ2JQOXdrUGVYWUMyNVlIWUd2dXoxV09NNWxiS3gvdG5ZQjNIbTVjSVgwN0MwNnMvNnV1ei9GbThoamVkVXI2T05kdEZ0elo4SDkvMFcrdmxXTjV3SzI3VDRTMjdmUnBQN1lHRm5CaUUyUjlwa3REeDgvTXZOdWRLK3F6ejdrUDFrVkxaanl2N3cyNEdkTDNEOWQ1OFN6Nm5uLy9oNnBEdTVJWklsb2hqU0VrUjdxcVBkU3VtaWhHc0RsVlVvdE5qUllDOXpzQlU1UmFPZEU1M3ozWFdSMkpCcEZidFE0TzJyWnNWS1N6K3Bpb2ZLSkNxVWtCT3UwSGlxSlRhOE5USmNGbVJwUnJya2V1cTVybG92dXZGNURTM29USlhVeE51YTY1cGhDekdJVFRvbW9haFk3S2JrTUZyU0F5ZW51V1hLbUZ3Z3V4WWttSVNlT2h6b2trTTRTZGpVUEUrcUtsc0tVQXhoQXQwRWdYNnNMSVVUcS9MTFFNRVZnNFd3SmdtclFZQ29WWUhzdE83b3UxbHRySkhkS1hsbUQ2eVN2RitqcEw3M3RqM0JlOVlZdnVDZDZ3UlBjbG1QZVNPN1lCdnlwOTVTYUJxUzNwY0ptUmNxS2g1NmlvMHRyeGdPY2VFTlgxaGRpeExVbDB0L2FWaXhQZytYdzk0ZHRqS1h3aTNjMFJ5dncvbm5XTVkxamhPT2NoT1UyZlBabnNQRnNOSnZ6RnN5c2pwdVNpdXl4YkNGdGhuMzA3N2JLaXA0cHJ0ek5MQk5Yb1RCbzl6Y3pDcnFPdmN1bmRTeHhFVW9EWTVPeVE1QlMvWXJyOWNiYkhYWERIWng2eHlPZGNKM3lLNzdJNzVyVEhPYlBYdFU4KzlIRC9KWXQzYjJzY1F2dnp4bzJxdFBVYnp1VDdrK0owaUwwN28xSmxldTJmRndXaCsybkRlbFg2aGcybnkxZkh4V2tScDhEdHpXeUxDMGVLN29nQ2NMalVnSXNCb25CY2dQaFNLaExLVTRTOGl4U3ZXMk9LOUdvTFhnZDdNZUlaZlQydXFBaDJ6U1BhNU9pMTNtc2ttSkFuTFpEbVMrTVB4dmRvVmkwZy9hNEcxdXZYNjkwckpRQS9PbWVDOEh3bzU2Z2Yya0VRcmd2VlkzVXhBaVkrUFZHYzBpaEIyU2FxR2N5SXloejVZRVNHbllKZ1k3RjdJb2FsM3NtUkFtakdhVFEyZ2lLT3pBOHBEc3VQRkRNaU1zZ0NXWDBHRXBTazUxbXNRWGdDRTllejB3a01aaEd4TGVwZUdvNkxDL3c5a1lFU0lDVklNOFUzbXIzQlpYa2xCUEpmQ3dSYytoWUNnWGk5S3dWRFd2NzN5Z05ESUc4ek5TQXRkOG05endmc095OGpXWDJsZkhxRlk0WHNDcEd5ZzEyZXU0MVdWcE8wVTZ1ajc2cXBucWJtRm0yZ2RXTEpqSCtjWEo3Q2VPQjRwZ2tqa0lSVzhWSkNxM25pZ3RBa1BNWHhNNHYwY0tXT2NDSnJzcU45SXZzNFFhYzdRU0RVb0QwNnUzWGFFalVCVDlESDQ1b2dITmRvMDhLMml3ZEx6WDJwRXhobCt6UE43ajI1THpyVE1EdkFXRlpobk1TZU1YbXFuWmxUdjdMY29XanNCQTlZNmI3eSsrQmFKSnJzK1hVMkJJbWlLcUtHa0FZclZQTG1PTFE3ZmQ3TkpZbVRocS9HY21Jay9wdDlKUVI0Q0lHRGlpeGdXT1c0blJnR2hVYjgyV01IK2RxKytiZGZuZDIzanR2K2Z1ZnQrWEZiRnNYQjU5VG04UGJycGxlT1BNcll0Y0gvZk9wSzFIZVM5ak4zOFQ2OW43dWxIckZuUjMxdGxxR3RBTHB5WVB2amxMWCtYMy9BOWcvQWhLWGx6M0lFUHVlZ1VVSGJHZTVSN1pZMVZneDZVa1VTeWxhcnAwVlVLT1NWRVF4R1pZUkNIbEZCbzBhVTcyRWtqSXhkM2tnTzlXWEwyUERRVUJaYzVzc09KVE5IemtMTmYzbTVMMGNTZk9oQTlZYnVEYVpoMDdydWRkVmVrdHRudXM3MGdhWjFVVkxmd3dnK0xoaEtIMHU3T3pHbGV3NWFBdW1BS1pZdzU4MG43OXpxUHZobm9EZmhDRFo4OWMwR25MdHRNNW5wNkZMUVU5QU1SdXNJWXA5SlAxcHdjeVdHNGtGUFNZb05rZENKS2g5OG5BUTZIOHA2bC8vVXhYYzZ3Ky8ySk1MdjhmOS9rZkJWaFdSbm5FSU9ZTVpIUlk3ZzhZTkhtMXhjYlp2SlZFZHRtSUFjSllFZFFNbG1YbGpkMndNeWpIejh6UlpCOEZoYUhpNHVyQ29ZY25hYnl1cW5LYmpHeU9JQ096a2Frb2J1Q2dUWUFlSVg2MFpIYndQOE9OWkMwR2s1bHFuZmtWQ3VUeG9ReTVQNnk3VTdZdldUZFNLLy9DNEYzSytxcXNvUFhsRmQ2UWVYZCt0UXMxOVdmRkYrQVlWdWczbW10WnlVaHZhYklNSTBUeEU5QnZHcFRlaUJEK0c0dlYwaFhscDE0K2JJTVpKQmNjd0ZNcEIvOTNSUlo2dHN3eVRrNlF6VEZDb1VocFd4MkdGbW9XaTFZTEpLUTBVaUN6WXJyRXdrak1hMGxxYnF0ZHJVZktrQ3VER1dQdWQxOCtaVFB1NUQ0N2JmM3o3eGtwWXg1TzV6YXZQWGRrZ1ErTGN4UXVHcmZxWG9vMk14eGZHZWMrcSs0bjJSSGtMdmpiSWI5U3h5ZkRkZXo1Tk5TNTdlNkEvTU4rOS9EVC9zeXllZ01uenVJMUlzeDVpNUR4VTc0Qmd5Z1gxM3Izcm9EdVJsV2JYcmV4VC82SHR6dUljWU1NVVQ2L1h5L3MvSEkzNTV3eVVvZ3ZKWHFLNElVNHRqSzVJVjBIbmlhQ1lPQVVZM091MkV1VVNQRUlUVDR6SENlSXcvSFMxVXBwT0xvd0g2cDl2MmJlSTg5dGZSLzhiZnh0L0diZlJKZUtFZXQ4VjNZUTZvdHJOaGEyOTZYc3Y4Y015SGZzL0N0a0xseVR5Z290ZnhZZm40R1psbGRDV0h1SzBIelhocXpndmpoTjBYd0szZy8xYWJBS2Z6QTVCeDI5VWRlV0xKQjlnMkJObDBQcVU1Y3FtbjZYTFpoNGF5aHY5azVjczlNUjRtajN4UktOUTVXZGxxdFZiVG42L1JLSldLTXUzY3J2Mml4azRVbmNRTGNKcXVqRkZmd1JrYm83clc3K0FpdzM2YnY0OUxqUmFYa0w0Z3RMT3Y4dFJHRU8vRGJCZjNPcDBkUW1nN1BoS3FXSFBZUUhKemV5UDVoM2hXOE9kNk0yUEx3b1BYZ3JhNnVoMEdhOEhoMmFwSEhGdENRWFA1NitQVkdlSEZoSVJRV1RLRkcyR1pSQVRSaEpqVHBvU01LSjFBUUt6UlNEc3hRdlhZT1Bscm8rWjZSMk1ZTU9ldEtHSXNReEtwRHBIRXhhWlNvekVDYWxKS05EVWV3OFFqb0dTekVwRk1Md2tSU0VJYnBMY09QdERUWjVwcURsSStzcC9ZcGZZbjU5V1E1a3doLzNxWmJWVFlUbjZhUG96Q1NQZFp5bkJ6Z1NyZTJNdEp1YWdDajZpS002WVk4MTY1b2lDMkVoclBLRVdtTWpBRjdBU0tlVGo5TFduV0pySlMyNkNoS0pIa2tFZHo2NCtSUThMUzZqVTZoQ3Bhc1NlUEE2KzFuVVVXeHVKWm9RcU5VQnlYRzhEbWhCUnpUNzVMekE2bXB3UWJWekQrcGNCTDRvVnl6SDgyazZ0QjlFZ0NxMU5YOVF0MGJYR0hTeFBqem5rL3E5WWNIUlJteGttc0dVNk8vVXJ3L1A5a01jQ0FJVEg4RmVDU1BOYVMxbjhBMkF0eFRVbk1kajBZTDhKTjF3VFhPNEt5YzZqN2N1c1ltOURIU2xZblBxN2Rla1JXblR0RHFhOWw3VGRsSlU2Ykc2WTRldTArR1ZudTJWVitPalA1YUtmZDUzSldXYlNvQ0R0bFhmSTNRY1JOeWcxTTRwa2llSEowSlYyTWJSVEs5SmdHemFNelhXZlVPMkJZcXlWdjJKSjdJc3c3d1gwUjVyMW9oZG43Yi9PVU9KdnlCQnJsVE9XY2JjUDhWdi9zR0U3R0xsL2EwQktGemxpb1Q5N0t3U2pzUkpYUlZLUXZDQldoVExpTmxITXdoUjFyNUp1akJacWdvWmpidkxLbzZXVWJWRzBnWk85ak0zQ1c4RFZ5Z0QzMFFIWVNaN3V5UUxHaVFSa25NYnVOSG40cG5YTzBKTXY5cExWV3JKM0d6UGdncWZxdlkyTHdwV0huZkxyVHhFUzdtVHNYWHhZT1R2elhLYW4rQUw3WW5ueTljbVNYUUsvL3NhZ2FJVjl2Yjdlb0d0NlZvdGNybGNQbFVmaWZLS1NEYnpXSlN2am55eDZnZlpIa3pZbW9PbE1XVXhsdG5LL3AwVzVubDNjbG42MnVTcDZ2N0pybTVMV2RybzRxanRDZmFFQ05kUGQxL1hCSTVUOUlVK2NUR0N5bDBOVnIvYXBEM1QvRVNPd01MV1hJSWZuZmdLYXZxUUpobXhvQUh6UklsVTUxOSt5bjAxZnNDQWoxbzZsWnNPQVFOcXcwWFI0YTRrZHJ1andrbUFVemxxc21HS1BBWWZNeDJId3NUaUdCZ2JDQkJZNUZPS2pnT1JrZUhIQlIvQytFYmFVdzRyMEVYeW53b0gzUW14dWJCeEd0Q0ZTZkxVRUFXdW1vb2pyZ3p5dXdITHhLT1NXa3E4dDVLMXhHUDk4Mi9RcEhlTkIwQmlmb2pMM2I4cE1yWHRuNGRPV1U0RnkxVDNkbXVTTjB0NzNMQjlRNnRIdDVNZXlxYzFiVzNNdGJ3clkxVjdhcnpWZU1kU1UxaGRTbDBYYVMrQ2xkSksxMnRVaEpJWFZxTlJZcC9FNlNSdFB4aFAvK0hCaFo1RjNRTTJzWTZyU3htSGZnOWs5OFlveHU3YU5HMW9jSzFUcWdiY1N6SWV1bi9zR2p2S0xPMHhxR0lvRlcvYStMTytOdURvbzNQUCs5MzltQVdJODkwSDl0N0VGdWNKY2JSUGRUMFBYZWw4NWVHbzRSQTg5T1dkcWRISTVVY2hrTTNSWFQ2dkxqZ3E1aCtYWFgxc0c4VGhlNEc5REJwc3N5TlBJb295c0R0YzRXTHpFemJwUFp1Q2ZSakJhcy9ORXV3eWZHMDlIa3VuL2I4RnFDOXVHQm5EM2VaU3AzTXNWSUNldnpqWnNwZXNsR0o3WVdZTGZ6QUVDb3VNZ3V1TFZ2YldlTVE0dDFqbVhIeXQrK0lQNGxYUCtwRDFUcGlQN0QxK2xDS3hoOHR4a0N5cmtMQmtPZ2Q5VWdTTXRkNkF3NFkyRUNRMHgzVjFnNDNDMkZnRXZqbFllZ3Y2QitkOXdBNnIzKzA2Z2pKTlhkTjZoelZaZlRrWTZXTERPaElxS1BxK09JVTlmYmEvdVM3ZlBxZ3VDVWNKb1hPb2p1SmZDbEJLSHZwM2dFNkxBQzdIc2xLa3lKdytyRFhDWStBdXhJVXdEYk5qY014RnA3SnpqZzIxd2NGTW0xMFlhQjJkdmZCcVZOajhmdHl3ZHphQUtBYk1KVkNJRFkwZHZHcXBLZFlFZk9pcGZacWJCck56YUlDbEVyMnFXQ2lVQmptQ3pDUHk5bDlGWXhWNHJJNlFiR2NNdnBNUm9lMDU2b0JMVDdEdXdFRTNGR0J0b2RRNFdvRmUzdUFoTnhabnNaNGd5amZnZTRDL1lxMjgzMnN1MnpQTnd6ekc0N3dKL3NWYmFic2VGL3cyUXg4UFpTcnQ3Sy9aTHRkWTZqd0ZRdWE4Tnh2d1A4bzlpcmJEZmJ5OWlHeTlzT3NNeGVaYnNaMjNtN1Y3dFBBTzN3clp5ZWwvOVBsa2swWTNsZ2piVmZoc3dkNWpyOXFVU0g5UmNBMDNBU0Jzd2QvMCs1Q0tBK1YyQ1RJcGRVekh2NzFzNllUMFpaeC9zc3crcHVyOHZZai8yd2hTSDZqa2lXbjJ6Yjl3MG9IT2c3SExVY3dQd2VPNkVQcm0xbWlCbGxlcGk2dTNZUGR6LzUrMmFHR2ZXdnl6Y0E2bFNYYndBZzdSYTVEaUJkRm5rSUlCMUd3ejQ2M3ZSZ3l4aVhjRVNQaW1SWnAzWS8rSHc0MEtNY1Y3ajhQL3lEZ0RNS2RhL0ppVm1heEZGNCs1UHIyTHFteU9KUWNNUG4vdjYvLzhCbGJ3aGc4SXliekhWRllZb25nRGdpQmdJM0lzWEFOQlhvcUZvdWpOR2dvM3Z0VDZiODd6OTAyZXZyVGNleUNQaUp5QlRGRzdDTitaSDNiZkxHdWdlSTkvaHRKMWZUK3VHZmgvMnVBTnZ2SlVjN3lxN2tlTDhhQUFSZElDMFh6RngwdUIvOElqaVJ5REtoRVFsV1BBbE93M3ZldVgxajdpYmlQWDVMVzBYRHZsQStndnowUHYrUlNIWi9SVFcrc3ZyZEZWQm5veHZaYWVIV3c5SVZsRXMramZPRmV6cDZJWjI5NG5ydXpydUpaVFRQQytTWkYwZm8xRDFEVU5vQmNtUzdqcEVFYnZaN0pmN0lIMzk5bmZzeWQwMWRsWGtTK1o3cmNFcm1lWEk5dHZVb205Vms4YkF6RnlZd1RIUXZsMjIwekFMZDNLeHFmekZBd1RMRkora0N2ZnAyQW1QTlVGUWlYMUhCNWNFSUJoUWQ4WHgxNUV3bGp4U0FQM0ZGdVdPQmQydGRWZDRmZ1RyMWphbW1HNlN5alM4aHB4aU1sckVkL1dmeW5CZnAxSUtpUHdiMk8rMHBoUFZCczYrN3YrNUFxYTRUWk4rQWp2WVg2ZXNLcHVXZi8rVytGVm5nMmRhOTFBWmFnbVlFc2Yvc1g0YWE2ZDlYRDN3NCtxZlZQRGlOWmVRWkYvVDJGSnV3SjZBaUpPSndRWm42RHBRZTg2SlQyRzJMMVEyY0lHL084VHlGVTRxZTZod2FGNVgzQXhiQWVjZlFzYnpWQjhUUzBkRk9YN1ZBZHdSN2U3cTdQZWhGWjlkNTZJck1jeWoyVUhBWTRzQkI0bFN0djBtbkhySklLQXhzNytNRlRSUEQ0Q0p6elU4cTc3aHBZRDVKWDVOaVJhZ1RWQjFLK0wyanExS0VyMUFVZ3hRRzhJdkdDSm5DcmdoeEdVVXkwNTVqTi90VSs5NzdtT3k5bEZOTldlVGE5ZUZKeEh0OGUyQTFWcmwrU3dqbDdzZyswbFJad2todnJ1bC9aREQrVHhzdVV2WnJtZjU5WCs5OXZiaWZrYm5KcjVoQnVnWk1Mc2c5UkpkRXJCZXFmb2pvTFdDQWZUb3VDUElFbVllVVdwL2xsZE0rVnhjQzBSaTcrYWVVM1FBbXhNMktMSkUxSFV0S3hZRkZSOEZ5WmczdzNHa3ZZS1NZQTZvWVdlWE81TllOSFNGS1lWY0VtbHVvWjVZaEUxNXcybmNlNSttMURiMHZ5aDFwbXlLSmZVSEpPRHIyZGVKTVJVRU5wZXJwcFplNEVoS3hTL3NoRFg0T0NDQW5uNmZ4dnd1enV5blFOeWw2RWtrUUExUXlDSWFNbjNacjI1cyt4QkNPRVI2QlRRRXU3aEU5WkduamplRW1zMmxvNUpSM1RJemRxeEQxSFY2b2JQNjlrYU9qQm9rblNsQ0luUGIxYW1Lak85NXZCeVM4eE5yeHZ2bEVwUUYyRU5hMFhLQ2NrRnBra3ltZkRSMTJDNEZ0Vk1rWnBleEczOWRBZUNzZk11aVlvY3lMYlpMeUgrZ0tDb2ZCbE1nalNUZzduUk1OdkRyWS9DVkFSVHk5UnBITDU5eVlQbEt5N0tZV3J0WVJ2bkRmNUFnTUc2dDg3SEp4Z0NIT1dJeUIyMlBLYWIyNGNSUEVVVGZRaEJxenM0QllHdDl3Zk81dWw4emdiZWgzb09VN1FPUjh0UnBsUkhpcUZQUkRUdW01SXBMdjRoaTRMekxabVhCNTZDb0dKLzFNV1FMamNWdnRrOXBIVkNnbFRldmpQWlZuMjV1U2VmY3hkU1VXSXdHK1ZWWTFubjEvbEZ2OTlNSzZ6Rk5WK0s1ZzZEL2d3ekRwL3ExTXdLUm1SYjZTbVovcHl1cThZdUZoZmlVeFM0OEVlTU56Qmd6WEcvdGwwRUdpcG0vOGpoZ0dxTENUMVdybHlTdVM2U25hS1pjNlJpcnR5UjQ5amNZamJUMnBYWU9ZemhsaWFEelYxWk9LM2d3RzZZUWlSVWZGK2JBSkpFREVGZUdKenBOM0YyK1k5Tk96elFHK1Y0YjNxWTZPYlIySG5zUHBQWVNZMjU4MGRhUisrRjZ4ZkNrTlArTVo2WEZGT0ZjeXBka1MzaXBxMk1FbVpIM0YxVWNWWUJHa1JEZnM5T2FydkEvSTlBaXVHTW45c0xHTkxPdnpIdm8yalczejFWblg4U1lqekFVSzBFSVppNXE2TE9BYlNzSjdhd3k1bFpZTmpHVVBzMHhNQ0tuMU9UY0FURGxzODlTUnVZaXJsWnpPWEFRS1JoRmJOVmxDTHB0Z2hEOFc3ZUNzRlhVU0pmSkdGRlBqKzZmT0hHa0NjdTBQeDUvdVBmMUFzcWM3STdLamMzZjlpdGI4cmg0NkR3SzE4TmlOZ25qNVJvd0RwVFdwY2cwQzFNVlFCRWtsZkw5QlFFOG5LUHNPZ1loSTRndVNJa1h1Y3Z5bnFuQnQ3SFJnNjI0QjMwOGRaYjI0ajQ2WFNwZkQwOEFQMVNnUkdLNVh1WnNsTGpIa0dhc0NqTXdJd0o2MUxId1FIRnBXM0FHOWZuL3hIYk15aEVBMHlsREU1VHJ3bkFnbm5DVnBmendGZ3ZmcHRSNzdzY3g5VjdTMWp1aCtzVFdWb2tsQVI1QUxpSnlwYkpXN1dCVy9qNm1zTC9CUldUUS9PU1F6T3NFVUtsUUFuZW1LTVkrdVhQalZQTlpsbHJoLzBxVjBSbW9SN25QaDQwc2dkZFpFcU9tcExycDBjYjFIVkxEVG0xNTVUOGo5ekRGRWJHc2l1ZFdYWmw0ZGcvaDBkZngwOGpRZHB4Zk9mYlIvcXNCanBDWXZ3QmZsRHFJdmVRaHpzUCtyK1B3clJmblo0bWNzdmpJd0c5eHNqc3h0bmgrL2RuTXRoamVybXRtZHgzNWVadS9zYkp4cm9YQXYyc3g5VXFkWkpzY3VXMTdUYjhZcDc1ZXQ3b1lHOS93cmZCRVlmTlQ4dm9KZVlhbzAzSHhyQ3U1Y2dkRTBJWW0zT0hIVUlNUmhENzhSaGJwdGtrckVmVGN1dmhxYnJDWmY4RnFScElXVDgyZzArUWUrdDhaRUhQd21TOHpZakJ3TEhYbmhqSk80d3lqd1dOUGl5MEFEWUsremFtalZzNnVSV3dRRmlURkFMTGFacSs4T0VtY1ZKcUxnb0ZZTm9tZ1BKY2Nhbm8yanVpc0xQclJhdUJLNUVPMlljN0pvTy9FazY1T1AzcHhyRCtyWFk3TnNXN0dZbTBnY3NocEFTbEdSQnBDaW5VcXAvWjVZYTQrQ1Bhb2xNM2FaVERFbG83aVdxd0tER1RnQUhCNGd2UmZuQzJEUldIelpCeit2eGNCQ09IOExnZHlQUWJBa3drRWsxQVp5cGJKYUE0R2VwV3Q4Ryt6R0pHTE42aEpDeXp3ellIUkpiTDdtSlRMYy9MbmVzRG15b2laRHZ2N2g3OG84OUFWN2o2TTRyWmVoc0xMVlNaV0N1d1NNeXJKS0kzV3BVdVZTUVYxbURYQ0trOElhaC80bEFwOVIxRkN3WUNkTkQyN0lWbFVIcUlHekhNMlRsV0ZRcFBBSXdYUXhob1NMcGJ3TFZYY1FvSHVUY2tzbytjRXRqc2FWRlRlSTBLZUxRVEJrRHM1MkI2NmpvTzdBcyt5bjRMMDh1QUZLYlEwNklNaS9VeDRCaGd1SjlqWUlvdGRmVzN2SnlMSk9RcVUva29CNzV0OFZDZFFwWUpoTnRLKytmSHlKSzFFRHM0UWVFcmNOZWZmYS9JWk1ONlhaNUM1WGNxM1VqS25nOTZwbDk5TWtqZ0sra1RDdzIyTkFGNmZYcTZGK2NrazJDRXpCU0FKaC9sczVjalNTY2pKOGVrYzAvcTdiZ2h6WlFKbEFrRzBMY0FwQlFtZmhySXkzdEZaZ0dDRG5FUEZvOGYxL0NybnhYRFFQeUpxYUtrWHgyN1FzejJGZ0NVbE5JSnBHalh1ZUhQUFhBRVN5cHRtalhkOGs2SGJxQnNxdU1EbWJSR3daV3N6WDI0cVJSK0x0WW9LK1AxSTA2ZnA4NEkzMkpNVjdtSWJmYWJacXN1N3lHNXN5VWQrSDF4aExkUU1welhjaUJoQ3JiZTZETGc0WFlMQmZiWFRvRFZnM3VXT1EvL3NjY0RRbi9GTVdyeGlSaWpKM2U1S3J5akVveUEwb3ZnM0NIQkZFeWkxYUhsK0NjS2ErWXRZTE1JM2RjRlA4R1RhT2ZKK25yazNtc1FRS3Rsakt3eFF5alpHR3RJMzdSVUFsVzRSeFVOaHhOb1lhSE5vRmRncXhid3cxdWk1QjcwRXNUQjRnQ09zR2tPTHdiT09udm90ZTgrb0YwMSs1bGNiSUtvM3hZaVE1S0RhUVpKUVRUZmdTcG1QaDhwQkJKWFRGdlkvZzJrMU1VQjEyL1hZUG1xT2E4UEpvdkJhcnIzTHBOMDJWcDRHM0pzeWtlOGtyUUo3bHUwQVhlcDJIbk1Kdlc4aEhuMVNmTGwwaExTUEtGL1YwRS9MNFBxalhxd0JJbU0rOVRIeFU1bjZHaUNKTXRQcEcxRVlIR0lBRWh5WnFnOCtCTTBJTW5iK2ZKTUljeUhjb3NCM2lrSGg1ZVg4blVyL0FVeGNMSFhYTTFibHFMN2lBRkdIRm40WTNPSmtsZ1M0cEU1R2dqaWkyK1FzNGNzUGpSVjVLbzllY1BsS3NJaFh0aHdUd3FsSkUrM2NLcDlVTmxLMCs5NzNuSFQwN21taWtBZXo1UGppOHYvL3IrZndzaGhYbThXamREUnpqOUtWQXgwMjVYUFU4NWJTNmdTWkNzUXMyZTJpRHNISTZyQnNKRCsyN1Z3TCtqMjI4WVdSZVhCZWhsY2lGV08ra1JieENsajRwOTlqU3ZQWUJFcnBGbHZLOTdOS21aSDBqamd4NnlrcDlNTnprZlR0WUdCb3U3Q1kvcGx4eEtieWhwWGFIQVMrVHdBOHdNYTRRNElQN1JRL1lmRW01TGs4RUZ6ZGdsandqSUQ2c0Jtbm90dmdtRFhPUE94elRBU1cvOEtoNWRKcnl0OGp4VGx0b3FCdGFCREN6bHFSSlFtMGpoTmdNQno0Z1BNSGp5bldaTzhOY1kyUk11Q1FXcUdMR2w2NU1ObGZuRG1hSWl3clBhM0ltQ04rdnZ4d3pvWWhsQ2lBakpodVdLSEI4dTZLbWRYZHlTVmpXNXZYc0tjUUhRVk1meE9aWkxoaGdrcDVuWFpSK2w5aWhibDI2TC8yWE1vOEMxNWJpMVkwUTJFY3JyZDM5NTlUcXdCVXozY3E3SVNucmlyc0VPSEM4M0Frd2dVb0ZKV0F3T2JXRjd1Z3RSQ3hNOVV5Zlh5TFJTS2VtdEtTT3BDV3BualBHZHh1dmdpMW96M2NBUzhSVzNGcVE0bGZyUzh4dHhNNEh1M1JLOUpLVE44WXhCeExZZy9xR0o0eWR1eVdndkRTcWgzMTB3SURWeTR6SFF3MXFqbGRQZ0Z4dDIrQ1dKcFZOUmhJNVlZSWw1NlMrVndkbG5tV0RnakN4VVV1RXpPNnB6QTBGd2dNUE1iRE05VWxUOGVKczlESjJBaFRmUGJXeS82c29jQ3pCMUJERjRPQ2ZmU3RsTnRiWU1iQWRTZ1FNR25UcUNaaWpTOXFJWEtBR3Mzenlhb1FCc1pVc2dBWlhDbnhUWnJPMDJnZVlmd0pyQm1IdjNxb1dRK1pNY25mSHhIRVVBSFVWbTRLcDZ0OWpzSTBIVm1lalNVUG4zK2t3TFRKY1dENjJZbGRrR2RHUTZjT0c5aVpnNk8xT29OaUtEZlNkRU9OYnl5TWovMyswaXY1bGlLRUVPZkJOT1ZaajRNbHczM0U2M1V4RGFOWnZRVjNHdHU3R3lKVzZ3dXZRSUhOMVVlUVlXbUUyT2UvaVFiV2h3aTlPamRvSUgwVURTT1BZK2FlR0FMWTVmd2g4eitTS3AyNnl3T25aNkNOTVVvYWRMVmkrNVVMcDFsYVhiWENBaElySHVuZG1pWUdCMFVCREFzZklqSkpnNkFicEVNczJDTkNZamxZOEovS1pRbDROb2tKQklzNC9CQkEzOU1vWXkrWEttdSsrVlBQWlBvaDNaL3QzQjNmYnMxNWgzajZaWW5jdTZITlpUZlVkajFmWTQvcW9hUC81b0lUN2VhWVI3NlpiY09XcDJOZCtVM01HT3ROSUlFZG80U1hBQU84NmE4aWllU1BndURZWXZ5M0FGSTVyaFRYUTBUZHFEeW5aMTBFYnJ6WUIwaWFOMHh5TGhvZzlLMWZNbHVUVS9zY2JUZ2Y2TVhWZXg5YXFHdk5YQS9ma1hOMHRsQ3hvRk05Vm13Rmx3VFlJQ05sWnZkYVVURUVQSHgzVlprMW5iTk1TTHBZdUd6NHNpNm5Fa3l6c0dSakU2VkRNWlREU0hMWUlxQS9QcHJWNUNRbHlDL2c3ZnJ4b1NIdGZUUmRVWnQ4QnN6YkkxVXZYd0Nmc0RVYkpIbW1ianIyYkJ6SXhtWWhpYkFCalBhVmJoc3ZaYytqSThiR2hlWGlQRk56RDVPSXY2U3h1azZ1WXRWQTluVENuSFNERjY5MDZQK2xwK0lCSWhFYm5FblBGWGxkeXJveDBkVkMwRGtMSGE0RzY0YkFJNTV5MmV4c1Q3dThCWG5ZbG94Q3pkNmZqN2IzT3FleEh4RW11WnpvZlYwR0dlNTZSeEZ5UzJydkxUWE9PUzZvVmJGWDFpRlJkOEZpejZ1YTFUN0RGSWcyelF1anRPOWtVU2JzQWhMeEhIVUZJVmplNTJyc3lyaGxqSEF1dzFvTjg5M1dacGV2a2NkUHhmdGVVTmRrRHI3akxsWE9wTzhQR2t1b3lhdnFpR01BVFVUWlZTRGlrczZSakFqbU94dzJWUEtKY1NlRVIyOGc5RjJoVm1GRVlpNktNaWhHN2gxYTZtdTFaZGkzNXh6VngrZ2c4aUErRnJ4Nnd0Z2FVeEtkLzE0VXBwYTFydkRweXNseVFkTTIwV2gzMnVCdGl4WXFYMHVLTmljQ0t1Q0tYVU5HaVVRNlptSkdHMjRMYzlFKzBPdE5KOCt0RGpRVFplQ056TTM5MVp0cmhSbTd6VENGWXpRaGJBUlM3WGowQkc1UXhaZVFDaFdhblVHRUU2b21BUSsrd0RuVXpKdUhBckNPNlpad2FsbGpRWFFycTQzQ1lkWDl3b1RpUVBzTzRFL2c0endZcG1ZbVJUS1RwU2hDZndpYTZGVlRlWWJQSlZxYm0zZ1lGL1E3RmN6SW1wb2tVWm1wYWJ1aVI0bzN3b2JGc2sxeTJtQ1NER3Q5RUJ4OEcwMmNZZXdJSEwrMTRkYVRiRTgxRUYxeUMyT1NHLy80czN4TVRtMnc1dWVXN1hvZWUzWk90SmZYUnppYTdSYU9yanFrRjJaOE5SVnlJRCsrREZBOERvUDhKMkFLaktRMkxmOHN4TTk3ZkE4SmNjV09nTUd6QkFpS1VLM0Z5cUZ3bzh4c3dCTFpwcVZjWEs0bWNuQXlUV3VYaXI5ZTY1WnVMN3NWVmZrUXZBL2xCR29zaXVSeUpicVdBeUU4SFBBcWhiTDF6TExHYS8wbHpCU3RkRGl2dzkzWUM4b3ZFZlRXM0c2VlU1VFdRYkhOOThOYWhtYmVKNlZqdHg2WERqdFZWM2lXWkNtcHFxVGFnU1NjbDRHY2lhdno5eUtlZDkxN2wrUEFWMGxaYzE0M001eFBPOWV3TCt2QzUxei9RNFBTYWRMaXRxZ2JyNmFhMWs1OWZqc0lRMnNXNkMydGtVdG5CbzR5eGtOeEs5UVJLYVhVUXZxbnhhV0daaWdxNlpRR1J6SFMrZW9qQlNZWit5TFpaYTRqb3NxMWU3VHY2UTJhNmhIRC9mZmI0aXFxaVFTa0laT0I5ODhpS3ZHTHNOU3Fia1hmMjhOVmh6d3pDRWxLODlDRjRqUXUyeTFvSnNpcHU2ZkZsL0ZKb0JDdFhWdHZqM2VnQWZnaXB3aEpscjQ0VE9Nd1h6dlhLb3ZybVFyRzhrR1JqZStLNWp4dDdiU3NwQnBIU2thSUtZQTc3clJHdzIyTmhTWHo3Nm90amNxcTcyOHpkN2VhY2VJazhteFl5aTBjaTdsSmNMUEJFNVoyd0IyYXhzc2w0ODUvMjJoOS9mRi9ub1dWNG5NNnUyNElJN0QwTFE1b09pamRITlVpaCsrWXZ1WHZrUEk5d05wVHdOZTRtbExvUkZzL0ZjQnhTeVM1MS9MZVB5bThIRDNMWDRVaTU3aDBQeFBvUzlvN1dvbmZrOG5hRFU1NWR2RGFkZjZyYTBhRnQ4alFLSGV2OXhlM093TDdiOFRyaHgvZUNhc3JKcnhTTDc3REtXTy95Q0daZFVmUGk2U1NTWXZiSlA2WndJNmhyZGVwQUV4d3VHN3dyNEpRTm5nQThYdlNJbEtzNnVGMEFKdnRKVE4weEt3UEpieGF1dS9yak92amt1MDN5VncrN0FLRExkYW4vNm51bGx0Rk5rcEdjbG9VaGg2cGFaUjVTM1NQMERnN2daQmp5WlJzVWFLcDZmcmRqa2lEd04xUUYrcC81WitCQWtySVdRc1dDOGNhV0REODB4dUhBZXpZaklsN2x2TE02a1RWR2MrZlhsc3J3bFhkaGJINFMyeXJ2TUdqcVRITzVFQzdNV3A0ZmJkTkRlZU1PVnJUZFQreW1mdzY4K1g4QnNhbGU0T1Z2cjZSbk83MEZoMHd4K1JINWFucjhVSFVXR1BnRXZOZFNpWGpheHNmeTRqMlZ5bzZ3d2t2VzdUbmtsS29FY1NwbHBUcnNlc1liZE83Mkd2Y2RQREFEMVNBalZOZ2dRY1FFME1aRVdsT25jU1FINjgxZFJNSVhjeGVYSU9USGdRTlA2Y0VQSnZRMHB4YnN3TVh5SGZrSHZYdmJQTlJVYVR4REdBN3ZQK2YvZjVyUE5TTkt3MGZ1VGd6Umt6Mlh5dGFkNzdzZnRQd3hmeFJkRWFiek5RR2t6QnRhSURyTlVNcVRFR1ZsRUU1VEZQNThrV0lnU1N4Vmo4YSszWjBjallmaG1mY0ViQWFlS1lTRk1vTzkweWxPdHhZTmRNWGlLYW1EMUF6RVk1bVlJYW1IeXdGUTZnbVk0M2hVRWF5bVNGRDU3czAvOHI2UFllalBxRkkxSkpPaDhUclBVM2YycDNxcldmNDQ2ZDZROFA1WUhSUzRQakZ1cm1UZy9IdnMzZk1taGtRNEx5SU1BMmVmemgzLzAwcXl3T1JkV1ZyN1Z0bTFrU29OSmxwNUM1VnZvZlVhOFVXSEN4Wlc4OXRXOUd4WFNQQmZvMDRmSDA3a1MvZ1AvUHVqUVh6dU9wZXB5TlJrYjNrVEM4VlZxQ1A2UE5QV2ZKUWJ3c2lwYmN6cUdJczE3dGx2VWx4U0dhY1JRVDBCczJhamdDWWFqU1hmUVlPbWNoeTl6emt3OHI2RHNZOXFZNWZLZ1MzbDlwUnI0ZUJmaWU2S3BtZjN3dmV1M21Tbkh2L1FhWmdhQnV5VGtLd2htSGp5WDlLNllLT0cxQk1mSktpbzhLb3o0THl2aUpkWFdibjQwVmYwOGdVdlBxTGJyZXVIMUFXb2w1MjlGc0dVSHpKcys5bmJNblZ0STBOcm8xaXU2TmRBTXR5UG9RZDFsUDdyRmpwbnJ4OUE0YWZYME5HcTF3aWs2VFJwWlkrY0N4ZWlzOUVDQVd6eGZ2cEdaRWRwOENIcFF6NUtrWE5GZEFjOWZjNkRSQXl5cEZJejFBV0hMQS9tZFFFcFF6WGpLOUZDVkgwbzREaHJKQlNKWFQ5L3UwU1VNaXJhcUxuREM2RFZINUUxSko3RTRBWEJBWEhNMmhHRjZ2U2poQnNrVVFVS215SFRRZ2FUeEFCZGFNWkJldWUyY3FRK3g5V1JQaHBBaFNteFVPRTdaUWZ0UXI5Vm9zSElWaHpMWFQwZ1lhQjhMZnZUYkw3OFJNQTFacVF5WTBaSXFjQkx2S0l0Qm9XN3VuaEZXTE5zNmRTQUxXYkhINHE4K3o0ZmJVQytrUnZINWNOSS9TTkFxd3ZqdEpuY0xIaGFTTWtMemliVjA0VU1zVnlZYTBDdStKdW1KQUh2VFhPbllIa2RHOHpra2lvU0RTaWcxT0xwVHN1L3RSM0NsYnVWVC9QOTZkaU1BZWNqSFZ0elAwaFg1dmdjNytWZCtoTkZ0aXh1SHAvNnRpcG5SK2hFQ2FpTnBNdFg2VkcxVUV0LzRRZVRaeXo5dlBMckR4aHdFL0xWWEM3azhFcDNrUTZ4cFBib3RpUEhFS3RDSFZvbC9keGdnZ0RxQm5rdWs0OGFNVm1BZUY4T3kwSDMvNjNlU2JFTnBhNVZlc1YvN1ZvclhGWjdvNmU4UDl5Y09qSnlmQWYza0JhNzRoYXh3OHorN05rYkFsd0txY0NxTHhhM0tmZkdnNTRpNVNYblBrOEh4UFR1b1R2aGlVVXRmYUFyZXJjWkJ6emVmVU9lV1BkK3puSnpoYVRPcWRGMUJwZGN2dno0ajBFc2RZUDh2am1pZlRSaENuV0EyYWZpREhYTVVxVVgvRmN1dFNEblpKZk1lWCsrR1RkVEZ3TW10QTNkR3pIYmxSWjZ6Y01NNnVGUExVM1ovOXVyaTlPVDZiaGYzdVhmWVpuYU9vM1pQK2pwR3FwTUlQb1JIN2JCWW5tdFBuK3AxdjhqZkp4WmwzbFo1eXM5ZllTN2tTdHp1ZWNSNXh5ZXRMQmp0elR2WEpZOHNXMWE1T2FyN21FR3JQWkxFd2UzYmJtMHM4a0RXRmlBRTczdXN1V1MyeExXM0NNZUlNalhYTXl5V2c2Mnd6YVlRZmZwcDNMVXVoeS9NbllTYkJuUTE3YmVWOWpMdExjMmg5bDV1MjNJUkh2WW1TZDExeStUam9uaXIxYURDU0lMU2s5UnQ1VTBCelhsT0lxZEZVdTBKMEw3ZFB4cUJ0REpMOE41RVpPWTdwVDRsek9pVmZPc3NoRm4zcnFQU2NhZURrZTdEY0FSRFRZY2xnY1dqSUJFWEYvMklKM203YWJhN1hqU0JDVVNJdWpITmlqUTVETU1xUURranpsNis5eWhiN01qUS9GZkRzU09abGhnZ21Tc1RVaUpQT0hIQS8yMGRabEVybTA0ajhCSGwyRGYwazZERnI5VjFCLzNzNVA4bXlubXNtRkZKNFREQ21pWWtaN1dDM1FENmI5bXgzZ1lLYVRWYThKTmVMak1XdThRUFB0eGRuMmtKa2pVOElyYlFOSUY3UndIZDJCcUltWHYyY1BMc2JuQjdVRlNhbzNBRFVDSzBhM0dCVlpia3VBYWxZMkdpRjlBV1NOV1FYTWRaenZkUG05U3NxeEpPczFJN2wzejhrYVJiWmU2dndHWmdLZmxIY1FQY2dqVmt6aDRmWmxtaVZtTFdOL3Q0Z1dKYnQwTTZYalNmc3NnaEtZUTlZV1F4YUEreTVtUFhSTUZ0dmt4bnNINDJ3OFg0SGI5UlZYR2VzUitHTTdQQ0Q1emxzTzZXa0VtbFVUN3pycjVMVHkrQVU2aVMwV0U2WTdUUzdaL0wwSmt3ME0zY0FndTlES056L0RBMXJOY2p5Vld5YUx2S01sK2I5NUpWdlpnd1F6VjR0ZGNRNHE2TU9qQlc0UDhra1ZCZUJ6OUM3eWY5TlpiYXh1QWwyamc3RUlvS2hmSkVsTW9RTUVTNXhibnlWeFYvbExkeFFpdzY2MXErYVJzc3RaUXQ2Z0JiWE91cDN3MjhZeitVRWY4Tk5Lcll4RHZMNDV2VDI3M2RzYWo4c3JuYTErbnNjeERQemZvbGx2Z3JmRmpaLzFVV2w5ZUtkS3RVYU9yUjNIeHpiRWROVXR5czdCTjFwMDU0UysybVJSZVpqRmo5WEJaRExIVUUyVDN5V2tTV2RROEE3aTAweDdNa3ptSGRiVXIwZ2lzd0p5dnRHWmZVNWlobUVuR09XSm9lVG1mQXI2cmVRZnVMTmxVelNWaStaM3dFZXhWRGtVT3IzK1oyV1kwZHBUNktPNG9NcSs1SFZnZ3ovbDkveDZ1cXdNVDVUUmR1a1F1UmRRMXhRMHNxSlIzKzJpRTdTYTFzM1lXZHY5TUE1YnZJMG5oZHRIdGdYOXlIcmRJdnVFNy9SeGFoUW0wdXYxS1ViK2JwZjloOXc4bUNGS1J3ZkhQeWNjTE5BTldzYjBQblhYVmZSY3BKNzN6QVF5SWVCYVNMbUFDVFBWV1RTU3RKTDhFdGtNbEdmQUpqalRROGJ0dk43MUQvSTJPSDM3Nnl0bm4zOFdadjhGOTYzQ1JwZnlBZGUzaXd0cC9GcmZkRlp5VTFuc0NSWmhhVS8rK296RkZNUU9vY0JNSmVuVUJUZFVFYkhEWDFTemZxSURRckpSc2hZNE13em1lNFhWYzNIbGU3d1o3UkxZSmJyZVBKVGR2MlBJaE9UOC9RdWpEVUlHeVhLVmJHS3VHY0xVQlRqS2hEVUcrdzZESEFFZWVsUGFtb1llVW01NXB6ZWRvNjUyWld6azZjanc3NGkwYzFkQjdrUTJRVXpudU1CZ1BpczRqSUxNOE00UjBLYmNvbTVnVkZJU2NIRExoZWV0ZDRvLzNacUlEQ1VMOC9LaHNlNmpTUUc1NVVpaE1HSVVmZXFtSjN2UCt3eThGSnZ2MmtzQjR1TFB4MXJuY1RDK3dQT0IxMWVacTJ4N0tEekxqZ214Nm1QZGQrdGxrK0k5TWdqMzdSa01oWU1CbXluY1lGcWhYcFBHcUg4YmgwSE1McnNFWWRsRElBcVp1bXNTZWgybXl3TEhENDBXS0Y4amErRG1PUHFRTWd5Si9RTnNJRjAyUjA4K2JBRXdjZXdJWXh2WDNLOXpzZXlkQTdrMzZPNE9kNVB6NjI3dHVITXdTVWZ3dHgvV3dieStPd2pET0x3LzVsTjBPc3pMbmhZN2xDWmRxSE9DZCs2NDIxSVZleFJ1Q2VnSk1ZdWRzcHNuMmorQzhxWWVpelB5T2FYQVo5YkJhT25POUEyMUV2alBJQjc4UFkyVG9TNEQ2STUyRUdmQXA1QXpXMVZFNm9uKzREUXlOeXpHOXppRDNMM0JkSFNqS3JXemNiNUl1d1FZV0NRNTc1WU1MU3RrQU56cVFuY0taNUVMNTUwL3pFNTUxd1BsR2poT0RlMEhKRy93UUlFVGt5R1U0WmVWaWlMSjJZcFFwalIrbVhtbllIYVU4R0lFKzJjOTBuVVV1QUZsUnBGSDd5WjhkdWkwSEN5dVk4UGxJR2xEaXhFbnVOZFhIRHdwc3VwcVVLZG1uZDFDMlY0d1RzM3lIdVFVUGwrSCs4QzFMTzI4TWtkM2ZzN2lnb3ArSU10U2hYTzcrcTU5OVlwTHY5MHdEVVNkZEJ5QlRjenc3elg2eVN2aXo2Z2tFTGFNUitYWGVFSDZJVlp0LzZPWjI1NUVpaG44Y2hmU1NIRC85bFZQRGowRVRYM0dWYlpDdVZ0aFBidEVYbjdwOWI5SXJyLzc0OG1sYituWWw5YU44MXpJRnc5Tmo1VldvSDNoM2xlYlBhaE1SdVdYcTBkUFlVcDB1UDlTVld0UlROYi82ZVdQTWgrZjVNRy96K3R6R2swYnRjWkFKaloxZ2dPN0RFMytldHpjU0t2NkdBdXBwdnlCbTREeEpTY1p1WDhsN1hkaUt4VzloWU11bXNodkI3RUthRms3QlBwTEt6WmtUcW1oWUYxazBoZTN1bDlub1ltTXJRRkwzd05xQzA1M3UwdHU1MCsyS0dIWEw5c2ZEZWVqak9VaVlBVTNRbFF1dVhPTlNjUzlJbk5zUGdUSnZxMDBabmV5M0xqNFdYcms2azRjcmJnOGdpWDk1aDY5NW54UWM4RkxyQnRaQ2pjbnNPWk94cjMvTlYxUkI0dnY2QzdOUWV0OXdaN2xFYUR3UHJ5dHVzT0pkOVk0SFE2amNoc0p3ZDZtbVFSRFhLN1pCd1c4aURlc1JtZXhEaTlFNWpsL2JFQVFsWXJSZURxZUd5dVo5VXhqVUtPMWpkMzczZGV4T2VMVmZNZVNvUHpUZDJHUTBpQXpWbEpPTHg0WHlMVTgvajV5bVVMZm5aT2t5UVU4ZmNOeElKdHcyRnlkalZER1IvWVQyNFhhNW80Wm9pWlYrODM5T01DVEE1TWNDUUVEVi9YNHBxM3dWa29TL2UzVlhBU0J3elRTSDRmOGduNTJPMy9UN0dzYzdMSUJjQkFBRjJjODNBY2dWQ3oyMC9qZ3JXaThYU1JEVEYxV0hBT0p5eXpEZjBpM205YzBiSnRDc0c2WFdSUnVsMUNrbHJoRWUxKzNhMmlWTFI5U2NVcS95NTJ3bEdINENQUlJCY0tvSVNpRG5qclgxVmJNR3JJWDFQOHc3KytEYUl2SVdXV1c1QUZ5dG91cEg1dEtMVlRUQ0tmYmlDeWpQZFZkTGFGSXR4clkxRDd5LzFwMDBDVzV6d1RqTXRNTXZMWUdTZWd1ZjVwQnRMZUtRL1lXTHRRSlFaRjV4TUEvSXBUU29kM25Udm5sVnVvMGJDSkJaNk9xTGpHVFo2R25jTnNJTzlKdlNKRmoxdjhoYWFWZ0FEdXZmL0tCWC95WUE5Mk13ak4wcU95S3hySXpSajdCV1V2a0tSbCtzTmdES21uKzU2QTk4YWdDbmJzR1VFc2J3N0xneTNjcGwxOHJxQmFLc2R2VHQzNGJmS1ZNZWw2d0VJKzJSNGZFdmV5M3B5NlB6QUN1WXlhdHJ0VkdxTnBMYTUzZ2YwU1JhaWZUVlZ2dnEwMWZyYjJ5UFc5OUQ4cnF0dytqMllVZ2VpV1kyTlMvc29OdUFDREdkaTJSc0dzNzc0NThtbElkUU5OT3RjWWgya0FpQjltcG0wUW5KSTFWbWNuVFZCWXJyQkhDK1piZ2JkcTRmZjFpbjR0c2dGQ2lKSm91czhiVTFBRVgyd2lIYThaT2VRekxtQXJieUFBeUdYVDFxcFMxanVMNTJJU21xNi9RSEVwSisyVHp5YXM5UnFscXY1dFlyTC9SWklDL3JVOHZCNmlrdy9tTi95UWNtOTgwYnJRUmpCVzVyN1NkYlloZFdISUJ2VDYwUkhIL1o0SDZnQVV6dnByUzVXMVM5ZDZ2WGdYZWJlWTEzTzg4TFczNlZldmJickp6dWZ6SXlxVkdtUUQ2OWNnakJORUlnUk1LTGdJZXRXUkd1NXFyNVFMa2x1dnJtaXFpVjBFTGdxMUJJemF5MldYUVdDdWhvOWUwYUNGWFZjdm8rbDBySEhOVXlsZUJ4QzB4R0pheW5DcWdWMCtuVmtmalV5aGxGdUdrMFllbE9YUE1Sb29JVmxVQVlSVFVud2NGWFhjaTBINWtOUHhvd1FuN2tnbGtCbzZwRkNPOFNLd2F5bnE4aWdsM0xvaXQ1NFY2QkJCbmdvRHF1SnluamJJOFRxTWZpUlltSG9CQlBsTk1ESmNJQ1ZDOWdQcFlXYmNranVLdFJoVElhNHNpR1JWdGI1ZEk1RWh5Y0ZacEx3REpSM1N5Y2U2NUlPR01CZm8zbXd4Rmk0ck1HK0hlcXRacS9nQmFoS1pmTGxRb3A4cElLNjZyMDNub0NBZ0dEZ1BJQzQ4MkhMemcvQ1A2UXFmYVNVVm9LdHJWRGhjR2szd3ZMSnFiaHEyTXgrbURKS0tobzJrREh3TVRDeHNIRnc1ZENRSml5TDBscTY4a3BLRlA0SldYYWt5TmJEblVSMks1ZGg5UFdlNkhUb0Q1alprd1Y2SFZMbXhHZlBnL1lvTnVTZXo2TzIyMzV6eStUZWtkLzlMMDV1VFNHYVAxTTV3Yy91ZUlWdjVUblJ2TXJkODEzOG4xWTR6ZS8rSlhlYTIvMU1DaFFxRmlSRXRzWWxUSXBZMWFoWEtVcXIxU3JWYU5PZzNySFRHalNxRm1MTjk0NTRYZjc3UGVIdTI0NjRLQWpqanJua01QTzZ6THJqTE5PbFhodjNrSmp3cFNCR1hON2l0OTZ5N3c4NnIzbzlKMmhPdEt6V2FCOXlETmMwc25GMnVIdGpkMU85cEh5YzdWaGRYMTNaMlg3cFp5cnMzMGdCRjZUOVdUQkNUdGNmTEg3VVh1ekhod0hUU1ZCR1F1VmY5UkIxdmZIZlJvblNpVnFZZm1JakEraGtFdnRrTmY2RlNlZEVubXcxWTN4eGZpc1g1c3oiKSBmb3JtYXQoIndvZmYyIik7dW5pY29kZS1yYW5nZTp1KzA/Pyx1KzEzMSx1KzE1Mi0xNTMsdSsyYmItMDJiYyx1KzJjNix1KzJkYSx1KzJkYyx1KzIwMDAtMjA2Zix1KzIwNzQsdSsyMGFjLHUrMjEyMix1KzIyMTIsdSsyMjE1fUBmb250LWZhY2V7Zm9udC1mYW1pbHk6TW9udHNlcnJhdDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOmxvY2FsKCJNb250c2VycmF0IFJlZ3VsYXIiKSxsb2NhbCgiTW9udHNlcnJhdC1SZWd1bGFyIiksdXJsKCJkYXRhOmZvbnQvd29mZjI7YmFzZTY0LGQwOUdNZ0FCQUFBQUFFajhBQkVBQUFBQXNIUUFBRWlYQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHbGdiM213Y2lBZ0dZQUNFVkFpQlpBbWFiUkVJQ29HNFZJR2ZRd3VFRmdBQk5nSWtBNGdhQkNBRmhBZ0hpUllNZ1ZVYm9xQUgwTk4yOExqenhDQXpiYW1mWWJCdDBzUEdBY3pCLzJCbUllM2lwTzZSL2YrZmtweU00YUFPVTFXei94Vml0bG1XTU5UV1MrU1lUc3hWWmhRWXM3dGN0bUR2bmlrSjdncGZZUit3MEpWSy9HWTIxWUhCVzQvMUU3UUsyK2RzS3AwMm96Y2JGQTZGd25qakNNTUZiZlV5amY3emZtUmpHMDgwek80b1dGQW9iaFI1NFRwcHN6WmFUTXd3TDUvaUZhbFhDc1VXR1U5R1Nrd0NFWXZ2MEFsUFNoTm1wa2phWklwYjdMWlowWUczZ2xFOEZjTC83K01XZ1kwTEcrc2tMOG5EZnpycnUxV1NiSFUxcU1ldGFYUnIrdGdENVBrRWxDMUVHR1FNK1FZeEFuemdkTStHZjU0UHoyL3p6MzFCQ3hKRzRaTVNBNHhHeEtXUmZITnpheXNYV2UwaTNaOVFvaXIrQVNCaGdhSzc3TlNwdEdGTmhwSC91OS9yVFdWeTZqb0FMREFGN01DSUtZdjhQZ0VGako4dHozKy9INysxOTMxZkhLME1xYXNucXFVL2xFNXIzdkJTU1lGNEJ2aHQvcjhMbmR5cG00Um9vNElTZllnU0RvZURCdzRoSWFHRVNZaUpncjAwNWtxMzNVV2tOMXBjNU4vZXYrc2J1VnZ0YmtZQ0F2aGJwWnAxOTh3c0Z1QTV5bGliS2lLSk15QlpqSzRZb1NBSDRjSjNNZDlRNFVmUlJ3cFZEeEdNODY5dDJVMHBXTExTcHBLQjRBeWFrK0cycWJ6aktsMVNoUituVHhwcVlHVWhWWHB6bjRwUlFXVC90ODNhODJuUEovUHJ2cnVvc3NJS0ZVWXNwWjVtR2lTa2hDYWZEMkVBR1hKdmlYbUtIVHFyS2duaEJVZ0kxMEFEalFSTk96UEdudTdlV0p1RUh5Uy9XVFI3THI0Z2YrT1MrT0cvSE1zWG9FdXVSRnVtOFpWMVg2ajF2M1RhMzVYc3pMeS9DaFRkSWRlQnBoRVlMbEZZVGp3M0lUaVNXN3U5NDVZUUZlUkR0bEJYVWxFbXJHYVVEUnNDOU9DUWJOODlnallvSFJWMWlscGROWEk0QXY1L1gxWFhkejlJRXlSZENGYzZIYXBVTkVubmVGZE42ZjNzNzcvM2lGOGVQa0I4a0JLQXp3SUNLaWlVUkFCaEVlbUNENEE2QUFqYlZNazVwS3ZpbE5ZQVVMWnAwb1VXVTB1WlNwOUszN1BIWThaazNKdzV3N3BrMmVMLy85eC8ycnYvenAyWmxzK3dmUVZVS1FnellJdWF3YjdKZmUvbjUrOTFCemhEbkFLOUlVcFNSdUhHdGhxSWphaVIxWlVrVkN1TXI2dFFwdjdYbVpwclQwcFNvRktGSDhiV3RJZnR2Q25IZGtJOWJpcGQ5Z1dLVW1xeFFGQ29HT2FZUFEwK29lMEZJMWJ5aUlqZCtiNDUyVWV6UndzSkpmZllGb0lKd2dSampCSENDR0dFRi9xN1pUcVJnRmNkZk9mbTl4djVNTTZMaUtsZ0VTMmdXTGYzdjFrc1habkZVbG9LUmk0dUVKWEUrdmlWZnY4RFNtQUZRQ2JCY0VLNENFQ1lSU0tpUlNNc3JBaWJsb2hFeVloVW1Zai9GQ0RhcWtiVTZvbm9yUitDZ0tLWjl1aGJiNGRTb25vOXNCZ0pkOTZ3bWtnZ0JvaEd3SzgxeVV1aTBHOTZ1NWlJNnJFS3lDRFplR3RaSHpnQm1pUVAzZStOU2xVWVNHL05Ranhlb004RGU1bXRhcGdKNUdna291bDFUZU1VN1NhZDBSTnFMY3g2d0htdGpxdFZLZmJRbXVaakx2VStDdUkwTnZ1bHp3RzlSWCt0RzBEcnVCckpBeSt3Q21ZSjRxb0J2eEMrSWt0S2lvMWVGV0lmWm5lN0V4alcxdHE1WFZwTHNWK3NST1lhSndJREJHWC9EMEtOM2pTcUVGQU1ZWlJBTXZJSGYvR001N3pnWlZuakQvNGcrWXUvYUR6akdaVVh2S0Qyc3BkbHlidTlRV25KWWIzV3RsMFRVenRtZjdabHR0cEtkR1JNaWE1YWM0aVZheHMyMGFvSjlneTJnSVBGS3pyclUxZUEvQTBFQTdhRjVhNmt1QTlNSTc4dWhQcUhXRGZISk1mY0l0ZEpPYlNjaUJvQ3I4czE1SWw4R0w2T0dQV2pKR2Z6MnVEdG1kQ2pPMWtETndlazl1YXlYTU1Ia0FQbGdHUEZaQXFNRzVhRnUzQTI0M3h6V1dFSjhMd1Uxd1RGeHNtS2VDY2NIZUtvR2dhV2szbGpoTm01Lzk3VTF0TTRUZUYxTFNPcHhyNERvTllSZk4xQnF4NFNRZFdObDJibm92SzhQWDFxekRSbHJpa2tvNWNjUDREYW5KRWVmbjIxL1pMUk9wenUwalpSOUpSV3pqMzZBNi9qUVVwR3JtcFFpZXJORWVVTDZQSkQ1TStnWmwyejJRalRCRTBSQ1NoUnRMRnRxWklzdTY2cFNkVkw3TGRzK3oxUzNJUk9lSXQ1M0pYYnA4ZC9jVHVEQ3BHdktab2xXY3kvZ3JjUS9HWWNkeHduV3prZXRXTUh4U0xQbG81YnozVll6RStBLyt1L0VLWW5UZlN1Qm1neFRkeTFYdVhJYUNNZVhVd2pqcHUzQVF2L1pibndIU21IekhzeWVYMUE4djlVSGd3cEYrWVFYK3NhY0VCY0o5NjV6Qld1VGVoeUlNNG5pRzlPQmtRTUVLZk1GSXlWbUZMUksvbExnOFBSYUlyM21aYXZDZVllTndtL2tvdHN5Y2Q5RGwvd2RhMXYrWloxMy9FZGgzelA5MHo4eUc5dCtLdS9PK0tmL21ubVNVK2FTejdoQ3NleFdEQ0h3MENBbHNzVENHQ2hDQ0FCQ1JnRE1HSXhuNHNkUHBxeDBma2FCc0FGTVpMZzJ6MkZIT3lIWHFyVEs3WGJpREJlc1VET2ZrYXdpOGpNdkdWaFdlRlQ0TzYwT01URlBIVDhDTVFiY3hrQ2dlVFlscS9DaWI2a29hT3JWWDBEUzI0QmE4SldCMlVsZnJpMU5ob0dTcERJcWhXanc3UGZUMCtBK3FwTXhaK000dFlXcFlZUktsc2VNYmN0RnBicjE2dnNjWmpJSjZoZWxKVDQzbklqbFE1NnEvTWpyOFhIMkRmdFQ1d2pzYUw3NkVvOFJXbXBJUDY5NzRrMzFjWXRrRnBLNUxvTnBSYjFuRFpiWkVWZFN0blRwV0dEOXFLTis2TytOTDljK2toeUpteWtheEs3UU9OSE9TMFRhRzBGT1FxaG9LNmZVQlI4cktDUVNHbk9MMDlvbmlDV1FMd21xa1NNSUxwSm83RWVycW02YTBMcmk4OVd3Z3lSa2ZlVW9tUWk5YStGZFVudUlUUSs2aVY5RUh3NElqNTRxUVYrM3N6OWliYkdrVEQ2MEVXcnFvWlJSN2xBcFFsSjZmcU5TTk8vZVlseU0rdFRqWEh3TVZxRVQ0Q0hEZGtZTkI4L3p1a1ZzdGhnZHgzSXRDdk1RYk9Ua0x2MjBBSUFHQnVMOTRENFlIcUg0VGpIVkhncDdCUUJnY3hvRE1jNk5BaWNGckdBNGpnbGhUMFluQWJCTHlsd0VWOXVYSVZ4RnNLRmh0NWJ0Q1dreGNhUjlBUXlkZkduZE9TSTQwV3RYZnl3NEhQSHpVQTgrRm44b3NmNThDQ3VvK0tGQUpoaWxIQkxkZWZOU0Y1M3d3bEY4UnVtaVArcDd1SlMxV0w5U2lFaU1XQlRpVG9qVFhmWUdEM3NzWXZSZU9rOXRQeENwUGlGZjZzUWhraEJPSC9xbTRXSUVzMGlsbDIyUEFVcURUTFlhdHZ0dHNjNUY5eHdDeVVQS3g4MGR0UGJ3K2dBMWlHc1cvUm9lZFR5eWJRbXg1TTlVaDV1WjdRYUdvZ1dnTG9KQzNCVDVIQjFGSmpBdW5zTGpFSHNCbWRZdmZzMlJzU2F1Umh0QlVKdGVlekg5cDdZU2tYak5lcTBkenlMa2pLYnNyR29wUzhZS0ZjZUdiaUlBdHF5Q3hxbkdqWHJvTHU1aXNENmxhNWx5N09wTDgzNnJKY0taZmRrK0liaktMaTZaWHJoYWR2U0VqYmNib05VQ2NLdElFUHhKbTdQemJPRXFxZ0preW05Nm9hVmNyMVRHaDhKUllyV0d1b2dsZlZzdGthZDdLbXhLVkhrdFg0cWtFckRSRnFkc1Z5NFE0Z0pWaTg0azBTSG9hb1UyQUhOc0tVS2RSa3hGMlp4SldKUklRM1pWVVN2WUVnR3FxRWVveGJ2T2hoRHQyblYrY21PeHRpam9LalFsTVJvM3JUNnJ0QTRHbXRiVkRSS1g0dkwzSjFYZis1aU1Ja1NrM2hCV3B2OTFNU2lEUkd0b3pOQnRKYnJaVEFUcFZISW9MS3pWNGhyV2s4aGw4WTVZRkdLQktGY003cXlmMzAwa3hyUThudUdiZldEcXliRVprMnplS2pQMXE1SHFOSVgwc2JDVXJjMmFsQmMwbUZqc3FwQlFnM3RZZ3VvRjd0UnAzWGRsdkcreiszTEhWNzVBNjFVWUdaSzd3emRNb3g4MjAvdjI4bktvUnNhSURuZm5JOHNOMXByWXk5TjR0RzZBaTA3NG9JdGhQSHhGSGhvR1BDRm1rNTI1eDBJRHg0ZHhTRmpRa3l6WmZFVEI2Q3ZPb00zWnR5T1dPUjFzd2pIcGliTHdDeU1EeEU3ZVRjMmxhMlJpY3BDdDVDdU1ZQm1LaVd5ZFlESWJ4K0tqWlpHSUtvb2p2WEcyQ05LenNoVDdjTnR2cnd0d0QzSlJPajFPT0VTK2pqa0xBTTdRaVVSYk5RYURQQ1QxdWVOZVpodVJuaE9HcG9iNTVxYWFocWsxZVVZS2dKOGdvMk9NeTFXcmFyTXJsNXZVellZMFp4d1NaVXZuWW9UeCtxcGhMMTh2amVvSnVRb1V2b2l3RkJTc0NCMUxIWHUxV0IycEFBZjVxR3hkRHRBS0tRTWNpYjdZUkdYbWhsS0JkT3lhQi9UTkZWNWI0S2RSc1FIVytiRVB5VlNJemUzb0ljLzZURGVLSlVYcXdTTlRhVzI3YWltSkNOQUEzSFJCelVpc3BBNFEwOWRwZXhRcXJRanE3VE1yVDRwSnBZdWpEY21WM1FsSHl3cXRKY202Z3N6VUVVMVcwMlZjemU5b1pIZVZpVGRUVFh2Y2gyVVpYK21NK1hmMkVsYU8zVWNkcENmUmprd3hhbDhsVW1ndHNPUkxRM1FRWW1NTkJMc0JUbFd5d1VUZllwdVBTZG42TFFoY1pCTkpNdEoxamJNRjY0UkNuanRiTHQxaWEvYU1GUGxuSXowNVNWSFBKRUg4OW9tdEV6YTRYRXRxL3VvWFcrWExhdEJpZ01QZWRvaVc0RllsZjhsbXF2VFhRdjk5SmZzbWh0U1BmVlVodWVleS9UU1MzYXZ2ZkZmSzJLV2ZENERSU0dCRUJaaFBGektrTWtRdVp5bE1HZHJOSmhXeTlIcHVCWWttN0xtMmRnd2JHMzVkbllpZTN1ZWd3UHE2Q2h3Y2hJNnU4WGN1Y2M5ZUJCNzlFUjQ5aXp4NGdVcml3Y1BIamk2Mk10ZjdQQTNtLzV1NWg5cWhmSmdNV1Bad3hhVFpSaXUrNmJkdzFHdzduTGtYVXNHQWpETllsL2V4ZFYwd2JmaTZ3WVR0MDUzSG9ITEE4M29McnBkaXlxdWJuUUwrZ2xTMzFIQTBMT0h2K2VPRWJaYW9iVkJqZUxmeEZpQ05IMFFBSWRsUmFuQ2sxK1U1NXpUOGhzNzBMcFg1STVQRldhZEZKamdCR2dmQVZnTnhQeVA0Z1JrSzRrTkRQUGgzSlJCV3FxYUNjQ29IZTA4NzMyM3lZaUNFb1dlZitaenN6VS9saXR3R01UdERneFVERk1RMHllelBzc3BYZmp3Wkc2V2gxYnRRcUNkV1l4dER5VllWeThrUGROeUZia3RKUWxETEVDU3lJMGt2QjJrNkFTUWlFaE5Qa1FMQnhsS3lZcDNIWjdtUzVCQUoxRXlYOHBrZVZvblcydDZCWlZXVysxTzFsN0hlM1pTUnFZYzA2c3duVXFUcVRLOWFuTlVZenExRXNyUXJnWTk5Q1RTaTdSWWIzMko5QnYwTmNCQXd0RkNLVEFNY3pIY2ZJd3d6a2h6TXNiVVZwdkFtclRjV3VzNFc1OVcybUFqTjV0TVphdTUyV2J1dHFjOTdMQ1RsMTJtdE51ODdUR05BNlp3eUJTT3BGMGRkNUt6MCtic3JMazViNTR1bXFkTDV1WktsTWxvY1l1MHQ5dnVjSFl2N2V5eEo1dzlOYjNua29qcHAwdFFPbUxBRzlVZ2pNeCs5KzlFMURUemc0cG8vV1VwQW1xOHlFa0MyR25uSTA4RzZubE1PK3VvcWFrWXB6czFtbXArTUpGUUVDRG80Y3kyRk1pYXNTTXdJckNBTkJteTVKRXZBZkZVU1VXNUZEUlRRWlVVQkZNbEJhbmk2S1NPZXVwb0lOZVZEVFUwYzNTaWhqNmx6R2lQdnRUZU5zNDRTaThSU0U0cVhTbWxLOTI4KzBGMFVrdXh4RVNXY3FkY2pxNlVPNE1jU1MxZG5TTjZVRnRjNEtFZUJOTlZxdWFUaEdiUm12bFFDZG1VVTA2NUZHMWF1bmpoSnZUU25MMzlPQWRVbFlhQjZwM3JHMFVhUXRZVFpoWTRTTmxWNmE0M0ZmcGY1eWFLRzBvUnhQY083S0xFbTc1dktReWdCZENaejdrdlpJK2xNUXB4T3d1Vmo4ZkRPeGNpdk5mVElwZkRUWDc2dFhYVStLWnZSaTlLL0hSelpnalhFOFFzNTlGUHBxRVh0MERwNi9YUmtqWGpELzdyK1R4c3Z1aHhGOTU1eGpMdmU5TFB1UThqeEcySVlrSmtlRE53eUU4Y3ZObUwva0dCSTUveXF5UUR4VjduOE8wS3hQbE85YUFEMkhnekd5WE16aUJQTEJxUGRYRndGamJoMUZOUHdSYjYrNnZCYlA2U0FVcXNBUU1nZmVQeGN3S2VKMDdtQjRwc2dxaC9wT3UyNGI0ek5ReDM5UDYwNGVlV0hMVDlhYitPUUx4di8vMHdXSEcxWEJzN2ExTHd4ZVB5OHRIUk1waWk1YytwTTFFUnNrY1hYQ0M3SStIcW1OT2Zja0hsaDhKMk0xVExIWEZTTmNJTzlqblVjQURjSHk5a2xCaytwdWZ4RlhheDkwaVYwd0hHSVlmYkN3Z3Y1VGVZQlY2Q0ZaY2N1UXlEd0F5NGtEVXFPMURzc0QzczdUVWNNdW4yTERNQ05HblJwc05JbWFKckYzUGVlTk5UeFZXU3ppZHZmUEttcDNMckVIWk56ZWFEZzJjTzNqbFZ5clZLd1JTWFNqRXhWS0ovTkp4eGVQeWJpdjlIRTJicGNubnVoZHlLVzJrekV4cFp6eGFOZTJORllRbmxZc3QveUdZUEtXOHl6RlpuTXp5L0lDck43WEdkYzJZUllNMEd6QkNibDVmeEkyS0I0bkMyeFhJWHg3eU1JMTZ3SW94WEdkcGFLTnFMTXNrK3ZlRkx4Mzc1emhEaWJ6aTB5OXpvaUIzSGRURWNxWENadmNBMDdRcjNBd3ZzbUNpZ1EzQ01oVWxOZUI1Z1AvWFRIb3dtY2M5SHNoYkR5Mk43S2RId3NycnpTQ2kxNkRwTXZMeW91VmpsY1dQM1FBY2N3enFVblMzbTIyNjJPUmd2YXBNbFNpNnFCNUJ0UzdCNTNsdkJXd3lKcDRSTVV5VGo0REdobU9maHZTdXRVSEpPVkVVdWUySVRXREhtQ3pSREtIWWE5eGdrT2ttMkw3M1cwYXhwVFFtWnV5bHc0RUJ4V0JmS0s1RnAyN0pJT1JnWXVGZGhRRmx0U1I2TmtXb2l5Q3RmSmRQY2o5cmNiUWN6dFpLVjVJVGxGb0laTzFGNVJmM29LN0xHbER3Z2laY2tQbURpZDhZM2MzcTJ0UWlZNTNpZHRjTXZ0a0NOYmgzWHhobXN3WGdoRXdkUk14TjB1cXp4QUxrTHRDVnpkaldVbjlXUHQ3eXlpMFZWM2pKeEtEWVNVdWk0WW9MTHJrSjZZdEhYWEl3UGZpeU9JOFhNZXFWd2ZiVTZScjNqOFJ1YVdDbzkzREgrTTNQU0Q1K05IVHdzaTFKYkZWU3ExTkxxb1M5ZkF3MWtjc1VWWm9STlU3d2xra3p1YWxBSVhIOGFqQ0M4QXRDYjZrNWtGYlQyNFh4TkxaWnRnb1NZaU0xSTZwRkN3RUtwcHhIYXRIczRnbldYSSs4S1EzZ0RPTlB5dVR5NG1PNkN4Unl1RzFhSm1lNE1CTXVCWm5RWGlkY2lLSzUyRWJ6QWZZSUg5NDRuMkFMOU93WDJTYmx4SmVMUGl6TWhpYmVxd3RCZ2ZJNlZud2l3U2s3Qmw3djR6SXhWZjNjZVZqZ1pZQVlLbUk1M3BLVHFPSUpWWEFJNmh3QldnNWhSazVFOUhZcWVVeFM4Wm4vK2o3WFRNRFphNFYrcW90OTlmVUxNaVlFWi82WlhiaU9zTjlRcEk5SnVKTmFwYlIvWUMxT3JIb2RjOC91L0RFMGQvL0kxR09mSGllckg1THVwR3BvREs5V01qNG9oNVVyMGc3T3paTnh3L00vTzQ4aWRqNEN6ODhsNTBBZzh1NENDSnkzVGI0T1FraGNkczZBM0hkTXhudXZCL3lmeXVZRG1GbkhlMHEwVGVIeG5jMFFvbzJsakM2YlFma3ZJZTc4ZUwyajdxU0FSZ0lxUWlCZ2tBZkpJeUpJaVNKTTVrRStHazJIcVVwMjIwbmEyZlJ4ajdLbkFEQW9RYWhTZlFHNkxRMUYvb1Q4SzBoUjN1WGd3S0tKREk3aG92bmRnRlZHN0lOeWxnZ3k0cHJYM0trT2NsTXpnWVYxKzluNktrZWl3TVVUQmJwaEE5VktYbEkxRkE0cko0WkRRdlR4VTV3bFVmTHdaOFBYa015MkNHbkQzKzRvVUhva0JsNXh0SUVvN0JHSFBnYVpMcGVUWWh4em5ydzBHZEdRV2dENC9kY2FiWUtKSkpwdGlxbW1tbTJFdlFvYWhZOVBKVExQTU5zZGM4OHkzd0VLTHJNWGtRWm1NaGZ6aHRnTDNmRHgzU0s4U210aC9XY0c0dG5yWGV1eWgzWWpETUx0S254NFdVRDhXS1lkOERNaXIxSDV3Z0FZWllIR1BSajZ6bU53RW5NTmhTTUdxSURFR2FpVER5ZTdKM3UzOTYzak9uVk56R3M3QVdiZ1dwTzZrOVdhRnhxbXhrYkNLRTh4aWNVS1NoVjJNNDF3NXo3VmpPS3I3b1g0WUNDMXczclo1VTNqeUd6ejU0Y21KSjZlZXJQOXc4RVBqbzFNUGo0SUFUb1BiWFlUMFlZRDAvbWRXRVUvZFpJY3RybzJPLzM4eU94MTJ4R3EzYlhEY1ZydXR0OHREOXoyd3pYTU1DUWN5Y3M1Y3VIS2o1bzNqUTBNbmtGbVFZQ0ZDUllrV3c4THFvRFVPK1dCUGVMQkprQ2haS3J2L1pNbFdvSzEyMnV1Z2szS1ZxbFNyVmFlSG5ucnByWi85M2puZ3NjczJ1K0tHcTI1NjcxVll2RGJJU1UrYzhDWjh2UFhJRWt0RDRhbVgxb2JHWW9PZHN0SUtxMnh2b001azhkaGN2bEFxSmlUbVNwVWFJMDBHbzdXbC8vcmoxc1VWb3lMRU1xblJUTHdtV21pcXVaYVNaRXFUTGtOcnVmTGtTOUZSc2M0S2xTcHlUNG51dXVpcW16NHE5QldnekRGSG5YUGVXYS9jNmNoR2VIbVZlUTBJbTQ3T255cW1ZV0xDRURIcDJ2bXpKWk1ZMWNzbU5rbngrYzlQUlY1TjJ4STc4NCt1ei9pWjdiYkZudlF5aVNlOTNiaWo4K2J5QlVyWWd2QVQzeXV3K3cvQ2gzWnB2WDN5dkc0NXZZY0Ywazg4c2NiL2ptdkpwekl4MWhKK1FmaVNkQU1nREs0aUFydGtVUkVETS9BTEpQSFRNSGwvMms5N1drOXZhYWllZlBaV3JFay9CNzkvZFBScE5YZmh2dS8rWFpHUnZYSEdTYTBiM0JPTzZoR0Z2dWlIQmRLNytJMDhKWnpVTHF4Nlg4SXR1bTBMZXB2YkVDczlUZ2svOUlSdjBVTzAwVWhva3B1WCtJKzU2V0haZjZiTFZHZFJpV3h1SVlUdisva2JWdEVBZXBCb25JRW1qenpONEdnRlo2eWRhTnFzU1VVQ3NXSXh5MmJtVUVyNGN4cDZ5Wk9QZHJMMzByamJnSTlJdzN6ZmxpMGY2d05KUFBiaHlNUVQ5YUpXRzc4KzlWSTFnbUM0UlRpMUNkb3NCc0J5Ulpac2s2Q0FJQ0tST0Zzd0pWYyttbmNWc0FFeUV5bW4vNGpMd21JVDBFR0JOM1RwcFRrWTdCN1l1OGRXVThnMWE4N3A5ZUJISnI2UkpCclFKNWxxa1VwWGgwb0QrTUtyVzBzSWMxbWp6cTc3VXZ5bUhxb0tnS3dab29TWjhvUGZzZHBiSTFZZld4Z1dJT05LelQ5bjlGWU1vV1RnUU1DZHB1SWVDMDRaZm9FZlFwaGFNUUxJeEZFTy80akxrMHdac1VKT0k5NXdFTW1NREx0blBwT2kwN3NNU3ZueFFYekxzZDg5UGZNWXF5eWlaWXdNckQyWDJUS0NLSFdNVEptSllYVTVPSWR3R05GQ1FFT3RtZ1dYVEtJdXZjT1F2ZUhkU29uancybnFFQlluZWhsUkJoeExURVJQQmpYbG9ydzVNOENHZEVRa3ZBN0k4MkptZ2FVTStMWXpUeFljZXRMbG5VMC8wRTRjQWxINk81NHN3OUREcGQvbnVMSGhYNHZ0SGEyWUlJTW9LcWJJcUVDWmdGRXVHS2dRQ0pvSkppb0ZDMVdDaldyQlFYUEI3VjVCWkY2VlZySjc1Z1UxMGZmb3dESi9YVkdYMWZ5dHVha2JhLzVmcUJzc01URGVvSVVHT2hCWWdFQVBBaElFRkFnTUlEQ0N3QklFSnBEd0ZtaE1GTzBTQStNRXJkeDVxMFlaTmVyV1RpTjdjR2VqZkxmMkE0QnhkZzJHSks1SitNeTlWaldjb3lNN0RXWGFyNjFzT2g3dTJmUVhlLzlVT2VRbjBZeWhQbndHWGxIZGRjRVNHT2VKenlBeU9yS1d6UXJaTHdEYytrN1c4dG1uZkQ1ZnJrQ0RNZTArd3BjRWxwRWIxRGVhOVV6ZHdtR0R2V0xxOER0azdCYjNVUE1BUVRwSVpEdTlHOHNRaS9BVDQyV0hCemZjZW5UeDZtT2FlQTlDUm80OVJFY0s0OHVldTVkMVdjelRQZ0JOdXNmcmVHaEgzUmMrOGNlQkdBQi9IMGFHNjJQL0V4OVhPN1BFNG1xcExyVEdIU0pKNURZWjZYMFNqbEUxaERjMitWVEFERE9od1RqVE1sNFZjNmtodEdWRXYxcFJBSklvbzdobWhBNUh4RW9waHYwR1pFNEpvakpwaVNMOHBzWXBJMFNBSkhMRWxRQ3JCaFk4MC9ESTJyb2U1YURBMDJGRzRKTm16VjMzNUtWVEo0OHdHWkJvMFBWY1RobGhVc2FmVlg3c2F6UmlqZU5NQlUwYXFmUlkraWpZamhHWUFyTmFlcXVtMUdEdStTOVV1S2dxTlN3ak1yTHJVRy9zRllKYWduaWFtZE1mbVJQMWFMVE9lNThVa2JVL3VQMFRjelMrYnBjejh0UDlZY2w3RzZ6L1J5VWZMSFdHMk5jQnBudTRCQkxXM0dlakwza2hzMDFubExvdjB0T01iWEkxVU5DZ2xyVytnMTh1czVQSEhmd2VOdWQvaXJFRkUzNUlDSHZ5UnRhTXRaVU9xelNpcjNURGZTRVI1YXNQYkRxczVMZ2dBL3Z3TldjNjV2VUJuRnUrNHJOZTd4dnk5Y2czeWd6bzV1RU55TitNSzNjcit0WWxRZFlMYW95U1RDV2xmN3MwWmh3UXo0VHZsQU5yQkxkeWlBZ0VSUnNBeEFTQzRqYkJiWkFRQ0VvMkFFZ0pKREdOYlFJM01jaFlDTW8yQXNoWkNNb2ZLMGhRc0JCVWJBUlFzaEMxakE5dUVTb2tRZFVHQURXQm9McE5jRHMwQklLYURRQmFBdUZ0bXVCbVM0ZWtxTnNJWU5BalVSOWtBQU1TTnp3Q1lFUnkxeGhieEtJOFRiN00yMnlSeVJUVzBabkFRd0xieU53WnFYY0xENWNldDFvaXNUMWluY1Jxa3dTZ2JScXVzZXRmdTczSEhUekZzUjFyeFNteDRweFljVW1zdVBhQnUzbmMzVk04OE5nNFBKTTR2Skk0dkpNNGZQckFmVDN1NTludWoyMUtobHJNamtCNmUwWHh4M1JQKzZmbnZ5MExCSW5XQlVnRklQZmcvOERhQWpiK0F2WDNvRm9CWnY5QUFjaHhPOHR6SEkxRWV3ekVYZTFyWGpTMnpkTjI1UEQyU0k4dnJtQ3phWGR3Nml5bjRINWk5VWJhaTE2UjB3Z1NlaCtoZmR2UEFNSkpLelV0M09VeUFMT3R4WDI1eTlzMjlTSmR5VDhPU2ljNGkxWVNvejU3VWlSMW50cmY4cStQMUczai9YaHhkd3hHSXRlcGZaOTZEU1dNV29ISG1QQjlOM0FyeHR5dEU5c0JkVDFDR0ttOG5lc0wxZ2ltd3NMT1c1YVFpQktaTUd6WVROeEZnOVc2U0pKQldFbmtZelNMbExPS09xcnEwQzBwWFRDUGVFVVZsVmVibTROYUZwSFNKVEVoU2pUNVNVMit2YlFpaENhMHJlT0VJZmRaVnRSWG05czlVN2E5TDNNSzVhT0UwQkFscFpXWHA4K3NvVzU0alJtckdmVzRMSUlJeHZRcFhKS1V2R05PMEE3Yi90M005RTl0RWZPMFRwbEljZzNzV0dROUtmSGxNSE5Ja1VGSzJob2kzNVh6SlZZaEk1TlUycW9temhpVTBuaFE5c2VRUEtvMWJqUEcwNlNXOC91bnBRUmZxWWRQektjckZCY0lhSlpZVlpBY3M0SFE2MGlGak41MVZ6NVpFUW8yc1h5U1UwcTZwOUFiSFJxb3lOTFFYTllSNk9lcnZxcElVOEtRdnNTZVNSVlJqeXVyb0NvWnBOYnJDRldpV25kNWFwS2x2UFl0TDBRcUkwcnJQbkVNMDcyZXN2RTdKTEFab1JyK1hoQStFQVR2VFNkQy91eGg0a0x2T01MSVBualhVQXJWK3VsL2J0S0hOSExzUFUyWmRMdXAxZGMrSmRBTG93a2w2NEp1TjRIcG9XaXJBZUIzRkF0NG1NdUZ5Q0hvR05WSVkrbTNJSy9ZVzZrdGdWcXVTYTVmaTVMUnhzWHU3RG14Q0x3WVIrTWNxYW9naU9yM3k2cWpiSkZVSW9jUzY5bEVuWG55R1Qwekd1a0dWNDZRZUs5QVFuQkdTQWtSRnFsVDM5Ukk2bXJ1TmFNSUU1emQrWDlBR1lBYVI5bnZ5Z25Femd6THlRU05CVy8yZjlmT2tSTUdDYVRiNEF1WjVLUUpIMUdxbUZhc1YwdnVRQmFUaC9lTzJVblFETzZmd0UvWnBrT2NzS1Y5YVFPTnAvd0dsWjdoRHpLeThHS05lR1IwZXB1MlNXTDFGanFocUwxT2RjNVlZbzBZOVI1cThQTERhU0FtU0dnUUhCQWh0WEp2eU1KdEVrZjd3cW9lOXhZM1NMcEZvb2NLbDJzeTRtRHQ4bkZOTG03MHB2cDQ5TjlUNUZDSTlhVEJqRTdFL3libXRvZ0laL3YybVY2QmlnV3VzTTdYWm5iZEsrSmsvWmxaTDV4b1p0SmYvWXFzcDlNNVY5K3hMSmJFNmMzU1d2Znd6bjVEYUFFLzdzQmUrNmVTMVltaTdtN01YVmkyUXFLeWZsZDFPdkQzWWJzbTVnYjhtUTV4SVVuUElaRFExT3NEWmR1bEd1V3MzVFkvNDlkREYrd0xqcGpHbTlybVhyNW9mUDJLTmIwUnh6a00yMFRjWnN0aE05cVdZTlgzZVBWcWFxQTFPSG9hcVNBbFBCb3hxTkxsVnFrd3FobmN6S29tWXc2UmRVY1pkWVVlU3A1Y2Z2amNSakk1ak04cFF2b1ZxVHdIaDkxS28wRjUvbzhrVXM5TTRBdVRYUjBoaURycW5LODcwdW1CMjlJZ3BadlR6eWE3cGdKVUhUNFN6RG9RUkVtQUt3MkJaWWVMeGcxU3B0dVJNektNL2FFbXZmeVNKV0JJejE0OEpaQlVCUEVkMlNNZUxRN3EyN2ZHT2laZ0lreXlycjFITmc1R0c1WDVsNjFZTWplS3BBVmRpV0FXSGxHUnl2cFg1VnVTYzkyRlVrM3hlMmQ2a0wzcE9UcStVc1g2Qi84cEpzYUlKQVFJRlRjR0VlY0laMEtpNThoQmNKUlMvT0hDdmFkUnpHM25kajk0MEZtMWRCMzhEdkVvZ25peGFUd0R1eTAzR1V3U2JWRGQ2SkVtK2IzME82ZDdEaGZ2RDBZazBIRitCeDZhV0xxb0lYRzVJZDRHdmkvdFBWdXVKTUVmaUNRbjRGckxPTUV4VndoN0piT1puT1V2TzdtajJ5SXBHOG44QTM5eGQ1S2tVaVNUQUhIYy9VbDVlOUdFczYzeXlWMk9JSURqdzA4OG5lNWVqRGczbVV6SXBBK05naHZaOUJIQVRPMEdkUHNPUGJtZU0ydVdQVWQzL09HVk5QU2VQLzJoRHBnTWE2RndIa3lwL2tRbjd3TWhLckNlMjRXd2wrb2ZJUDFqbG42N2JxOEQ4Z2tUMGlpQ2tnVVJOL3JWZ0x4TGwxK3l6ZlZnbnhPQ05GQmNwb1FuMlNKSzFwZUhMZFVyZUhRWURKWVZHNXdEMXh5cDVZSFZUeXIrZ09NdnpyVGdPRFpicHFnOEg2NjRYTU9DdGV6TEpPZUxHVGVEKzBma0drRkVIK1dGWUxxcm51MGQweE45R2xYUjNrajRMc0h5dWNhak03UlFIRXVKQzE3RUxvZmM1MDRVMEtNS1JwWTdnYytTOWthakcrKzYxaXZMYUdTRE1ZbHBka3dwSnQ0NGNCK256NkpnQ29od0NONzFWcTZzK2QyTHhOMm9RV29IdUlTYkEwV2NubXpCYzdDVEJYNkZBakdQQ2ZUZ2dUQUUrS3E1eXVIeXZvV1lPQTRUcy9LNVdjakNYazZCNHNrUUpxTWdhTFRMTWxRcUtzcUZWMXBHeTZRS2o3cFNJbEJsdWpwalJYRTZmUlZURzZ4TS80dVE1TndOSWlXdThKQVRqZjV3OCtRZUo5RHZycVZNaHFMMjM4cko5dEc5UFNIM0lTTDloQWMwTFlnbXpRNkhZWW9OK3ZoTjYrenlDZUxWVUZGcW5SYmJ5NGgzYmZBOTg5MjlNVzRNQ2h2ZFMrS3dGMHVNTUxJUXhyaWNhcmc4akxLWnQyYWpjOWJ5ZGxmazBmenJmWk9EQ0orN2Z5Yjk4ekhhZXk4eVQ0dC90ejZic3FveXVGR205bVRhenVLSUhObEw3cGRqRFBhV1JYYTl4czQzQWF0MG1qQ0RMb2N4MlNUb3hWYkVJb2h6OUozaTh6TWZwckwrdFd5aGhFMktiTmtoNnJ2cEdydFJKOXpHeDFPenRoeW5MUk5rS09xLzczZkVmaEUvY3FGZzVOSFdYK1NQRXRjVi9wckd0UWFwa1puQmZ5UmpReWtMdytGWk94S2dqa3M0Z1gvWS9aMXNUUkxHSEh1R2FweFUyRTV1TGl3NU9wclh3dGhaL014YTl3K1g2K0hTcURQajlobVRLcUVmSSthT1gwLzB3ZnVSa1dxOURJSnppYUt1R2RQcFJDYTQvWTlXVmV0QzNZdGpTNzRaaFR0clVIZGw3V2o5YW1pV0hWL3BjOG9rRmx3SDRkOFBIQjVRcVJUemNzVFZkU3A0NU1KdmkzNVRTSk5YZXZ5SEE0RjZZUjRuUEdIekNIQi96bXBiWmw5ak1JN1liR0dlYXd6MjVSYjczUDFSZ1prZFRSUjBubkw3OWdlREFaZHluUVhaS3U5YW5XRmxkVFdZTjhCN1YxRldyd0lmejM0SWJ2OGpvb29zNU93YndrWEFDQTA5elVqeis1REZUNHl4MEpZVG5yckRnWUN3M25FUnl4ai8vaU9iZGFWakFqV04ybXlta1RVR1J4c3FGTXdrWnZXYUZ6WG9MQ3A1VVZJZVRUeS9JYmlWeVFIZ3YvZnJEdC9xM1NlVG11Zy82d2gyQkppb2JuTFR5NTBLSjNZZmQ3QVZtdVh1b2orK1BzTVQ0SU1jd1piWldZU0xmYU1VKzVDRnpGWndVZ0o1NXIwSkJTK0xKZWdMdWpLY0xFOWU3ZlVmQ2dRbW5MckM0ZU1wd2d3UDI5UmpxR0hVWmpOTTFHNGZSNDBWQzJzT094T3lnT0JneDJtM2IxOHd0UEZhNjFhV1FSVVRublU2ZEZXMTNlYTlEdkhJL2tuc1dOSFZ0V1A1K096NzZHeEtZRjk3cmQwUlVzTXovaG51UC9YUmFBVmFGVUU5czRIOUU2OXUvcGpxWmdRQVYvNnJrd29vT3hRdzBqei9rTTl6b0NsdDgzRHJ0cXh1cUY1aXRCak1uWnZ6akNQamh0QThaakNNNEt5TVZYVTh1OTRTdnVYQWg0Y0xaaCtoc3luak8xWjAyV3hkeHV6VGo2L2t0M3ZzT2o2T0paOG1UL0xDTngzTDJCcS9EeGJUaS9XNTZpVm1uSThNR2RSQ3NiTUhjQ3E2U1h2WHpUYmxjNzNlU2dtOXhKZ0xMakZpL1dRMUNnb2x6ampmeWZ0ajZGZFFCUDQ2ak9ZdFlIZnMyYllablJ4czd3dTMyQXlEazdyTjI3YnZtU2grS1NGTTZKL2V2NWJGZGVsMXhScis3RGNKODZ2VnQ2dE4zeVNNdDJydTFXaHZlMS8xbHRNK0FqNEVISmpRNzNiSGc0TDdCWmJmckUrMGxEWDg4S1ArUitLdHFzY1RUNGVQRmtSVW9CSzRxN3NGTW9BN09zNlN3cWo5MEpCY05OVCsxTUwrRWFkODhQYStRSkV3Mk5iWFA0VnUzTFpqLzhnN2w5QkpGRnlWMlI0TVZNSzJmaThMZElmc1drMjlOWEtDQkJzcTlYd1BLZTFidEpPc0xIbmtFR21jeDliNDJWcUJLcDVhZTJObFJ4WVU3VmxvaXdiY3pRcDRtVFRFVUJrSEZJYnpVUm5pYTZtdUJOZXdWdkg3bzJJbnRSWGJKb0gwTVkyNno4QzVaYUVKVEhCY0E1aXROSzduVUkxRlN6K0dmRS9uVkFwVm14S1pmWkJtd0d6T2IybWZCb1hDNHAvRDhPZUlZbjZKQU9TOVdjUG4reFFLdnErR0w1YTQ1N2lVbFlUbkZnNXF0SU1tazNZZ1ZEWERFY0hIbXUxVlpSeHA3WEpmQmQvTGF5cmxWRkcyYXo1dUZXalkwR2VmdytHZncySUk3ZE9Zd05laFlGQXczenIyREY4bTdzOUROR3YyNks3WmpaV2RJbFVUQkttYXU0UjZZemQ4QUY5bTV3Njh2cmlUKzNuZGdvcFVoRENMNEYwZEJvNmJ6TDA1b25Zd21UbzZpNjJ6MFlUT1JxZGUxK0N5ZERPL2Z6blpHbTEyOGF3bDk1ZlJ3Z3lWZFJqV0RwaE0wRUJNbzlmM2FOVDladlIyc0Q3RkZGL3dwMjRTN2VaUHlZK25QK0lwRHlzT1BrQWUrQlYrdGM1bU54WjJjV0pmY2FUNjlEdmpxMWVPNmxmVHg0VFdOb3FpMmVkdDFNeUxBR3EwSDRSaktBcjM5S2tNbWxiaC9PS3BHUStYNzVKSStNNWFya3hheTVrajE3eWtQZmN6WTkwZFBJUnVzenFNanNibUdqeVNEaW00SGVCQnJNWjBKQVBCWmZYVlhYempJR25zYTRCK21TZEVoR2lWQTZWUkZ2V0xiaCtyK0p1MDBQM2hHNytJWEtXTm4yMlRjY0pHYkZlMGMyMTJzME5uODlHWlRXLzFZMzVZY1AzRkprQU4xWXQ3cjdiSktybUdhZXcwRFhlREFwaVcrbUhod0c3QnVYbEFZelFxY0VWd0ZkaTQzTTNuK1JRS1hxYVlNa2hsV2prYWs2cTYvTU1yeWRadTk2TExLUFRpN2N0MEdmLzI2Y3pHdFozTzFJLzg4MTBNTWJnN0VtcElNZll1K1BPOEdEZnM1dGJRdlJKVkJYb2h3OTV5Um4zaVBUajhVMWdNd2VhdEFXU2d0R0k4dWZxajdpUWkveUVrQUpOVVVQbzloSEtvZXd5OWovR3F2Wk1jQlZ0L0NtOThpSDE1M1NiK2MxeDh0MUdvMXliWmZRRnZHcElCaDRxZldoZ2pMLzZKYVNLSmREQ1RWbURaOU50ZnB1eFdJZFJ1YndRQ3VjbXZRV1l0REhQS0M1czJVYjh4RUdzQWJiY2x5TXVLT1JzTktvV25sUXRyN2liMmlZMGVBNnlwUTZ0a0ZiWWtYeFdzc0NJNlM0M1gvVHZ5WS8vb3lqYTRtU2QwaUtWaTU0MFZmVVc4d3lTMHFrcXZUTFAySUQwSEZRZGxuQStaV1J1LzVTalNNenlwUWFBSzlYWWZFbFhzVm9mUlh0ZGNpemZtMWZ6eUhkNms2NzlNUjY5ZHZIR3hXTlNkY1NOZGMyemFYeC9OOVhUNDZJV1RGeXBPWERoK29melo0KytlZU5keU4vMzZmNVo5dDROc0xxL1gvVm5tbWM0ekZ1bnRGZkl5TmJGdllaK0VYRjdYK0hVYWV2MEM1Vm1wZ3RkbDhyTWM5TEJXY1hBZWZZVHoyanYyUTBPS3ZaZkJqNmMvTEVnR2N2REcwOXo0TzN6R0E2NFFrZXJNZGwxczNsZEloZklTai90NWdpNy9nVWI3RUc1WlNudURYWHdFaEo3VUU4dmxPYWVBSnRhZTdMenpWUFcrMDJZcVU4ZG1NeEh6OEhnVkVOQlY4RUlxQU5Db2hFSU5tQVdJYUZCNkJ0eTRwUTZRaXl5VTBWVGszb2JQWkxMVkIycndpaitTbHpzcUQ3YTNaMnh0VmlzS1VnVmtONFhhcXdGV2ViMU0xbFJVNEV1UStVdGlWamQ4REN6S1ZJSGZBQ1g1Z1RJelZWa05WdzFwVEl5cDVZQ2xkYmpaTGVJMFFlQjNYM0duMW5aSG5BcXBOeXEwR2NlNUU5VFNIaWJrOUtHUTJxZXY0d3N2L3hnRXJ3RFhmMWVPdjdUaFpkM0w2d1hkZHkyQnE5ekRsWWMzc0ViMnJtdHJySkRVUlVWMlF5SVV2Vlp6K1UxcVhVUy9ZbHVwZndVSUVoL1ZpbllmamdCeXZ3cXNhR2dUd091ZmZQRkV2T3JRbEswKy9QcXRwYzdZeUpZTk9aeWRVU1dxYmZYYnRGcS8xU3EwbExPMERDcGRZNmZKNE9JRVFKNHdGdzJGUjVDcnNSUjNwVXRab2E0ZDVOcVhUN1g2VkxCVFRhZ1dtMFdPMGFZdXRJTlpZWmVJcE9acXdPZlJXSzFlalZUdTExUlp2Qm9aNWxMWW9GYUhVWjlYUGpVVUt1Y2kybms1QlkyNTdIUTdKeXBhVTZFWlUxWU9IbDNRM04zUTBCeTEyYkpZeW5YYjlpRXVzeGx4eW1TSWZDRzVaR2duazVYUEd0QjJzMDUxVS9xWUxGM3ArUlBnYVdKUlNGTCtoZENvN0REYlZYeFM2cWtuVjdOcDN4aFZBbEd0MWlieTV2ZUZtczA1YlBrclpNcE9PWjB5UFA0TFMxcTZZbjFncXNVZEVVUytJdDllcXJpWmV0YkQ5YmhacERtWFVpS3VnZTBQTklaYzZOYm5OMGcyZHhIZm04ZTZrYjRhOHZMK2NNSmltUnRCdkkyUnBtQnZkN0J3UFoxbTR4dHJIU1pzN2djR01wL3hjTHFzZkZvSS9EZjJWMlJ0Ry9hWDNoeFNYSW4rYk9EMm14ditkNVVpYWxRNUhRMHFFZVhxUHFhWnhLdFZtRXplQ3A1YWwvTlE5bjhpOFJzazB1dGkwVFhTMCtsYU9ybFV5MUFxOUhJcEpXdm9TaS9wc0NsTm14YXYrTFhtcGZDbnk4b3VDdHN3blhvbjNZbmtQdjJkeGFLbFBrRVZHRTdza29PRW1QR0pyZlJhTUowZ1paLzgvVmdXOTVnN3BHMFoxazJ5a3lhc3ZvRmg3VnYvd1dGOTBrYnpKTHRGS0dWTitDUFQ2cWtNTWZqbW8renNSMFRpSFBPYUl4YkdyaVdLU1RORlJUTWswbXhSSVdaSXFGazJyYktCdHBaYnZPbG5HWTY0bTRIaVNsUm5mQ1ZPdmpsSHlIcVB1SlRKSWp6S291eklmRCtMRUpxeXZpUE1JNHQycGpyOU5URTUrV1RPL1VueHRxenpvcURmSmdwUitOZzBKZDR1aTEvNG5jajM3MGJ4LzI3bjNyOHphRi80bUVpY3k4cjZsMGo4TDV0OS9lZTVvYitPVGRERURzZ3dERm1RNnREUmxtR2ZoVGJkK3ZmeHZTdzA0NDFIaEt6M3NvaExKY0pjbG5EcDZmY0pXZTluQlVSNEMyUm9pQ1l4OEtsbld2NDh1b3VCbHA4T0x6NDZUdVU1VlNoSGRSbWNVQzNrQzVVWXBSSlZiLzd3ektSdjNKOUpoM3RmdlRUL1A1NlFHRFZMS0RSK2ZCcVBGKzh1M0JsODRYMmxmV0xDVHZuTllzeVRVOWFPL1F1d1NoUWxMT0Rmc2JVVWVaN1I4aHNuaytOdm5DakxvNnphVURaeGFHSDBzNWZrWGZ3dStVdEYrTXVUK1p5a0hBbkk1OWF1bFg4dnJvRmx6YUl2MXF6SitDMEk0OG92VDBIeDV4TVRFbmU0N1ZGODMzLzlIMHRxYzJoZkFsOW0wMzRHZnM2V3MxSnNQTmVRbE1ubm9ZM25OODVDaFJUOWl1OHl0SjkxMHl4bG5ZV095MzQvSy9zT01TMGhubU9ScVp4Vlh6KzZORlZZNmIwbFV3dGxuZjBSaTNKMGZ2MFZXa3FqNWs2RDRFcU1GOU9tdENHS0hwMHVSOW9xdFNueHd5Zmd3M3JCSFUyanRtekx6cmY2dkcwb1pqdUs4YmJiQmRFTVV0N0hvZERlU0FRUjFiRWQrYlRXeUlaUTZFR1JrK05Yb01IZ2hrZ0wzVkhBWVR2elplSHczbUR3QWNuSitWb3M5VFdLWlhMNitTUVNXVjFUa1dYMUhTS3RrMmpFcmZGSU5MbUgzNjFic0pLcnZWbmN4WHE0Q0Y3cUtWT2dTbE5udUQyMStmR3dLa0tLckZ2cktiaU0wV2Y2eUNxRGNqckxLRVN3ZitxVFVaaFB1RnFsQmtSV29SSDdKeEtYVyt6L2Zqd0NWTG1laEpyN3NLWVlzNjBzTzRmU3hveUI5L2c4YjFmVkNQRFJ2MWJiY0hCbmU2N2J4V3lrNUdTWE5USmR3bnI3QmF2ZVZFMkFFQmhOanZLajFkMVRvK05EUnNGWk5TZmExT1IxVnhQNEJPbE84VlhtZS83M2NuaTFmdlY3MDdmUDFmd1JjM3BiV3B0UitydHE1a1hWaXpQeW1aZFVMODJVYVFlZmt6K1hyZk9OakE2T2p0M2t3VmtVUmg0bEllV0piOC9nQ1V2aTZTeDhBdjlXZENSNDdmNFp3dGFIeDgrcytPcVhhK2VlbGJONWVNbnZ5NkZuenlrN04wMGhWY3F2dWJHczNPTlhlZnFTdWtjeDg1enF1Wm1oNS9mNnNYa0FqVXZ5UFk2VENhV3I4N2p6a2lDVHVHUnIzUzZzSGVrWC9uMkQ2dm5ZU1AvQ2xiQXo3SERrRmtpbEsrUjBCaXBQOUY0dStnV2pNaU1NMDRMSGw1bzBtbDUrc05kbG1JNUtSRlhMajlSNEszMWNiOWh3K1VGSC9PYXFGYTVKTSs5V3ljT1FCS3JzZ3NBNGlvS3hMblVsR0JSOUZGQVBVWEg1SEZGbmN5ejA5RXhELzhCTWMrakZlRHo0MHN1QmZrNlFzQzFwUlIxUk9IRy9KM1puWkRUKzZtdmRFK3dORGg2dlZpRzNhM2tIVnlSMjhyZzFjam0zMXNrWGJ3aytVZC9rOW0rR0kweTVSYUNxYXFvVDRTZzZtcWJPYWpXNDlHcUIxdWJnWGJ6K2U0WnBNOVpIaDVxQ2EwTkhHRVcvUFRZdzlsR29mbTZORXpFL2VNdkdWaG80VWk5c1ZINjB6cFBVNWF1eXhMeU51YWdDZXhhcktMMytDd09DanVxUkRydEhHaVYvTy81MWZTa0FWbkk1SkdkUC9nVmRQbFBBWUVEMlp6NHAxM1hiZzl4QTN1ZGphbmFkenNEbEZHbDcwaTdxQ3lxRWJlNEhaY1hoTVdaS3I5cVBLVi9sdHpGZnVNbm16Vi9zOHg1cWFLRHNJVjlUMDBHUDUyQmpvKy93ZFg2Tkx2SlV0WDJUMjIyZG5MVFYxR3l5MnphNVhKU2JzcnQ1clg2QjBLOVFCRnhta0FNMjZzaFR4Z1JaWGUyb3JLU2ZtcHd3VG8rZUR3Yjh2MS9neVcva1B4REhYczYzMDdOV05qanRteEk1eDd1V2hNY0ZXL2VpRGtUWjdubUt5WmdXQmw4TWhvK082R2cwM1E1blhON2RNNW42YWhuTVRML0NOSVA0UE5VOG5qcm5uMHVpbjBFbklWenMvZEMzcklxZW1keGNQNzJYVCsrck9MZXZmSHQ4RFE0N2djM2NpWlU5T0ZIdnpNVGU0dFpnK2FwNEFvL3ZYWmM5ZUtkdVlxZ3k1NVAzL0ZDNjZXKzBXWUpXRHVuMFRYbU43UXlkY1o3SnZNMmdKMWdQSEFVRjRmQkhjUlVXYUFzbC96WUxvRUpqR25GTE9rUCtGNVZZMnZTUEx5MXJjejVqNlovVWh1dlBDVGdDVXZlN1pjbEhLWVcvRVFsZkZoR0p0WXl2Um1aS3FJOEFaYnVOODhwT2JrNU9UNXB0QTcwQWlLWm15TXhvSGkwR21UZC9mcTNvM3orMS9sTHozYXBSK1doMjZyTDVjdjBuT2tXbWV1WDdCUHo3V1ZudjRiUFdzNXdWOFg1czVuTFJoOFgxWmZiTWZTYjJCRXVQc1I2MU44VGVrcTEzOU9pVEFSb01xUHlocG9FUEcvQ1grVDFHR3VQcmNwTmMvWTBPR1AyZ0RudFpNL3FmTkZCdVNrNENOdUF2OWJ0MEMvK1FZOWlBdjlSdmFsSlZIcVhPc0x4TTJJQy84SGY0ajI3Q3YzS0c4c25kaEEzNFMvMm1KVWxaSG0ydVBINm1raEhDTC9nUjYvR3Irc2JFUENoem1jcGV0bEdwVDRRZlZYM01vVTBqOFFFV0RGTTA2UklDNk9LVHFpL2JqQnBKbUIxU1hBNW1welRLWXNJditCSHJKeitwcW1uNVRjNDZQdG1YOEF0K1ZQWHNuVVNhb0Q1bTlvTU9tc3ZKTXE0NWd1YXlZM203Wkt0VjR5SHRGei9aVC9YVC9ReE13QjErb3A4ME5IazlqVmxtSml6UFJwdlkvRWFKbnp5OU9idWZzQlhTSjBMUkFyTVM1c1VkWE5YUDEyS25VRDE4blRJMkxNK094L0owUE0yZ016NS9ocGNtWExLV0Yvd0ZYdVRGNWRudW9ZYUk1WitwVmlMK0dQc3YvcU92OTkvOTE2RnZiekYrK3Z1MUxvL1ZtYjhtMlYvdWtON3ZCUG5NZnhFTC9wVUJCMjc0RGNpUWY3bTY0SkU2Ky8yVnIxb3RmSFJhMXFNY29GcW05dXNLK2JValRUU25NMjNKZzNROWgwM3VyajJNY21TdnQ4MWs0RytxK2labitXY3BhUmcvdExNZmV6M1ZsYXNhMTNWTk5LY3pWUVR5bTdsK1VkT1ErbnovRVM3Z3FFcTc2MjNtMFVsTUtiaThocHA3Zjg0RnZHMDIrR1pmU29BVTVrMERidU5yOGdEL284N0xCMS90clhrTWZ0Yjd0SlVUZzhOOXBSRHlIYjNOZ1pZTjlOQUxmdXp4V2QxUnRFZGNuYm9NaXgzbVZUSHlvdlFGY3NpdjZqdERldVhqdWJobFlnL3ppRmNtZHo5L01LYndCcE9neC9CMFRoSlQxNWU0c25mZjlzcm02U1Y0RkpOMStoeW9mdHY5ZU1GN3B5S213ZUlxdkV1emxXbVo3UW1Tc2VianJlcEpzNWlGU3NtdW5HQUE2ejRxY21xU29reEVQaVNwTDIxY3ZvejJtdVkvZDM2NnJoU0ZjMXpOSzhXN2RzaTEzbk4wZEJ5Rlp4UzRrbDdkbnRuYzgwYWcrdDkxYWtma1pMYzcxdXhNWHhvVFc1eXp2VFVCb2lNQVpGQ2ZNZEpPTTJac3diak00WVVYNXpnejUrV05ubHhjYkFvTzBQRU4wMFFHNURTc2ZzcFZyc2FjTTZ1dWJONUxQejdySHIzK0VCcFNHYW1mbEdCUnN1KzRXNHZiUkI1RmdUWUNURmw3RE9CQU1CRnppTEEvM3VEdElLM3JHLzBRRHJrdkJnOTVYMGw3RjA1a0U0R1d0bC9wcklndVY5cWltVmZSTzNvdEY4cXB5M1hWcHNqOUVqdEFrYzBDMFNFY0MweldNVmo5SkMyRTYxQ09halFSd3hJTTYydjBSQVNKTFh5VldlTkM3Qi8wR0xzTWRBbHRUd3NQOHg0VEVXdGFLUWdqakVodnN1dnExekVDZ0FMN3duVU1UTk9JZEd5SmtzaHJabjNpRE10dVluT29RZGI1NFJ0UnIrNXdqZ1hoN0lBbllUMnJVVEt6NHlZRnhBb1AxS1pPOTQvQnp4ay9qSlBBUHNNYzlLME1FMlRpVmF2RktTQ0FsZmF4TjQ1VnJIWTdEUkpGbGVxbUE4UU9ZaDRUb25uV00rMkVNUlhlNTh5UWZKTGZ6V2paUzJVd1lsT0N3a2Zid2M0NGpubHZXamllSkRiWlJRcEhFQTRCWVUycDJMb0NMQldxcGcySWhrcURXbzY5WlUyUlJmWWVXWFV4ejNXbm84MlYvQ0Ezc3hVekhRcUE4M05SWnduRUVQTStNQzQ4VVhYc0xQTldlOUh2YkF1UzVHYWZBeGlkOSs4OFVvVnlyR3c1ZHAwc2h2RTNvZ2dpRGI3cWRnSzdGNE9uNEVBVndxenlKK3VRSWZ3YWNxckJBY01YV3FoWldQU2Z4cmkzNmhvYmVoT0NZTk85bU5HcU5jTnlZYUVTc0Jjc3o1THcvbDNlZzByN0FobXZHbWFROEpxNkxYcXM2cFdldzNyWURUc0tEQ0FzR1dKb1NseWFxcm1yd2VTbWRpdU5nUWtwckkyWlFqYkpWRGpVbDVTUXhweklLYWI4azVtSzVjSXNaaklFVEZyQlVPbWwwMkZ2azRuTHF1VnpQY1YwY0drNWpOSUZHYlc4cjNQclFCbGhNbkF2WVh4bk02dWtGNy9rdVpzZ2lDMGV5ZUJXenRFR0dIV2lqLzZwRzZTMEdLcjIwL1Z5VmpodjV5VkdzYWllYXQ2ejlKMWhzNXVtcFZDanQ3MmY2dzR3SWlsNjNMeHJ1TS9sa0JJNmhzL050S29PZ3pCRmNSakFBbDJuVlFWd1hWV3lhNkNFbVZSU3VDSFd4aDhwN2FWMGZmMTdpSTZIcmpVaVhpRDVYaTZNc0VadkN6L1hnNE5YQkIzOTJoU1J1a1pLY3dWRHBMcUV0SWpMOUFIRkRTYzR2WWZSS0h2UHVDNnZFb2xZTEJFb1VzbWxMQ0ZMd0dNMmw0TlVTdlU4ckp1YnovY3JoVk5VYUs1ckptVGRPZy9QNTZHZHlVbFlGRnZVVWRkcWhlQmtodXZFbmUyOVdGUXpETzFpbkFOdVVUbGJZMjVaTEw0SjlUaE0rWHdjUlFRUHZhQ09hVW90MDR4MW5TQUFTWFVad0dLSVI4bmZoZVdpcXcyeisxV2VwWW1GOWhsdXpUMHludWh0NWVlNkFRUVAra0JuQ203SHNqQ0hFRTZ5MDlkZ1FEUU5VS2Fxb092d2V6L3FwSTRidVJubEpIRGFpNU1pMkJEYUNDenR0RlY3SElYSlovMXVUVEhQeHFGbkZXT3pzS3I2VnFBZUY1Q1NHa3RJaVk0V3phSmdLTm9NVUU5Mk1WeUNWT1plNGJoTDdHdGtLZWhSQmFEVWU3aFUyeVRCUmdvbGFOTlVPbE9YTEN1ZFV6UW9tUkRUcW9temxHdGJnTnY3ZHJjY1FNU2FjUmdrTVBTYWVTZU92dUxRdStKdTBuUzBDczVEeklVVWJNNWN1KzU0VC82bGwxcXRuOVBvMFFBVWhRRFVWd3VFa1lHV294RDJzSHRlZVVYZVRiQklDSFVtck9MMUpBdXN5R3dLUDI3WHpvaWdoMFhYTTFtRVFNVEJTdWdlTEdTT1JaTmIxN1dSZGVLOTZVeGNRczIyUkxzMDI2NDVYKzlpcklIb3NmZ3p5dnUrVnFOZWVLRXJVME1IbU5EM1VsSG9aQzkvQ3owTCs5Z290WG5jUEZ4T2FxMVdtUnJWMExNSVVic1BJblFNK3F2cjM2VUhCU0l2ZEpURGxmYmNMRXZnR1h2VGM3cm5CdGI4dWVNL1B3VENFYXZvYVNqK3lKdkkyZElKSjNHdWJNOCtEeGE3TW0ydk1iY3NGaitCcGRxeVlQVURoWCtRV1VrcUU3VEd2a0U0SGNiVmhBMDZyY21BczNFZVZ3bTE0L1dWYlMyYVNRQ3prZDQzb2JpU2c2MkI4RFpIZldRMXk3Wk5qR296V2hEckhNak04ZFgrZXVkblJwT1BEUXN6QkRmUnpiTnFlUWtOcDVQQUxlT0JyWXJjSXprZW0wdWFvNUtOclRlKzNwRDZrR3Nlbm93cUNDcWFMYWg5azQ1TW9EbFIwc3hJYnZhb1pVUHJrZDZGS2ZhWWsvK0UzYXlqQWVHZ2J5TEFUQXNLVkZPMVlYMnB1UnZrdk96THRGem1JTThGb1pKclR2ZWRhL1NqR0RRdDBBM0xhODBOUi94eXhrNGlrZkRscXZzc3JhamxtSGFPOXFBZVRjeE8wdmdsdExTZnhYQ3lwR0psbHFCOXBINXdYVzVzVmpkeHR5MUkzcnJCcSs4TWF1dUY4a2puQ3VFaXBMN3VpY2p0ZVhXandHc3hLNmxOajFsUENNU3oyUVc3akFxQmJwM0hTeTVEcnBhSC8xUWk5NHZJb2lwRldWTUppS0ZCTHJ0YXdpZTJZRGtaZFIwcUhxdGhtS0lUMWhad0ZoZ3VyclBaaG5GVGkvV29xT1ZZY0RiaStLWDdPazdvMldLYXdiSnJNT1BjOHlITGo0K1I2MHJFNGRpODVBMnJnM3c3anBqenNnYTRzYXFudm9NS1NqbjR2ZGhuSk0xMXdkVm5RT1lJWVFPMFZpZ09HY29XQksrbUdPZVhMTmQyaC9SZmFDb2dJNCs1VXgxOG1WSGJDeUN5YktWMVRVdCs3b2VleHVOU1RXdE9KelQzaDY2bUNjblhhOGNYWms0YlZDK1BqRHRoRmFpVzdwVGtEY2FFSG8xclplako2K2c2cGp1d2M1bStZZ1krcWdkV1h0eDQxVytzTHlFU0xjSmQyQXVBbkxRSnA3WHBCai9wSGk3WHVndFpIMzJFQzQxbFpwU2VzUVlDQzdmZTlCd2Nva2VsV2hWL3NuQk1FbkFOU3BPOEhXWG4xNG1IYllYSDFqZ3hYdU11U3Y0NUVYVmtwaVdCdGZwY3F5U3c3Q29VbkU4VG5pbnUwM1RKY0ZuL1o1d0Rnb3dhN0poYXJ6UkFyblgwb2xwU2xnRFhobEoxRFNaWjlST2ROSEJnTlZuc2w0ekJQOGQ3aEx0emxNTjZNNVdhcjFFYW4xOWE1cEFJMFd3M2JURGtna3BzcmxWTUl2SzNmdUJlN3BacVhBT1RnVXZBeEdrVy9lZGFsejJ0R1pQZVF6L1R6WWxLWGRqdktJRDRoTW5uN1BNT051TTExMFE0MjJENDVFSDM5UkJaOGJvZU9UMjd2b1JNZENka2lrNE0vTjRnSnV2c2VnK1N4TTh0NjlqcUR6TUNzMGxKREpuMVhadHZSL2duTkhudUlITkVrZkhQNWdzcUtZdEp2VE1pU3o5NnpYNWdKL2M2RnUyanFvenlEWEUzam04OXBvblBXR2NKaEo3QWpJNWFoWDhnR0d4c3pHNExxZ0JJckJIWVJRaXVVRGdhWXcybFIvaXZxM2RZOW9oSnNLYStheHBpaWJDSDNVdjl0UGZ3cDcweFdXR3Zuc1AzZmU4aFo0ZlVDekFnMHllRVVMbHp6a0wvUFRRNkpKanZxbSs5dFg2dXA2Z0xZYUxBZmxLV0U0WFh3SXNpdDZ1VWM3MVRxMDRQSnRUeEc2MjRhT1RpV3hzSDFFN1hEY0QvS2kwQUZSemlPUDVsVVRlLzlYcGZqek9wRU9oQzB5U2psRE1kRXVhZVV4aGtHd1M2NElFaUx3YjlvaHd2NFdFbXA0Z3g2VTVKN0dwZ296R0NKM29tK3VvNGlQQ0dOVW1rUHFJLytpN1BpbnE3M0V5TUR2Mm42WUdIT2xaQWEyazhmZjNYNmJsMmFoSGQ0TEljSVVmOW9oekxsYm9kaVNUc2h5SFlsanZWTzhKblFtV3JJOCtkSFBoeXA3THh6SVNLaE9uUmJrZWJka080QmZQRnVvTE8wSzZhVVlwQVIydiswYzZqcTE4SWl5R3JvR2R5a2l3cFVJeTV0RDFHUjQwbktjKytJOXlLVDl1MTBWemt0SWZMOU1xNEtkclVOQjd3aStvSnl2Vkl6cUpMZm82TWM4cENSbkxqaVhMV28wMHlSV3VEYVp5TjJSWFYweEx2WFhpbnJhc2lOeXpEU2hMV1lLWXRndCtaMVFKaHdkb3ZlU3JvMzBKZHBkaDVLdzdNWlZVSXN1YXFUZ1RoZUEwM3g5SE0xQVd0NCt4VVlmVzhPWXpOMzlJdmw2akhtK1hZVnNHV3M2VzNTR2JORVdvOEljTHh0aDRWT1k4M2ZUVXhmTXhuNlM4WDZQcXY3dHRWaVNPSkdsRk53ek5OYnYxQUZUa1MrK1lIVTBhamFIZjJsN0JkcjZZbGo1WGtDUmNxY0dyMWRxMWtPMERCT2dLa05kK09BUmJZVFVKS1VYQzMwWFFKVXNtbWc0TGhKRkRSQmlZczZ6ZUJwUXFFVC9NNlNVWGNnRFlTL0VRSnhPaW5lWEVSdEVON3hDMDRsd2pVV2JJYUZwcVJUN0w0SmhLK0IwZ1lpYWpwWlppSVdQbThtT2dhNGJIYU9Fa2VGSnk0YmdGQTZ3RE1US2RPMVMxYlpwNVAwdS9GQmV6SjlORnBvakVNSmhmdXdLSWxpMmtMenRKZmxwQkxmYzRDdi9XMjlITmRFUVNZTU9Da3JaZmx2NHJhUk9QSzlBcUlJTWNHTEl5eEFkSVNLTVJqYzZ3V2U4Mng2bU5Va3U5S3dYY2lPVUMwSVc1bXhyN0g1UTdXVU9SS0xJTm5oQnZUZE1jS0tFdnJWdXEzakZsTlg4QkNac3BuazZpSXlJZmZCaWk4U3FaQUZtMkNpaUJGc1JpU1hZL1RWTmNpL3FZOXVVem4vYlplMW1QZmlWc0lyeVI2dStibGE5VHhCbVU2WHIrOFBaaVJ1MG5PeDRLdFBOQWFXSXVXM1BlNFZZa1pPclQwbTk0R2g2SjBsUU90Y29OOUkxelBucDhCUG56citadGYvZ2ord2VNd0RsS01hZ2hXNjFmMHROM0l1cHpsbVVkbHVobUhTZHU4cFNabW1PdDkzVFRyOC9yVXJKcHAwMXZIa2w2QUhTaDFBOS94ajE5ZitTd3NPOVZmSVN0dkJ1U3EvOGJhTHhWbitwS05yWlJQbjliYlVpNkdrY3hTNzVvZjNkOXQxcVFIR3dRNU5CQ0k1REhRS3hhV2ltRmdRL29nMXp0QXYrMkUvM1hlZWVvZWJ5NkgzVFJ1NFpGUGpZVDJIUDlOajFxNWZsWmpmZE84MmNENmdxOXhJcGRGN2hjbHdzdm9Kd2JZZXJJZk02eCtqLzJYZVhOL3ZMdTk3amJybFppb1pMRlc0TjZ0K2hpZGxtTEpHWTh5V3R1WTV5YzZmWXhwMnFOWTJtczBDeUFHYmlzSitPUG9Tb2dsWW93bFpnN1hJM21vdUZ1UmNRMXFJai9udUU5Q3lMelF5UDJQWXlSMnpOTExtZVN4KzV1NlBpZUlYTUxNbU9Jb1doZTRoRGlQRlRRTXRrSUgxQ1BYK25oMkd0Z0s0UUlJZnRDWHU4ajJpT0pRWm1pS012TzNuRVdQOGhvb09wVFpSWmFkdUUwWmpuMExaOHZyUFNFQm1MbnloK2FiQkFoQThmN3l2MTN4K0hmUi8vLzN0RVRhYStBdlIvOXVSeHUvL3RmQWhYOS9mcjdxb1pzU2pGR0FCTlhQaGdXTUh1NVlJMmtxb3BPU0tpcVZjZW9jdGUrbC9HdVV0UmF1bHIvbzJrdkN5eXlMcml1ZVExNHdad2JxNDFsc0g1bThNUVBsZWVhTGdUS3hQdCtqb2FkR0lGM1pwMXJUblpRbzNMcDFhdTVGWFNsd2hXdmZ6RkpCdFdFcVYxVTBaL2VpNjN6NlRpWnZQOFQ3ZGhySDFJczZOME9VNTFsM1NWMnBzR0hNZ0pYUVp6MXRFNUpOM28wa3JsQVlCMlFEaFNqQjAyZ0JEOGlQemFhWWxkRGJPZzVqM2ZSRW5lSk82c1pzM1FKcE9oZ3FtVE5GWWQ1dzcvenkzTThrN3hMdFVVNk5WTFVFMlpteWJwcFhXUEFhai8ydHQ1UnVKbTlIOGt6aGw0VTB2SlZuQ2s4NVlZNm1hSGdaTVlPeGtaenI3c1IwWEFjS3JrM2UyU2htTFVlQU4zaUFCdncxMy9CWnBWY3h4L2V6WnBJMlZxd3ZVbjRvNTJUTzJGOGt4NWVUWFJleGVtUkhpUWlEOUZCMzg1TDFOb29ETFZQVFEwdG5pUkFmdTJ5K2I1Q2VNRktOMEdTd3l1NFVtNjUycHlRclU0Mm5FbFV4M3M1S3RnZEM3WVlFQ0xVYk1sQWtSTGdpelJPRXd3TU9qOEIrbXNNd1lXbW9PMENCWFlqWnJSY3ZBZEIxZlFsZ1V4UGNmOWdyanY4bVJIZ1hDR2x2VG5uTGMva0p4MnBaSmpTK3VxN1NKckxodkIyV2d3bW1RUkJVUWlSWStpcmdsVnNxNW5pSVZCUnRjSUhGVVBhWmtkUlczamxxbE5WR21PcVlpUWlrZ2pSOHVWaVVTRW5HZ2ZlY1ZHTVEwQ3BCSTdVUThEbVlMeVZVTmkrbFNCMWZTck80dXBTaGkyUXB5ejNCQ3E5Vm0vS2hsUXBQamVacTFlbWpxM0tseW5USENSVXNSQWhPampMRk9PbHExZWl1bTJKZGRkVkpSYkVydFZhRllvVitmMU05ekZhbVZ1a0dOM0w1dTZ1YlIxc0VDVktxUFBheWV1ak1yRkN0YWtGUzdFZGZwVnl4N2pySlZhV1RJSFBqKzBtVUxPT2x5Vk03NlNxS09mVzdCNHVWSzAzVGFmeFlGREVseWg2L0xvN255ZkhNeTlYeU9FTmpacGRjd1VwR040VXU1M1VKdUpuUnFHSjIzVTlacVNDWkVxU2hBR0tIVUoyUGVTcEF5cURRZE00NHBiTU5DbTAwbVo1QkVWOXZHQlU3N2F4ei9QZ0xFT2k4Q3k2NnhQVHdHS1VrWHRabFY1UzZab3BOTmdzTGIzbTRDSkdpUkx2dWhqSTN4YkNJWmZWT1hHaTA4QlpXb1VhMXhWcEtVQ3ZSVzBucW5QUzExRVd5RktuUzNOSmRUNzNDb0lmMHNNaVF5ZTQvdldYcG81LysrbHBpZ0MyeWZaUWpWNTR4OHJVeTBHQkRETkphZ1RiYWVtK3ZkdUhoc0NNV1dQaFJLU0dSUGg2SFBscm12OUk0YkJTRG5jbVpDMWNlaXlUTjhtSldWdlc4Z1QzZTl2dUc3L2dCQi9HT0djV0x6RHFNWlhqa05KWmlpYWdwTkFzWEgrMTFaTk9FbU1RMld6bEdZNDIxRGpya2hPMTIyR21YNDlFYTdnQiswaGxoWnZTa1BxbkhiaHdmM3FicFpIa01CTFNFUmh0cG5MR0c2ZUMxcHZHTk1YN3hUMEFDWTRvNVFRbE9TRUlUbHZCRUpESlJpVTVNTENaNDZMYUptcnZyZ1R0M0RtTjJHSTFMOVExTjhWaWdEbVczZFRhMW1ZMHdwbVY2NkdxYllWRzhvNFhMQjhSTFc1WWZFYUdSSVFEU1lENTZsOXpIYkV0cVowZGcwaDdyQy9FblhpZVBsbFhNbStheWFVZExyOHJ4UFMzOTlMbjZXSjIrSkIrcmQzUzBySTN4azd1SlVkQ0pDQVVEYlZMUUdnVUZBYTB4c0NZREFRV3QwVzNwNGtMU1JpMWZBUHI0WExFZzcvWDN0S2JuSHFTN0lLQlJWLy9lbmhLeTVPenZCSXZVc0pqUFhmalpGb0ZySlo4bjVPN1JKSUFyZWJvWTg1V0NIaDc0WVQ3Q09EdHI5dVdSTDE1QmpZbTF0RFUzRXNGQ3ZoZ3JBVWthWTdCdFRrYXJ0eGc0Yy9SWFMvaUJ0VW4rTkVDNFFFbkUyTHFLM1pLaEovK3ZjeFoxOWkxNi9tY2tHVjVPT3AzbGZtYmV2TW1hcCtjOUpPRFR1NTVKNGs5QVRGS3J4eUJQOGszUTY1Ky90R3QrZmFvbEZVd1Y4QUlaTlorZkd2VXAzVW5oRkhlS0xrWEdCRk42MXZ1YTBva2FrOThrRzhTRFM4RjBjREc0NkZKU0FoUGg5UFFrc0J2dzFndVM0R2ZJODBaYjNVK0RFKzZkYXg0cXU5dE02c29rNHNkNVRkV3hUSUpyYnBtcHI5eVlZa3VCVWtTTW1lSllmaHA5OTd6LzNseTQ4Wm41M1hzL2w5eWNrZ1REQUFBQSIpIGZvcm1hdCgid29mZjIiKTt1bmljb2RlLXJhbmdlOnUrMD8/LHUrMTMxLHUrMTUyLTE1Myx1KzJiYi0wMmJjLHUrMmM2LHUrMmRhLHUrMmRjLHUrMjAwMC0yMDZmLHUrMjA3NCx1KzIwYWMsdSsyMTIyLHUrMjIxMix1KzIyMTV9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNb250c2VycmF0O2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtd2VpZ2h0OjcwMDtzcmM6bG9jYWwoIk1vbnRzZXJyYXQgQm9sZCIpLGxvY2FsKCJNb250c2VycmF0LUJvbGQiKSx1cmwoImRhdGE6Zm9udC93b2ZmMjtiYXNlNjQsZDA5R01nQUJBQUFBQUVvTUFCRUFBQUFBc3ZRQUFFbW9BQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdsZ2IzbXdjaUFnR1lBQ0VWQWlCWkFtYWJSRUlDb0c5YklHbUFBdUVGZ0FCTmdJa0E0Z2FCQ0FGZzNBSGlSWU1nVlVieDZNbHlyWlBKUUxkQWNpcnFxWU1GV3liU3J6YjBYTmN5Ri9paEx2VzQ2REs4SFZrLzMvQ2dSd3lNc0VkMEZxcitoTlJWZ1k5YXJhanBPdGM2c0ZsdGF0WldrdEY0MlRlQUtvbmZGZCtlalRWdzZZbklUTWlRMVpHT2NMOFR1MzNNMjZFdCtQRW14TEJhUnljNGV2ZjBUcHlSdm5YUCsxL0xkMHR4Sk82UVdCVCtOTDNqaFpUejZVM2dGWnIyaGZ0bi81RElKaVhGbFhxTERMamJlakN0cFh5Y0owYWpoTVFRSVFxZ3lRc0p0NTRvMkdMd01hRmpYV1NsNFNvbHYvcm1aM2R5eStsZXorRUNDNmxVNUJYS0lMUkdJM1FGRktoY1NnVTNNL2pwcjJmQkF2QmczakFLMUJSWTZPMlRxMDJjeVppM2xubnJOZWRlT0VSbDY5K2xzN3krZXVQTlE4bEtTeUFXUlIwb2pKUWpNdks4eC83UGZ1MXozMklOclBLRUFwTlJKcDdjd21GRUZVNmthRVRpdjFrb2YwelFOdHNiYXpLUTRkRkNDaVpkMFRFQUdrQmJTekFtcWlMY2hXNEtTdm44cDFML0lyWS9udnJqL3B6N2UxbDZsNm1FaEVXdEdyVmdmck11MXlFSkR2KzVCRmhpem03OXlRb0VvVERLWXlvcjJzcWhLcjFkYXovYjgyZm1HVHp3c05IRVB2U2Zra052QzJXb0Vsbk1GMnhXSEt5VzkxTWtRRXdiSzJwdGNmeC9JUW9sRmtmY3ZQckRXSXhCZ0llRXBpQkdERmRteFhUMDZhNG9yemJydnA3Mm01NUZPcWROTTFnNWdQbXVmeWhUcHN5cmgzNzQvd2IwL29UTURvbENxQURwRFl5blZIMlJSUVhxakxWQnY3dW5yWFNQUWpXc2ZBRXFnNis5RExHeElxY2lTSW1BWk9JbWJMVUJvbHhHWjNUK1ArdlU5K1g3TFM5VHo4d2JOM0dudjJESVlsQlR1UUFnRlpwNytsTURJb0xERmJ1L2QzOVNxOUh5ZHlKWkkzYmlVS2k2TW5uTVI2RVFsY2hMZmI5TXJPNzMvdC8vc3lHcEJBdlJxZkFOaWpNN3BhT3FJVFdJNVU4bm1PT2VCMTBFQmdhbWdDWEFUWWd4Z2RPdGdIOFdvdWgrZmVtV3FYLzRSTkRZSzE2T0Z2aXpGb00xMGpyT1ZQS0tiZkdtOGhGamY5K285SDkwT2lGbzlqb2dnZ0JvNm9CUVRsZ3FGa1NLeTI2RzlRMkllNklYR2ZNV1lvYXozWEdobWVzVDEyU1hYUkJlRmwrNFY2YVhKWmRFbDZRSGM5cnAvQURQTUR2ZG5wcEZpOWdjUm5OZWJqL1d5dXp2eXZVTDJwQnFIVXJFK0ZRR0RRbVF2M3U2WjFVVmM5dXRtZDIwaENxQ2ZZRWEyWURpeEFtUlNDSkt0d0JjaFBYaVdXYnlKUG56dDA3UjA2Y2xmZk8zVHVoSmZQMGVOTjc5MjJqQXNPd0JBTWE5Ryt6NmUzTHhKZlRXVjVRZGV0a2c3dCtpSy9rdUlSQ1hXcEJLSnhFU0x5bVcyZ2drWnJDdjF0U3ZoOHdGNFVKSWxJNm5TSkI5bkRlM2Q3NmlBN3RYb1gyWFgzWFVLUWJSRVJFUXBBUXhKVXl2N3ZzdC85MzFCemFNMDdBUmNyeitTTG4vYzFxZzVRUlhiRzJVeVFoQWlFT0NkN3R1L3N6Q0VPM2ZtbytZUnFPWURyczR2OEhSQUFsQUVCUkNIS0lVaERFTFJvU0t4WVNMeEdTTEF1U0l3OVNvQVRTU2hXa25ScEluY0dRb1VaQUVDQ1hyZ044MWJ1d0ZPakRpZjdWd0p6eERheUZZQVNBdGdYZzkxajB6akQ0NmUvK3RVQXZvd0FLRUlVOXRmWG5od3RIMWJqN1VGaXFFVUN1WlJVMlBSQmZ1byt4ZUtYeS9xQVFhVE96ZVVheWFRbEtJciswekxJMUx3eW5tWXg0VFQ3N3ViOEozMEYvZFV5WFFMLy9VaHNBa25uYmxtUUF6a1FiU2NORnNURjdGRUFYWlJ3RXNiRmRvc1VVU0NZdXVYdk43VmFRV01YcDNpNDRib2xyK3BscnBTQ1VBU0k0am82U09zSm1ZeFFneHZ1TFdvSlB2dm51cDkvK2FmTSttWklLZWFTd3ZGTndIeFhDbDM4U1laQnhldFBna2FOeHFXaEk2YWpkSEtWRUlWQU5OZzVZRFFFaENkZExrRkVBeTgxUXV6QUZBaGdwaVlpZkJHVzFoNGdVeUhzb0tvSTAzeXdQRzlVamdMMjhHWWhaQUIyTDZJZnpicmFxRWRKOEVKRkRIMXFWcTFiZGYwMUxTc2FzQmF5VklSR2c2TkNlSUFJbUNTZEt6Z3VDTVNMMTYvTjEwUjZURVNRMytFM2JPT3U3M2x5dzBCd1VmdmVsQ254NXVWeGJBYTZLd09XVHdCQTBvWVR3Z3IwOU9ZNWpVQzdFNk9UQnRqeDlZTkJnL0xMRHZONUN3M2plWk5WT1VIaHl3WitaWW43bTgySW1ZSUhyZ2xuNS9PbUpQQjdYLzBMV2l6cDZmeURhWkhsQlcvU1hQekRJeFhMaUZmb3NrUkY1VUJvcXVjVFhRWVhkMW8vWUpsS01aOUk3VWRrS1o1MUpiOFJrU3c2ajVrcXRaNDFWb1dQSkJBMFVFelI2bkd2dEhFNlpsY1JKbDhYd1pkN0M4Ry9IeEFRMGVTWVJZMk5nNWxXWmtsdHhxZjZEQUxDKzlRdFFyNjhrblF6TVpsM29RWUdkVGJwTW02amJNbWdDWEF4b3JETFNUWE9VeUd5MndUejlIK1pLTG5ZaEF5cG15bUFHUFlhK2FWejJJRkQyQTZDYkFmUkxFMElVQUtBenhnd2tsczBTN1FvZlZuRGFxZFZnVloyL0JiUWFaUlR1Y1BrRkRNT3oxUjdBVDBkeG5YQ0MyQ21uU0p4eGh0UUZ0OGs4OXBUUmM4K1pOV2hnZ1d3VGc0ME53OFdGSXdBcEhwS0FBRVpJQkFBQkNDQUJBQVJzck9jUkxqNnFMMWR6RUFPUUJSOWQ4Qk1rRlNWd0hucHlETE9oQzRVZ2JHcXhRY3FPbUl4OUJBVzE1U1plMGhLSU40OElTVWhKYUdnTm1nWjZDZ1JBeXNoN3F1Q3FmRFJsZU9IOWNuOWRBSmxvb0lSVWVWaVFFNjA1RjRsWHBxcVdJS1g5b2RwdEh3ckNhUjVMTEw3aUZsZldFS25Tb2RwZEs4TUhGOXBwczZ5WDZhQVNSQ1JSTXVoMTlrcFJXQThvcjVXbzVJaFBjNkNXTko1c0U4Zi9pUzltNVlRS3dBbTFtZzE4dVZQMXRwYmxDcFYxMm1CeVFmY3Nzc0kyYjExUjJGR3ZUcVJwS3pZZFZpcVZXWkVwSWt3YXRHVEszQ3JMRUVhd0hGbWtKN0dZL0t3R2NDeVR4RGcxdnlCZ3orQVZLTGNkYWdjMjhVOUtpRk1mbDRHOG91REpqR2E4T0daOG1tVXhIY00vbDV3SW92VlZiNVFobjRSMlRuWjJIbDFyTThKUU9kd3AweDNIcWg5T3pOME5Eakd6U1hHSlpRNzZGTWtKa2xLZ0g1OVQyWVJBcDJXYjZrNEhPNUVpU1J6QnJDQ3N5VUQyckQ1Q213SXN0Z0IraDRYcTlCb2R1YStHQ3dJZ0ZCYjJBK0lBbG5jWTJDV1lGMTdEWGhLQXd4K3RRdkI2N2hEQW9hZ04xRU5TNmtRbzRCQzRUZUNDUTg0UGpDQVhSbEZ2T3JaR2lzY2loVUZOQm5NMThadUtpVEgwRE5ibHdxRXRRMjRRRmdKNFFHT1hpWmFtbFl3ZUFlRHhNU0t0WGNQSVNWTDJieFlOdzhVbVRlREQrbHpucmdrM0FZbEdBQ1o2cURmSkFndnNzc3NaRFc1cDBPamJ0bUV6V2dSL3d2K2owQndrQkVUeFg0RmJtQml4NGlYdzhDcFhwYTh4ZkxZNDRJaWpycnZwb2NjdzVmUXFpTEVjRWU0b3A1TUVUaE40TEJ5dW5Gc0ZwVFl3Yk41V3lybFVNS3BzVnh0eVZRRGpiVlF1UUFXN051eGVFQVdKczFNUnh2RHdkZGd5ZXo4bnhLVitMSFRsZzJ2S0c4OU9YbzNHSmZlOW5CaU01MFp0VDJ0NCtmRjVPcHNjN0hGUXoyM1Ewd2tiRk5ldFg3T0hyVEtCYXNiS0hCWHFiUGJScU45U0JSdXRsMXVTenh2b1ZnZjlQSnJyRklyQ2hpb3NSbS9pUk1CUnBOK1JpUUhKK2NlSlpMb2tJVFhLdWRKbEpNMlF6UFlaNXpST251RVFrdG10dktTcFZwMThmd0lWV0t5T1p1VUpxejByNUZHZ1VZZlNrS1RhUUFsRFFCN1laSFBMbE83YjZOVmJwTHoyc3hybmN4eEZZaUNmR0d1VmdvVVNIWEk2aXhvcXRhYWx5WFR3U1hOODhWTFNjc1BGMGZ4d1RIeDZTMXhYUFFobjBiVWNyMUpGb0hGV3VGRkV5TXVWa2lwUnFJTFFoN3BPTEpocnErVGZNUnMrRFBNdlZxUnhFSjVMS3lBeEdNRCtROUNZL2VlV3RoWTB5WlVxQlpoc3Q5Y1FqbmFnUnJKKzA1VmlwVE54YWJtN0xwdEYreitwV3oyNjNWMWNXalFvV01RbTFsTW1KeUJ2R00wcWI5MmYvYTVmTXBqVkREbXd1WDNZTzdsWFBTTlZUS09rbStyVDJyVjZ5T1EwUW13aldqV2JtUENMem9wMDFlRGtHUUZiMmtWeElURGtzd1hTTndwNG1OSUNlRGE0MC9sSTR4cVlaZ1ZaVmtBcEhvSkpLVWR2UUZPb25FUmREVDdKNlg2NnNVbksycGVrWk9odGVTaVo5VFo5RWtFa3BRT0EwTnhnOVlZOWtHZlZndXIwaUVqa01DakYra21yaFRIQTdDcVJTQks1NzRpZ2h6U2VlNFNsQWM2d1BzRWlvME9XUTAzMzg0bThMYW9QYldua1JsSzdhclZZTDI1ZThFRVJvREhXVVUxak5BYzlrTExuUlFNZGFkcHdKdkpJRitlQWNaVXNwK0ZtWWV2b0V0NGxzL1FTSWpFcEt4blYxWXpMNlBNb3hqS0o2dmNFRHhhRllBcC9DTlF0em9rQlJMT001S2k2SU5MWG9taThMVm0zTHZTSEdVQXJMRE1wTk9wQ1A1MXhrNnppdHJMTEFFUjlGalNvTUFVbzl6RW5YMFRMQ0dqd0E4UFIxR1lzTDJhSmxTMGNtTHQ2RllVT1hHaFVrOXhjcWZVRjVjVklRMjZLbXVFTmhvZzNXMHB5WFFuSDdDSEdpTXFxV1Y2SlQwbzEvV0tucU8xekR0STFLL1VBdVl5THZEUWUxNHdsczNxMmV3NExFaElHUWlVWHVqcnhyQ1Q0Q0ZMRzZXWlI5c1ZDbVVWM3E5bkZSZktONHNFVWE1VDUxWnMyYkVmL05pdSszdG9BWWFjbENKQmFIbzBkOVhuc1Nha25maDVQOFJHU0FLOWlkRHl2S2duNi9xU1lvZDVBbVVZWUtjOTlEeFY0NjYxaTc3MVhvbEVqajA4K2F3WGp3TWVIbzFBUUFTR01pQmhKUWc2bm9FQlFVbUpUMGVNd01CQXpNdUppTUhoTUxEaXNBcEdDQk1FRkM4Ym40aUxpNWtZS0VZSVNLcFJBbURCQzRhS0p4WWdsRVNlT1ZMd0VNb2tTMFpJa0VXdWxGVG12S25KOTlTVlhieUM1RVVaUUdHa2t1ZnZ1RTNqZ0FjeEREN0c4OVpZOFUwNXl6bUxJL3RDSmhHc0xrWDZIaFpqVGEzVGtQZ2NDQzRDdGNIQWZVSVJJempzY1RmYndnYUZvWVh0REFiY09mN1FLUmI4YU9wODBNbTFnR2JLeUpHeUFOZUQ5RlFYWVJRdkdFQWxrcHljZ2RhT01IME1TL0VZSUlUQkQyUk5hV256TGpISk9oWS9PS0M0QTlDY1N3NGlDbWlhaEFBeGhENkJWQkFIWStQd3ZpakNBRTBBdUNBNUh3YklHQWVSdHJtRnhBaExhL2pTWWlZTnNndXhvMG5yYk5QbDJqZjdpSUc0dUFLdG81aG1sOUZnR1NhNVB1Z1FjeTBWK1lHUWJCN0R0aFVGN1JZVGwzb1ZrbEFpNGlweUp5VVhnQ3hCUmNrT1UwTFJqcklKUUl1S1JEOEtGZ3hOY3lGbkV2ZzZYbUJ6WnNsbmxsTWkyU090SUs2ODJiS3JHb3AzMkx4MTB1bmZXaTBodjJQUmgxWmRJTlpzYVlyV3M2b29uUTIrN1FRWWpEU0g1aGhxT05PTHBNTXBvdk5GQ2M0MkgwZ1FtRXpFbWtadktZQXV1clNteHpYWUtPMUptcDEzVWRxUHRvN2FmeG9IVU91Z1F2Y05rampBNnl1d2txZE9renFiS0JaY29YS0Z3amRvTk9yZm8zS1oyOXhMSjZIbE1HajN4bE1MelBUVjRjOTdDNW4xUllqb1VUQ2Rmd0ZlMTVXVDI5MDhrQTZaL1J5TmZtNDE0RGJkVDR2cnZvZTFtS21hR2ZrSGIrK2tkbXFwSGlyTjQ5eTFHL1RzYk1TRUNnZzluWm1JQWxjNE9aQVN5Z09PYzRDek81aHppRXM5cG9pa25LYzFjeW1tU0VzeHBrcEpLREozY3ltM2N5dTJjVWFXTU0wNFlMdWRtYm5KRXBvVGxvTFk1M1hReVN5U1FoRlN1NGtLdTR1cW9wb3RPYnVGODRoUHBTRndPRWh0SDRpb2tKdFZSdVk2bHBkYTRTVmhMTUZjUlhYMUUwVXk0Wm9ZcHNybUVTN2lFcEhYcUtIMEloYWRSVWZoeVNRTFlVSWdBN3RiNWxiUkhRRFNFb2dOR0tYdHdUaG1LaHRIUDFnS2JDVnUzL3FuWS9qbk5yOHNheXBrSjJuTHFIaE1HcUFKWGE1SUU1ZnR6emdWaGdZUnZ4bHVCeVY5c1BWY1NCbWlhMlRRMmh4aTJHdFNzYllEb2ZzcW0xek5JdndKNVUwL05IVmxRZDZOUFQ4MG42NzNmdmdJVDY2S3R0dEZFNGNRQWNRYXl4OGgrMXlLYmRBQjVLVTBUM1JJWnByMnhCS2NVQVJkaGNSWnJYOW5LQnZ0RjBCKzJUWGJ2alBGc1FmZER0OFptZUlkQjNSbVFFaXdsU291ckJNZm1ETUFza2RINVNJMmdnazZVemUwaFduKy9SMzFENzB6TnQwLzZZQXlXZW41UG9jbUtzMWNDN2JjVnA4Y0J3SzJpZmpicFRuRC9pOXV2SSs4cE14bzlPTU5FS0JleW8zTXZrT0dzdURybWNtN2kxcWpONElTQ0k5Y21zQUE1UG9xSUNONWc2UWJERXc4RTNtSS9qNUFFaFAxSVF6ME1RQmVQS3hpWC9EWXBGSVZQTzA1RVFhSFdoSGNJWEFIWUhnc0Zhei9ndWlqMG0vQk9nQ3U0bUJPY3hkbWN3N2xjUkFwRkowck11WVJMMm1sVnFwQ1cwMXhDdEtSekNkSEtUWEpoSjRGbWN4bm5jeUhuY3lrWEVFK3VpU2VZSkpGS0Vvc2gwZnJIY1lZckJwazFSdmtmbE9qV2hPeVhmeERST29VV2E2VFNGaXlOeFFrR3YxTWlONGY4NUZaWjFrOElDeVhFWDQvVXNQSWdQWWFBZTU3QlNBbXJ1NGlkVitOeThTQXRhRHBDVWsrS3FjRUdwblRlaFAwdFZtRlAxVkpTbUR5M01KbU1jYys5d0tyYVYxbmprUXVnYTZMTURzRktRcU1KMVVXRzdvSTU2SEtZeXN3NzV5cklFY2JYcis2U1o1SHdOQnZzMlRDWTVXcnRMQklGbGlNQ2V5VnZvSmd5dlNZZVNiTjFLZmpkMUtpT0JjZllldHM4NDBuSjVnVndUU0hreDRDcDRyMWdxWmZLSjNZYTNQeXZnMWc0TzRuVE4rRGdGU1hrUGJsLzB1RnVHSUtrd05ia09aQXBpRkc4c0Rsb0tvK2FPN2xncXNqTklCMW5RZmpUR2h1YW1aR1UwOWxTc0lkQ3FKT1F1ZVZBSVVZaDgxTGJyQWRUTGZEeEJHM25LUlpKSDlGRUU1bFRCcmVVVlhYa2lBcUw4cEVhK3hFNktDUk9zUkxTYmpOTUk4VTg0ZExMeEFZOVNRaWllWGd0TzJyKzZUb1RybEVSeU1VU05EYXJhNlNDbmxBYUpEdkl6WEJRUG5LOFNxQkJQSFFRT1htYWNCTTVKa2hoNnFJSkwwUXlsRjNMUkJuUi9XelRUaHYxRGsvNjJveTU5WWJ4aXhXVUZVY3lEK0MxMW1UYTZZTldyWTdGSU1NNWpEYWFTOHpmdVJ1U0xBMTdTeUFjY0IwUGd4YUR0MnI0Q0lDY3ZaYlFLNEhXTHVSb3FsSFlFSVhQd2ZJanFYNWhvSVJEV3dqM093Q2tZQXRJUis2TGdNRUJDTVdDOVlDQVM5WTdMQ1o5K01DQW1HdHZNS0RuOEVlcmtQalZDUEZKbmRBTmpFTU1ZOElFV0FMbnJ5akFKaGtEUGFGQVpsb0NFamMzd1dXcHd5ZFhlNEFvd0xneE1SeThJcCtiYzNoVjRZbGtISFVOQmMwamNpcnFoQnd3Z0N1QVRoRUVZT1B6TitsaWg3RFphQ0FJQlFGeS92SThacy90ZzdHazlobHB0Z09ocE44Zk96Zk84cThzQmhKWFFxVU1GSzVzUFlmYmJVeXJHcTdlVXBpWkg3bkxOVHhqVjdmQVd1RkhXRHRHanJ0R0JTZWdZdUJjR2dRaEZWWUFiTW9pb3NZSTNKUk5UTU1rYUZNT0NTMno0RTI1cEhRc1hIODA4TWpvV2JtRkhHbXNxMEc2MSs3L0UvbTJnTXlQRUQvUm5wMVI4RWhUMTJvVXptTjVNcy9rK2R6emlGRCtPNmltUDJxM0VVQnd5WEdOK0lZb3c5a2NjUmJIT0hDY0V3WkgreGpGNW0yTkt6WTVvRU1iNG93bmZSQXhFb2dCUnJSZk13bkc4QUVqb2FvVG8xR0dEUkJOS3h6Q1dlNDlBVlFRdFhlQ2htZ1F3RHUwN1E4d0dBMXo0S3l3OS9oTVR1VHBaUnNXSElFbDZJZTY5R1M0R2FUUEdBa2kyaHRjZ3pyQW1qTXNCQit2dU1ocVVBTFMvTmtZdzBZWmRlRmVvMkhhUXhCUENoaXZIVlBxT0hRZTN1WXNXNGw2QUh6KzBabGhwbGxtbTJPdWVlWmJZS0ZqRUJHQ1ZiTE9GbGxzaWFXV1dXNkZsVlpaYlJ1aUZ2VUVGdEFuclFRMCt6dVRmY0tURHZnM0F5UlI5OFhsM2FZMEJ0YUF6V240bFJVQWJIZUVEUFFVZ003dUNjQTZIS0FBUmtad1NDRXE5Y2ZsRklNZ0JGUkN4Qm10QlUzRTIwdDkxaGN2bXRFd0JzYk0ySmw0SnJOa1lNbU9RbXFXdDdRSVFJVVJLdDZhaEtVMWRrVEdxQmpkNW5FL0hIUUdlQTJndFlEL3lSLzN4d1YrZlJIOGVtdzJtbUhqTldNTi9hOGVYcDBEQklCRHdGTzNnRHdCQVBMZ09XRHRkSFk3YUsvN28rTXYzeUZubkxYRkV6dGRzTThST3h6Mnlnc3Y3ZmNlZ1NJZ0lybUFjTlVNV3VPWW1HVUV5dzBScXFuLzc1VVlzZUxFUzNUS1ZxZDlkelJzU0pZdFI1NENIcTIwNWxXbG5mWTY2S2l6M3ZxcVZxTk92VUVHRzJLb0VVNzQ2cVFHZCt4eDEwUDNQUExOeDdEZ2t6RXVlZU9peitIQUY2K3R0UzRZdk5Wb1czQll3K2V5VFRiYTdBQXVGallTQncrZmtKeVVERTFQUTB0SHpNTEp4aTZRd3pNQm9rV0lGQ1dCUzYxMEtWSmxTcE1oUzY0U2hZb1VhNk5NdVFyNU91bXVpNjU2NnVhNUhnYnFwNzhCaHVsanVDQzluSGZPZFRkY3N4cmZtYjVtUHVHVzc0Zk9CbTF5cnl4dDJmN2NndFhBeHI2RFNnRzZZZG01eUpKb0xzMVU5T0tIL3NwS1ozbW1WVjB0Q1Z0eDFXVHNscjJJdTc0eE9ldjlTWmxCU3ZYK2hSN1JnSnFBMTdwaGlHNlZhRCsvQmUzMmljYjJGS003KzVyOGF3M0ozVDlESnBCbDNCTlNBdStCbTF3dlFGQ3pLZ0VCQnUxMUFnbVVFNzYzb2NTVFlxUU5OcklHdEtvbFpEZmRwMXF5RlA0ZDRWbjdxeWVNZUpMajh1T2RvWUNZY3psR291WU1jMlRKbDBqd1hhTFg1TCs2RjFqTUJueFF6SzFmWkE5N3p4cFQ5aGhJRG9zWjhFSUREek1tZlNva3lZcXpHMWZha2xVcVMxVjZ4dVRPZ0pTK0dnUFA5Q3RsQWhuVUlDanVjaU5VdHJVU1NVRlR2cEN5akxha1VNQnlLYVk4cUF0RmhhWjRLY0d2K2MyRDNpZ0hPY3RFU1NRLytMb1lMR0U1TGFGRVI5dTJjRjJqMlVpRHZyaXZXeTRrWVRWdHFMWXFvRE1xSUtrVk5Lb0x3UVJnNkNBdFhtdjJTaDdVVElFT2FxZmNaRllxMGlNR0ZRaHJ5ak8ySGovTVFLR3ZTYTJoemtwRGdkbmRjQ21MZ2s4S3h3UVV0NTd2V2Y4bFdzcE5JekVBdnZHWUlSU0Vobm8yVlNlL09ZMjZEdmdIR25wTm9HbDJSbDAwVnNaVlM4SFNuSldxU1F0QkdsWDhXcEZMMEFaUmdxREZtM1dOQjVZR0J1MHo3WVhXeG1GWkJ3UmJIbEZVS3BKNTF0R2hKZitqaEE3bFpLU05XdzkwVUlhNk9ZN1dHLzhJZ0M3czZGdjM3eDBoYVloYjNVR0FYWHRJN2IwRlNGZm9GTk9acFpLcjBIclEyazFBRHBnZ2U4K0Q1SXFodVBKZmlXV3VuU1hmU1I1VG9nb2tneE5Qc2tHTExiVEJpUFNncDc1bzc0a0JHSElkaE1EVmdxZytScnNZQ0VpM0gyallTVkVEelQxV05CTDBwc2lDOU4vT3ppRG1vWlQvTVRpektmNklUbytaQkYwRXVGRUNEd2tCbjBnUUVCbENva0JFVklpSkJnblJJU1VHOUlnNWR3eFd1UVN0M1hxZzNma3B5RlB2d0hiOVNja0lmK2o3bU5NUjFkQ1BpenJEQUdJUnpiNit6SURKbVlKaERHZEtwbUtHeklqOU5haGlvNW1kRms2akdydGZUWS80VURMdzJrM3I1OGlJZ2xudXF4WWdhdlZ1d1Buc3RqbDg5cjJTQzhGaGFkM05EODMxNm1SM3d5SUhWZmNiK3J3UjBGN0pwaC9WQzlhZ0sxelAyV0FBYktJMmgyUVhQbm90ZWl6OFh3RHdlSiszdzFvOU1jL0xGbFNoRnU4ZWNCT3h2VUU3cE91VkJIczRQREZxbERZOUlFaXlkb0pTRXdCc2dJUTMvTmNXTDBzZDZaN3dzazJUS3ZaSzlsZk95c0lqQUI4VUhNWFhCSXdYTEhHVkpxTlhmcDZJS3Y0STR6ZzFVRW9MWHhna0VkSGhQNGFSeDRxTzdrdVh3d1BSbDJJNE5pcTBMak5JbmlGNzNMUzRVZlpSYnNPYk5mb29KTnFjSWRQbGFEaU9FNHJiME5ZanV1ZVk4STVLY05OdEM0YkI1c2lFUjZLQlhWcEtPQVBHVVc0MTRhdnV1RWVJQUVvSVpIc0xkTGRXOE96U0REVmozVmtOakNKWk5ZREhsZTNyRVpjeU1LcG9FMHlHcGdIckxoY25PbUlwR1lQUlh1bVVLaXhGOHA0VFQ3VktxYU81dDhHTk9ZS2x3VjRkdmNaUVBObjcrbGU0cUtPdXVGMUc5TmpkcEg2OXErQWFVNEhJMFpTNkxicEdVOFdrWWE3ZEtEUDJ0WW03b3IxcGdkZG41SE8rSHVOWW1NazNZcHlLSDNTbWUrMm1QOElWUUdHS2VUWGN6TUIzelZRbzNYT3dyTlZ0ODVseStTSktlWnUydUJVSG84NVcwUURiODYraTVjQ21PR1lJTzdYQzIwSzZTbFlhSHVIMlhCd2poYkE3SG5aWnlTbmU2S0g3MnQyVTErZlRCUVkzWFk3cDJ6d2g5OEw3Y1FCeEhPd1VmWkJuaHdNZVBnaCtneW1scG1kZFVXbitRbGd6Sm95WDB5TkNJVzBiY1VteWtMUWt1NlFkdVpMOFFncmxMS0l2d1laV0dsTGVTR1ZJOVphSTJwRDZSaHJEMjJ6T1ZsdFBsUFpDT2lYZFM5clZLK2t2WkZEU295RlBzTWxISXFZeEVBQW1ISm9DQVdER29Ua1FBQmFjZlVzRVdkcWoxVmtPWGp1d0J0L2NTQndqQ05MYlM0dHF0b3ZDOTFIWVlZZHNpbkFjc09rVUlhQnpqQzl3MFY3WU5RcTdSVEh1NDZBRGp3RUhuZ01PdkFZY2VHdUFmYUt3YnhUakI0TXUvQWQwK3VEYndJUHZBdzkrYUlEOWpNSitSVG5vZC8yM2RpMW0wemZzd2JuK0lULzQvRzE4L21jN2c0RHZvd3NBTEFCQUd3SDhUK2NmUm5QZ2YyTnQ0TEVhQkFBQTlQNHRHVG5kd1BkZEVZaEh6N21lK2VMcWNUQXkvdXJuenlCWjRuWEhURG9IODJ3MEtwekJtY3gwSG9FRGxFZkVEN3BFZ0lkQWJnS0UwMVVBekFxamwzY2QxNDhLNFpuczJCVVBHV1NwSUZOVjR6Znl5Q3RTOEMvOXZOLzd0eDhxMDJSOTdlYnBvRlczaTF1dWZVK2RvdDl6elhiZXkvZDd0dm5JZld1Mzg4SjlvSXZTV0JuNG90ODgrTXdtNitaSU8yMi9ON0tiWi9OQjJ1ZzhhUUszR0RiR0VON2JyYS9wbUZScGI5bFpMcHIxZ2Z1T3ByN1lkZlhGRERiNXppR01UUjJxWWowcCtZSDZ2aXRIVlJZOFBCdTUyelZlakwzNVR2dTI2aFc2dlZvRVRTaEU2azZ1N1h0SnE3dnRMMzNyZGYrcDNldkZLKzA4alF3NHpvbHZDL1owcEwvUjZOcCs5YXlxdEgzdDNiOHZNVktoaXp1UXkyV21TSWpnMlExWHVSN3JnY0dSK2M3NUdIcHBHVWZLK1RMd3AzK1E4QjN2ZXJ1TUlINGpCSGllUjFPdmNpRXRZTVFZK0RpbnNWcDJuV0hoaHBuaTAvZjh1Qlp6YThIcEl5R0x0bDM0eHVDTEliNXp1V0l6SWpxdmRqUWtCZGR6a0daSHVnVk9JUkdiYWt3bUxvUjA1ajhKQWtVbCtZQXJiYUFXa3VwRnVReHl5TFR0Z3JYY0pSQzFIMjIzcFZxYjFKZDQ2R0t6YzRxRXpYZUxiMFlsSmZvZS9Sd2dzT1JkUVJaU3dTUVRaL2xoaDd1eVhCSE1KcVJReWVhdm1zWHBabG9VbGRQVHFndnl2ZHBxMzBJU3NXcDFORlU5Zy9HOFM0WVdKSk5VSlprMzNGS0FhQ0M4TklqTHpudzUvcmhFaG1OVmRISTJQOVdNWEFhdG1LUkxiekFLUVk2MTVVeWJUeVJxejF1eGo0UW84RVFEVlVad3l1ampjejBRcCtvQlRzWmdkdzl6OEo0RFJnb2o3YUljZnJjVC9hYnlxdDc5YUJONkZ2aDArai8wdFo4VXJzcTZiNnh1dm1odUxKK1d4L25CVzlZdTF3bDg4VVB3ZEZubUl5VXRPYlZVS3Q5T2hJL0thR1ZzKzVLeFZJc0U2YVg0Z3pyMG5WcFh5ZjRvdkN3MWRxM083NWVmdmxDRlhuWUhrVkxPSjcwaGplNXA1eW9GSm1Cd0lWaWNzK083SGhYR09nekI1c1hVcExWUXNQSlFSdFdScXdRQ2EwNXZrdUt4ZW52UmhrVERKR2xPcVFIL05Nc3F1d1QvTWZCbkNqTlAyL2lhSERubTBmUVU5azhzWGVjQnpTTUZsSS80TFFYYmI4VXdYVGgrejV5Q1MrNmV3ODR0L1RWUUp1bjdRWjdXdmdEVUtSR0xVbFJ6L2c3UEhxL3d0Q1A4a2lCWDZiVTVqelFCY1E2RkF1QXo1SGJjbmZlRE5tZ0trMDB4TWNEUzh2RlFpMmh6b2Q1blh1UllNMW9IQzhpQmZEcWJRMHVxRGxwZlNaVXJiWFhsNVQ2aWVnNlQwQkY4S2dhb2NLOUdSYjloTUw3aXNTOGN1QktqeDI0VHNUU1dxR1Y5NzJ1TG1jd3dOVDVUaDEyclFMSTBmVVU5RzdlbEs0VTBSSitlOEk5bHJ1QjljdGk0UWFna3ZUYVROc0F4a09lRjdjQ0pWQjBJeUJNQlZ5VGxpNFRCclpHWDVKVmVwMUpkUTRKSlAwbnZOZXBGRnVobHZ5T0tkTmxSdWVVejVoZDJ3ZmVtUTY5RnBkQnppelpWOGRUUHVyNStBZnNpV3NOamF1NTcyTUhJYXJXcFR4UmlnNXZPMDRUZGxMaG01Yk1lNjAwQ3NXRXRxMzlmaDlSblBNU2xGQ0tJZEoyQXlQY1MrRUsxbGhGV0VoNldndStnOUtoeXZmMFlUU0NrOGFZQ3FpVHpVZlk1Mms1MVU1empHZnVQaXZDVkNHYnVZdUNGTG5uV20xU2xyc08yazBuY0lsSzBndzV1VTdDTi94ZjNWYUJzRjdjcmRYRVZYVm9aRGJ1bDdWTFZoaFg4emtxVFBGSDdKdUVQamIvQTk0azE5U2VEK3E5aENidW5KbCt4d0Jra2NQVDRHMFVYczFxUTV5RW1GT0tYeXdxK0xLdTBEcFBrd1h2bCs5N2FvWVExdjNQd0piVitUUU1TcHZzWWV5Qk9tREdIS2liaGViYThQK3BrTGQ2WXRoaHlWWjdpY1NWY25QZmNJYUZMWXh0OEZ0WU15VXltejlId2RYS2JTNEdTQzB3QnhBbkRTRzRjSWIyWTBTNE5JRGh5UWZpMk1SL01YWm01ZkZxUThTSFBZWEN2V1pBRWdza3JFNXlHa0hVMjY2cjA5a2hlUUQxMGl3b2RuSE9ybWtBc0F2TGFmbEh6RjZZMHJEV3MxZU9ZMm5KL3g2N014MG9lYlBhVCtxSFBwM1NTU1VDaUVQbytxNFFwNFJNcXZZc3Q4Qm4zQUlNZjY3SXlsMDM2ZEwrR1BVbkNyV3ZvYXpRK3Fhc1Q4S0FmaWVFbG50VWg4NWtNK3ViTURqbE14RlNjVjhBblgxcGphVWNPYVBEVUpHRjVGbjRzQU1WUVBWdEJ3Y3VOVVhlRWEwdTdpeHRuOEJhQXI2WWFzSmRUSDZqZWhlVzRTcklmT1FDQUFUMDVBb1NLSk9CeUpUdjBvY3pFQ2tyM0xNOFkxMVF4L05wMGhvcUhINTVEd1FCZWFRQjFRbjVaREJWTGhNL2dEeEVwbzZKV2VmYzh1TkdQa2RhTTNGYWZGamI0Ukd1aWpUNWcyQmNZbDhyN3R2NktBVmR4MytmUVM3a0VlaVA3ZDdCYzJEb1I0dGdqZE85ZFBoTnF2ZjNWNno4TWRETjdUTkgycXNFa0w4bmJ1dVM5MVRzTnZ0akFpeEZHNXA4cCt5MzBiUDRza2Z2Sk9xU1J3bXVyL3dnWDFrVExLeWtXd1BjUnprNlI4Rlc3b3cxSDBITXFFUjFYNy9Fb0xLSzdUTmxsSXlxZS9vVHhLaGlUbzFPZ2hUeTlVejFoTGJ0dnpXdWNEK3M0WjZIVUgyMmNKa2I0cWYybUtncGNCeTUzUUpmMWN4bmtPZnRPMit2SHgyNUZjaWRydExLU1lLZ1Y2Nzh6NXZxN3B0M3dVWGx5NHhlWllMMFRsSmNHcmtkR21wcDFTdklhN252dEZ6T1k1aXd2elgxSHpYbnlibFhCM0o5a3pkTVo5cEd3TnJoOE9JL2pYUkRUZkdwZjd4dkJHa0tsb0xOL1QvOHprVVYwRWpIRmV5Vzh2U2NaMlZGbWRxSjVTZVA4UllIamdxT3BGSHpmdjRiWVo3QTUyNVZxUGlEdGxXWkd0Mk5XWnlyRU8rd2lPK1RhN3Q5VU8yMWR0OUZucGhCMVY3enZueGpqZm96QmZNUjF2Z2hpS20zOWo1OTduRXVmZjlibFB4NkpETEdlZGRVN2R3a0t3eDZwSVFxRm1Nd1FCREZESVNZVWxSckRucUxkQWlmVm1PWEh6bHU5STlGb296cHZqZkZwZzlIdXRtQ3dlWTNvbmtsVWMzOEtQcjAwMVh4QTBpdkpFQjZ3cm90VDR2OHp3ZjB3dU1pZW9zMTdxOVFONXhxcGZzSFY2TnJMd3lxVTJscFJtTUVLQ1NFUlVjTVVTbnZZNzJXbk04WDg0Z3dXck9DdlFCdXo5T2FXYjUzZlFkVTc2cGhxUmFCTjh5aTErSVgrdm5YZEJNTXl0Kyt4c2VreEdVMDZWY29nRHp4ZVhGazYwek00RTdnelkvMmJRL0dhL3ZDQjZmVnpKMmRPRHMzTTR0L0xUZys1eGsrUEJ0UXBteUtZODgrNy9jZkRZWU5EdnFIaG5EdndSa0hQd1J6ZXBrQ244ZHllejQ4YVZZcExVcW1EZ2tORU8xSzd0WnZ5Nkt6SjFtaDNXd0Z5Q1ZIMkY5bU5QRVdMVnFPSWJlUzZ0ejJkbVNZSU9sUjhOcWRwckJpOFB4ajZSV01aMVFLZUtLQTF6R2kyQ1RxTnpYbitqaDRNUmxMWHFRQXZqcTN0RWVyTjFmUDMrSXlIcWx2NGpTYzNYbTB1MzNTckVKcE5sUnlzNDcwcWw2NS9KbmZtczVscGdydVpOc3BtOFpyMFZ4Zi9vUDZ1OGxRQ051WG0vR1dWMzlJVFQzV2grUktvb2d6d1BzdlJMUXNoNVNZcEQvSVBzcnlpdnVKL1NVa3YzU2NHY1FpRXNreTlwS3lhUWNvVitvZEM2cmVNcndaclh2SXJacWJ3L3Z4Tkp3NXR6S1NtMDJyZFdsOXFkT01oLzAvTHZ0TDdXWGQydENwNzRiMzdIdXVRR2FlL3k1NC8rUEdSajgvZHpJNlAvSHo4NTMxSGIyZHVveGVNM3p2UmZBTUxQTFFkR2YxbTVKc0w5dzFFRkpYNS9ZL00zNHZPbnIxQnYwRS91bWJUd0dBdzJ2ZEdmRkFUN1gyRHNQRFlVSHBxdUdITmNQcnljTU9kZnpZR1VMbWRuNGRMU0VhOXZYcm9XRTlVdTJ0WTZmdnoyY2ZKakdpa2RLZ2pUdGtsd2luai9MVVlnb0tnYXJaMGRGTSs0T09Nc0JjWTlVOGtTNkhDcDk1N2xsSG5GY0Mvd1hSeGlZL0tEMlIwTEw1MnQ5RlIyNHlUeWpxcmp2QmNPNkp4cDBiYVltbnZKbi9BdzVtd0lCSHJScDVLRkVKek5IMGlSWTlCa1Zhd0J1ZTF5VmtrdC9JcUVhano4a3Urd2YwdnVWT2FGRXU2VFNiRzh5VlVUU3dKZisrdDlGeDJhcmprdEZvdkZvT1E1WEpwZXVaaHpoU3B1a2V2QjRtMFducWxSVkFjeENoMFBKMU9JcUVFbnI1Q0VZZmU3SlZaOEhVM2IrM2xzeVNONnFSSTBtTXlGVVNsRHJQQXVjb0dqVjRzcG9IRDVUZVdlNkRwLzRsR3paRWQ1b0E2eVpKR0pTSmhxSlVoYStYS1ppV08vT00xYW0vSVhxaVFmN2NzcmxsdTNPTGlPOHFLdGFLemYwaVQ4QVFwbDg0V3NjZ2tFWnZSYU0xQkxSNHpzSGhZc09DRzBhR3k3bkp1a2FwNjlEcGxiMHBxMFBXSjVMMW0xYWlNMDVvWGszR3B2SHNMcDhYWDcwdnZNOFZOQmE3NnVrRDViNXFLNWd4Q3B1MktBVS90T1RpOFI3c0YrUzZ2cVRCY1FqV281Y3JWWEdHRE1nbksyalVhRUpXeW5hdVdtUHUwY2c0SG44L1hBYm9ZOTkwclRYWjJVTk5GWUMrTkk1SEw4OU8zMG5OK3M1VlE5VElnRFVzdko3MThEdE9jUWNOWG9iOXVCMVRYMW5zeCtIZVVpazBIdHozKzdZYzN2dnoyL3N6akV0bk5YbHhCKzZhc282UFRSTmFTR0FLcGRORTFxNitHbnJEa1c0ZnQ1Yjl0TGFleW5KVTM4b0pWWEd0em1Hd3ArTnFKWUtqdjVVd1NuZW9aenprV3k5QVJocktjUGlNbVpmODlWZWFCNng2V0g4Z1ltUHdLRUhqWjVGamJncE1wMjRoT1p3TlJiTWI2SVpuRmpRUU9wNTRnMVBXS0ZEMW05VkVacHpVM0p1SFM2aWpVTnR6Z1NFVmhOdmgzK29VZGJMd0piS0llNmN4YjByTkdJc21WbXFQQVorbS9XV0E0bXFaR2xvUnZHUHZqMnZmSG45VU8vbzZkZVNLVlV2VmZXck5YNXJpZTAxZGlwelRSUTBXa0FHbTFxUVBLc3dCOGlFZGhhNXR4R2xaemdZVFNLRVdieVlXckFOTTRsRzhxNEVFY01rY1R3K3FvNmhhWld4TGNGSXNWZzduV3BWMU9QT1Y4WmVWL0xIcFhNOFFrWUdNa3hoZnNSK2wzVmxsbmtxdlZ0dEs1MVJ4OGhRcWJ5UUJlNFJLa04rTHpmRzZLbXdiU0Erdmo2ejh0UTVRZ2QxdENBR3dQK0kwRlFhN3RTc1NKYVNEVndCVEo1ZmxxTi9BTk1QWTFNTGFuNFdCREtUc0Zld2JZRjlkMGEvWTlEZXp1clJ1b0creXJTOVdoajdRZlR4eWZlR1BSNWZ6ZExlbTI5TWtYNTkxZWhuSUQ5OWdJVjcxS2d6VUErNWlOeFYrdkx1bTl2K0tITldQNzZ2ZlhWODNxakg5VnZWUTBQLzdXM29ydzRtL3BxZUhHYThIb2M4U0tEOE1PZi9VeXRLZ1IzWnhCRnFQUXNIU1JLMXJuYmx2NnExVW12eEpFUDJkRjhZUjBYSldNck5MbXEySDZLb1JvMHJBU2c4dFpZZUx6eXBjK0RjU1BacXhZb3BKSUlLcXNHRHJkZ2htUVVJUGxMU0NNbjZGUW55S1JQNk5RdnlBeFVRQzJUZGl1TE1kQ21jL1RuNlVCNFRDVjFlR20zSC9tVDdhb015MHRqT2YyTmxzc0NUYktHMXBiUlFNb2lMNUdRU1UxTzUxaGIwMFZrd1lHbDBZWC9qZitiQTEyS3dPdktFdTFxN1lPaTkzYU5qTG9FckFJQWJGZ2REL2w1V0Zmclk0bnFFbnhQTXJ0cU9YOHJwNUlDWU1ud2VPc0E4cTY0UXcyOVZOMDVCTG4xSzdZN2lPN0V3Mks3QVRwK1BUQXdZRVljV0pxYTNzQUZFUlNmRzh0RUpEdzd5Z0JWeVd2V251cGZOT1pGQ0ova01XNmNhV0JKdkJEVWtrMHpsVHVQbkhwVktmajlLaXRsbGxUUU9kMGtIV09jSGkyLy9PbVpRcVFRU1NDVERwTnhNYmpJUlpMck14R1p4c3Yvc1g0SWJiamtUSE9RamN4SUlWM2lHcTNEMUxsWG9oQk4ySENHRG1CSjNJa2lEcDlraWh5OEFnWWVlZXZYNTNIVkl5UXlZOVhZSjRnYzI5SzZYaThsTWJqU21oNGdvVEc1VjE0OGNUa2VLZjk5Sml0bGhsaXJwZnBJYkwvYjAwaURnV29FTEkvV1FTeVdOUVd5ZUxlbkxyV1lJQjF1MTBQQkJWMmxPMDJDUDZHUnYrR2YrVzZqY1ltakNhU0tmeG50ZmNOTlhMSVpIYUx6dTY5Q2k1ZUdZZUF6M3RYUnhoeTRpQ0RTOElzeWYzUVl5S3BiLysvdEo2eklVRjZFSGdPclp0VXJVRGhUcThtNkRqaXRmWlhUVVpSME04NlpCS1o2OHhmUzZmbmRFNCtyTXYyU2tWVkcyYjJJOC9iRUNETlYvQXNXdnVVZkRrU2UzcjE2aXZNL29JN2NOT3o4L0tRRE41Y2g0ek45MnMwdnNZNnI1aFQwOFJRbGdrWGRhRzBRakpYeGluYm84cC9xZzlXMkZkZWZoRldzQk1sM0h0RU5PbE1ubGJ1RjNyM2FROWVFN0pxSlE1N1ZNSVNpa3BHc2tVMFAyUXdCaUE2eXpYV0gxMjVzcXUwYlBQS1ZZbHk5S292QU9EekN2VHJBUEFHbW9NNjJZak9MYTBWY2VHaG5uNXFrTWRRWlgwdzJMcGhYbDZpU1VGVGpoaHFuaXFpZXNIeE1QTTJ3TldCNmUzMlpnWE02UFBleE9KczUrZjRFc3NaeGZWc29xRUJuQm12bnBGb2dBZ0cxNnZuRUxBS21wR29ub254UWdnZVdISHMvQlpXcks2L0dxcXNOT053WmxSYmNQRGVBM0k1blM2WFVhbGdEUEhLcWZDOGM5Zk51Qlg3YzVpekE3Z2ptMTZENDRKWUpDVjdBLzVTOTRxL2duYVVFWXMxb2xCQkRQSjZxVWZRR3BxNWtxcW51aEdyRjZRYWhwY2ZiVmxoTnpUbkJ4cDJyQmpEeEluMVVVck5xTjh4T0VaME4vMzRGSTZjVGl5dURZTnB3MkU3TWNCSEtMem9wWVdmWU1nSkVrR09Tc1dsUjdkTC9LMmJmVGJNdWRxZndhS1MvV1ZOMzRIMlQzMDZHbVhHWU0wY3hCVmV1dGxycVppMi84eXZLdDVQd1lzdkwvd0JWanBPSkNpUXJYSHAwVzJTQUp1WUhjb3ZiT2JuTFp1dmxNR1R0aXlka2VaK0xSbXgzVUdoN2lDUjMyU2E0WTNwc3JMc0NxK1cvbG9adkVoN0Y0dTlTeGxGU0JETGtteTN4Mm03dkRxOHNqUlp1aks4K3JMTnpiblp5V1h4STQ5YWpkckxUVkxxeGVRMjNsdzh2SFdxTmJtWUszdzZHWnVLSlJlTml6ZlZnTGMzYlFMdmNCeDcrWTJzNzlhdFl6ekYzb3E4cHcxamU0UWRHOWNPM3RrOFRmQWJieTFSK1lQdmh3TGxBOSt2QlJSYllVOWhRZm1DcmM5dTNmanN4bWUyd2dzVVFEZGFneDc3RFBJRlRoYU9NMk94SWV5Sy9Ua3NJd2JVYzcvcWxQMHU4OWlSemRsaTJCVFB5QzkzYXZ0a0hOb1FrVWh5WXNGMmFYNjlraHVUeVJoUGZNZlZIb3hKYzhLU2pYSHcyV0w0RlZlbHpMUENVeWtqWTRLLzkzVUxXdGRHSTVNeTZUdlJpQmtsRk9wU3kxVit2eFFNM0ZRcTM5OFJsRDZmVnZyVkJoRGhSaUxkVUk5Q0FXZzB6UmVnOVNVNzI1b1hOZ2NiRkxPSGNNUDBoRE9FTkorU0x2RmhJTDNJRk85b1dkQVViRWptNmNpa3BCS3J5WjJRTFBaV1FIcmh2c1VlOW5ZN0hmWjJDd1VBZExqTjJOb2VtYkhHVTdSTDRMVHQ0WVZiVmlsYnpQN2NaZEpjdnhuUng1RGJ0b3VZdllQY0VCR0dPVlAvbWhVVllsWHB2MU5lZkVJTG90K1dxazRGendaOVFkajZpUU9INHZvcVl0K2x0WHFUUXI3bWpxK0pkWk8rejVSbFpObGZtMW1MeHZOVjl1Y09ubnVmK1NFend3Skt6ay8wVDV4TG5vUEk4eWplb2MrU254WDB1N3U2VGJhZTNnVUJaWmRNTVMvM2svKzU5ZC95OG45RjduL0xkMEhkOXEvY3ZQQVRlS3MwNitXb0l1Qkk2dE9wSG5WY25laWVCenhHZk5JZTN5QWNtMy91T0grOC8vaTVqbk83VTlWVTkxcVV1ci9xL215NXZWaXJudTJiNFRUNFJRZzJwdVhKeFVWL0xmZlBkQ09GRVNEV2Y4R1orQXplQlhramRqdjdHbzNuQkU5Nk5PRTlYcTU2ZDVqQkNKZVZ4dW4wZU9uNFlTMGVaMk96Qllvc1dZUHFsUm9pY1JySjBzNmEvMXQybHU3YTgvd0h6WjNQOTlqSnZVNklUNUhnL3FKWjI4R29nQnRUS3JpeGlBQUswQ0hPUmpGSUxFZVpMQ0hYb1hGclkrTzR5M1VzVXVzOGZ0TFZVRy9IRlR0ZlNCYnd0bi9jMGZuMlFDcis1cWZ0dzFVT2lSd0NKVElHVXlRWGdDSUY4Kzk2dmtrVDBLeFhKNGhpR3dPUysvV1YxbElwaWtMVCtMR1FzOEdxcElNbUdhcXZvMm02RzdYY2hZTU1xajJ6QjRwV212L0RKZ0dZb0pUOHk0SHhrWjlhUzlFaUFvdi9iZmd0TDU1dVliSFpsbnE4M0szcyt6anhjWi95bDduQ1c4K0xxWFJkcEVyRzZ5NWhWVFZVZU5mZ2NmOXI5Y2t6cjZ1TG1waUcvMDhJRFFPK0JLa05XRmxaTDhGVzAvbEZNUFMyeDNWd2xwaWpXTG5sdFJjY08xZkJ0N3h4T2JwckpRRXhhOVR0R3ZQNVhHTmo3a0JnMU9rYzlmdmRtVEczWHdlbTFNcEJ2VUhlMzY4MEdQcFZpZ0c5WGpHd1RxVW5XTHdVdXBQTnBqdTlGQjdIUVhZNnFPY1pGVFY0ZkUwRjQ3eUQ0bktRT2NHZm42Q3l2cC82N21qV1VZenBlcFdhYU82UHlKdm1RTTJSd2RNNmgxSndnVlBldUdaTlV6a25FUmx0MEZmaXRRUUNyNmF2SWhKMVZjY091a29pV2kycHFIZ29aQnB2RG84UFY1QmZQZnlMRExrbnR5WlI1cmJ4cWJHZVMyUG84NEVPT0Z5U0dqaXJ3Uk1YRWxrZnVJMUVRQm55TnFJNUV2Vy9mM3o5Y0JJNHRDbnhYclZWWlVWc1lIaXprTkZlblZSQ29XaWZTcE9kQ0NIdGNCa01KZ0Y0VmRneUdQTnY1NFQrdjFYa3loWDV1cGxDdnBZS0c5emxscTNZa2Z2TEJ1UnJxTHUvZXlkbWo1WFVmQS9MVzUzK1h5bTFaQTJwRElpYVBwNDZXNHJYVVVYOElaZjJXa1lEblArempmT3hKYk9IdUhLV0xqbTFxZTNlZS9CNCtNVi8zMlVjMTViWkJ5L1dYeXpJTDhlaXlJQTh1dFFhTkNDUkJoek9nMEFiY2JTRFFRa2NMaWtxc3V5VmxxS05kdEZGS1A2cEdwUXNvcWwrZUwxK0VYTXRURGhRT093Yk9CdjdhT3o5RVFkVnRKYXRHZXRsM01PTzdRaVZ1LzFWM3JsVW5yUndjdEdOVlY0RFAvSjlEclNTSDZiaVI3N1BRVXlTVWpGbWtjdWE4U1BmOTRQOC96a1N4KzY0RnE3OFlmekk5em1JZXo0Nm8wZWZHM01SbUJ1ODJmM2U1RC81TlhJb2tEY0tncGNSNDgzdXAwbWxlUXR5N0pkbWtFSFRENXJVdHQrQ25xSmp3dG9ZblZNc1k4YWIzVC9SZENQajRBK3NmeTF1ZmwzVjI1Wjc2ODN1cHltRytwUnF3Sjg4bHkybHVlOFl0K0RYRjZkOXhpZHltZ0ZrM21JTzgxakF3alF6cldVV3M2czVHMmFMNC9RM1pGYzlxM284dGN5WnR2UjZ6ejRneDROcGRxNTkvWDNoZC90S2FkS2h1WnV2dDlCcFo2Y3VLSmlvSzYyV2IzdDBsYXU2M2JMOGhtNXlVN2QwcTFOSGlMSDdkV25QK1oxbS9EVHhHeityWDc4a1AvOGNaVU9yNU0vWitqdFRRNDhCNk9KL2NpNXdsZ1FZd0wydkFPMGZ3STNISi9KdVFpL3ZmNTNPMGFxZTd4VUl1SVU5d1F2MDRza3pXVStRWXg2UVMvUno0M3NPWitHdjlOWnN4dTRBV2kzOXNIUitQVWg4R3VFSnZYQXNpcWxpUmJHKzZDZlJDUnRPWERQUVQ0OFdXLzlaUkgvMDhjdmxUL3JzM3pDdGFsTE5xQmkyekVkc3Y2d2NCZmlMTDVjQTVGVEpqY0xXeE9HTlJmMHUzVWIvSGdRdHk0QS9qU2VMOXY5cGV5N1FjLzNOQXBwODNMQy9GNDVHMjZrR1dWRGpJMW0vbkd1NGhYYmd6SDVjb04rUHpEak84V1NSWjNrdm9LTEhPVUVGTERGb1lCa29ZTkhvdk9Sa2VCdEpsVW4xT3ltWkNWREdjamJPQSs3dm5sREFFcFZldDduLzlMNU1KK2pmamduTG1rd1l4WHRjY3FUbktVa2xxL3d5NWk0MVFQLzN6dEk5Y3NjeDVzekw3VGF5WkZudTFML1I3dWJBeVpmYmkrMVRqYnZWc1lEOVoxZXJzZ3BYMStxWTMrcTJzZFV0ait0WFdSMHp1VDhNcUJINTBQdjJsQ2RiVHJycWFwZHYvZTI5dWNBQWtFRzFZYVNkRzJaY0llUFMxRFBQaG4xYmJXODNZbVRpWXVseGdJN3ZzTWFORERtUjF6U25JaFdEUHJXMXN0TjhpL3B6L1dMVGlPc1l4RHpFdWlBSHM1eDFpcnV0aUkwYml5ekRTZ0VtL0o0TitxN3RPaFJkOUFaVmU3UHNOK0xVbm9QbG9SZ2U1SFZvMndrNGJuUkN3QXJjSDVCWjJPbnViTU9zbDNTbTNjazE1MGJaYnNUS2d0aHVSSEVIa1pXSXFBQW5EU3lyRExOVDl3cll4NkxpbFlwZVozQkdzWFBjS0VoY0lkd0taV3ZZYXd4OWVCbFVzQzFXSHdvUDVqVldXOFpxYllBV1doMVlwNWZkWDBZRlFJRzFGMzBLMWtTUlRzNlJDNlZkb2pqWVJEUWcyQ0VLc1RKV29wWTc4RFhHVlgwZ0p3M3FyQkJQNVhXWFY4eFd5YS9qc0JpOEhDcVJmdklTWEpBdGxCVEg3ZHVTR0hObFFORWc2UlMwMHVvekFZRHI2YUU3R1BEVlVqUFJRSlpLbHpOeUUxTURoem9LOTFtZmVGSGZDRmZyVTF2R1VhYW1NcTBDb3NDMWc0bXJxbHF5UDZDTjluQWtSd3ExM0JCQmxrMkVRQ1JPS1VvVnlNWHVNVlNtTkZXYlNIWW9FYlNrcWI2ZGhUN1AxVWVwYkpyc1FWczdBdWtMbUpZc3U1aWhDMGFKRy90ZEREQ1FOVnJsbHJKS004M1p6VnI1aFpXUENZZUxxZHBBWjdNOUdsS1VhQldidWl3ckt3MDJqWVFBOEpJYStGcTNDOWpuL21NWEhYUUdIUmxDZklTeEowVmpTVnh1V21OQXVOWnkvTVNHUnVPaXNXeURVSmFpVzZycmExd1RKWnBiM0tqaTlON2RmcTUvS0t1UVJPNUtoRVNEbFZnMGZYVjhQVSt4ejJmbG5sQUNrRklhT1RZUmZSdjFXOGtrVWcvZTlmVFJIUjNjV0thMmthV0x5bEo2YTRtSWc3NmluanB2WlBzcTNlQUZ2WnFaVnJjQVR0OEFzOHpwYnZhTWlzaWkwOE1aRzNyQldCTllZeFlKT3R3N3F3MG9JOHl5U3dyRDI5K2VQaUhSd0ZQQjZDb1ZFRGVIREx6aHByQUtOZWE0NTMxZ3NjcUljUkZlMDN5d2pDTmpscWZEU2pIcnJMTDN3VGcrRWQ4azJnRXBCQ0o2K1RlOTU0b0JGQ0VxdU5DNzhTckJmZDRZeEloSzhHZFhDMTVlQjVpZ29MNytMVi9JYXhSZUhJTTlGaGY5SHVhWUZXWGhtbVduZVhqUmZQTlJkRmttVmZFUURSbUpicExvWmYzd1lsUU1MY3piWWwyTTcybHRXQnA0UVh4NnFNdGFJY1FxSWNaNTAycUpWT1dRRnZwS2ZERUxTQnNIOVpObm9OVktsb29UOGlSNW5zd1Q3MU9ONzBXOFhrK242MHZyODJFM1hVMlhQaXNMem5oQjIrV3drZmlGV2gyNjVVUlFXWjhBMHpFRnpsUVBxcWs1ODFaTktqUWZVYVEyWUNIeGR6T29MbnVFV3lyeS9DeEdEUTNDSkJHdFhhMUxLUmlrTkFtODNsSWNESWIrMU5UM0dzVUw2dVBUbURsZlhIVVhNOTVtZGVreWNUUUJSSVA0aUpPREp4NHpFUkJhVGk5d0dPdUZ0alpBTU5KdHp3K01vRmNWOUJyK29KL0Y3ODd1enIydTYyaW9SNmZ4MTVsQjRJSGVpR1RDSzJsc2E0RFQ1UEFVRHFLcGdmS1VWYU5vSCthT1dWR1AyYWppazlpN1BRY2tlQ0tSVTdRU0R5MHdrTFptTllTYnBHZHpOUXQ3L3IxQ1FiUERyUjRwREFoUmZ2dW5DREZVV0pvdVo5cXhNb0RaQ0kyV0RXTXpuc3N3SEsycEhCZGhTZE9BY2FUSEo2R3FtblU2MHRCUTBjdStUYzUxRWxKWmo0cStpV1dpZjJMT0Z0eUtmbU1WZ3dneHFrR3dTcUxLR0Z5d2pQUnk0VFBZVEVEMTRTRDh4b3E5SGpnYzlZWXN4M0twVmJ4a1lNWS9QWENxZ1FMREdBZ0tsZmMvV2NreHdrR09DYUFWcmg1Rkt3QWpES2pMWEwrTlM0d3R6T0tWZEFxcFpLSUdkRG1NMlhJMm9JUDI2S2dVMFgremk2dzRPWlZDK0VyV3JKRjVLR0IxNmkwY2ovOHVRU1RlY0NNQWtnT3F6MUpMdVdMOG02T1ovMjVtRW9IKzJmU04rbGloU2kxYUNNZ1VqVmsreHJtb2dHam9meEkrU0xHUFp3UGN4VHFqYmtHdVdmWmxtVFdDNUk2U3BqZlhncGtjeGFsSHdqMUYraHhuN0R5NnVFNWl4MzYzNVZ2a1gycmVYZStzc1lGUjcrVlNENFRvUFRBRWdCRjFXcFJsalM1djFFRjhYTXdRbHVRa3p3RnVRdjFRb3dqcnVpenJRNzFmTDh0cE9mRjV4Y3RpNFI2eHJOeFBSVElNTFU0US9jSzZQYU9RUXVGWVFvL0k5UVJZMytxZVBLakh6MHZEOTgwOWUzQlR3V1hTZS9jZVNWRzBNSnpoMUFMZHFQbDJsYzhaNCtKcDRCalJxTm9od3RFNTlCQm9kZGJEYlJKeEVVKzRwUURSWWIvUEFjeTlGSGxXaDdraGtyYjRMeDBXZEc3M1pxeDhFcm05VUJ3ejU0dVJ4OWpsVTlsUXJmMGdqcTN2UkltZ2xmVUhDTnAwbTgyOFBNNmowcWpNbEpPRmZzUTlQRVdBVy9RRzBWdjlwTVdnYkhMQ1JLRGlBcDliSFhMS1oxTWZqS2ROU0lUeEdpbWM3TWFUMU1xd3RqMGJjUWxkaXN1U2w4bnBCYU5ZbDdoUldINjg0QllFbjBHSVB1NnFLakt4bUMwZ1ZWQUdrL3dTTHlkUWpObVFGWng2WnN6Yk85disyYmJNcGlkT085c0VrOUVLUzdvRFhOSVNjcU1SaHQyU0JjK2d0M1gyZUZhWE1YU1pSbGFqNmk0U0R2cGFBYWJONUdST3BENHJYV2FrdEV5MXpXYmN6SHRCV0NrSzJ2VDJucytIcFpVWkhJQUhHMlAzWUJidFhVaVRFa2xFWEMrclhYL3JYdEwwTEliWEtBYkk4eUNtekZnVVhleHVIZzE2Q1dhWTVweTVwamRWVWFuQVh0SjRIYUNmOUZzTnlzeno0clNhWlM3VzVrMjNHOUJRYkUxQjc5UmlYV3owVm5TZUFUWXdZdFJabjJPOXZidksxWnZRQWFYR2tkdHFYVE9WZ0dCQmM1ZHRxQTZOdXVRRzFSWlBycm1MZVRsYzZ4Z1I4YjJSRkswZ2xTOUozanMybXJnbTVpdnE0MzdIVG1mMEhWYVc2clpaaUp0ajFIRHdkU2lLTzBjN1lsY2cxTmx5bGtYallrLzlRbFVHQXNTZ21xc2xuc2Y5QUh1WVR5NHZ5NlhjS3RjcGlSd2kyZzYrMlhMOUhXbzJ1V0Y5SVlscnA5UExtQSt5QWk5RGVla2ZwbXV3MWdxaEJQVURvcTJNaHJYQm5JbnlsMk9keW5FYm10TUphZER2WVM5NFRscHg1NG8zQVcxWmUzK1VwcVBOYUQydjAyRmFUZXNTN0wzZVFVRVZWN0l5c1p2UmlrNGVnN3RUWkJ6Zkd1N3NoUnFiWVU4dXVYU2d2ZTJUZ1kwQ3hZTmtqVldFVUtxdnhhQVZMTHVMSzFOZy9lYVdremNzd0c2ZStOMlRkekFEMitiOXdZWEpyVDZjOUFRc09sSGJtN1did29RSk9YUVhnTVczSmsvNkZSNU5VUjdLY2dVbDNFWGh1c1d2ZGFEUE4vT0lxeDFxM0ViR012cmpuSVZnaDRWRmxtS0tDUys1WWM0Q2J0U3ZHUVpQT1ZVRDdqNmRGSGdML1o3QVRqbDJ6YnlpZEVyVzJJeTNGWmUra1h0ZVh1ZlRZZWtOdlA1NHpENkpibmpjeE5OK2xBRnZBdVBrSDRrQUxkK0MvMm9kemhvM3pGVVZnZGdWMk91ZTVKM29BbHVZSFdZWVlManlKRS9xSVEvYnZFTkcyV3N2c3VTT09FRGxXMUNMd2p2alN0UlVRR0IzYWxhb05ueFA4bkhVcnk2UTEwalJZQy9nRDhNM2Q0ZnVwTkEzMy91SXN1TFJxVXMrRjMvOE0zam5OZTNZcVk2M2lueTlzVmZzZ0dzZWZhVmlUaTJJN0M3VGVkd0p4REwrSFk1cTU3dVlMRmxYNFM4QWd3MWtETWdsMEd2aEFzQktJWGdHQTMyZUZjaHJwS2tVQmt1SVpCRmNwQnB1QjNUUjJhSlRMSkMzSE9QOWlqT2Jlcys3RC92MmNBNkhhVjBCZk5EZU9SLysvOVNRSlZTZDRvN2RTWVpnVjRiRm53dlNPYWpKVlpSbGFWVVdwVFRmd0dWcWVqbW4rL3FnckpmRVVmaFBzTmRBM2FiV2V2OFpSY0pabHFmTExldG1TMElveHJic1hnTWVjS1FIbjE0czZWcWRzMHJLTWlxSCsvRjFWa2ppd2NzMDFxZ20wc1hPYnozelp5Mll0ai95OHk3enZTeHV4YmFWb3VtNlc2N1UxcGxCYVlYTjlPMWo0VDFZNTBiZkNTNkxpNWh1M2NhYmthRjV6MVg3VXgzdWpNSzZYN3labUZuK254aUlVdnRIMDNBUWx0RHRYbEdmTmhpcExSSkx4QVErSGhxVTdvcEdGT2IrdkZ6SVNDdDd6VDlEUXFCNDRabEdBQlRRRUV0dnhvTDBGU3k0TlZCNm1kanhXUzBBRDdDVjEzbVpmNUlVczU1S2tSRDZnTnl4ZzZ4N2c2VzdvQlQvM2JQVzhNQm5pbHN4VURMU2RWMW9EUExreVNHL0xrT0d5eUMvS3dxYkgwZU80LzVZUStGTkpzbVVON1ZUcVNXcjA0TjZNZm9STHNvbHNucVNMQ3N1TzZBdnFsQlFpZzRCeTQwQ3dsREtVOXVoQjRwVTdDenVuOVQ2c1RuYmREVDVlQlFuY0VpeDlkZjVCNWhMcWJKZUhBVytheHVWMkViMURZYUZoWC9ZNEdIb083Wnk0RzQzbW9yME5NUDB4SW9MNWVtVVNweGtJaHlQOUdCbDJJV3V4VlBWY0xhY3A2ZnBaRmJmQVBrZ2hvdDV5WHRwSEFYZGx1ZEpQUWFCTmtDNElyVFUxcWdySTVrdlZoMEg3cU9SYkJWMG91VmxnaWN1YjNabHFJZ0p4OUwyR04vZ1NkT2sxWnJMWHZwTEhFL0dveUYxT0tOZDZ2SldFRFAzbXlpbGowcENnSzc2U3lSMnM5VHlETnRoSkxQV0o5TWxJV2VaZ293VStGMUFnZWF5T3ZlcTd4RDFpYjFPdkxBWmFSeklZRVkvcjJ1S29OMWFZanhMemlXQ0dON0J0c2ZhWi8rVnhROHk5U09JRGRZYmpNTkdOQVMvcUlZcTRia2tuRzFhOVBBZnlSUjVscEpkNlhRU00vbVRVK3l2Wkh5d2c3MkNXQnFWdUt1RDBlVTZNMXR4c2treXJ1ZzNQY0VVM25XMWh4Zko1enVSd0lIbWRnUXdOUnZ5MVVNbEd0L1VZZ3lUdVg1YmE0UUFoalZCc0FzZ1daZ21XSGpqbTBidFl1Ynd3dUhvcFRIY09uaW5LK2w4RDhtVTVIYlk4aTdKRjJ2YUlCUmtDbXhZcER5bXQ5UlJLY0JKMHlMUHJTcE5OOXllWFMwMmlHSmpoL0FtaVlFcXJNT3lLbG0yV0ZxanFDYVROSlh4cjlxejNXUzduS2ZqZE1RTGVVTm42dUZGOGZudUQxWWIxaW9JZjNFcVhoS2pPbWNMbG9td2Myc1pJWGZsWThXN1NsVkJTaWROczhnZGw3ZEloQ2FnWXN0TXZRci9UV29EcDF5V3I2bTNURnpCMkZLeGg2SkFsUVRqZm5maWV4R2RUdURMVzZlYjE2N2dMdTd3cWl5Y2lsV3RjdENJUzdPYTk1STRES3phZElzSVUybXNGNittWXZiZWpxYjkvblF6WGZjbi9YRmRhT0U5RjBMV0RGcmZuL1VITVY4SnJrOHYzNUNHY3pFcE5XakwrSi9LVkxmdFA1S2FFZEhYWDNqU2pKSFdJbWhMWFAyR2Y0dDczVjZVdzE2QTg0UXYvUHNKcWZ6VFJrcmhNeXhhQ1pCRERVV0lIaHEyWUdZeGF6S010SXVNZGJ4Sy94aDV0ajZ3YlhEbk5EaHUxL042Vk4wbWg1WndZS1FmKzF5MEpwWUJEOVB6amE5ekNHWFV1ejdJVTVZM0pRbkJVNmdMSHpxbXlKOHZvcmJQdG92RDh1RFZWQkZtVFd6V3RtY2JWTWtuOTl6ODl6Y2t6anhIWVJ3Tm4zQ3pCZVNya2hKR21rTjRVMGpBTDlmaklnTzkvZTVRWXBHVlYxS3gxeUdlZlZmWm5nNzNQUC9XRWZ6bmlMM256ck8xODFaM2oyM0c0TGxka1F3T2R1RkRFZTZZRW1aN1NIdGVNT3RWZXpjdHFML2VJcTlZQU9LUXZkalByc0RPL3VTU0s3anRYY3BIUk5mTWZPb3k4Ly9RczdhWS9ic2diV1lCVWc3dUR2WTQ3elpsKzBwV1pBM3FxREU1NEM2eGVPenZ5Vm5pOVhWZXhiSjFMR1pMa21YaW5VMDVTTGl4ZDlQeDRia2lQaWtJZ096amx3ZmZ4NlRxZnYyWHpmNEQrSmZtMHNiSDNpcU0vOXR6REgvY0owR1FoWFFZQUFTNGJ5c0FoR2RKckxCbmhsUWJ5NEFWY0NyS25QaGUwdjk3RnJ1WVoraS92UFdTWTRVaG5uZklnV3ExK2NQRzVBWThaODVDY21GNThmVkFIRmlwZmszOTdnVGFHY2VKT3Ura1FvN1lxSDY0WHZBaTZnMnZmelZIMDFVZnhFQXJralhyeTJiWEZvcTZCcThOYTNaK1BSMWxyd2VTcWplYkV4dmVuNm4yeWEwU1RPTUFjODNsS0VNNElPTng2d1FIN3BjYmx5Z2dseVhFMWhpSHMvVHIycmxFYkgyK0N5YXB4RVpxb1VmdXBObVkyTWlKNnlGeG1PeTIzMjBadWc3S3pYN2MyaTJMNDVXUG45TlFlUkczalh5d3hTelZRZG9Ba05ZZTNLeWd5M1lxMjgvSFpvNU13YWxpcUR3N3JCUmplWkUxaXFPcWFXb0JpeHAwZHBFSjhxSlNvRUFDS3RBQmZWNHBOTjdKaHpqUzRSY3RUOVQzOGZjUlpNb2V4aTA2UFZEWVlENmpaVEF3eHlTc1ZuZlFvNnBWdEVPcUluT1FtRWJVdlQ5VDlqcS9BdG1qMWs3MlRCYXBoQ2oxdkNjV3BidTg5RUFPbjRDbWZFY2twMVlzYTBLZGN0YUVPczBzWU01YWxvKzRXbkIrbEU5UW40Y0hESkVNdFVMbGhpWEwzZDBLeVVEVjFwSWgzRXplLzhjWmFtaEhmSERVRTYyMmk3QklrQThTRGpsRDFqRWxpbmRVVllvRC93UEFCd0REZ0ErVlFJT1dsWmYrbmRONEpodjBMdkV2K01lRkFaRDI0TVBhU25mdDB0VllsUWJZb3hvQ01oR0tjWlJod1RqRm13NzROcVVHQVFGU1BlRFFpQWZBRDlDQjBQWU1VeGZnSXQxQU1BU3dhR0lZVzhXdWZyTkNrU21Yb1U2OVlmcnJyYWRlQm1LRUN4VW1ES05VTDkweGl2cmRhdzAwUUhmOTlkYzU5RDM2YTFrZjNYWHQ5ZE1Nb3J5WE9qWUEyMm5sRDFUZldzY0xFYUtuM2hOL2pnZnB3cTJyT2pWQzVCdWtXbS9kRGRSWm1XcWRoU3h2MHdFaldIcHRYSzJiR083MWJoNHFRWmxDYVhYVENiUnV1L1NCRXdZWktrZHQxRnNSWnN4N045UzNXUWJ1QUYzM0xkVnJ5VzNsVm5Qdm96OWpQWVVva2EwUUJnRGFnOEpWMzNXWkNDQUZHSnpWVlpkMXNWTlh1OHhoWTllTncyZE8zVjF4elhVQkFnVUpkc05OdDl6bXVzV1MwY012Nlk2N2VycHZydDMyaUNpZmZxUW8wV0xFZXVDaFhoNkpFeTlCb3ErU2drT204OEgxVWF2R0dsbXkxY254UmE3Ni9mTkxxWjg4K1FvVWVteWd3WWFFZ0VHS3dvSmlKVHhhR2FxMVlVWVlhYmkxUnRuTHk2OVVtWEpUVmFnMG1zOVlZN1JScGExMnZqbW1mZGh3eGxrcnJRb0haR2p5bTBqaERaaCtJZzBYOFJDSitJaENBaVJFSWlTT0pOTElRa2NlUlpSUlJSMU50TkZGSDBPTVR2Z1Zmb1BmUVNERmVaUHBpV3hIV0k5Tndtd2RGcEtCVkhxWW1IVFFTYkpVZkpUOTloSEhiS3R0VGpudG9nTU9PdVN3QzdHWTRDUk9yQ1phRkJ1aEg1cmdDSWFKMFh5ZGJZZ2Rsd1hQRkpOTU44MTRIWDJTRmtlY0NVaGdnaEljVjl3SlNXakNFcDZJUkNZcTBZbEpiT0lTYjZaWG5wZ2x3ek12UFIxOWRiRkZyVjZpOEFYYTIwSWVKYjYrS1ZDdlZZdnpvcTN6Tnh0Vk9lMk5VU0tad2xnU0hYOVNMUTZ0VVlTaXZGZERGdmY2T3l1M3FUSFVMTFoxRGxEK1F4ZGlhT2E5amJGc2xhSWRtbE5hbzNGODlrU1o0cU1reXJUVUdKMmJ0QmQzM0VPd21RU1JZSTVnZ2lBQ1RDU1lTeEFFRTl5V0NsSEl5cUxrQ0dXYVRHUlFDeDhTMFFvOEd5VHVncklJTW44RW9rV3NHaTFuTDBGaU4wK2M4M0lqYUZVaGsyaldVcTVFSVRLWE0vSys1TkhDMEdjbG9yeTlMWEp0dEVWMjN3aVUxeGF0RDJZRDFDS1pRWVhDWEdDSXEyWXZLbVEzV3VwbzB3MlFOVlB2NkdVVVdoZG5Xbm1ydWhNZlhiUVkvWDhBbFpvNnU2UGtkM0hlQjFRbC91L3FRUFRQZ054S1krMnZBZnFOdzBsOGVIcHJiK0RVT002bTczN2g2OUNQRTg4bXhNUjJyQjdKeHZXbFlXdDhINGlNdlJ1N04zWWVXUTZWbzg3NzJiNXhOSmtlYmh5dUhDNGN6b3BwTWY2ZFlkTEJXNDdER2dHcFpha0hycjkzTk1UUGR3OFlTQ1g5Tno0SGlQTHIvUExBZmFtYmo3a3NsWC9zeGRpTnNmM0lmR2hRVkd1NUpQOURHUGtOUTJseFh4M0dVSzhEQUFBPSIpIGZvcm1hdCgid29mZjIiKTt1bmljb2RlLXJhbmdlOnUrMD8/LHUrMTMxLHUrMTUyLTE1Myx1KzJiYi0wMmJjLHUrMmM2LHUrMmRhLHUrMmRjLHUrMjAwMC0yMDZmLHUrMjA3NCx1KzIwYWMsdSsyMTIyLHUrMjIxMix1KzIyMTV9QGZvbnQtZmFjZXtmb250LWZhbWlseTpSb2JvdG8gTW9ubztmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7c3JjOmxvY2FsKCJSb2JvdG8gTW9ubyIpLGxvY2FsKCJSb2JvdG9Nb25vLVJlZ3VsYXIiKSx1cmwoImRhdGE6Zm9udC93b2ZmMjtiYXNlNjQsZDA5R01nQUJBQUFBQUQ2Y0FBOEFBQUFBZWZRQUFENUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhDQUdZQUNDYkFpQkhBbVhGeEVJQ29IQlpJR3dBd3VET2dBQk5nSWtBNFlHQkNBRmcySUhoQmNNZ1M0YlVHNGxZOXpON0haQUJKSHFMWTVFQ0JzSFNHVGc2c2hBc0hHdzBZYTNzdi8vbUp5TUlTd1BROVU2aVdYQkxIZmN5UFNjRGxZSDhkWnVSNHNiZmNpZE5Kcmp1eTkwcUNGb1VkZ3NsdWpGaEl0REcxZXJTTzN5UFBYejcyZjhzKy80UDFUcHN6WElTNjg5WHFSS3h4VFZrKzZURCtMdEE3Rmhlc1BwS2tNV0g2R3hUNUpjZUNDOXJ6ZE1zcnNuSy9mYmc1azlkZTdtNXdSM3JOWENuQUYrYnYwYlNnbVNFam5ZMklBVkE5YXdidGlJV2xJckJpTkRMRnJDb2tRbEZLYzk2KzZNQzdPdXZoZFYvLzgxcmEvQmpsRVEwVFJGUllNbFV5dmIrckcrKzk2dk03T05oK0JlZlpjeExTRWJDemdXQ3lkdGRROXJhWU5YUzJNaGw0ci8vTy85bVo1ejdyM3ZQUzNOc29IbEFJQWdJRVhyYndLTkxOUGZId0laVXphWm5yanJnYXFVaWVHSjJYcXRLQ1ZHTTJRaXhrYnNpM0lXRlNZS1owV2RvcWFySGh0UGNLd0hDMjNwckxTcnUwZVUrYzdBS0JQSndHblRRWjh1N3RLbXFWeVVPY3BwN2pwV1lGYUs0MFBFaFNEN2dHMWxDMWJMVVJsQ2lIZDJEbDk5QVQwK05XdllrdStVVWpPNUwxbGpZUC9RdGQwOU1CNjBBaWxSQmdqSjFqSnJseGR6WUZHcHFDOUlTZG5nWkVOcmRxQnJ5WHNHenhGZDllZ1hiS3kyWlR6cS8xUXQyejhBNFNXNUY4QkxVWHRKc3JQZUZjMUtYS2ZVdTNQbm9ob093QmxnUUFBa1NGRVVkRlFLMEFXS3lyeEVrUmRJWG9xaDBsS2JwTjExVHJscC9YcDNidHVReTNWUnVlZ2FVOGhPYno5UWl6TE1LWGpNdlVyMTdNajN4VEluWkdFd3UxUE9CckFJclkyTGNRSHN0Wjl2TGk1Z0g1QzhVS29LbXZhVjNQM3RWd3QwdFc2YnhyYkxXaFJFaENmY1l2Zm50ZmxiL1hCWGVLSmY0cWhWU1V0UzJYMTlFRUFPNVNVQ1pkNlE1QUYrYUFEdmFiYXM5SFdPNGcxbWs4a0dJQ3J0NzBMZGdya0VJRzBob0ZwVzErNDdaK2FSc3g1Z0FLcDJYUDEvWG9Cd3RKQUhBYlM5QndoQXR3MDNBSlZ0T1UwVlVOd0dCWVUyaW9IdjY3YVNiS1FzZ0FKVTBXbmVVY2U4NWszM2ZPWjcveGVIVk90TnZkUjdCN2VJcFNoRUxUcHhKVjVXenE5OHBGMFVQT0VMVlFaQkMydGI5N3EzM1BlNUh6cEpkV0M0eU1WNjljdWxEUDhOL2pFYi9DWC9lN1o3L1psQ0QxNjNnVW42MS9mdjFMOVREOXUxYU9iaVZFRXI3Y01mUDNERmxhQ2xTMzlEL3RhZXFkSCs0SzI0NDdBamxxMVl0YWJMSVdlY2RjNTVIaGQwNjNIUkpaZGQ4WnBlZlY3M2hxdXV1ZTZHZmdQdXVlK0JoeDU1Ykt0QlR6ejF6SE12YlBQU2tYNlJ3clNqS3VPUGgvcFdWdjZMNTNMaWVyN1ZNdVg4ZjlxWk40d0pYdkZSRVVxYUczWHJ1Y2FmSUJ3WFgzejJIcTNjQVVNQ3J0TElSSjcrUS9iaUtlYnFVMkpxaDc2SHZKUjZkWS95OGorVVVONW5PblhlQXc4MmRkaURaRFBIQUlHT3Nnd295Rno0M3hOT24vbys5VG1hamQ1OFRsNjlxN2VIbko0bno5cURFK2J1RDU5N01Ha1V2V1ZPWHhydDRDdGhqSTh4d2Y4Y1dVcjlMUFoya05SenhqdklQSGt2ek1ETVIwRTJNd2VGbVlMVHREQUxhTWhJWUM5elFmZ3FJUll4RnAzM0JwVUFRNzE2bVRlWlJEbFhaeVp0Qmk1akwzcmtqektVS2wreXI5Vm9ZKzBXVHE5VGZ1WEtHMHRxRngxclYybmdia0ZScVJpUEtTRGc5UjdLTEdDMGdQU29BRDVTVUpNbDFkL0hBbVFVQ0NBSzVxWTQrOGZ5TnVwQWQ2MVlmeklQaTQyRjZJTVoyUnpGYTk3UWtKaHYrRmhTd05ZcEZHekNubVZVb3lwekt6bXdsanlLamgzV2JJUFpnR3NaVG45cVVtTVR4QThReXBhUUpvdDVjZnZVZERNbjc5VGJOUi9Jb0tsRzVxT2hONURGcUFtNGFUNFpHekdlUlNQVFFlY29NekdRZzVBM3h5ejV4L0plby9xa2dWbnFpNVk5QlYwb2o2ZnZVdU9Qb1Yyb2x6LzFoMWJJQmw2bnAyOVBFczZQWXFscEVRMDV2dGR5cndLb1JuSmhpL0dVeDVZK1JabFowTG9LMmhmZUREY1I5bGcvWmM2T2tkYzc5REhtaGtCRmxIS2VhNlE1SVFPUmd4SnVPaUhPMjJ3RFZuUUlFYXowcEhyMlVWRENTaE9WM3lWeUZtVkV5aUpKZzB1VUROWGYrY1ZWeU1wR3JDKy94YzdJajNEbkxWQkdRK2w2b0lKRys2aHFTaTJ0SG1za21obTJRRXVoMWhKdlA2U0RYdWdPK05wQjMxKzNZWVZHd0p2MmFadU9nM1dtZEtWRnNUalJuZEZUb0xkUVg0azdCUFlWd3g3bytFeSt5RUJEUG5BRlNSMCtGR3V6UnNCd01EeGlxMFloTWludmhUNHQyNXJEVHZoZ3hubWI3VEhYTEU3cmpJNmE2Tm9vM2JMRjJlTldLZC9YUHdHNUQxV2ZiRGtIOGd3dUZET1hKL1doK2d2Tjk4LzRVTGZiaEtiWEFsT1FmWmxBellCTi9nMFVtRVozZWo4d1E5Y0xjVlk3ZXhaTlNmV2lkTXdGVVZTUFBLNmZFNU5la1RSMU9SRVhsdTVuMUZqYnZCYVlBNmpDdml2OUM1UGc5VVVkTVpIOU9uZTIybnhLT3Y0KzJDSUROdnhsclMrN2RwRitxc04xNFg2cXRMNjB1UDJOaFpRYU1jWjFQSjB0TTQxNDNvTFVUTCtBWXA0cm1tWE9JMEdpT09SNSt5bkpuaWtxZkNsT09pN2JUZ2s1UnZtN0l1RWNzNVF4M2VnMDNvamRiMTY4SUFKZE9HbGp1QUoreitvR1Z5UkhzdzBXL0toaTJpWkovNHp1YjVmRXhWNUNpOGZhR01oTXhGTjhpYVFvSDdYbXhuQ1pPdGxYNzFBSExpU0l1UlBHbzZySGI3eXFrOHBHYjlRcjNFTFlYSlp1MFMwOHZ6YVhYQjUxbzdjQ2xjNWltZkdibE9WYTEwYVVYUyt0V0czeHFzWWFZL25oVzE0SGN6Rmg3Z2FZajlxUmtVQTVwenBYaklQWk1WSm5iMFlYSkJaK1BTcjd3czN0cVhxMjBNTHA5STVoK0NjeGlUeWlPdGxhYnJ5djI4Nzd1czBiUEw1dENLcTdzTlBtZFJmVmdTMFg3Y1lxaWVuMFdJUGF4cEYvYXJRbWV5UDdhS0Fnd1RUMkhvRFpkM0FiUW5XazBzbTRSdFZHemlGQ01ZRno0NDdRQTJPR2pnV0NreUFKT2hVVXprSkFSdWNDd1VXUUJGMEtDbGNoNEFSZEN3UTNRUkowS3lqNEVFQjBKeERjQjBuUWc2RHdHQUxPMEpOQThCd2tRUytDd21zSU9FVnZBc0Y3a0FSOUNEcjhEWUNzaVhsNGtzQU5Za1Fla21NNFFnclpGa1lvUG9IcUU2TmhwTkJ0WE1Md0FhWVBzSHlBdllKd2ZJVHJJendmcC8zeVVhZGJHK1U3SnkxZXBoZlQ1enJsMVB5M2t6b05BQ0c4SjZJSjNDV0xDN3lTOXdCRmxnRGxYZ0NvUFFDeU9ZQ3FHeHpwa3I2Z0FvTkNzSmRJSXRtcmtKNndjMUtZcWxNR1NYSk5CWktzWmZmRnZDZWNyNVlBWVVoWVBsMkcxZlNOZ2tDd1ZsUVZRcE9vaHFhNFYxNVFBU1dGcWUwZlFUVUgwOXJwcjlFZEZ6MW9qQkwvNTNzZFlZd1k0cTdydFBjQkdsWHFkSXlwMUVQSVUvanozSjFsWVhneW4yUC9ET004dENPL0tLS3dLcEpRdTBzbnhKN3ZJdGREYUQvaWZPSk00T1hBdVk5ekhQcE56am1ubkxFYmtYc0ozdmdqNmp1RWp5Ykpjb1RlYzR3bDQwMW9NeFo3aURHTXlnT1VSWmc3bkNzY3ozQVhSU1I4ZVJOR1hZNHdMa0xNcWI4bU94NTZMQllZSW5Vdm80TUNkSUJLNXlCQWxDSnNaTWhnQ01Na3BrM2NWK2tvWUMxTUhZSWtlR2VDSUFHUkI2UHk2YzJuTmhrYnoxeUJDZkplREl3a0I5SlA2dlpDZ0hsbDVENzdLUUpNeHdrcFFjeHFMam13SllQS0R0OVFMK1c0ZFBDSGxpelB4dGhJeW9ZZ25aVmtJSjNOaSthU2hiSHFsODhaajFJMk9VQVR1aDl4eEVrWmNBSHhHTE1xazdobUpISXlrRnBhMnRzV21TaHVMLzhWRzIzYkVLU2ZIUjV6Y01jMG1DZk9zN3I0TTBUaDY3dEtoKzVtTHl6ZG5zd1pQbjQ2OGhKajQ4LzdMb25CQzc5dXlCa3JZa0pKY0J5TERxR2h3VnhxU0xXQWo0bzFIM0lianNiYmYyMFlFeG1JYlhGR2Rmc3dNWGxySlhMWExRT1FMdHFxWWtBU3Vkd0tuOFVrNzl3M2NpZTZlY2VZZGJFZEFxTHhiVEk5Q0R1VU5MRVRzRGdiQkJib3VSSnZrNUhhWDc0eXo3aU16a2d2NllTdkxFaUN3QUkrZ1ZnU2w2WnNpWXF5b2NEZ1ptN0trK0trWW1xTURyU3NrVWlUUmw1Uy9IUStOVUVjTzR2VVBKemhiRGFnV2VQU1JYdUNzRjBlbnBVT2psS09MM0srYWNyWkZTN2RtWUJUaW55WmpET2xaWmNYVEV6RXh0TklJN1VMT0l6bGJEWmo3a0xIbWJNM1VScVdDQkszd2lyRU9uTGgyK2ZQSlUxNDFzdnRGbTc1ZEZNSENqb3lNbEN3OFlTWUhya2RITFpMejJKUzJ6cEFtSUk2WjJQd1Q1bUZ1VVk3SXB4UzJVbnFBVCtaRGcrdlpnVURzUGtMWm5yaDNQRXNybk43V0I3dE1sSU5Ca2wwZUtSRkVxbnBsYUFaYU93eEl2S08wbFNyMXM4Q09EdDFLdlpSTUN5QVJKcDJqcWNuSzkwM1JUQkgxcUFXTmNVTUFZWThEMDN6SnlPU0FvOWZxd3kwMmxDUXRLTkFpODJiVUdGeWpueEtmSXNzTVRQQWF2bm1MY21kRGdyM3BvblZwaEJwUjZxL2hvS3dGcUJtWi9MMUJLR1ZDYWx2dVpOYUdQT0ZneVRyRUtmQ1MwVmtSQlRSUVlseVFXU0VGZVIwU0hPWkNZK0t6dVZyVWdkNEZxdDNYNEl5aVl5NHc0b1ZXdTZiWjB0UmpWOWhoZE0rTU8xekkrUStxMVBkelRpVE1nTWVrUk9YZzd3MXoyWGxNaFpVanZsSm41ZEtWSmFWSDB6VlFhcDR1dFN0ZHlGSmRML0c1WDBZYzBFYWtiZmtoQmhxWVFkSlRvSFVaSENrRXFlam1BbUhTQ1RHWFliTFFHeG5FblNDVktuRkgzNU4xRlZNSkRpaXNTK1VVMzNWWUhPWHhQNUQxcUtDaEU0VHN0cU9HdWxBa0owOHVSYjN0UkhkTWtQM3lYeWNBVEdrSjcwNTB1SFV1eFJad0R0bFlvT2wxSS9tRW42N2JWOU1GbGVCelNRaFpuVXo2dkRkdktvUUhYaEdIQnJ2M3V4RFcvUG1ORzBveUdJZGdwV2NHbWxKNjlqdzVFZHFmaXJXNkR4RzY2WkExbjRhVW4ySG1TRCt2dG50bUdpOUpJd241R2ZMd0ZpdHlYTkRTTTZ4Z21MY05IZW83eXRJMHVhYkZoZFIxS1I4WTltbTd6a2xjbnVGZWw3dE4yd2twVXVPcjBnaThTa21iZE5YVno3cmZvVEpxbWNhUWI3Z1p3eDlEUVVsYys1SDdoUHBJd3Z3b2dHU3FXRThmbGNRT2FxTXNrNzUxNWppSEVzOUdyaG1iWlZscWJXVG5ua0lpWnFLZFlhUEswVjdOZG5zN2EyZFNmdDRIUWdRZUdWcFZJMjlrMkV6Q0k5bmpGUWdkek42eHFENk1zZEppNFpVNjM4ZnljVllZTEJ6K3JueUZtL0xUaHV4cW5JTTRVZjg0VDRUYXlnbmlZa29Fa0ZRVkc4a3ArR3A0MHhhU2NIRWVOd1NRYU5FbkZhSVBXWUpNM2N5TWUyVDd2bGlkUWs0aGZUTVNldzJ4TEg1dkk2bUJOcytjTTlwTGlhejU1MjhDNUxFYkJhRUlpYllzZGlaQzYrT2lFTVFWclRDVmhIeDJNaWhzYWtUNlFNZEhzVDVrN3QzMUh2YUhPNkdNU2Z4QmFrcURqYktvOFpWbFVIN2lpaGlXUk9MTzlqOEhXMncwV21ZNU1PblR6RUhURUxsd0RyMmgyaEl5dGE3Ukxub0VwWW10TVBHVzJrWHdhR2Q4dEdPUU1ValZXS01BTlJSR2xKbklBS21ZMVdZU2hMOGlLOGZLQ1NybXNxM1dvekF0SVB3cS95MkdPRWR1bFUzdGV2dlRLMTNaNTBoeUV1eFNWWEZtV0F0TndSaFJvcVZyTVBwSEZTWFU3cDFGRTdibHFaUVBmS1haU1ZsUGYzbkVkdXBGR2Rkd29zcEMyUE40ZUYyNW5pSjR5cnRCc25ZS1lubGVtTVFLSU13T3A2R0FPZWsvc0kxQVBqMWxPVUljbWxybzd1MWw5TnBhTHJJM0ZLQmdSWEwzeFdJazNEUzJTNEJ3czQxcXFvVzFRdUthbm9WK2M5RmNwbUJUaThhRDlMUUZKc2REeTBIWjdZck44dUZOZDBoZ1U3YmtsemEvWFBxcE56c2J5N0hSdG5VdDBzNFFhRTRqa2g3SlhTSzNVSVhkQVNjbnVTRkVtVWdEZkNrMk0wUU52RndjWFYyTmc0MUUzVm1kM3BnS0Q3N3NkbVFHcUloTlVKTEk1RmhTWWtpSVluRko5REVlQnJpWGFJUTFqVUZ3c3plWllKTHZTSysxRFYyTTlsRlJ4N1BsblZ2YzdWZVNGbzBxZHlaYWdFWll0WGtlakVhQlBEODdKQ2JIaHl3U3VRT0RqcnQxZTNWWTdqVjNkVi84Y2RoVXB6cU5SWkgwVkhWRXd4bUxkSkh1L2xucXZoN0ttMXVuczIrYW5DTTdnS2s4WERja010OHVqNzAxbGN3NFVIdXBuVlFlaitPVTVqSGJ2YTFhQzZhcG5ZSkwzL1lncm1NSDNEUlR1NDVSdWFWOTJSYzZmcE5OZjdLZXdXaFloM1lSMEdJTm52VWtUZWFabHV6eDVJSFA4MjdrWjYyOVFtYmw5MjRGemRkN1FuZitFbjlKMjVqc25iRFBCMlFSeFl3TFhpajdGbkJhTjZ6bmhXMERFeVNQdGFoZjJxbGFlOU1HRVBLaUR2RjZCOEZFZ0duZ0lVR0MwOWdFcU13d1I5ZlRYOWhyVHdWLzZydExPVmtaWncwQ1Y1MzJVemVuZENtc2EyNEhFdmwxUmhjR1NHUS91dXB1ZjE3OVpqaXBZdnlsd1k3RXlBUkp4R1pnT0loS1RHT1N4WmNlZ2l3eXNGNjBHZURWQ2xVMjNuR1FlSWFkS3pNcDN4c28zM1cwTk9RaWpScG53WTduTVJzSm4zNjNyY3FiRlZmUVR6eFdVTVV3RVR4Y3k0U0JkYjhyc0JDN29NZlViY0ZGMy85NVl5N2I2R1kxNytKdnpGc0JDTjNSOWYzL3BlLy8zUmY2TDhQQTA3RVdNemc2cStmZG9iL3laeFI4L2NUTWI5Ri8xOWxmbDdtei80OCtEL1lVK2xFb2U4Wlgyd09YL0QxK2RUa3ZlK0gwRzN2aDhlL2MvQkt3S3ZKVi9tekd2OUd3L1B4SlhjT1hRbmJ1RitYcjZOVVgzQlpZQ21IYmlGSVlrb1RKOFdWSnNKQW9aYXczYUFmenRINHZUNzVtdFIzbUdpdFlTN1VlZkl5YlRLbUlTNmJXUW5tNThJMUxLL3JxMlNJbVNVMW9KZ3NJNG9saFpqSlVqTEV4Sklrd0l5ekpYNVo4Zzd3ODM4MnBVQTN2ZmNGV0FyKzZwdHkzRGN2d2ZFL0YxUUYyRkkveTRDa1hGWUVKSHJHdGRPWDM4U092QURMd0MvNk9EUUZNUHp0NzU2MFVhRU5tMjFVV2swRE83V09yemNVM0dRVnlSWUs4ck42U3d2NjBDcCtmYVlpRDJtbjRSTTFCTEdZN1M2Vlo0MW5wRTRETjBlNkJTKzUydFBmdksreUNta25XSHJESE5sZW1UdDZmRCsvTDN1RXRYNHVtaXBONGl5SFo0TzFWR1l4Yk1QQnowaVpEU2hHUThrbkhXVWpVWWxwSWtveWtnRStGTUZyU0hzeXRzVytBM2p1bWtVYlpTT292OFZQOVNjczI2MjZPSGpMQjYwTEZaL2xvaTRHWGN4RlYzemV1dlFBN29pelZWaDI2TjJpcDZpL1J5dytqRXZkNExic3NGVTBjN3pmdWxUeFpXN0dvOUt4eHErYUR3NDltczZ5WFg5Qy9Ca2N2ZHBjamwrM1RFVXZuWXhmclpuRW4rZ28vVDk3elBxazVwRnVyRG9XWmRnOGZYNzZtdWZhMVBtcEZRKzhGNUVSYVVZWjZjVVRUbG9HTi9WQS9xbDNRcWpPekg5bi9zMzV2aWtSU3NoUFNUSHhvSWtKRUs0eEpTVVBEd2xmYUQ4TTkwRWZDdWQ0b1hmU256YU5IeE03N092aWxuSEcwNTM1U1U3enhMckU3bEJZYTNUeUdmbkxac0xKNE5GdFV6M2pPNjVmcG1qdzdwQmRPeWM2SnJhOWRTbk54M085ZlhRRi9paDRDL0xDd0h1aGRGNitOYnNrUW9VaVFNcFkzTEswWEdGTk9rOENzWEl1bE5BWG0xdlcrWTdLcGR5NjJ0d0pMUlBaS1dyVE45ZHVQZkl1SnRxUTJjK3JnUW1Zc0dKaVYwOTNSMDRGaE9QL2h3MzVncG94N3JJczBVejZCVng5SlgyUENSRlRpTS9MRXkzeklzdUVwT0pJVTVhWmU2RE5za3pTVnl6ajJ5b0ZreFVlTXJ5VXp6UkQ2WFJURXA4Tk4zSTVLTDJDNlFSeis3bmtONzY4TlgxTDVWSE5XTk91L1hnampmM1dyUWZQa04rL0VEejUrclE4clcrNUNTWTN6WEh0blRtbmJGWEVFNDd1TlVGRDRZSE1Wb05zMnQvb0RtbmIzZVZpbVRBY0RhUkZ6SUc3aEpyYVRCNkdGYWg5TlpDTEh6aHhPS1JrRkdabHlvcXlhK05jdWJOc25BeGVGSmxsUGFBeURXYXNGWnBKcCtxMkxrdnQ4bDUwcFV4YW05VVdNOERXR3FQZnpqbG5tdC9yZXNJZWVUV1NvVTBRNDhuaXpiUUs5RzZweVlRak1RMlpIQzJrVmNBQU56TkxEVVFLWjBBQU95TzRDcHNNMnJMNEhNejZCQWRNclYrcHlHZ3E0akdLSWJWVWcyQlBlOVVSUW9WK0dkOWV4ZDlqcENaYjZFV0YvS2JmcFN5OEtrRkhLS2Z2ZHBqMjQwdExEdURyVGN6ZC9uMCsxRFNUVUdCT3BkSk5xWHdCM0VTbHcvVjh0aG5Lb0pxZ0FuYWFQdmtqWWtveGcxV1lRaUJvSVhRbXBJUk1oaFF4R0FVUUFyNFF3bUJBaS9FTkJ3MlRFQnRkcU1GVVJUU2dPaDVMVThzaVNaYjllYWJ0R2NjS0trbG5IZHVXRlk2OHJSaXpTdWpBOUVZTUM5aWxvVmR4Wjhybjl6Uzl5NTBPUC9UOXV4a0ZpU0lTUlJLVXEwTk5TNnFNUkRMVGtNMHBncllMR09CV1JybWV3dmIzbjV4aU1BMWZYOGVEMnNieG9OYnJQcXlEZ1IwTEhZeU8rUTVJQUhUb05XSm02emd4cyszMXJUOVhuUEw1YncrNy9pVmdRUTRySVl3bnBDaGdoVm5XRHFjcm95Q1NnMDBYNFR6QUJYdkFXYklmVzJ5YXpiTHF5RHVMQkptZFVrZUY3c3YzTnZ5YW0zcUhoQjBoazQ5ak1jZkk1S0hyZ3ZvSUx6bjRNR1BRbEMraUt1aCtxV1lHTFpPZmpTb042ZkdXK3RtSUp3dmFYU3crVzR1YlFQNmVObzd5aE1DMndTckNlNEM5RFoyWjc1aDNUZ29yVElmTFdsYTRYMi9ZdVhFdzQxSDErSkxFa2ZqY3JTMEROL1QrZlRLTTc1YzA4ZERjNzZFQWVtYURPZjJxWU1XOHE4czBROVMwWGk3clBrNy83WFMwMFlTc3cyYks4Ui9BTDExS3hNdXk4Q1ZKL1ljSXlwYlBHcG85Q1NiM3Z2aFAzZWZoTVgydk5jR09BdUkrVVFpc29RWks1V1BBTno5SWFhNUlTWHcwV2tIakZzRHRUTUFrM3pkUXRVNHNBYUtXQXhOR0sxUGtURXc1ZFRPaVhNd3lRUmZnZTd5d2hrUXBKU09mVE1Ya3l3am1HTVcvTk82RHM0Rkc2WEo3OHlxcnVtZzh5MW1vYWlHTXhCNEFUbThCUFdNUEVFWlVyYzdDc2F4aTZ4cXJyVlcwRmxEcDhXTWk2NFQ1TlZnaHk0Z1FDTEc2Qkd1Z2szQ0hFT2hNc0dYb2hDSURnaTJzUVF0VlNJY2ZrN0FQRUxkeUd2U2Rmc210K1EyWXJBVW1OYjh0bmZoT1B3MGs4cU43SmwzQW1zS3hrM0FaK0c0RmJNUkw5aDFyY2hjSWxmdlR3c2lOTnc1MEF0NXUxK3lseHhYcDFONitzcjZMZ0xnN1o2LzlWQWJsdnY1YWNlMjNsVU9BQjZad1RTV0ZIYm5qaWZQQTJRcHdHanRQbkZCM05wUk00RXZNYTdTdUJ1bVNuK25jT3JwR0pLNUVjRmttbEZpY2FRVGJOOWNUMW54Q0dxQjJva0VtcmtReEFZWEtWeHJGVHFzQThkTDJQeWZUankva0w2d0Q0bDUzNWp1UEoyLzYxTzFZS0xXWHpqdm04KzM1VVB5aysvS3YyQ2hZNldoZDVaak1oNm10VHVHaW4vRVNDbEVwbEpqVEdheEtyRUFOdHlWQU5oMWNPUGZOWlVEY2w5L2FkWHcxOHRVLzdjay9aNzhDZCs1LyswQVBJRzVQVE5Tays1dG4vMytlQThaOW1odFVIdklvcE9hM3Y0SkUzTk9BdURHMFM5QThCb0JqWEFURWpVQjdzV2dYRTNsaC9jQlI5R3oyaEtMTFhqNUtLQ3BTZUN0VWR1TW1ZZzRBUjRjUEEyNm5ibnNGR2tNS2YvVGNwcytDTmdRNDRtMFpScjVFaDJJeWRHakFIc2V6QWgxZXkxNkJkUWxGWkdxR1pqTDFhSjRFODJKdnF0c0FidUlMUElDNG4rdEE2K1ErcTJTaHVsb3kzK1ArM2FrREVxZkJQOVRDNVh5VW1jVkNWY3VFbHRRZndFamVSOVBBYWN4QjNMU3FmL1N2aWM1bThNOFBCS1VUSktkTzNZK2ZqbGtFVHJxQmt6TTh6VlgyTy9XN1NhV2x1OHV5cWg4SFM1cytCL0xaMUJqdnhGWUtaV1kwbDJQQ2JOam5KamdER3dtOWhDMlJVRjk4SkxrWncrR2EvdzNOcUl5djM5VG9neHhSUWxYbkFYR3ZtVUNuOEZ0ckpZczJmcHFMWDI0UWVuRFdnR3VNTC8rNGIwMVJjVE9NTEI2NlNzbHpRRm5BejBIcGNiQnppOHRwem5TR0pIcVcyMnRTN1NnclUwME1tRlp3bXZManRNRTY1UUxJY0tVVGJSWUxxOUpZZUdPQ0xBZWpwUVJSTldVNXR0UWdoUlZoSW1xNXpJS1VHcVplTTdhOTRoaFdxL1BrakR1S0Y3MHFML3V4aVZWYWdUT0ZRNmlLVlpLeU5ka0NidGhWd0lTZEJpVHM2aXdwanVQdEJxS1hJQlAzUkVmL01VbFZ6VEZ4V3ovM0pQQU5nTDUwQTVzdmdjN3dKa0d4aGNqbjF4SUVKYkFtRUFQSWZwbXNTNC9vMzNvai9veDdJZjZHKzgwSUVtaUh6eS93NHdFUjdzc0JwNFVCajRWWEFpTGM3aFJITHg1OElTazEzRVdtdkR6OHdQMytjeWFYeFgzM3hQdHNxUmZnb3NmaWx3L2oxV05laVVlOUV2VmIrRkU4Wi85UFAxOEZqYUR6ZXQrZTNRZmFsWjV0K3VKOXdHNTdmMllYRUp6ZkJRbHl1WS9BZmRCSHdtTTAzVU5aeDlETUJ4ZWIvZ0F5dm5SMHk0YUFydkNmQTladWZCckVsZzF4YkdCNmNwdG1kTmJqMTZaK0QvandwV3ZwYnZKRlRxWUtWaHFCMSt6SXJNakROWEFLZVFNOUJXZVJkVGZ6TTZGU0pxRXNJWWVvaWJzY0JMbXdpVkpuSzVvbG1rb09vSnhGek1IaTN3bmh6ZkVodnJzSXBYRVNkT3YvM3oyeWVLcThNaTJXclZER2NUaFpvUTNFdDJzblp0V1ZWVE5DUE1ldmRSVXdnSWVDWTA1eWpWVnp5dG94NHMwV2p6eHhtRzJ4MGhWWWVmUTNnUnRlaEFmK0s0L0dTaXcwVG0zU2tIeXh0U2VyREN3a29TU0J4NEZkUVcrTC9nQkYwM1pPMjdxYmV0V0NxS1ZlYTkxOVR0dFdNWi9iVU1VY1VSMEgralJjWmdXTXBHbmc4RzJKMjNrSWZ1SU9ucTJCazdNRDFwSjcwekUycHpUb1JoblNUQTlnZ0ZYZk9qeHprbTNVejZydEU5UzNHenp5NUNGZXJaVW16UkJIUFA4ajdEY29zeVd2V0dhajh5ekp3L0lkTzhPZFY2U0RPOFd2MVNINjFIZDNETHZGcGE1MVJmMHc2WTA2dGJlWE1LdW5vS0tOS0Ric2tXY3hIZHBsaGFpYVBBRHhxYjlKTXFUSlpRVG5KaEV2Q0FhcFpxdk4yWXlyYTRnUmhLUXFkNyt0ZWgrK2d0VWV3UXlKbUJteWJLSDFBTDk3QmlRTEl3dHJ4SjJ3RnNwTis5aWMwbVNjNHVGWWZxNWxhQzNyVUhQOWtSd3pvamJNaGpEek9lVzJhRDVKbUN3TWdyR3FZU0pCYWkydnRIU2NvVFBNcVcwVE9acjRraGJIU2lMZitUUHNoOURmbjRzak1UdEkrdXN5RWxtL2g1eTNVbFlONU8vQTZpcHhzOVlWejlwQVo0OExLQnpWb1BoaEhzQUFIbUhnYVVyNlh0Mzhqbm5Ibnc3dEpZeU5ST3pFb051SXBGcDAyR2tLaEZsRm1yTlk5cE9NWkwxUGRlQzBGNDRGQk9HS1k5bDBlSlYwdmxwMkdWMUdJbldpMGUwa1Vnbit4ejhHRnpkZUFBeHc0V2h6ajk3dzZzelZQeHEvNWdhZUJmb0JVeUg4ZmZpYWd4NkNvMncwK2RYUXhjQmtadjNQVlRRUjBOUTF0anZOamRqV0RpVC8rRjgwak9sR01zbmMvMUgrL2JUVVRhbUw0RkFDNXlqcXRRVTB6ZENaY1BzdHgxODlBZGp3YlZGY1R1bXVrblN4bjRjaWJZRzcyRzkzVHB6SmM5YWZ6ZFBZeDEyUkNYb0xxWkY2RTIrNVBBcllxTVJhVDVkS25IU0NTYThpVWc0bmorSmtTS1YxakNFNW1QMVRGUDhZeklZcGVyR2ZCNUNYSzM0dVBHdUdaeXJmaTVCaGdjVk9seFUycTZBTWYzcVRva1JxWi9DdGtCRzVmaWVzaFh6VFByYW9yS29ZWjVUNjFxd0M4dExqVlRDU1cxWTVyN1pQVUh5RlczRGJKbXdNYVdHVHZEd1M0M1ZEc0FWNU44UVUyTGE5dFJKeHNsZ25mT1ZKOU9uaWlrMzQzbmtYclByc0JZcmJiNDFaY041Y1JYd0FUdDc5cmlsRkhGUVNOb08zaUhLTWJCYlZhYy9mbTFscW5NdTJGK2UyOGoxUUtPdm5JakE1cHlCbTdRVTRxZTZJSGl3T01tdzVRS2lWa0V4c0FjTlZyMTVBVjlqV0tJMFZ0QzZ1aDRTVHlqTEt3ek5jZy9uWmNDN0RaLy9JZmdrZHJIUUl3dE1UZjN0SHRDR20xOHJjSWczUytDSUY3V25GQmJoZFJrbjhTTHdQbWZENkpGNitVRkNUdngybnMrT090dlI1QmdyaTZva2NSUnkrYmtkeHN0VHZBbVdaays4ZndncGxoZjJNdlJ5M216SVU5NWh5SlU0NUdMRTNkdS9SRTAxckorSlhZbGVhVGl3RkdTbmp5MU54UjJLUEhKNGFEekpTbHBJdHkwbWpMOFlqRDBDZUl2WWg5ajAvQUJtUGZBck82Y3JvM1hLUWVnK1M5eXFkVXFxVzIvSEN6VC85Y21aUndwUnYzWmpERi82bFAzcENPSktRNG5zdlplZlVpZWtEMjlJTU1SMTdISDNwMUdRYkExU2RxbWJuRnFhWnd5MzRsZEZ0UGJ1QXYwUGJ1c2RXOGFFV21KbFNxR1piVWptZ0xVNCtLSStPMEFlMFVWZUJYOWJUOVpoNnRQVTA4SE9GRnQ2SzFTdm9EN0xkUTVOQVFKc01aLzMxaHBLTzFXOXBwYTFnR1YyUCtVaHVYcVVHdGlIMGFqb2ZGTzdrZ0N5cGFqYWxFR1lPdGVCWHg3WjM3eHJiQ2Z6cEdWMVJJQmRMQm9ieWRTQ2k4T29uTEdTTHZOUktaR2NvUWlWUVVYYWR4WUJ6UUcrN1kxandnUkFXc2tsV2FNV3hNYW93NmZFZTlwR0tyRi9QdmVzeFhEakdYKzk1NWduOFZJVlpKNUZuTVZneWcweWlNSEk2Tjg3WEpKamNvQ3ZyWlFvQ3Z2QjhYUjQ2cWk4ZndoNHZSNVJqMTh1SGc2Ky8wSTg4SDhnRCtqamxKbHlQTUlkK3VJdnYxdm0rNHNiMy9mOGoxdmxNaXcvekl3UytpaVRmVjRkbTV2MDJtbGtMTHNmQm5JcUthV0tWaVRpa3ZVQ0hGN0JJbWxoc2RnR2NMa2lwWWZ0dVpNelFLTmk4QjVQNC9QemQrQThyYTN1MzJwMWxxZU5LRFhKUE9xT3BiWDAxR2xvdURtY29GQ1BZUzAzdGZZTnRYVjNJNlh4RjZpaTF2aEZmb3VjSm9zdytqYjZSd3VXNktCbzl0azhrd25LL2kreHZKT1BqYlhGNnVDSEFzZlI0NlI2dHBSOTBaS0I1Z09maHRUZTNyN1MzNUM3ZGU1ejkzK1lvVDlUYm50OGFxL09aeDNXNjdkcFVUb1pnMEZqQUcrd3VQWW0xNmkrZ3hveUZTODNuUWJLY21uSldVM3d1enc2V0VkT2xHVmdZVjAzcXp5NlByNDQveW1uUk1RZkt5OHAzNUtjeHNieEJZeDV2YTFmNXFTeXI4d3lwMDhLWnIvSlEwc3hTa1JNcEZEdVNKQ1NZRkkxTDVpdElBMWhEWEczQ1VXNUxPYU0vNGRBdFJiUlVHaW96OFBGUW9aSXltR21JdXlTUGtvckQ4L1VBRDVzcXlNOFp4SkZEZnkxR1d3aUVkalM2alVDb1BZWkFXd21FRGpTcW5VQ3dST0ZmWFd6b2JXeWtsU09aRW1nMVhVdUQxakNsNVVoYVkxOVR2UTNnc1pnQytKQXFsSmRXa0I3S1ZRL0JCVXdtd0tmcDlleWpUZDJMd3ZLeVJWRlROM3ROcjJPdk5uVXRDc3JLRndWTlhleFZUWVVzWlpqZFhtRnk4YmVuaXV2ZTBBNVBLVys1WE1yYnd6TnZhT3Zxcm1xSFo1UzNaZGlyYjN5ZDk5TE9VZ09OdlMzVmpxT05zME00b0RPVlMyY3JjQnZtQTd4UStRcHFYVEtYV1FNUmNkSXJPUlJzZ1BhOWh0YTRlWlNoenJwTFhzVE1SUDl3cGlqOVJKUEhiMkNCUnRQRWlaYW5yMnIyZUVNelBLM0lrcVpneXRVMDZBRXFnTGtRYWZvNHU5YlVpYlZPL3grK2RPWmZSOXNqb2picSsyUStsc1NWTWlQR0UyMU4vN1JYTlAzQVJTT0lGNFZWa3R3enlUZEhib1pIN240ZG4xYkc0WldrNGJLTDB0aTgxREk4UHJXVXpTbEt6Y2FWcEhJNGFTVnQrRGdaNUtlNHVJY1FURng4RXZSUlhOelBVQVlZcGRiV3p0VE9Mcy8yelBUc1g5Nnk1U2YyTkJ0SjBlL1RXc0JCakJ5aUJwckp6S1dJZUNML1dVSjZ1WlJuUytPeXFwT0UxRlFOTVMyV2w4WGg4UTZ2ajQ1TUpYMWl5dU9KeWRsb0pwbE5GbVlFSE1oR0tTV2t5c1JjUm0yOGxJUlFFMG04UWtiMFpQb3dDWk92SXRzVEdlU2FXQlVwUzB1ZDNTeWpNRG5pSEMrNkpsdVExd2lEdmZPL0FQOWRMNlB5S0RZanVJc2lWTVJoYTl1VjhUendCY29SdjNva281dFhOSzRVUFBFQThySTAway9iZUpiYjBjWllNNXNZcXgzdFozbU5vWUJ4ZzM5L2pwMGprNDVqTS9MRWV6dTY4ZFQxeWlQN2tib0Q5bEhBMUVBdXZMVVVGNVBaZjlHWk9BRC9kV1pyNFZOU3Q2NGhMQ3gwbzB1WTBWcFEwSkVwbDNkbUZoUmdXb1V1QWFaVisweFE0SlAzdGVBZ0lvSjNqWjJBUWJFU1RrWHlFSzcwU041MVZnSWF6VXE0SHNGTGp3OE5EWDAwRCt6NEZTZndLYXpBajVnaWdoSlNtRzJ0ZDFxUmlzai93YjcwcjUwMllDM1pqZFhxWnJLcWRJUnVHVXlYd0ZHa3Yzbjd4MCtRcVFtVURTMURKak5XbUgxTHpwcld3b0dSaE5hS042SGViczZNRXZRVU00MEJpcHF3RDVyL0JMMlJjMW9nVlBDa2phMThtVUQya3FVaWhWK3N1QmdmN3ZpWHNPOU84UkJocFBMNDhOem1rRXg3VWxOd08vV0wyRy9PdkorenFqOHlQQjk4SmEwcTFoYm85TVdGSEFhMkl2ZkdjOEZRTWNmR2tIMGQrNHAyK0FkMW94TlAwUVFHREt2Y0ZDMHl3ZzJMY0oybXRUc1krMHBMRmRiWXU2NEljcnFQOXQrUzg1Y2dFYkk2bEVnRTFlRUpVTDFRNGtUSmNMcnpkQWZsZUZYVENDMWYzSk9tVXhNN05mTFVtZ3cxWEpLRlFRblpYRG1YclVRWm1QbFpIY1hxem5SSnVuYVRJb3dkUTAvZkd5djZqQk1FeVdESHZpYUhaNkFrYkk2Y3gxYWh6WnpVY09aWGhLOW84S3dFa2RlWFNZYkdnOEEvSlFrb1hqa2hRdk5RS2N4VWVSU1dYNHNVeXVBTzd1Rjc1MjdRZDB1b1JSeTZWQ1UrNmN0RjJWUXlGMEtnYnNjYkZ4dUpJbVVyVGwyQjJKYjMxWjhhVm13bGhWOE1aOEdQZmFMOUN6MzR6bnVjbUpJdzcwYzMwUXg0T25PTE5wZ3I3SWFHTTV5enlSdHdNREhpRWhCVDhXckkza1FKRWd3WFZOYmdudmhVdWhvRWQyazdSQzhIWnM0cXJKYlRvdDQrL2dsenZlQmk3OEJKUVhYQkRIc3cwbHA0NUFQL2FZSCt1MjA3TkdrZmttYmxFY09Dano3dEV4ZzIvYnh4cysvbVRiMXl1RG1TeHJXVFpMcjBIaUV0dlZsVzVxU0lCRTY2d29sY05HUnl4d3MrTy85WktjbDJxa0I2WVFEcWxWZWcwT0dMSUJ1M1hCTk10Qmx2bDRxTVg0NWl4RmVlVUJZMkw1eHFNOTdXQzZxLzNlMHB6dGovQnp0emx4RUMvM3hjY3o1eSttMjF1NXBESFRrTkt6YmczNjZaMk5kZzNNUG9DRmdtT091UjJLZlp4cW9EeXVveGZQRmlKdy96TEZhNnRMaE5sY0wwZ1RGYWxHVVNLNE5yVGFaVkZNcjlaeXY1OE5HbmZZRmMzVjZXcFk5eXRmdGFOL2xxYmQ5ZXRvNDdFUEJzY1dib3ZZS1pnczNUSjhNend4WjdRbVBKMmhSeWZzS3U2aHZWQ2NNNStkcVU1K2pPYXRTS3BxV0xxY3JyWWwyKzI4VGtxWnZwc2pyWXZ1SXpOeG1jY0Z1cS9DV1NVNVQrTjZFRDlJWkhISXpWOWpMdVhPcGtxdFZkVEcwVGFxWDZBaWZFQ1ZOZVJpS093WlNoVHM2Ym5OQTZtT29PQXJHZUV2NDFZUC9yRzVxUENKSUdwc0NTRUJCcG1JM056L3prMzVpOWsxTzdwMlppZi9uT2tSQnpLQW1aSkRDS0VoQUlRWUlSTEVBaXdYeTlJQTZCRU1YcGsvaDZSS1QzN2ZMSVNQbkZYMmRqajZKUTc4Vm5IM3FFVGxTV2lLSG9aT3BTZ2ZGeUhJckUyRndaaFU1VWxZbGdHQVFyNFNOR1FtcUU4cGhmbER6eCtrSkdaR1VTL2F0bjVHTjRtQW5ONUprUWpIZGZDVXc1RDhYeDlqa0dlc2xFbFFERG5ScW1QU0ZjVVN1Vlo1ODh3ZjZ2M3BhWWc1SEllRUcyS0NFalE1ekFqaE1nS2NnNFBrY1VuNUVoaXVmRTg1SFJWQmhvMXhDOEx4emVQNVNZZlBBTXJEOGMxajhNR2dJTncvYzlkakNUd2kvVU1YMUk0ZmJwem1uUFFjOXRyOUszNjFjdXFXTzNGU01KSDRGN1FlYXN2WVhtcm14NWpqVUVHN3Fuc3ltWTdyckszelVrZitpMTQxVHJxUjJuMms1dEhGVGMyYm45Tlc0RHZTSGtUdWhldWkwc1Y5YVJXYWpQbXZReTlMYjE3dWhWMEs3dVpFK3pvNWZ1b2pUcUhxaGY0VDVlTjUzUzd3V2Y3QWZJMnQ3YWxRTXJUZDZtWnUrRnRpOC9UQTVBZXZaK092MXBWd0x4ZWRqWjg5NkdXelg1K1h0RS82OXI1UGVnSjU1ZWVIRWg4SVk4TWJ4MHF4ZTg4VUJJRDBBQmhXV1ZMVW9OMDVBZWlWY1ZaQ21nWVU4SzhuME1mdE1SeU4yYkpnQUJCRng1Y1J1WkwzN3F3NHQ3QWJmdlB4U0YyQlVzQUlDVS9DeEQ4bHY1ZGVSd3QrMGhEMHdEM0lRTUJEWHN6TTNteTBYQk41czJRSjkrWng3RmVnS2djeXhMSmNvckxXTFlHK05aMGJuSzBXNG9KR01pT21BL0JQNVNXTCswcUFvVmttc0NlandSRU9jZUZuVWFFd09oYlhRR283Z3hOUkc2QzA4VVRGNlZGU1QyQU16RE1tOGtXa29WUjZSVXNVMUtGVHZNVkdHaXQ0bmtFWXNscE1pWGtLTFFoMXlaRDAwc1FORmlaZ3JvUGtCN3B6R3hQU3lOenM1d05LYW1vN0Z6b25DeVNjVGQ1eWpEalltRElXNTBEb1Y4NTRuUVpnNVRxQzQwaU8xWjR1ZjZlWlRZM1NPaWFIVDZ4QnlWR2dIbTZKN1lqaWxDMlpZK3hyV3ZNRU44c08xM0RiUjdjaHE1dXp1UERVNnNpZHQzaVg4MUIwUm9GU0J0N3o1cUk0c3pjWUJGUlNnOUFZdkszZVBiK3U3SmZzVE83akJHMVVEczl5a0Zvclk3dm1HMGU3SUgydDBkZUFjbnNvbzk1Z0JkcU1UcFhRTkFIczJoQzhzRmNndjMrTGZrUXdtNSs2M2llVDAvKzkrdHFGNlB4eHJMejJ5Y0gyMG8vK2R6Rml4QVo4MVpVdlNxZGVZa3NMVWZNK2NSbG5icWJRb0NXUWREcnp5RkhxeDIyZ1NpM1ZjNUcwbC8vODdBNlF2S3YxM0t0R2Q2UjdkQnZTS0FZaWxKRXRSU2tiYStrOXJpb3BmR2Rad0Y2T1laaXFRa1c5QkY2OW1LR1lvb1dpRkFJK3ZybUZXb3lXKzBMcE9RaEpkSzdVb1MycGxsNVNna2JiRnppK1pVZ0Y2UXdkaWZKY1FyNVB0ZysrUlRLNlJZbXhBalJUZlBkaGtHdXl3M1BrSytEOXVUYnpIMUZrRDNpOXRJZXNmK0VhSDEwVG9wQksydFdWVzh3cjRQdGs4K2RnZ0puYzZDNHc2U2J0by9kVy9FS1g3U2NmNlBYbnBIOWZ0Tmg0NEFKeHF5Sjhlc1RtYWNDZWZyWWFJQWNkei9vMTliTXJvenQ2UHNyYm1kMTJRTEVtaW9RMUxxbEZGVjdqRkpGSXJvbHlGa0Y3TzZ4WVI4OVJhK3pVRlp1cnhlL29JUS9SL2hhRE0zanQxRjF2ZHhTRDdQSGhzMGZhZ0M1YUxQNENHUGp3R0lVSU13aXpFaWJBSUxPNzV3Y1hLOG15UXJiTjJSOWZYUEg2YXpDYVdzQ2dKZGJPREl5WE1ETTB3QkRCeWtGRk5FRE1YNlVZOTBkZS9ETnpLNXpTM1BlUHhhTEZEZ1laeGI1UjRXdjk5MERSSGxWa2hOTlZLM3RIRi92QmxuVmdzNWl2UUU1Y3RzVTVnTnRYa2RYZVozYjhiTDZiSmh4ZVRZR0ZWT0lHNHhVU1pqS0RsS0E2WDJoeDNiMU0zOHUxL3dSUHZXMXRtOHNUQS8xeW81bWJpQUVZRDN5b1p1Wk4xQVFIR2VnWkVDYTBRQU9TeDAzTkN5cmJzSHdoVGlFSnMxVTRsT0lhNGNIY05DMHlPSFpIM3llWWk0Q1owb3crSnRXV1FjZWJHQ1JKc2VPR1BuRDNHc1IvVXlwRG8wc1NvNkhGc2w2QnA1cWY3UjVEN3E2SFRLWnlDTjFUTnc0RTIreWF5bVpHTnM2YTdHQTU4WFJnRUE0RVZGVGpuU0RFQU81SWFUZUJqOHBYQWZzcTNjbkJ6dDdmcXRaSjF3VmRpZ0NvRVhFcXJFUlBwMlcyZW5CRWUyRjZpTlpsMWFKRDFFZVBOWFdIOGtqeG1FNUVxTm5YUThTRWM0ZUtTdlpxcTVtWEYwRHpZLzkzQStTdlFNRTNFQ3ZRRkFwNHdBdlJUU1VGbS9PamxTTi8zTlJnMlZveHhmUjArYVZRemhTdFVFV2tId1dZekxSOWxNanlzbmtDalgwTURkNEhVUDN1cTdzNU5wcU1WazIzZzV2VE5DWk5KVkJUaVExY2pIdDlwc2xKcmM5ZGF2REZIbXhXeGxsb1kxM0U4bjFmWDhDTCszRDcrT2pTVHU3OElEMFNtQnN5NVJ3eVE3RHpPVkRRczJQZjdWY1VzZ2tILzRZWlRONnhZSUEyMW1NSWY1dWxZVjZBVDNWUWxkelZZK0NiQTRQSjNtUWsrS0NUVXZTSmkvZlo4YW13YTRIL2ZIYkhKMFIvN3d3SDYvYVpZYkZaMC9kcjIxbmlmaUJVcmhsZFhab2VtbXRncXRuQndXbGVlWXV3V2haV28xRjNra3d1QTF5TW1jUXdGU1FVcmRaRlpQVEtqYyt5aUdNZ2J0Y2w3UC82NjdvVmRxcTZUMDg2aFQrOXNlcXNaQXgzYjR4R1labUtTL21rYmVOY2FjWW5xbXlhM1p1cUJERWpobVdGK3FXZ1o0WXFTVFdaUFZ5eHcyc2RIcGhoSS9EcnQ4VTh3TWtmUDFqNEVHNEE3dVBRQ2VscGxoeVNoMzVQbDdxOG9rK05pZmJTNjJ0S2M1N1VTeWlJVkR3YnFaRGdKZ29JYTdUYnpvdWpCUXhWQnN4MHh4UkwyK3BsZWwxREc5czBPUWYvcGV5NUlwelpBUW5xSmVzVk5JVndzMTdFa1ZZQ1p1TGN5ZU5qRkNObk83aFExd0VLNUhOYURpK3FPWElCaGtzemVSTXdxbVl6RnJZM1RWYy94RUF6a29UakVwbi91TENhRjFGci8rYVY3Y2xSR0RnRFA2Y2t1Q054MWd4a3lDQURuWEE3Q0VwYlVlb2ZZWS9wV1RCN0hTakdVYU0yQ01MbDhldHZjZTN1MjZCMUZnUWNFc0RiVklTd0Y3R2lTU0pTd2U2dGk2V1pkd0k3dTNXQVZKR0UzbzY0MEkrS253cUMxaW14L3NxNGFLZ3pVUDhFQmFjclZGMEh2MHBhdXowOE45eWZhb0FNOUZSZFdHYW9ONlVMbEEzcUFDRnV0cC9pN3M2azViYTVoQWFSOEt1azAyZmhUaHNEL2o3WnpKaTNlRm9tTGUya3RtdFdmV01FcW80bnF4Q0JLVkNVd2RkMExuSWZQN3lJUUdxZUtXSmliZGRIOEpCbG8xQlpSNDNoeHNBaTF4empMQmZZQU9TSThtZ0FtMmgwakpFcCtEWWlCM3lMcVlZMmNhZGtKb2dRcmw3WUcwcG9ETi9oVjdwekR2RUNZT1E4UHdNRm1ZUlpoVnE0T2pQUTZoRyszdithL21uN01hOSt6RWlPbFJUa2hvRXhObFhJUkl3ZFJBUWhVOUkrZXdVTVhaOHRqKytlbis3Y0d0WkszYXVyb3JyNnBlMUtEYm9iVVp2Vmp2czFiMlA4U1lielYxQlZLdkJLTG9qaHlNNnhBNVdUdXFhcFgxUkNmVUxqR3d5Q1dyVWFSYjhtVVIvMTE3NStjTlNlUmxtbmdCSGd6ZkY4WTBQcjVDeG9nSVVHU0NsNlhhSGV0Vmx1SnFDanhNdVdCZnRvNlVnVU1kWm9oRmlzeFhmR1d6WFdqa0FCMnpIWlNzSndUWkJxYThzaG9HOWNXTnl1dHFweG0zcTZYcFJZT3lkVUR1R3lVTitVdlhLUXk1cjF1TTFaaHpTbkFWQjJpbGh5ZzhDVEV0a1hibENtQ1VOUUlEOXRndkhlN1hxRjNJS1NSdFM4Z2RjN2RrbXpLWGhHZW42cVJEaE5nY21ONHhBQ2xyalZUR0F3SlNFcW9pWHhXZmtrMHFadzJ2OWxrdFlWYWx5NmtEcStPMWYzNis3ZHRFdXFpK2Z4MFJXbFQ1dXljSDkrMGxhK2FqVmZEL0NZQ2JrOUtKL2ovcE5XbHR2YXdoTUNxaTNyemZtOTI1eWJqSkZjZTRvYU1BMlJ3cFZTc1VCdEUrRlBZVFIyanFURitlMm5EanY1dGoyOXliQUduMWI3eE9xek1yby93NXZ6THQvOTJHN0lqcTVscjJNRHdVQThBSnI4dnd3ckNBYWgyMmdCTmxPRkExbmFteWYwbzU1dXRqSEt2MGhRWHR4TEoyME9TVGx5NDU5OHU2c3hDRlFoajcwRWFibjFnNWpTZWI3ZnVnbFpHSTRLSVM5UGtlWkJidWZaRnR3ZXRRZ0IzWVVXclR4cjZsejJSbU9oUkprQkNXWklwMTJWa0hsZ2lVVVVPczZNTUJ1Vno4MVptSlhXblJuOTlJVnREdUhhNmJNcHBxL2lzUHRDRXo3SCtya2NFYXMyTVZveXRzT1UxSEpkdE11Y1o1RjUwS0xTK1NXRWs3VXBLUlB5V2pXUThGRW1QNmZFMzQzTVBCREpWS2c5K2JVSHhmUmc3THVlYmlYTUdhNmtWZFJ4b3RSaVR5a043ZlpZVm5FZUl5WHFIVkhnbnBCbEZoSkVLZkRqZzJnQU00VUVoN0dFbjg3YTBtSmNTcHdLTUswTVpBdXNsTEx1emVwU3FLeVVwdFYyNkFLdXcrWFJHVHZDSk1OT1VJWWtncWRkYVlQSVhrdGZYK1FMVTBYRi9LVXJ4azBGNzFVSjdTL21XUlMvaCs2cUR5YWpzTVhzMGJ6QW94dFVFQU1WYUEzTURKZ1o0c3BCUGIwMW94enJSZkpUS0huM2k0SVY0dzNrd2tnUFNHTVFkNEZTSk85bTFGV1d4U1RFYnNUWHhGWXd1aTFycW1tSHBtWWVQTGRHZUdrejE5SitOZlZpbzBjN1NYNkZYaDlLOXU4SExkRkdYK245d2RzT0R0ZW1GR1c1ckgyalVyQitzWVFpVzlXZm9sakc5Wm1HU2c0OWpzZ1o2NldpM0QrczVQMHQwcmVnMHBlMDQrQy9HNWxneHVOWEtHNXpPWjhIZEJBQS9qNFlwa0xlSGdzQ0FFZkt1SVpVNWo1SGxvRmxWYzF0WmtrRlVOWXJJVk9RNGo5MUFlVUExSG1OYVpZRHp4a2tGVnplYzYybis4SHhSbk5lS25kK0RCUW8wVzEzYUFKWHFZMTBscXEvcmFKTW1uRkVDREpPQVZNTk9UUXhQbzFBVnlDb2ZCVnVLWUQzNzI3Wk9hQlRvL2dVQUpZYmV1WHNEMmdlQjljVEJZTkJOTlJ6QWdpNFZSUzhQNkVLaEtTWGFvWlIxSWpnWTVseWxLR1RsZGFPVzNXc09FQVJFVXN0ZGNPSXpEL1RYZGpjQjFvR1pEVWI5bm9nZUlTYml1K0wrWVo0alhLMTBpdXhDNGVsZ1dtMUlKQ2pla0NEWFdCbDJXYTZ0Z2dnZDM4RUE0WnExcW9DREk2R1ZNWlFONHVML1psL3ZRUnJ1M2tkTFRuZWthLzkzM3NaRlFxVHZpRjB1OEV4SjBXcDBTNVpKVmFmODNJSGdwMzUwWVJXRmw4S3pzbWlIUUtoR3Z1T2R6ekY1eWZVTXQzS2YwM2RXRk9sZm5lWlZPR0htQUlxellzR2l3UWgwY2k2V2lLZS8zamFtWEtwWGE5S0FjTW9sVW1zUkRhRXFacEhSamYxT0w2a0h0Wll3eDRkaXR5NmxDNXJtY3NFWnhjRnJtdzA5d1g4MkxzZi9MUGQzaUQrL3ZtQUliUWxQdEtaWTVMY0dUWDJYUVNlWE14MXNWbU5WRDRyTmtIM0puRndiN0xkdEpLZ1VmcUwvR1FrT2FzWCtoeDdMNUhjTEVZV2dZSGlZTHN3aXphbTBnbVF6aTZaQzRDVldTYTAyNFZTZnZ6KzBvT0VzRDhYb05jTnFyYkZhdnk1V1NORUEybERvTWk4OEYyTVJtc1NGSjY3aEhtZ0EzTzY0ekdsZHhIOWlnWlkzMCtwampGbVBneWJqZWp0bGdQcTYvOFJ2TjZKSnpCQU1QM01CR0lhK0lJdUt4OTRyZUJRajE5bFgxTnpXeFUwMTRPLzNqZkY2K1M2SlRGUDRBRWJMdUUvU3J5c1dIYUcwc0dCYm9xU0dzY2pyV0pTcFd1KzR5QXhCMHJlMDVpcVZFSitnTGFrVDN3UXBTaVZTakFCclV0QjFUMzhwSjZreDVsKy9wdnZ5N1loSGt6VjF2aktBWFg0ZGVoQ2w4enA2cWtrK2ErYncwUG51bWlCaVNsa2lqOHdFTER3R1o0UWhybms4NUc4T0NORks0TEdDbGxhd1poV1VzRjFUbHJqZmYzK0c5RFJGUVZSU3hNVGQ2ODhGU29ZaWRsNUZQMUFNVGhwbmdjNVY2eGJxTkxTbStIMzlWaG85ak02Ym01NzFEc1FwdU10Y3NpUmFZaTNLVHJjZ3Nwb2FJa1l0cUtnVlRhaWhaLzFaNmQzdGp5TW1qZDEvZmYzM3gvT2J0N2R1amczRm9tM0t6eURralVTWGpaZnBvWTRMa0hrZU1YcmRzUlBrd0xjOWpDNFFMcm14aWJCUG16L2QzU2ltWTFYdTJDT3R4b29aSCtEalYzZU54TWhabWsyU1Ryd050d09NamRaWHgzU01XbFFMY0NNbHVGdUZneW9YQmdUSHB2WEYrSHQwbzlqMXVKV1M2RVZRVXZUMFh1Z2cyaTMwMldDVC9sbkZ0QWhmcUg4aklkMmlaUHRqZ3RRYWliQ2NlejNrRDU2c0FsSk5FR2R6VU9PL0V3ZEllK2hydG5wZ0ExZC9VaFhWWmZUUW9pMWFMMmNBcW9NaFNDaU9PK2VoSnNXN0VlaW9tTWlUM2RReDdsM3pwa3JHSHZPNlptOEdzSXNlQnJLaE9zRjVuNUhTNTM2ZkM0NnpOYnIzNDhPN0ZsNWRmK2w1dTIxVEtNZnFYdG9kZlRWQjRBamRwVzgrbEZzdllFK2haUFk1MGVRbzBMU05VMVc2NHJSeW9VT0RVN2RvOUM4azdMd1lsek8yNFdqY1o4LythVXp1VzhsenhFVnZSdjlkd2xDR1VjUEFFUVMvWkxrMDRYZGt2azZ0WmpMSmtNakpWSW1BTGxwckFWSnBBMGZ6N0FrQkNXdk82a1g4NzhJa0hnTHlPN0tGSmRTZDdtVDlWaHVZMnFiUkl6RkgwS2tHYTQrTURubEkvTlhHZExPWEpEQ01yNUZMOEhCemQyMDNqMEVwQ0NHdGxqSFhmZzlaYS9XTlF4MENxSzV1UGpEcTR2eU1lQkovTFpXc2ZhZmZMVTV6eGs2ZC9DcWozMTBocGhkRm5sOG1RWnhiUC93MDQzRldWbkNVVVZyRGNTWWluTy9LajQvZTgrSFg4STQzVE5OYWlOQTJmWlFZa0Fzc01QVmx6cUhINWt5eDltR2J4anVzL3lDZXlkRFNlUkpzc1hMaHovSHpuZTkzUVhmRkFRNS92ZW11N3lUZXp1THVrQWZ6Y29xc1c1MFE5bGF3TDNnWS9wd2ZXeU94ZWZKemZwdStsTDc1MWtPN3lmZDc5UFhINHdUblhRMGI4OE44LzhmNWoyaFZBZ0tUTDIvbnZFeVBLL2RjL053VGcybDlvQndEY3V2NDkvVWY1NXczMmhQVUFpSkFBQ1BqdmwxMjA2YUw0ZWU4WFFEUzkvWlU3V094WE53WDFCaXFMb0tUVytCMG1ZUmptYjVwWXluZngwdmdELzF5TkFmZkpwd3d4RnhuQ3dRbVozQXZTem1lc2NveVR2QVlESlVlcFpaK2ZKYnRSQk91dUgrWk5kalBpTlN5VWNZWkdKT3lFanhBdFZIRWFWNjgrMTJGeUpjYzR4MzZPK3dqZlpMQnlGek8rU3k2M2VPVHVSeThsMFhwN2pPVk1JVC9EZmhvcVdHeHdaTDRnKzZUNHZRSExUekpocUtOU2tvMy9Sd3VZSXVMbDhSbVhTUUk2c1JydWlibGlDdTQ5NFJLOFBmL291VU12SWY0akJGS0F5ZTB6a213Rm4yVldGSm5yZFZycmlSeU12eUhEZDdDSTdNeHY1SERwU3FoQWs4RmUvSFVYeUt0Z2lGMnpIZ3JGa0FSNkJCQlBsYS92UG42cHZHN1VPcXZyclJFMXVuT2FhbjlqeEtEZWFxMXIxZFBDSWIzVjRqT0FnTHZjSWpsNEkrbXBRaE9BZSsxcE5pQ0FrUEgzeDlJUk1CeFFIeXdvcWV4Z1NVSHlEMVkwMUZ1cGh3ODI5T1UrMkZJOU5uNXFGS1J2cElITnpxR0ZVN1ZLVlJva3lZS1ZDUzhKbjUxZEpRdVRKRUkyQmhoSm1Dd3NrcWc0alBxT2J0S2pKazZOVERjMmphclk2UmZVMERTSmxKMU5PWC9vU2k0V09rN3hwNGJDYkZQZ0dCclJicjFxb2dKVHh3QzVuazVHZ3BjRFBmcW9ONUF4TXgyWE1MM3FpV0hUTDVTbThTWVkyZExsc2FvV0dpQXBNQjkxb01pUVl0TW9obzZENjRhTDVpWVlkazZWb3hiVkRKbGhzNFJlRDF1VEVHTGprbEhqUWdOT2V0RThYeitaMGJiS3V3QWhrU2dNbG9DUWlCeHl5YU1BQlNsRVlhSENoTnNpUXFRbzBXTEVpaE12UVNLd0pNa2dvRkxBd0tWS2t3NEJDUVVOSXdOV3BpelpjUEFJaUVqSUtITGtvcUtoWTJCaVllUGc0dUVURUJJUms1Q1NrVk5RVWxITGswOURxMENoSXNWS2xDcFRyb0xPUWYwR1hEYmxDMXNOMittQUZVdDJlS25QaEo5OGtUVnRtMnMrOEtOdFZ2M3FxKzkyR2ZXRGxiNjEzYnl2bkxmZ084KzRuZkRjKzE0NDZaU3p6cm51dEROdUdMVG1pdGRjaWcxQzh5RzhoUldCQ0RrUy9yeHl6RHZlc2s3UHdPZ1drN2ZkZE05dGQ5eGw5c2g5RHh4WDZhbkhucWp5dFJyVmFsbFoyTmpWY1hDcTU5S2dVWk5tclZxMDZkQ3VTNmR1UGI1eHdVYmQvYnhFNHV2NnVEcXI4ZmtKNHQ1MjJuMGJQclZqa2prT1gvdkhwcjNoLzJkd3BPQitmeEpIZG9UMTVjQTJmcFlCeE85NGUvNEpBcVdEM1BUL0cvVTNUOEFuL2diOGZpVUUxSDFjN3l1YnBLUVVlTm1TTjRiUERpVURwNFpOQ2JIVXB2aVgwc0tsMTF1dkJ3TWJpU2dFUFRZQU9tTlkySURNYXl5MjlTcHdyMjI3M2NBbzlPUmNDTHNCNmRsOXp5dm8xeGZpSldSc2tpRzNrVllpODhhOHV0L3ovOHMrOTZHVHV1dUtjUUE9IikgZm9ybWF0KCJ3b2ZmMiIpO3VuaWNvZGUtcmFuZ2U6dSswPz8sdSsxMzEsdSsxNTItMTUzLHUrMmJiLTAyYmMsdSsyYzYsdSsyZGEsdSsyZGMsdSsyMDAwLTIwNmYsdSsyMDc0LHUrMjBhYyx1KzIxMjIsdSsyMTkxLHUrMjE5Myx1KzIyMTIsdSsyMjE1LHUrZmVmZix1K2ZmZmR9QGZvbnQtZmFjZXtmb250LWZhbWlseTppY29tb29uO3NyYzp1cmwoImRhdGE6Zm9udC93b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQWZrQUFzQUFBQUFCNWdBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlBVeTh5QUFBQkNBQUFBR0FBQUFCZ0R4SUZzbU50WVhBQUFBRm9BQUFBVkFBQUFGUVhWdEtNWjJGemNBQUFBYndBQUFBSUFBQUFDQUFBQUJCbmJIbG1BQUFCeEFBQUE3d0FBQU84aXNHK3NXaGxZV1FBQUFXQUFBQUFOZ0FBQURZYTJlSlphR2hsWVFBQUJiZ0FBQUFrQUFBQUpBZkNBOHRvYlhSNEFBQUYzQUFBQUNnQUFBQW9ISklBdzJ4dlkyRUFBQVlFQUFBQUZnQUFBQllFSGdOS2JXRjRjQUFBQmh3QUFBQWdBQUFBSUFBUUFHbHVZVzFsQUFBR1BBQUFBWVlBQUFHR21Vb0orM0J2YzNRQUFBZkVBQUFBSUFBQUFDQUFBd0FBQUFNRGd3R1FBQVVBQUFLWkFzd0FBQUNQQXBrQ3pBQUFBZXNBTXdFSkFBQUFBQUFBQUFBQUFBQUFBQUFBQVJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQTZRVUR3UC9BQUVBRHdBQkFBQUFBQVFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQXdBQUFBTUFBQUFjQUFFQUF3QUFBQndBQXdBQkFBQUFIQUFFQURnQUFBQUtBQWdBQWdBQ0FBRUFJT2tGLy8zLy93QUFBQUFBSU9rQS8vMy8vd0FCLytNWEJBQURBQUVBQUFBQUFBQUFBQUFBQUFFQUFmLy9BQThBQVFBQUFBQUFBQUFBQUFJQUFEYzVBUUFBQUFBQkFBQUFBQUFBQUFBQUFnQUFOemtCQUFBQUFBRUFBQUFBQUFBQUFBQUNBQUEzT1FFQUFBQUFBZ0FBQUVrQ2tnTnVBQWtBS3dBQUV5RTFOQ1lqSWdZZEFRVVJGQVlqSVNJbU5SRTBOanNCTlRRM1BnRTNOak15Rng0QkZ4WWRBVE15RmhXM0FTUlZQVHhXQWRzZ0YvM2NGeUFnRnhJVUZVVXZMalUxTGk5R0ZCUVNGeUFDQUc0OFZsWThiamYrdHhjZ0lCY0JTUmNnYmpRdkwwVVVGUlVVUlM4dk5HNGdGd0FDQU1QL3dBTTlBOEFBQkFBSUFBQXRBUWtCQlJNQkJTVUIvdjdGQVRzQk92N0ZCZjdHQVRvQk84RzYva1VCdTdvQy8vMzJ1YmtBQUFVQUFBQUFCQUFEc2dBZUFDZ0FPUUJIQUdZQUFBRW1JZzhCTGdFaklnY09BUWNHQng0QkZ3Y0dGQmNlQVRNeU5qY0JOalFCTWhZWEJ5NEJOVFEyQlQ0Qk56NEJOdzRCRlJRV0Z3Y3VBU2NsTkNZbkFSNEJNekkzUGdFM05qY0hIZ0VWSGdFWERnRUhEZ0VqSWlZbkJ4NEJNekkzUGdFM05qY3VBU2NEc2c0b0Rzb25VaXRVVFUyRU5UVWtIMWcybnc0T0J4SUpDUklIQTJBTy9lQWdNUXA2SENVNC92WWRTeTRDQmdNSENCa1dQU2hDR2dLU0JnYit2aE1uRkRVdkxrWVVGRDVGQVFJdVN4MGRTeTQ0Z1VNZE9SeE5MV0F5VkUxTmhEVTFKQ0pqUFFPeURnN0tEQXdYR0ZRN08wYythU2lmRGlnT0J3Y0hCd05nRGlqKzNDVWNlZ294SUNnNHdDMU5IQUlFQWhVc0Z5bExIejBiUmlsR0ZDY1QvcjRHQmhRVVJpNHZ6VVVCQVFFY1RTMHRUUndrSmdjSFRSQVJGeGhVT3p0SFEzRXFBQUFBQUFNQUFBQ0FCQUFEQUFBYkFFa0FWUUFBQVNJSERnRUhCZ2NXRng0QkZ4WXpNamMrQVRjMk55WW5MZ0VuSmhjZUFSY09BUWNPQVNNaUppY3VBU2MrQVRjK0FUY09BUlVVRng0QkZ4WXpNamMrQVRjMk5UUW1KeDRCRnpFSEZBWWpJaVkxTkRZek1oWUNBRlJOVFlRMU5TUWtOVFdFVFUxVVZFMU5oRFUxSkNRMU5ZUk5UYWd1U3gwZFN5NDRnVU5EZ1RndVN4MGRTeTRDQmdNSENCUVVSaTR2TlRVdkxrWVVGQWdIQXdZQy9EZ29LRGc0S0NnNEF3QVhHRlE3TzBkSE96dFVHQmNYR0ZRN08wZEhPenRVR0JlcUhFMHRMVTBjSkNZbUpCeE5MUzFOSEFJRUFoVXNGelV2TGtZVUZCUVVSaTR2TlJjc0ZRSUVBallvT0Rnb0tEZzRBQUFBQVFBQS85a0VBQU9uQUFvQUFBRWxDd0VOQVFNbEJRTWxCQUQrbnA2ZS9wNEJBRHdCUEFFOFBBRUFBak16QVVIK3Z6UDYvcUNtcGdGZytnQUFBd0FBQUFBRHdBT0FBQVlBQ3dBUEFBQUpBak1STXhFRElSRWhFUWNqTlRNQzRQOEEvd0Nnd0dEK0lBUEFRSUNBQWdEL0FBRUFBWUQrZ1A4QS93QUJBSUJBQUFBQkFBQUFBUUFBSW83dHpWOFBQUFVBQ3dRQUFBQUFBTnZkVHU0QUFBQUEyOTFPN2dBQS84QUVBQVBBQUFBQUNBQUNBQUFBQUFBQUFBRUFBQVBBLzhBQUFBUUFBQUFBQUFRQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBS0JBQUFBQUFBQUFBQUFBQUFBZ0FBQUFLU0FBQUVBQUREQkFBQUFBUUFBQUFFQUFBQUJBQUFBQUFBQUFBQUNnQVVBQjRBWGdCNkFSd0JuZ0c4QWQ0QUFBQUJBQUFBQ2dCbkFBVUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURnQ3VBQUVBQUFBQUFBRUFCd0FBQUFFQUFBQUFBQUlBQndCZ0FBRUFBQUFBQUFNQUJ3QTJBQUVBQUFBQUFBUUFCd0IxQUFFQUFBQUFBQVVBQ3dBVkFBRUFBQUFBQUFZQUJ3QkxBQUVBQUFBQUFBb0FHZ0NLQUFNQUFRUUpBQUVBRGdBSEFBTUFBUVFKQUFJQURnQm5BQU1BQVFRSkFBTUFEZ0E5QUFNQUFRUUpBQVFBRGdCOEFBTUFBUVFKQUFVQUZnQWdBQU1BQVFRSkFBWUFEZ0JTQUFNQUFRUUpBQW9BTkFDa2FXTnZiVzl2YmdCcEFHTUFid0J0QUc4QWJ3QnVWbVZ5YzJsdmJpQXhMakFBVmdCbEFISUFjd0JwQUc4QWJnQWdBREVBTGdBd2FXTnZiVzl2YmdCcEFHTUFid0J0QUc4QWJ3QnVhV052Ylc5dmJnQnBBR01BYndCdEFHOEFid0J1VW1WbmRXeGhjZ0JTQUdVQVp3QjFBR3dBWVFCeWFXTnZiVzl2YmdCcEFHTUFid0J0QUc4QWJ3QnVSbTl1ZENCblpXNWxjbUYwWldRZ1lua2dTV052VFc5dmJpNEFSZ0J2QUc0QWRBQWdBR2NBWlFCdUFHVUFjZ0JoQUhRQVpRQmtBQ0FBWWdCNUFDQUFTUUJqQUc4QVRRQnZBRzhBYmdBdUFBQUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9PSIpIGZvcm1hdCgid29mZiIpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbH1bY2xhc3MqPSIgaWNvbi0iXSxbY2xhc3NePWljb24tXXtmb250LWZhbWlseTppY29tb29uIWltcG9ydGFudDtzcGVhazpuZXZlcjtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDo0MDA7Zm9udC12YXJpYW50Om5vcm1hbDt0ZXh0LXRyYW5zZm9ybTpub25lO2xpbmUtaGVpZ2h0OjE7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Lmljb24tbG9jazpiZWZvcmV7Y29udGVudDoi7qSAIn0uaWNvbi1ldGhlcmV1bTpiZWZvcmV7Y29udGVudDoi7qSBIn0uaWNvbi1leWUtb2ZmOmJlZm9yZXtjb250ZW50OiLupIIifS5pY29uLWV5ZS1vbjpiZWZvcmV7Y29udGVudDoi7qSDIn0uaWNvbi1zdGFyOmJlZm9yZXtjb250ZW50OiLupIQifS5pY29uLWRvd25sb2FkOmJlZm9yZXtjb250ZW50OiLupIUifWJvZHl7cGFkZGluZzowO2ZvbnQtZmFtaWx5OkxhdG8sc2Fucy1zZXJpZjtiYWNrZ3JvdW5kOiMwOWM0YzU7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQwZGVnLCMwZmYwYjMsIzAzNmVkOSk7YmFja2dyb3VuZC1hdHRhY2htZW50OmZpeGVkO2ZvbnQtc2l6ZToxNnB4fWgxLGgyLGgzLGg0LGg1LGg2LGxhYmVsLHB7bWFyZ2luOjA7Zm9udC13ZWlnaHQ6NDAwfWEsYTpob3ZlcixhOnZpc2l0ZWR7Y29sb3I6IzVkNWQ1ZDt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5wYW5lbCxhOmhvdmVye2NvbG9yOiMzNTM1MzV9LnBhbmVse3BhZGRpbmc6MS41ZW0gM2VtO2JhY2tncm91bmQtY29sb3I6I2ZmZjttYXJnaW4tdG9wOjJlbTtmb250LXdlaWdodDo0MDA7Ym94LXNoYWRvdzoxcHggNXB4IDEwcHggcmdiYSgwLDAsMCwwLjE1KTt0cmFuc2l0aW9uOmJveC1zaGFkb3cgMC4ycyBlYXNlLWluLW91dH0ucGFuZWw6aG92ZXJ7Ym94LXNoYWRvdzoycHggMTBweCAxNXB4IHJnYmEoMCwwLDAsMC4xNSl9I2NvbnRlbnR7bWFyZ2luLXRvcDo4ZW07bWFyZ2luLWJvdHRvbTo2ZW19LnRleHQtaW5wdXQtbGFyZ2V7d2lkdGg6MTAwJTtjb2xvcjojMzUzNTM1O2JhY2tncm91bmQ6I2UwZTBlMDtvdXRsaW5lOm5vbmU7Zm9udC1zaXplOjEuM2VtO3BhZGRpbmc6MC41ZW07Ym9yZGVyOm5vbmU7bWFyZ2luLWJvdHRvbToxMHB4Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lfS50ZXh0LWlucHV0LWxhcmdlOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNiMmIyYjJ9LnRleHQtaW5wdXQtbGFyZ2U6OnBsYWNlaG9sZGVye2NvbG9yOiNiMmIyYjJ9LmJ1dHRvbi1sYXJnZXtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7Y29sb3I6I2ZmZjtwYWRkaW5nOjhweDtmb250LXNpemU6MTlweDtmb250LXdlaWdodDo1MDA7bWFyZ2luOjEuM2VtIDAgMCAwO2N1cnNvcjpwb2ludGVyOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JhY2tncm91bmQ6IzBjZDNiYzt3aWR0aDoxMDAlfS5idXR0b24tbGFyZ2U6aG92ZXJ7YmFja2dyb3VuZDojNDZkZWNjfS5idXR0b24tbGFyZ2U6ZGlzYWJsZWR7YmFja2dyb3VuZDojYzNjM2MzO2N1cnNvcjphdXRvfSNhcHAucHJlcmVuZGVyIC5oaWRlLXByZXJlbmRlciwjYXBwLnJlbmRlciAuaGlkZS1yZW5kZXJ7ZGlzcGxheTpub25lfUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6MTAyNHB4KXsjY29udGVudHttYXJnaW4tdG9wOjdlbTttYXJnaW4tYm90dG9tOjVlbX19QG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDo2NDBweCl7I2NvbnRlbnR7bWFyZ2luLXRvcDo1ZW07bWFyZ2luLWJvdHRvbTo0ZW19fUBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6NDgwcHgpey5wYW5lbHtwYWRkaW5nOjFlbX19" rel="stylesheet">
<link rel="icon" type="image/png" sizes="32x32" href="http://localhost:3000/img/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="http://localhost:3000/img/icons/favicon-16x16.png">
<link rel="manifest" href="http://localhost:3000/manifest.json">
<meta name="theme-color" content="#4DBA87">
<meta name="apple-mobile-web-app-capable" content="no">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-title" content="vanity-eth">
<link rel="apple-touch-icon" href="http://localhost:3000/img/icons/apple-touch-icon-152x152.png">
<link rel="mask-icon" href="http://localhost:3000/img/icons/safari-pinned-tab.svg" color="#4DBA87">
<meta name="msapplication-TileImage" content="img/icons/msapplication-icon-144x144.png">
<meta name="msapplication-TileColor" content="#000000">
</head>
<body>
<div id="app" class="remodal-bg prerender remodal-is-closed">
<div id="content" class="container">
<div data-v-105bd278="">
<h1 data-v-105bd278="">VANITY-ETH</h1>
<p data-v-105bd278="">ETH vanity address generator</p>
</div>
<div class="row">
<div class="col-md-12">
<div data-v-2885a99a="" class="panel">
<p data-v-2885a99a="">
Vanity-ETH is an open-source tool that uses your web browser to generate Ethereum vanity addresses.<br data-v-2885a99a="">
Enter a short prefix and/or suffix of your choice and click <i data-v-2885a99a="">Generate</i> to start.
</p>
<div data-v-2885a99a="" class="shortcut">
<button data-v-2885a99a="" type="button" class="button-large">Start now</button>
</div>
<h2 data-v-2885a99a="">What's a vanity address?</h2>
<div data-v-2885a99a="" class="p">
A vanity address is an address in which you can choose a part of it to make it appear less random.<br data-v-2885a99a="">
Examples:
<ul data-v-2885a99a="">
<li data-v-2885a99a="">
<span data-v-2885a99a="" class="monospace">0xc0ffee254729296a45a3885639AC7E10F9d54979</span>
</li>
<li data-v-2885a99a="">
<span data-v-2885a99a="" class="monospace">0x999999cf1046e68e36E1aA2E0E07105eDDD1f08E</span>
</li>
</ul>
</div>
<h2 data-v-2885a99a="">How it works</h2>
<p data-v-2885a99a="">
Enter a short prefix and/or suffix of your choice and click <i data-v-2885a99a="">Generate</i> to start.
Your browser will generate lots of random addresses until it finds one that matches your input.<br data-v-2885a99a="">
Once an address is found, you can choose to reveal the private key or click the
<i data-v-2885a99a="">Save</i> button to download a password-encrypted keystore file.<br data-v-2885a99a=""><br data-v-2885a99a="">
Adjusting the number of working threads can increase or decrease the speed, depending on your computer's
capabilities.<br data-v-2885a99a="">
</p>
<h2 data-v-2885a99a="">Security</h2>
<p data-v-2885a99a="">
As mentioned earlier, all computations occur solely within your browser. Nothing ever leaves your
machine, or even your browser tab. There is no database, no server-side code. Everything vanishes when
you close your browser tab.<br data-v-2885a99a=""><br data-v-2885a99a=""><b data-v-2885a99a="">Vanity-ETH cannot and will never store your private key.</b>
If you have concerns about its trustworthiness, you have three options to ensure the privacy of your
key:<br data-v-2885a99a="">
- After loading the web page, you can disconnect from the internet and continue using it seamlessly<br data-v-2885a99a="">
- Alternatively, you can download the latest build of Vanity-ETH
<a data-v-2885a99a="" href="https://git.io/veth-dl" target="_blank">here</a> and use it on an offline
computer<br data-v-2885a99a="">
- The code is 100% open source and available on
<a data-v-2885a99a="" href="https://github.com/bokub/vanity-eth" target="_blank">GitHub</a>, allowing
you to review it thoroughly before usage<br data-v-2885a99a=""><br data-v-2885a99a="">
Vanity-ETH uses a cryptographically secure pseudorandom number generator (CSPRNG) to generate Ethereum
addresses.<br data-v-2885a99a="">
The keystore file is encrypted with an AES-128-CTR cipher using the PBKDF2-SHA256 derivation function
with 65536 hashing rounds.
</p>
<h2 data-v-2885a99a="">Other browser-based tools</h2>
<p data-v-2885a99a="">
Be aware that due to its popularity and open-source nature, Vanity-ETH has been widely copied, leading
to the existence of websites claiming to provide the same functionality. Sometimes, they are perfect
clones hosted on very similar domains.<br data-v-2885a99a="">
Most of them do not credit the original code, are not open-source, and may contain malicious code.<br data-v-2885a99a=""><br data-v-2885a99a="">
Vanity-ETH has always been the <b data-v-2885a99a="">first</b> browser-based ETH vanity address
generator, and remains the most popular and trusted one.<br data-v-2885a99a=""><br data-v-2885a99a="">
To be sure you're on the real Vanity-ETH website, search for
<a data-v-2885a99a="" href="https://github.com/search?o=desc&q=Vanity-ETH&s=stars" target="_blank">Vanity-ETH on GitHub</a>, find the repository with the most stars (> 600), and click the link in the description. Double
check by searching
<a data-v-2885a99a="" href="https://www.google.com/search?q=Vanity-ETH" target="_blank">Vanity-ETH on Google</a>.
</p>
<h2 data-v-2885a99a="">Performance</h2>
<p data-v-2885a99a="">
Vanity-ETH's performance may vary significantly across different browsers. Currently, Chrome provides
the best results.<br data-v-2885a99a="">
While you can use Vanity-ETH on your phone or tablet, it is unlikely to match the speed of a traditional
computer.<br data-v-2885a99a=""><br data-v-2885a99a=""><b data-v-2885a99a="">N.B:</b> Vanity-ETH is
designed to be a user-friendly tool that runs directly in your browser, providing easy accessibility
without the need to download or install additional software.<br data-v-2885a99a="">
However, browser-based tools have inherent limitations that may affect their performance and efficiency.
Some dedicated command-line tools are more difficult to use, but may offer better performance.
</p>
<h2 data-v-2885a99a="">Compatibility</h2>
<p data-v-2885a99a="">
Any address generated with Vanity-ETH is ERC-20 compatible, which means you can use it for an ICO, an
airdrop, or just to withdraw your funds from an exchange.<br data-v-2885a99a="">
The keystore file is 100% compatible with MyEtherWallet, MetaMask, Mist, and geth.
</p>
</div>
</div>
</div>
<!---->
<div class="row">
<div class="col-md-6">
<div data-v-0d134f6a="" id="input-panel" class="panel">
<form data-v-0d134f6a="">
<!---->
<div data-v-0d134f6a="" class="row">
<div data-v-0d134f6a="" class="col-12 col-sm-6 col-md-12 col-lg-6">
<input data-v-0d134f6a="" type="text" id="input" placeholder="Prefix" class="text-input-large">
</div>
<div data-v-0d134f6a="" class="col-12 col-sm-6 col-md-12 col-lg-6">
<input data-v-0d134f6a="" type="text" id="input" placeholder="Suffix" class="text-input-large">
</div>
</div>
<div data-v-0d134f6a="" class="row justify-content-center hide-render">
<div data-v-0d134f6a="" class="spinner">
<div data-v-0d134f6a=""></div>
<div data-v-0d134f6a=""></div>
<div data-v-0d134f6a=""></div>
<div data-v-0d134f6a=""></div>
</div>
</div>
<div data-v-0d134f6a="" class="example hide-prerender">
E.g.
<span data-v-0d134f6a="" class="monospace">
0x<!----><span data-v-0d134f6a="">593Da0221dC30D723D211176a55317F22c49c1a1</span><!----></span>
</div>
<div data-v-0d134f6a="" class="controls hide-prerender">
<label data-v-0d134f6a="" class="checkbox"><input data-v-0d134f6a="" type="checkbox" name="checkbox" checked="checked"><i data-v-0d134f6a="" class="left"></i>
Case-sensitive
</label>
</div>
<div data-v-0d134f6a="" class="threads hide-prerender">
<input data-v-0d134f6a="" type="button" value="-" class="square-btn button-large"><input data-v-0d134f6a="" type="button" value="+" class="square-btn arrow button-large">
<h4 data-v-0d134f6a="">2</h4>
<span data-v-0d134f6a=""> threads</span><span data-v-0d134f6a=""> (recommended)</span>
</div>
<div data-v-0d134f6a="" class="row">
<div data-v-0d134f6a="" class="col-lg-6 col-sm-12">
<input data-v-0d134f6a="" type="button" value="Generate" disabled="disabled" class="button-large hide-render"><input data-v-0d134f6a="" type="button" value="Generate" class="button-large hide-prerender">
</div>
<div data-v-0d134f6a="" class="col-lg-6 col-sm-12">
<input data-v-0d134f6a="" type="button" value="Stop" disabled="disabled" class="button-large">
</div>
</div>
</form>
</div>
</div>
<div class="col-md-6">
<div data-v-664556a1="" class="panel">
<div data-v-664556a1="">Difficulty: <span data-v-664556a1="" class="output">1</span></div>
<div data-v-664556a1="">Generated: <span data-v-664556a1="" class="output">0 addresses</span></div>
<div data-v-664556a1="">50% probability: <span data-v-664556a1="" class="output">0 addresses</span></div>
<div data-v-664556a1="">Speed: <span data-v-664556a1="" class="output">0 addr/s</span></div>
<div data-v-664556a1="">Status: <span data-v-664556a1="" class="output">Waiting</span></div>
<div data-v-664556a1="" class="probability">
<div data-v-664556a1="" class="probability-bar" style="width: 0%"></div>
</div>
<div data-v-664556a1="" class="percentage">
<h4 data-v-664556a1="">0%</h4>
<div data-v-664556a1="">Probability</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div data-v-05c9bba6="" class="panel result">
<div data-v-05c9bba6="" class="row">
<div data-v-05c9bba6="" id="identicon" class="float-left"></div>
<div data-v-05c9bba6="" class="col">
<div data-v-05c9bba6="">Address: <span data-v-05c9bba6="" class="output"></span></div>
<div data-v-05c9bba6="">
Private key:
<!---->
</div>
</div>
<div data-v-05c9bba6="" class="col-lg-2 col-12">
<button data-v-05c9bba6="" data-remodal-target="modal" disabled="disabled" class="save button-large">
<i data-v-05c9bba6="" class="icon-lock"></i>Save
</button>
</div>
</div>
</div>
</div>
</div>
</div>
<footer data-v-167a421c="">
<div data-v-167a421c="" class="container">
<div data-v-167a421c="" class="row">
<div data-v-167a421c="" class="col-12 col-lg-6 address">
Tips:
<a data-v-167a421c="" href="https://etherscan.io/address/0xAceBabe64807cb045505b268ef253D8fC2FeF5Bc#tokentxns" target="_blank">0xAceBabe64807cb045505b268ef253D8fC2FeF5Bc</a>
</div>
<div data-v-167a421c="" class="col-12 col-lg-6 links">
<a data-v-167a421c="" href="https://etherscan.io/address/0xAceBabe64807cb045505b268ef253D8fC2FeF5Bc" target="_blank"><i data-v-167a421c="" class="icon-ethereum"></i> Donate </a><a data-v-167a421c="" href="https://github.com/bokub/vanity-eth" target="_blank"><i data-v-167a421c="" class="icon-star"></i> Star me </a><a data-v-167a421c="" href="https://github.com/bokub/vanity-eth/wiki/download-Vanity-ETH" target="_blank"><i data-v-167a421c="" class="icon-download"></i> Download
</a>
</div>
</div>
</div>
</footer>
<a data-v-887f6dee="" href="https://github.com/bokub/vanity-eth" target="_blank" aria-label="View source on Github"><svg data-v-887f6dee="" width="80" height="80" viewBox="0 0 250 250" aria-hidden="true" style="
fill: rgb(21, 21, 19);
color: rgb(255, 255, 255);
position: absolute;
top: 0px;
border: 0px;
right: 0px;
">
<defs data-v-887f6dee="">
<mask data-v-887f6dee="" id="octomask">
<path data-v-887f6dee="" fill="white" d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
<path data-v-887f6dee="" fill="black" d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" class="octo-arm" style="transform-origin: 130px 106px"></path>
<path data-v-887f6dee="" d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="black" class="octo-body"></path>
</mask>
</defs>
<rect data-v-887f6dee="" fill="white" width="100%" height="100%" mask="url(#octomask)" class="filler"></rect></svg></a>
</div>
<script src="data:application/javascript;charset=utf-8;base64,KHdpbmRvd1sid2VicGFja0pzb25wIl09d2luZG93WyJ3ZWJwYWNrSnNvbnAiXXx8W10pLnB1c2goW1siY2h1bmstdmVuZG9ycyJdLHsiMDBiYiI6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjM4YmEiKSl9KSgwLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tb2RlLkNGQj1mdW5jdGlvbigpe3ZhciB0PWUubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtmdW5jdGlvbiBuKGUsdCxuLHIpe3ZhciBpPXRoaXMuX2l2O2lmKGkpe3ZhciBvPWkuc2xpY2UoMCk7dGhpcy5faXY9dm9pZCAwfWVsc2Ugbz10aGlzLl9wcmV2QmxvY2s7ci5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIGE9MDthPG47YSsrKWVbdCthXV49b1thXX1yZXR1cm4gdC5FbmNyeXB0b3I9dC5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX2NpcGhlcixpPXIuYmxvY2tTaXplO24uY2FsbCh0aGlzLGUsdCxpLHIpLHRoaXMuX3ByZXZCbG9jaz1lLnNsaWNlKHQsdCtpKX19KSx0LkRlY3J5cHRvcj10LmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fY2lwaGVyLGk9ci5ibG9ja1NpemUsbz1lLnNsaWNlKHQsdCtpKTtuLmNhbGwodGhpcyxlLHQsaSxyKSx0aGlzLl9wcmV2QmxvY2s9b319KSx0fSgpLGUubW9kZS5DRkJ9KSl9LCIxMGI3IjpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQscil7ZS5leHBvcnRzPXIobigiMjFiZiIpKX0pKDAsKGZ1bmN0aW9uKGUpewovKiogQHByZXNlcnZlCgkoYykgMjAxMiBieSBDw6lkcmljIE1lc25pbC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KCglSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CgoJICAgIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoJICAgIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgoKCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCgkqLwpyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49ZSxyPW4ubGliLGk9ci5Xb3JkQXJyYXksbz1yLkhhc2hlcixhPW4uYWxnbyxzPWkuY3JlYXRlKFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdKSx1PWkuY3JlYXRlKFs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdKSxjPWkuY3JlYXRlKFsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSksbD1pLmNyZWF0ZShbOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0pLGY9aS5jcmVhdGUoWzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0pLGQ9aS5jcmVhdGUoWzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF0pLHA9YS5SSVBFTUQxNjA9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1pLmNyZWF0ZShbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjwxNjtuKyspe3ZhciByPXQrbixpPWVbcl07ZVtyXT0xNjcxMTkzNSYoaTw8OHxpPj4+MjQpfDQyNzgyNTUzNjAmKGk8PDI0fGk+Pj44KX12YXIgbyxhLHAsYixfLHgsayxDLEEsUyxFLFQ9dGhpcy5faGFzaC53b3JkcyxPPWYud29yZHMsQj1kLndvcmRzLEQ9cy53b3JkcyxqPXUud29yZHMsTj1jLndvcmRzLCQ9bC53b3Jkczt4PW89VFswXSxrPWE9VFsxXSxDPXA9VFsyXSxBPWI9VFszXSxTPV89VFs0XTtmb3Iobj0wO248ODA7bis9MSlFPW8rZVt0K0Rbbl1dfDAsRSs9bjwxNj9oKGEscCxiKStPWzBdOm48MzI/dihhLHAsYikrT1sxXTpuPDQ4P20oYSxwLGIpK09bMl06bjw2ND95KGEscCxiKStPWzNdOmcoYSxwLGIpK09bNF0sRXw9MCxFPXcoRSxOW25dKSxFPUUrX3wwLG89XyxfPWIsYj13KHAsMTApLHA9YSxhPUUsRT14K2VbdCtqW25dXXwwLEUrPW48MTY/ZyhrLEMsQSkrQlswXTpuPDMyP3koayxDLEEpK0JbMV06bjw0OD9tKGssQyxBKStCWzJdOm48NjQ/dihrLEMsQSkrQlszXTpoKGssQyxBKStCWzRdLEV8PTAsRT13KEUsJFtuXSksRT1FK1N8MCx4PVMsUz1BLEE9dyhDLDEwKSxDPWssaz1FO0U9VFsxXStwK0F8MCxUWzFdPVRbMl0rYitTfDAsVFsyXT1UWzNdK18reHwwLFRbM109VFs0XStvK2t8MCxUWzRdPVRbMF0rYStDfDAsVFswXT1FfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2RhdGEsdD1lLndvcmRzLG49OCp0aGlzLl9uRGF0YUJ5dGVzLHI9OCplLnNpZ0J5dGVzO3Rbcj4+PjVdfD0xMjg8PDI0LXIlMzIsdFsxNCsocis2ND4+Pjk8PDQpXT0xNjcxMTkzNSYobjw8OHxuPj4+MjQpfDQyNzgyNTUzNjAmKG48PDI0fG4+Pj44KSxlLnNpZ0J5dGVzPTQqKHQubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIGk9dGhpcy5faGFzaCxvPWkud29yZHMsYT0wO2E8NTthKyspe3ZhciBzPW9bYV07b1thXT0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KX1yZXR1cm4gaX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgZT1vLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIGUuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLGV9fSk7ZnVuY3Rpb24gaChlLHQsbil7cmV0dXJuIGVedF5ufWZ1bmN0aW9uIHYoZSx0LG4pe3JldHVybiBlJnR8fmUmbn1mdW5jdGlvbiBtKGUsdCxuKXtyZXR1cm4oZXx+dClebn1mdW5jdGlvbiB5KGUsdCxuKXtyZXR1cm4gZSZufHQmfm59ZnVuY3Rpb24gZyhlLHQsbil7cmV0dXJuIGVeKHR8fm4pfWZ1bmN0aW9uIHcoZSx0KXtyZXR1cm4gZTw8dHxlPj4+MzItdH1uLlJJUEVNRDE2MD1vLl9jcmVhdGVIZWxwZXIocCksbi5IbWFjUklQRU1EMTYwPW8uX2NyZWF0ZUhtYWNIZWxwZXIocCl9KE1hdGgpLGUuUklQRU1EMTYwfSkpfSwxMTMyOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyKXtlLmV4cG9ydHM9cihuKCIyMWJmIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZSxuPXQubGliLHI9bi5Xb3JkQXJyYXksaT10LmVuYztpLkJhc2U2ND17c3RyaW5naWZ5OmZ1bmN0aW9uKGUpe3ZhciB0PWUud29yZHMsbj1lLnNpZ0J5dGVzLHI9dGhpcy5fbWFwO2UuY2xhbXAoKTtmb3IodmFyIGk9W10sbz0wO288bjtvKz0zKWZvcih2YXIgYT10W28+Pj4yXT4+PjI0LW8lNCo4JjI1NSxzPXRbbysxPj4+Ml0+Pj4yNC0obysxKSU0KjgmMjU1LHU9dFtvKzI+Pj4yXT4+PjI0LShvKzIpJTQqOCYyNTUsYz1hPDwxNnxzPDw4fHUsbD0wO2w8NCYmbysuNzUqbDxuO2wrKylpLnB1c2goci5jaGFyQXQoYz4+PjYqKDMtbCkmNjMpKTt2YXIgZj1yLmNoYXJBdCg2NCk7aWYoZil3aGlsZShpLmxlbmd0aCU0KWkucHVzaChmKTtyZXR1cm4gaS5qb2luKCIiKX0scGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgsbj10aGlzLl9tYXAscj10aGlzLl9yZXZlcnNlTWFwO2lmKCFyKXtyPXRoaXMuX3JldmVyc2VNYXA9W107Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspcltuLmNoYXJDb2RlQXQoaSldPWl9dmFyIGE9bi5jaGFyQXQoNjQpO2lmKGEpe3ZhciBzPWUuaW5kZXhPZihhKTstMSE9PXMmJih0PXMpfXJldHVybiBvKGUsdCxyKX0sX21hcDoiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0ifTtmdW5jdGlvbiBvKGUsdCxuKXtmb3IodmFyIGk9W10sbz0wLGE9MDthPHQ7YSsrKWlmKGElNCl7dmFyIHM9bltlLmNoYXJDb2RlQXQoYS0xKV08PGElNCoyLHU9bltlLmNoYXJDb2RlQXQoYSldPj4+Ni1hJTQqMjtpW28+Pj4yXXw9KHN8dSk8PDI0LW8lNCo4LG8rK31yZXR1cm4gci5jcmVhdGUoaSxvKX19KCksZS5lbmMuQmFzZTY0fSkpfSwxMTU3OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpOwovKiEKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My42LjAKICogaHR0cHM6Ly9qcXVlcnkuY29tLwogKgogKiBJbmNsdWRlcyBTaXp6bGUuanMKICogaHR0cHM6Ly9zaXp6bGVqcy5jb20vCiAqCiAqIENvcHlyaWdodCBPcGVuSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQogKiBodHRwczovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBEYXRlOiAyMDIxLTAzLTAyVDE3OjA4WgogKi8oZnVuY3Rpb24odCxuKXsidXNlIHN0cmljdCI7Im9iamVjdCI9PT10eXBlb2YgZS5leHBvcnRzP2UuZXhwb3J0cz10LmRvY3VtZW50P24odCwhMCk6ZnVuY3Rpb24oZSl7aWYoIWUuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIG4oZSl9Om4odCl9KSgidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsKGZ1bmN0aW9uKG4sbyl7InVzZSBzdHJpY3QiO3ZhciBhPVtdLHM9T2JqZWN0LmdldFByb3RvdHlwZU9mLHU9YS5zbGljZSxjPWEuZmxhdD9mdW5jdGlvbihlKXtyZXR1cm4gYS5mbGF0LmNhbGwoZSl9OmZ1bmN0aW9uKGUpe3JldHVybiBhLmNvbmNhdC5hcHBseShbXSxlKX0sbD1hLnB1c2gsZj1hLmluZGV4T2YsZD17fSxwPWQudG9TdHJpbmcsaD1kLmhhc093blByb3BlcnR5LHY9aC50b1N0cmluZyxtPXYuY2FsbChPYmplY3QpLHk9e30sZz1mdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGUmJiJudW1iZXIiIT09dHlwZW9mIGUubm9kZVR5cGUmJiJmdW5jdGlvbiIhPT10eXBlb2YgZS5pdGVtfSx3PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lJiZlPT09ZS53aW5kb3d9LGI9bi5kb2N1bWVudCxfPXt0eXBlOiEwLHNyYzohMCxub25jZTohMCxub01vZHVsZTohMH07ZnVuY3Rpb24geChlLHQsbil7bj1ufHxiO3ZhciByLGksbz1uLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKG8udGV4dD1lLHQpZm9yKHIgaW4gXylpPXRbcl18fHQuZ2V0QXR0cmlidXRlJiZ0LmdldEF0dHJpYnV0ZShyKSxpJiZvLnNldEF0dHJpYnV0ZShyLGkpO24uaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pfWZ1bmN0aW9uIGsoZSl7cmV0dXJuIG51bGw9PWU/ZSsiIjoib2JqZWN0Ij09PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT09dHlwZW9mIGU/ZFtwLmNhbGwoZSldfHwib2JqZWN0Ijp0eXBlb2YgZX12YXIgQz0iMy42LjAiLEE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IEEuZm4uaW5pdChlLHQpfTtmdW5jdGlvbiBTKGUpe3ZhciB0PSEhZSYmImxlbmd0aCJpbiBlJiZlLmxlbmd0aCxuPWsoZSk7cmV0dXJuIWcoZSkmJiF3KGUpJiYoImFycmF5Ij09PW58fDA9PT10fHwibnVtYmVyIj09PXR5cGVvZiB0JiZ0PjAmJnQtMSBpbiBlKX1BLmZuPUEucHJvdG90eXBlPXtqcXVlcnk6Qyxjb25zdHJ1Y3RvcjpBLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdS5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dS5jYWxsKHRoaXMpOmU8MD90aGlzW2UrdGhpcy5sZW5ndGhdOnRoaXNbZV19LHB1c2hTdGFjazpmdW5jdGlvbihlKXt2YXIgdD1BLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxlKTtyZXR1cm4gdC5wcmV2T2JqZWN0PXRoaXMsdH0sZWFjaDpmdW5jdGlvbihlKXtyZXR1cm4gQS5lYWNoKHRoaXMsZSl9LG1hcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soQS5tYXAodGhpcywoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5jYWxsKHQsbix0KX0pKSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXZlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhBLmdyZXAodGhpcywoZnVuY3Rpb24oZSx0KXtyZXR1cm4odCsxKSUyfSkpKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKEEuZ3JlcCh0aGlzLChmdW5jdGlvbihlLHQpe3JldHVybiB0JTJ9KSkpfSxlcTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmxlbmd0aCxuPStlKyhlPDA/dDowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobj49MCYmbjx0P1t0aGlzW25dXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDpsLHNvcnQ6YS5zb3J0LHNwbGljZTphLnNwbGljZX0sQS5leHRlbmQ9QS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixpLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSx1PWFyZ3VtZW50cy5sZW5ndGgsYz0hMTtmb3IoImJvb2xlYW4iPT09dHlwZW9mIGEmJihjPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PT10eXBlb2YgYXx8ZyhhKXx8KGE9e30pLHM9PT11JiYoYT10aGlzLHMtLSk7czx1O3MrKylpZihudWxsIT0oZT1hcmd1bWVudHNbc10pKWZvcih0IGluIGUpcj1lW3RdLCJfX3Byb3RvX18iIT09dCYmYSE9PXImJihjJiZyJiYoQS5pc1BsYWluT2JqZWN0KHIpfHwoaT1BcnJheS5pc0FycmF5KHIpKSk/KG49YVt0XSxvPWkmJiFBcnJheS5pc0FycmF5KG4pP1tdOml8fEEuaXNQbGFpbk9iamVjdChuKT9uOnt9LGk9ITEsYVt0XT1BLmV4dGVuZChjLG8scikpOnZvaWQgMCE9PXImJihhW3RdPXIpKTtyZXR1cm4gYX0sQS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKEMrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoZSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4hKCFlfHwiW29iamVjdCBPYmplY3RdIiE9PXAuY2FsbChlKSkmJih0PXMoZSksIXR8fChuPWguY2FsbCh0LCJjb25zdHJ1Y3RvciIpJiZ0LmNvbnN0cnVjdG9yLCJmdW5jdGlvbiI9PT10eXBlb2YgbiYmdi5jYWxsKG4pPT09bSkpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGUpe3ZhciB0O2Zvcih0IGluIGUpcmV0dXJuITE7cmV0dXJuITB9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oZSx0LG4pe3goZSx7bm9uY2U6dCYmdC5ub25jZX0sbil9LGVhY2g6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTA7aWYoUyhlKSl7Zm9yKG49ZS5sZW5ndGg7cjxuO3IrKylpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWt9ZWxzZSBmb3IociBpbiBlKWlmKCExPT09dC5jYWxsKGVbcl0scixlW3JdKSlicmVhaztyZXR1cm4gZX0sbWFrZUFycmF5OmZ1bmN0aW9uKGUsdCl7dmFyIG49dHx8W107cmV0dXJuIG51bGwhPWUmJihTKE9iamVjdChlKSk/QS5tZXJnZShuLCJzdHJpbmciPT09dHlwZW9mIGU/W2VdOmUpOmwuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTpmLmNhbGwodCxlLG4pfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIsaT1bXSxvPTAsYT1lLmxlbmd0aCxzPSFuO288YTtvKyspcj0hdChlW29dLG8pLHIhPT1zJiZpLnB1c2goZVtvXSk7cmV0dXJuIGl9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihTKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspaT10KGVbb10sbyxuKSxudWxsIT1pJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKWk9dChlW29dLG8sbiksbnVsbCE9aSYmYS5wdXNoKGkpO3JldHVybiBjKGEpfSxndWlkOjEsc3VwcG9ydDp5fSksImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJihBLmZuW1N5bWJvbC5pdGVyYXRvcl09YVtTeW1ib2wuaXRlcmF0b3JdKSxBLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLChmdW5jdGlvbihlLHQpe2RbIltvYmplY3QgIit0KyJdIl09dC50b0xvd2VyQ2FzZSgpfSkpO3ZhciBFPQovKiEKICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMy42CiAqIGh0dHBzOi8vc2l6emxlanMuY29tLwogKgogKiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQogKiBodHRwczovL2pzLmZvdW5kYXRpb24vCiAqCiAqIERhdGU6IDIwMjEtMDItMTYKICovCmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLG8sYSxzLHUsYyxsLGYsZCxwLGgsdixtLHksZyx3LGI9InNpenpsZSIrMSpuZXcgRGF0ZSxfPWUuZG9jdW1lbnQseD0wLGs9MCxDPXVlKCksQT11ZSgpLFM9dWUoKSxFPXVlKCksVD1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGY9ITApLDB9LE89e30uaGFzT3duUHJvcGVydHksQj1bXSxEPUIucG9wLGo9Qi5wdXNoLE49Qi5wdXNoLCQ9Qi5zbGljZSxSPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxMPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsUD0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTT0iKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iK1ArIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIsST0iXFxbIitQKyIqKCIrTSsiKSg/OiIrUCsiKihbKl4kfCF+XT89KSIrUCsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK00rIikpfCkiK1ArIipcXF0iLEg9IjooIitNKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitJKyIpKil8LiopXFwpfCkiLHo9bmV3IFJlZ0V4cChQKyIrIiwiZyIpLEY9bmV3IFJlZ0V4cCgiXiIrUCsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitQKyIrJCIsImciKSxVPW5ldyBSZWdFeHAoIl4iK1ArIiosIitQKyIqIikscT1uZXcgUmVnRXhwKCJeIitQKyIqKFs+K35dfCIrUCsiKSIrUCsiKiIpLFc9bmV3IFJlZ0V4cChQKyJ8PiIpLFk9bmV3IFJlZ0V4cChIKSxWPW5ldyBSZWdFeHAoIl4iK00rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK00rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK0kpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitIKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK1ArIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK1ArIiooPzooWystXXwpIitQKyIqKFxcZCspfCkpIitQKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitMKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrUCsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitQKyIqKCg/Oi1cXGQpP1xcZCopIitQKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxHPS9IVE1MJC9pLEs9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxKPS9eaFxkJC9pLFE9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxlZT0vWyt+XS8sdGU9bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK1ArIj98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8i77+9IjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe2QoKX0sYWU9YmUoKGZ1bmN0aW9uKGUpe3JldHVybiEwPT09ZS5kaXNhYmxlZCYmImZpZWxkc2V0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKX0pLHtkaXI6InBhcmVudE5vZGUiLG5leHQ6ImxlZ2VuZCJ9KTt0cnl7Ti5hcHBseShCPSQuY2FsbChfLmNoaWxkTm9kZXMpLF8uY2hpbGROb2RlcyksQltfLmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChFZSl7Tj17YXBwbHk6Qi5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtqLmFwcGx5KGUsJC5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UoZSx0LHIsaSl7dmFyIG8scyxjLGwsZixoLHksZz10JiZ0Lm93bmVyRG9jdW1lbnQsXz10P3Qubm9kZVR5cGU6OTtpZihyPXJ8fFtdLCJzdHJpbmciIT09dHlwZW9mIGV8fCFlfHwxIT09XyYmOSE9PV8mJjExIT09XylyZXR1cm4gcjtpZighaSYmKGQodCksdD10fHxwLHYpKXtpZigxMSE9PV8mJihmPVouZXhlYyhlKSkpaWYobz1mWzFdKXtpZig5PT09Xyl7aWYoIShjPXQuZ2V0RWxlbWVudEJ5SWQobykpKXJldHVybiByO2lmKGMuaWQ9PT1vKXJldHVybiByLnB1c2goYykscn1lbHNlIGlmKGcmJihjPWcuZ2V0RWxlbWVudEJ5SWQobykpJiZ3KHQsYykmJmMuaWQ9PT1vKXJldHVybiByLnB1c2goYykscn1lbHNle2lmKGZbMl0pcmV0dXJuIE4uYXBwbHkocix0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpKSxyO2lmKChvPWZbM10pJiZuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gTi5hcHBseShyLHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShvKSkscn1pZihuLnFzYSYmIUVbZSsiICJdJiYoIW18fCFtLnRlc3QoZSkpJiYoMSE9PV98fCJvYmplY3QiIT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKSl7aWYoeT1lLGc9dCwxPT09XyYmKFcudGVzdChlKXx8cS50ZXN0KGUpKSl7Zz1lZS50ZXN0KGUpJiZ5ZSh0LnBhcmVudE5vZGUpfHx0LGc9PT10JiZuLnNjb3BlfHwoKGw9dC5nZXRBdHRyaWJ1dGUoImlkIikpP2w9bC5yZXBsYWNlKHJlLGllKTp0LnNldEF0dHJpYnV0ZSgiaWQiLGw9YikpLGg9YShlKSxzPWgubGVuZ3RoO3doaWxlKHMtLSloW3NdPShsPyIjIitsOiI6c2NvcGUiKSsiICIrd2UoaFtzXSk7eT1oLmpvaW4oIiwiKX10cnl7cmV0dXJuIE4uYXBwbHkocixnLnF1ZXJ5U2VsZWN0b3JBbGwoeSkpLHJ9Y2F0Y2goeCl7RShlLCEwKX1maW5hbGx5e2w9PT1iJiZ0LnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiB1KGUucmVwbGFjZShGLCIkMSIpLHQscixpKX1mdW5jdGlvbiB1ZSgpe3ZhciBlPVtdO2Z1bmN0aW9uIHQobixpKXtyZXR1cm4gZS5wdXNoKG4rIiAiKT5yLmNhY2hlTGVuZ3RoJiZkZWxldGUgdFtlLnNoaWZ0KCldLHRbbisiICJdPWl9cmV0dXJuIHR9ZnVuY3Rpb24gY2UoZSl7cmV0dXJuIGVbYl09ITAsZX1mdW5jdGlvbiBsZShlKXt2YXIgdD1wLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhZSh0KX1jYXRjaChFZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7dmFyIG49ZS5zcGxpdCgifCIpLGk9bi5sZW5ndGg7d2hpbGUoaS0tKXIuYXR0ckhhbmRsZVtuW2ldXT10fWZ1bmN0aW9uIGRlKGUsdCl7dmFyIG49dCYmZSxyPW4mJjE9PT1lLm5vZGVUeXBlJiYxPT09dC5ub2RlVHlwZSYmZS5zb3VyY2VJbmRleC10LnNvdXJjZUluZGV4O2lmKHIpcmV0dXJuIHI7aWYobil3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBwZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1uJiZ0LnR5cGU9PT1lfX1mdW5jdGlvbiBoZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybigiaW5wdXQiPT09bnx8ImJ1dHRvbiI9PT1uKSYmdC50eXBlPT09ZX19ZnVuY3Rpb24gdmUoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiJmb3JtImluIHQ/dC5wYXJlbnROb2RlJiYhMT09PXQuZGlzYWJsZWQ/ImxhYmVsImluIHQ/ImxhYmVsImluIHQucGFyZW50Tm9kZT90LnBhcmVudE5vZGUuZGlzYWJsZWQ9PT1lOnQuZGlzYWJsZWQ9PT1lOnQuaXNEaXNhYmxlZD09PWV8fHQuaXNEaXNhYmxlZCE9PSFlJiZhZSh0KT09PWU6dC5kaXNhYmxlZD09PWU6ImxhYmVsImluIHQmJnQuZGlzYWJsZWQ9PT1lfX1mdW5jdGlvbiBtZShlKXtyZXR1cm4gY2UoKGZ1bmN0aW9uKHQpe3JldHVybiB0PSt0LGNlKChmdW5jdGlvbihuLHIpe3ZhciBpLG89ZShbXSxuLmxlbmd0aCx0KSxhPW8ubGVuZ3RoO3doaWxlKGEtLSluW2k9b1thXV0mJihuW2ldPSEocltpXT1uW2ldKSl9KSl9KSl9ZnVuY3Rpb24geWUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmV9Zm9yKHQgaW4gbj1zZS5zdXBwb3J0PXt9LG89c2UuaXNYTUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5uYW1lc3BhY2VVUkksbj1lJiYoZS5vd25lckRvY3VtZW50fHxlKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIUcudGVzdCh0fHxuJiZuLm5vZGVOYW1lfHwiSFRNTCIpfSxkPXNlLnNldERvY3VtZW50PWZ1bmN0aW9uKGUpe3ZhciB0LGksYT1lP2Uub3duZXJEb2N1bWVudHx8ZTpfO3JldHVybiBhIT1wJiY5PT09YS5ub2RlVHlwZSYmYS5kb2N1bWVudEVsZW1lbnQ/KHA9YSxoPXAuZG9jdW1lbnRFbGVtZW50LHY9IW8ocCksXyE9cCYmKGk9cC5kZWZhdWx0VmlldykmJmkudG9wIT09aSYmKGkuYWRkRXZlbnRMaXN0ZW5lcj9pLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOmkuYXR0YWNoRXZlbnQmJmkuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLG4uc2NvcGU9bGUoKGZ1bmN0aW9uKGUpe3JldHVybiBoLmFwcGVuZENoaWxkKGUpLmFwcGVuZENoaWxkKHAuY3JlYXRlRWxlbWVudCgiZGl2IikpLCJ1bmRlZmluZWQiIT09dHlwZW9mIGUucXVlcnlTZWxlY3RvckFsbCYmIWUucXVlcnlTZWxlY3RvckFsbCgiOnNjb3BlIGZpZWxkc2V0IGRpdiIpLmxlbmd0aH0pKSxuLmF0dHJpYnV0ZXM9bGUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsYXNzTmFtZT0iaSIsIWUuZ2V0QXR0cmlidXRlKCJjbGFzc05hbWUiKX0pKSxuLmdldEVsZW1lbnRzQnlUYWdOYW1lPWxlKChmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChwLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pKSxuLmdldEVsZW1lbnRzQnlDbGFzc05hbWU9US50ZXN0KHAuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSksbi5nZXRCeUlkPWxlKChmdW5jdGlvbihlKXtyZXR1cm4gaC5hcHBlbmRDaGlsZChlKS5pZD1iLCFwLmdldEVsZW1lbnRzQnlOYW1lfHwhcC5nZXRFbGVtZW50c0J5TmFtZShiKS5sZW5ndGh9KSksbi5nZXRCeUlkPyhyLmZpbHRlclsiSUQiXT1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0sci5maW5kWyJJRCJdPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgdC5nZXRFbGVtZW50QnlJZCYmdil7dmFyIG49dC5nZXRFbGVtZW50QnlJZChlKTtyZXR1cm4gbj9bbl06W119fSk6KHIuZmlsdGVyWyJJRCJdPWZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSh0ZSxuZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPSJ1bmRlZmluZWQiIT09dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBuJiZuLnZhbHVlPT09dH19LHIuZmluZFsiSUQiXT1mdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJnYpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksbiYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYobj1vLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksbiYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLHIuZmluZFsiVEFHIl09bi5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWU/dC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTpuLnFzYT90LnF1ZXJ5U2VsZWN0b3JBbGwoZSk6dm9pZCAwfTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT0wLG89dC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKTtpZigiKiI9PT1lKXt3aGlsZShuPW9baSsrXSkxPT09bi5ub2RlVHlwZSYmci5wdXNoKG4pO3JldHVybiByfXJldHVybiBvfSxyLmZpbmRbIkNMQVNTIl09bi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmdilyZXR1cm4gdC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGUpfSx5PVtdLG09W10sKG4ucXNhPVEudGVzdChwLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGxlKChmdW5jdGlvbihlKXt2YXIgdDtoLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrYisiJz48L2E+PHNlbGVjdCBpZD0nIitiKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJm0ucHVzaCgiWypeJF09IitQKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fG0ucHVzaCgiXFxbIitQKyIqKD86dmFsdWV8IitMKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrYisiLV0iKS5sZW5ndGh8fG0ucHVzaCgifj0iKSx0PXAuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSx0LnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fG0ucHVzaCgiXFxbIitQKyIqbmFtZSIrUCsiKj0iK1ArIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fG0ucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitiKyIrKiIpLmxlbmd0aHx8bS5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiXFxcZiIpLG0ucHVzaCgiW1xcclxcblxcZl0iKX0pKSxsZSgoZnVuY3Rpb24oZSl7ZS5pbm5lckhUTUw9IjxhIGhyZWY9JycgZGlzYWJsZWQ9J2Rpc2FibGVkJz48L2E+PHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PiI7dmFyIHQ9cC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO3Quc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksZS5hcHBlbmRDaGlsZCh0KS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmbS5wdXNoKCJuYW1lIitQKyIqWypeJHwhfl0/PSIpLDIhPT1lLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RoJiZtLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksaC5hcHBlbmRDaGlsZChlKS5kaXNhYmxlZD0hMCwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZGlzYWJsZWQiKS5sZW5ndGgmJm0ucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxtLnB1c2goIiwuKjoiKX0pKSksKG4ubWF0Y2hlc1NlbGVjdG9yPVEudGVzdChnPWgubWF0Y2hlc3x8aC53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGgubW96TWF0Y2hlc1NlbGVjdG9yfHxoLm9NYXRjaGVzU2VsZWN0b3J8fGgubXNNYXRjaGVzU2VsZWN0b3IpKSYmbGUoKGZ1bmN0aW9uKGUpe24uZGlzY29ubmVjdGVkTWF0Y2g9Zy5jYWxsKGUsIioiKSxnLmNhbGwoZSwiW3MhPScnXTp4IikseS5wdXNoKCIhPSIsSCl9KSksbT1tLmxlbmd0aCYmbmV3IFJlZ0V4cChtLmpvaW4oInwiKSkseT15Lmxlbmd0aCYmbmV3IFJlZ0V4cCh5LmpvaW4oInwiKSksdD1RLnRlc3QoaC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdz10fHxRLnRlc3QoaC5jb250YWlucyk/ZnVuY3Rpb24oZSx0KXt2YXIgbj05PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLHI9dCYmdC5wYXJlbnROb2RlO3JldHVybiBlPT09cnx8ISghcnx8MSE9PXIubm9kZVR5cGV8fCEobi5jb250YWlucz9uLmNvbnRhaW5zKHIpOmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24ocikpKX06ZnVuY3Rpb24oZSx0KXtpZih0KXdoaWxlKHQ9dC5wYXJlbnROb2RlKWlmKHQ9PT1lKXJldHVybiEwO3JldHVybiExfSxUPXQ/ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gZj0hMCwwO3ZhciByPSFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSF0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiByfHwocj0oZS5vd25lckRvY3VtZW50fHxlKT09KHQub3duZXJEb2N1bWVudHx8dCk/ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KToxLDEmcnx8IW4uc29ydERldGFjaGVkJiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGUpPT09cj9lPT1wfHxlLm93bmVyRG9jdW1lbnQ9PV8mJncoXyxlKT8tMTp0PT1wfHx0Lm93bmVyRG9jdW1lbnQ9PV8mJncoXyx0KT8xOmw/UihsLGUpLVIobCx0KTowOjQmcj8tMToxKX06ZnVuY3Rpb24oZSx0KXtpZihlPT09dClyZXR1cm4gZj0hMCwwO3ZhciBuLHI9MCxpPWUucGFyZW50Tm9kZSxvPXQucGFyZW50Tm9kZSxhPVtlXSxzPVt0XTtpZighaXx8IW8pcmV0dXJuIGU9PXA/LTE6dD09cD8xOmk/LTE6bz8xOmw/UihsLGUpLVIobCx0KTowO2lmKGk9PT1vKXJldHVybiBkZShlLHQpO249ZTt3aGlsZShuPW4ucGFyZW50Tm9kZSlhLnVuc2hpZnQobik7bj10O3doaWxlKG49bi5wYXJlbnROb2RlKXMudW5zaGlmdChuKTt3aGlsZShhW3JdPT09c1tyXSlyKys7cmV0dXJuIHI/ZGUoYVtyXSxzW3JdKTphW3JdPT1fPy0xOnNbcl09PV8/MTowfSxwKTpwfSxzZS5tYXRjaGVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHNlKGUsbnVsbCxudWxsLHQpfSxzZS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oZSx0KXtpZihkKGUpLG4ubWF0Y2hlc1NlbGVjdG9yJiZ2JiYhRVt0KyIgIl0mJigheXx8IXkudGVzdCh0KSkmJighbXx8IW0udGVzdCh0KSkpdHJ5e3ZhciByPWcuY2FsbChlLHQpO2lmKHJ8fG4uZGlzY29ubmVjdGVkTWF0Y2h8fGUuZG9jdW1lbnQmJjExIT09ZS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gcn1jYXRjaChFZSl7RSh0LCEwKX1yZXR1cm4gc2UodCxwLG51bGwsW2VdKS5sZW5ndGg+MH0sc2UuY29udGFpbnM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oZS5vd25lckRvY3VtZW50fHxlKSE9cCYmZChlKSx3KGUsdCl9LHNlLmF0dHI9ZnVuY3Rpb24oZSx0KXsoZS5vd25lckRvY3VtZW50fHxlKSE9cCYmZChlKTt2YXIgaT1yLmF0dHJIYW5kbGVbdC50b0xvd2VyQ2FzZSgpXSxvPWkmJk8uY2FsbChyLmF0dHJIYW5kbGUsdC50b0xvd2VyQ2FzZSgpKT9pKGUsdCwhdik6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1vP286bi5hdHRyaWJ1dGVzfHwhdj9lLmdldEF0dHJpYnV0ZSh0KToobz1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZvLnNwZWNpZmllZD9vLnZhbHVlOm51bGx9LHNlLmVzY2FwZT1mdW5jdGlvbihlKXtyZXR1cm4oZSsiIikucmVwbGFjZShyZSxpZSl9LHNlLmVycm9yPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIitlKX0sc2UudW5pcXVlU29ydD1mdW5jdGlvbihlKXt2YXIgdCxyPVtdLGk9MCxvPTA7aWYoZj0hbi5kZXRlY3REdXBsaWNhdGVzLGw9IW4uc29ydFN0YWJsZSYmZS5zbGljZSgwKSxlLnNvcnQoVCksZil7d2hpbGUodD1lW28rK10pdD09PWVbb10mJihpPXIucHVzaChvKSk7d2hpbGUoaS0tKWUuc3BsaWNlKHJbaV0sMSl9cmV0dXJuIGw9bnVsbCxlfSxpPXNlLmdldFRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj0iIixyPTAsbz1lLm5vZGVUeXBlO2lmKG8pe2lmKDE9PT1vfHw5PT09b3x8MTE9PT1vKXtpZigic3RyaW5nIj09PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1pKGUpfWVsc2UgaWYoMz09PW98fDQ9PT1vKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPWkodCk7cmV0dXJuIG59LHI9c2Uuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86Y2UsbWF0Y2g6WCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS5yZXBsYWNlKHRlLG5lKSxlWzNdPShlWzNdfHxlWzRdfHxlWzVdfHwiIikucmVwbGFjZSh0ZSxuZSksIn49Ij09PWVbMl0mJihlWzNdPSIgIitlWzNdKyIgIiksZS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihlKXtyZXR1cm4gZVsxXT1lWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1lWzFdLnNsaWNlKDAsMyk/KGVbM118fHNlLmVycm9yKGVbMF0pLGVbNF09KyhlWzRdP2VbNV0rKGVbNl18fDEpOjIqKCJldmVuIj09PWVbM118fCJvZGQiPT09ZVszXSkpLGVbNV09KyhlWzddK2VbOF18fCJvZGQiPT09ZVszXSkpOmVbM10mJnNlLmVycm9yKGVbMF0pLGV9LFBTRVVETzpmdW5jdGlvbihlKXt2YXIgdCxuPSFlWzZdJiZlWzJdO3JldHVybiBYWyJDSElMRCJdLnRlc3QoZVswXSk/bnVsbDooZVszXT9lWzJdPWVbNF18fGVbNV18fCIiOm4mJlkudGVzdChuKSYmKHQ9YShuLCEwKSkmJih0PW4uaW5kZXhPZigiKSIsbi5sZW5ndGgtdCktbi5sZW5ndGgpJiYoZVswXT1lWzBdLnNsaWNlKDAsdCksZVsyXT1uLnNsaWNlKDAsdCkpLGUuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09ZT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09dH19LENMQVNTOmZ1bmN0aW9uKGUpe3ZhciB0PUNbZSsiICJdO3JldHVybiB0fHwodD1uZXcgUmVnRXhwKCIoXnwiK1ArIikiK2UrIigiK1ArInwkKSIpKSYmQyhlLChmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT09dHlwZW9mIGUuY2xhc3NOYW1lJiZlLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KSl9LEFUVFI6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyKXt2YXIgaT1zZS5hdHRyKHIsZSk7cmV0dXJuIG51bGw9PWk/IiE9Ij09PXQ6IXR8fChpKz0iIiwiPSI9PT10P2k9PT1uOiIhPSI9PT10P2khPT1uOiJePSI9PT10P24mJjA9PT1pLmluZGV4T2Yobik6Iio9Ij09PXQ/biYmaS5pbmRleE9mKG4pPi0xOiIkPSI9PT10P24mJmkuc2xpY2UoLW4ubGVuZ3RoKT09PW46In49Ij09PXQ/KCIgIitpLnJlcGxhY2UoeiwiICIpKyIgIikuaW5kZXhPZihuKT4tMToifD0iPT09dCYmKGk9PT1ufHxpLnNsaWNlKDAsbi5sZW5ndGgrMSk9PT1uKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbz0ibnRoIiE9PWUuc2xpY2UoMCwzKSxhPSJsYXN0IiE9PWUuc2xpY2UoLTQpLHM9Im9mLXR5cGUiPT09dDtyZXR1cm4gMT09PXImJjA9PT1pP2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbih0LG4sdSl7dmFyIGMsbCxmLGQscCxoLHY9byE9PWE/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixtPXQucGFyZW50Tm9kZSx5PXMmJnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxnPSF1JiYhcyx3PSExO2lmKG0pe2lmKG8pe3doaWxlKHYpe2Q9dDt3aGlsZShkPWRbdl0paWYocz9kLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT15OjE9PT1kLm5vZGVUeXBlKXJldHVybiExO2g9dj0ib25seSI9PT1lJiYhaCYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihoPVthP20uZmlyc3RDaGlsZDptLmxhc3RDaGlsZF0sYSYmZyl7ZD1tLGY9ZFtiXXx8KGRbYl09e30pLGw9ZltkLnVuaXF1ZUlEXXx8KGZbZC51bmlxdWVJRF09e30pLGM9bFtlXXx8W10scD1jWzBdPT09eCYmY1sxXSx3PXAmJmNbMl0sZD1wJiZtLmNoaWxkTm9kZXNbcF07d2hpbGUoZD0rK3AmJmQmJmRbdl18fCh3PXA9MCl8fGgucG9wKCkpaWYoMT09PWQubm9kZVR5cGUmJisrdyYmZD09PXQpe2xbZV09W3gscCx3XTticmVha319ZWxzZSBpZihnJiYoZD10LGY9ZFtiXXx8KGRbYl09e30pLGw9ZltkLnVuaXF1ZUlEXXx8KGZbZC51bmlxdWVJRF09e30pLGM9bFtlXXx8W10scD1jWzBdPT09eCYmY1sxXSx3PXApLCExPT09dyl3aGlsZShkPSsrcCYmZCYmZFt2XXx8KHc9cD0wKXx8aC5wb3AoKSlpZigocz9kLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT15OjE9PT1kLm5vZGVUeXBlKSYmKyt3JiYoZyYmKGY9ZFtiXXx8KGRbYl09e30pLGw9ZltkLnVuaXF1ZUlEXXx8KGZbZC51bmlxdWVJRF09e30pLGxbZV09W3gsd10pLGQ9PT10KSlicmVhaztyZXR1cm4gdy09aSx3PT09cnx8dyVyPT09MCYmdy9yPj0wfX19LFBTRVVETzpmdW5jdGlvbihlLHQpe3ZhciBuLGk9ci5wc2V1ZG9zW2VdfHxyLnNldEZpbHRlcnNbZS50b0xvd2VyQ2FzZSgpXXx8c2UuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIitlKTtyZXR1cm4gaVtiXT9pKHQpOmkubGVuZ3RoPjE/KG49W2UsZSwiIix0XSxyLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoZS50b0xvd2VyQ2FzZSgpKT9jZSgoZnVuY3Rpb24oZSxuKXt2YXIgcixvPWkoZSx0KSxhPW8ubGVuZ3RoO3doaWxlKGEtLSlyPVIoZSxvW2FdKSxlW3JdPSEobltyXT1vW2FdKX0pKTpmdW5jdGlvbihlKXtyZXR1cm4gaShlLDAsbil9KTppfX0scHNldWRvczp7bm90OmNlKChmdW5jdGlvbihlKXt2YXIgdD1bXSxuPVtdLHI9cyhlLnJlcGxhY2UoRiwiJDEiKSk7cmV0dXJuIHJbYl0/Y2UoKGZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBvLGE9cihlLG51bGwsaSxbXSkscz1lLmxlbmd0aDt3aGlsZShzLS0pKG89YVtzXSkmJihlW3NdPSEodFtzXT1vKSl9KSk6ZnVuY3Rpb24oZSxpLG8pe3JldHVybiB0WzBdPWUscih0LG51bGwsbyxuKSx0WzBdPW51bGwsIW4ucG9wKCl9fSkpLGhhczpjZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBzZShlLHQpLmxlbmd0aD4wfX0pKSxjb250YWluczpjZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGU9ZS5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbih0KXtyZXR1cm4odC50ZXh0Q29udGVudHx8aSh0KSkuaW5kZXhPZihlKT4tMX19KSksbGFuZzpjZSgoZnVuY3Rpb24oZSl7cmV0dXJuIFYudGVzdChlfHwiIil8fHNlLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2UpLGU9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKHQpe3ZhciBuO2Rve2lmKG49dj90Lmxhbmc6dC5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fHQuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJuIG49bi50b0xvd2VyQ2FzZSgpLG49PT1lfHwwPT09bi5pbmRleE9mKGUrIi0iKX13aGlsZSgodD10LnBhcmVudE5vZGUpJiYxPT09dC5ub2RlVHlwZSk7cmV0dXJuITF9fSkpLHRhcmdldDpmdW5jdGlvbih0KXt2YXIgbj1lLmxvY2F0aW9uJiZlLmxvY2F0aW9uLmhhc2g7cmV0dXJuIG4mJm4uc2xpY2UoMSk9PT10LmlkfSxyb290OmZ1bmN0aW9uKGUpe3JldHVybiBlPT09aH0sZm9jdXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1wLmFjdGl2ZUVsZW1lbnQmJighcC5oYXNGb2N1c3x8cC5oYXNGb2N1cygpKSYmISEoZS50eXBlfHxlLmhyZWZ8fH5lLnRhYkluZGV4KX0sZW5hYmxlZDp2ZSghMSksZGlzYWJsZWQ6dmUoITApLGNoZWNrZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10JiYhIWUuY2hlY2tlZHx8Im9wdGlvbiI9PT10JiYhIWUuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGUpe3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCEwPT09ZS5zZWxlY3RlZH0sZW1wdHk6ZnVuY3Rpb24oZSl7Zm9yKGU9ZS5maXJzdENoaWxkO2U7ZT1lLm5leHRTaWJsaW5nKWlmKGUubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGUpe3JldHVybiFyLnBzZXVkb3NbImVtcHR5Il0oZSl9LGhlYWRlcjpmdW5jdGlvbihlKXtyZXR1cm4gSi50ZXN0KGUubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihlKXtyZXR1cm4gSy50ZXN0KGUubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10JiYiYnV0dG9uIj09PWUudHlwZXx8ImJ1dHRvbiI9PT10fSx0ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWUudHlwZSYmKG51bGw9PSh0PWUuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT10LnRvTG93ZXJDYXNlKCkpfSxmaXJzdDptZSgoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSksbGFzdDptZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm5bdC0xXX0pKSxlcTptZSgoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSkpLGV2ZW46bWUoKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjx0O24rPTIpZS5wdXNoKG4pO3JldHVybiBlfSkpLG9kZDptZSgoZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MTtuPHQ7bis9MillLnB1c2gobik7cmV0dXJuIGV9KSksbHQ6bWUoKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDpuPnQ/dDpuOy0tcj49MDspZS5wdXNoKHIpO3JldHVybiBlfSkpLGd0Om1lKChmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPW48MD9uK3Q6bjsrK3I8dDspZS5wdXNoKHIpO3JldHVybiBlfSkpfX0sci5wc2V1ZG9zWyJudGgiXT1yLnBzZXVkb3NbImVxIl0se3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KXIucHNldWRvc1t0XT1wZSh0KTtmb3IodCBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KXIucHNldWRvc1t0XT1oZSh0KTtmdW5jdGlvbiBnZSgpe31mdW5jdGlvbiB3ZShlKXtmb3IodmFyIHQ9MCxuPWUubGVuZ3RoLHI9IiI7dDxuO3QrKylyKz1lW3RdLnZhbHVlO3JldHVybiByfWZ1bmN0aW9uIGJlKGUsdCxuKXt2YXIgcj10LmRpcixpPXQubmV4dCxvPWl8fHIsYT1uJiYicGFyZW50Tm9kZSI9PT1vLHM9aysrO3JldHVybiB0LmZpcnN0P2Z1bmN0aW9uKHQsbixpKXt3aGlsZSh0PXRbcl0paWYoMT09PXQubm9kZVR5cGV8fGEpcmV0dXJuIGUodCxuLGkpO3JldHVybiExfTpmdW5jdGlvbih0LG4sdSl7dmFyIGMsbCxmLGQ9W3gsc107aWYodSl7d2hpbGUodD10W3JdKWlmKCgxPT09dC5ub2RlVHlwZXx8YSkmJmUodCxuLHUpKXJldHVybiEwfWVsc2Ugd2hpbGUodD10W3JdKWlmKDE9PT10Lm5vZGVUeXBlfHxhKWlmKGY9dFtiXXx8KHRbYl09e30pLGw9Zlt0LnVuaXF1ZUlEXXx8KGZbdC51bmlxdWVJRF09e30pLGkmJmk9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpdD10W3JdfHx0O2Vsc2V7aWYoKGM9bFtvXSkmJmNbMF09PT14JiZjWzFdPT09cylyZXR1cm4gZFsyXT1jWzJdO2lmKGxbb109ZCxkWzJdPWUodCxuLHUpKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiBfZShlKXtyZXR1cm4gZS5sZW5ndGg+MT9mdW5jdGlvbih0LG4scil7dmFyIGk9ZS5sZW5ndGg7d2hpbGUoaS0tKWlmKCFlW2ldKHQsbixyKSlyZXR1cm4hMTtyZXR1cm4hMH06ZVswXX1mdW5jdGlvbiB4ZShlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn1mdW5jdGlvbiBrZShlLHQsbixyLGkpe2Zvcih2YXIgbyxhPVtdLHM9MCx1PWUubGVuZ3RoLGM9bnVsbCE9dDtzPHU7cysrKShvPWVbc10pJiYobiYmIW4obyxyLGkpfHwoYS5wdXNoKG8pLGMmJnQucHVzaChzKSkpO3JldHVybiBhfWZ1bmN0aW9uIENlKGUsdCxuLHIsaSxvKXtyZXR1cm4gciYmIXJbYl0mJihyPUNlKHIpKSxpJiYhaVtiXSYmKGk9Q2UoaSxvKSksY2UoKGZ1bmN0aW9uKG8sYSxzLHUpe3ZhciBjLGwsZixkPVtdLHA9W10saD1hLmxlbmd0aCx2PW98fHhlKHR8fCIqIixzLm5vZGVUeXBlP1tzXTpzLFtdKSxtPSFlfHwhbyYmdD92OmtlKHYsZCxlLHMsdSkseT1uP2l8fChvP2U6aHx8cik/W106YTptO2lmKG4mJm4obSx5LHMsdSkscil7Yz1rZSh5LHApLHIoYyxbXSxzLHUpLGw9Yy5sZW5ndGg7d2hpbGUobC0tKShmPWNbbF0pJiYoeVtwW2xdXT0hKG1bcFtsXV09ZikpfWlmKG8pe2lmKGl8fGUpe2lmKGkpe2M9W10sbD15Lmxlbmd0aDt3aGlsZShsLS0pKGY9eVtsXSkmJmMucHVzaChtW2xdPWYpO2kobnVsbCx5PVtdLGMsdSl9bD15Lmxlbmd0aDt3aGlsZShsLS0pKGY9eVtsXSkmJihjPWk/UihvLGYpOmRbbF0pPi0xJiYob1tjXT0hKGFbY109ZikpfX1lbHNlIHk9a2UoeT09PWE/eS5zcGxpY2UoaCx5Lmxlbmd0aCk6eSksaT9pKG51bGwsYSx5LHUpOk4uYXBwbHkoYSx5KX0pKX1mdW5jdGlvbiBBZShlKXtmb3IodmFyIHQsbixpLG89ZS5sZW5ndGgsYT1yLnJlbGF0aXZlW2VbMF0udHlwZV0scz1hfHxyLnJlbGF0aXZlWyIgIl0sdT1hPzE6MCxsPWJlKChmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KSxzLCEwKSxmPWJlKChmdW5jdGlvbihlKXtyZXR1cm4gUih0LGUpPi0xfSkscywhMCksZD1bZnVuY3Rpb24oZSxuLHIpe3ZhciBpPSFhJiYocnx8biE9PWMpfHwoKHQ9bikubm9kZVR5cGU/bChlLG4scik6ZihlLG4scikpO3JldHVybiB0PW51bGwsaX1dO3U8bzt1KyspaWYobj1yLnJlbGF0aXZlW2VbdV0udHlwZV0pZD1bYmUoX2UoZCksbildO2Vsc2V7aWYobj1yLmZpbHRlcltlW3VdLnR5cGVdLmFwcGx5KG51bGwsZVt1XS5tYXRjaGVzKSxuW2JdKXtmb3IoaT0rK3U7aTxvO2krKylpZihyLnJlbGF0aXZlW2VbaV0udHlwZV0pYnJlYWs7cmV0dXJuIENlKHU+MSYmX2UoZCksdT4xJiZ3ZShlLnNsaWNlKDAsdS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWVbdS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKEYsIiQxIiksbix1PGkmJkFlKGUuc2xpY2UodSxpKSksaTxvJiZBZShlPWUuc2xpY2UoaSkpLGk8byYmd2UoZSkpfWQucHVzaChuKX1yZXR1cm4gX2UoZCl9ZnVuY3Rpb24gU2UoZSx0KXt2YXIgbj10Lmxlbmd0aD4wLGk9ZS5sZW5ndGg+MCxvPWZ1bmN0aW9uKG8sYSxzLHUsbCl7dmFyIGYsaCxtLHk9MCxnPSIwIix3PW8mJltdLGI9W10sXz1jLGs9b3x8aSYmci5maW5kWyJUQUciXSgiKiIsbCksQz14Kz1udWxsPT1fPzE6TWF0aC5yYW5kb20oKXx8LjEsQT1rLmxlbmd0aDtmb3IobCYmKGM9YT09cHx8YXx8bCk7ZyE9PUEmJm51bGwhPShmPWtbZ10pO2crKyl7aWYoaSYmZil7aD0wLGF8fGYub3duZXJEb2N1bWVudD09cHx8KGQoZikscz0hdik7d2hpbGUobT1lW2grK10paWYobShmLGF8fHAscykpe3UucHVzaChmKTticmVha31sJiYoeD1DKX1uJiYoKGY9IW0mJmYpJiZ5LS0sbyYmdy5wdXNoKGYpKX1pZih5Kz1nLG4mJmchPT15KXtoPTA7d2hpbGUobT10W2grK10pbSh3LGIsYSxzKTtpZihvKXtpZih5PjApd2hpbGUoZy0tKXdbZ118fGJbZ118fChiW2ddPUQuY2FsbCh1KSk7Yj1rZShiKX1OLmFwcGx5KHUsYiksbCYmIW8mJmIubGVuZ3RoPjAmJnkrdC5sZW5ndGg+MSYmc2UudW5pcXVlU29ydCh1KX1yZXR1cm4gbCYmKHg9QyxjPV8pLHd9O3JldHVybiBuP2NlKG8pOm99cmV0dXJuIGdlLnByb3RvdHlwZT1yLmZpbHRlcnM9ci5wc2V1ZG9zLHIuc2V0RmlsdGVycz1uZXcgZ2UsYT1zZS50b2tlbml6ZT1mdW5jdGlvbihlLHQpe3ZhciBuLGksbyxhLHMsdSxjLGw9QVtlKyIgIl07aWYobClyZXR1cm4gdD8wOmwuc2xpY2UoMCk7cz1lLHU9W10sYz1yLnByZUZpbHRlcjt3aGlsZShzKXtmb3IoYSBpbiBuJiYhKGk9VS5leGVjKHMpKXx8KGkmJihzPXMuc2xpY2UoaVswXS5sZW5ndGgpfHxzKSx1LnB1c2gobz1bXSkpLG49ITEsKGk9cS5leGVjKHMpKSYmKG49aS5zaGlmdCgpLG8ucHVzaCh7dmFsdWU6bix0eXBlOmlbMF0ucmVwbGFjZShGLCIgIil9KSxzPXMuc2xpY2Uobi5sZW5ndGgpKSxyLmZpbHRlcikhKGk9WFthXS5leGVjKHMpKXx8Y1thXSYmIShpPWNbYV0oaSkpfHwobj1pLnNoaWZ0KCksby5wdXNoKHt2YWx1ZTpuLHR5cGU6YSxtYXRjaGVzOml9KSxzPXMuc2xpY2Uobi5sZW5ndGgpKTtpZighbilicmVha31yZXR1cm4gdD9zLmxlbmd0aDpzP3NlLmVycm9yKGUpOkEoZSx1KS5zbGljZSgwKX0scz1zZS5jb21waWxlPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPVtdLG89U1tlKyIgIl07aWYoIW8pe3R8fCh0PWEoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKW89QWUodFtuXSksb1tiXT9yLnB1c2gobyk6aS5wdXNoKG8pO289UyhlLFNlKGkscikpLG8uc2VsZWN0b3I9ZX1yZXR1cm4gb30sdT1zZS5zZWxlY3Q9ZnVuY3Rpb24oZSx0LG4saSl7dmFyIG8sdSxjLGwsZixkPSJmdW5jdGlvbiI9PT10eXBlb2YgZSYmZSxwPSFpJiZhKGU9ZC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09cC5sZW5ndGgpe2lmKHU9cFswXT1wWzBdLnNsaWNlKDApLHUubGVuZ3RoPjImJiJJRCI9PT0oYz11WzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmdiYmci5yZWxhdGl2ZVt1WzFdLnR5cGVdKXtpZih0PShyLmZpbmRbIklEIl0oYy5tYXRjaGVzWzBdLnJlcGxhY2UodGUsbmUpLHQpfHxbXSlbMF0sIXQpcmV0dXJuIG47ZCYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2UodS5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9bz1YWyJuZWVkc0NvbnRleHQiXS50ZXN0KGUpPzA6dS5sZW5ndGg7d2hpbGUoby0tKXtpZihjPXVbb10sci5yZWxhdGl2ZVtsPWMudHlwZV0pYnJlYWs7aWYoKGY9ci5maW5kW2xdKSYmKGk9ZihjLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksZWUudGVzdCh1WzBdLnR5cGUpJiZ5ZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKHUuc3BsaWNlKG8sMSksZT1pLmxlbmd0aCYmd2UodSksIWUpcmV0dXJuIE4uYXBwbHkobixpKSxuO2JyZWFrfX19cmV0dXJuKGR8fHMoZSxwKSkoaSx0LCF2LG4sIXR8fGVlLnRlc3QoZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpLG59LG4uc29ydFN0YWJsZT1iLnNwbGl0KCIiKS5zb3J0KFQpLmpvaW4oIiIpPT09YixuLmRldGVjdER1cGxpY2F0ZXM9ISFmLGQoKSxuLnNvcnREZXRhY2hlZD1sZSgoZnVuY3Rpb24oZSl7cmV0dXJuIDEmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihwLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0IikpfSkpLGxlKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pKXx8ZmUoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLChmdW5jdGlvbihlLHQsbil7aWYoIW4pcmV0dXJuIGUuZ2V0QXR0cmlidXRlKHQsInR5cGUiPT09dC50b0xvd2VyQ2FzZSgpPzE6Mil9KSksbi5hdHRyaWJ1dGVzJiZsZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5uZXJIVE1MPSI8aW5wdXQvPiIsZS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KSl8fGZlKCJ2YWx1ZSIsKGZ1bmN0aW9uKGUsdCxuKXtpZighbiYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSksbGUoKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pKXx8ZmUoTCwoZnVuY3Rpb24oZSx0LG4pe3ZhciByO2lmKCFuKXJldHVybiEwPT09ZVt0XT90LnRvTG93ZXJDYXNlKCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSkpLHNlfShuKTtBLmZpbmQ9RSxBLmV4cHI9RS5zZWxlY3RvcnMsQS5leHByWyI6Il09QS5leHByLnBzZXVkb3MsQS51bmlxdWVTb3J0PUEudW5pcXVlPUUudW5pcXVlU29ydCxBLnRleHQ9RS5nZXRUZXh0LEEuaXNYTUxEb2M9RS5pc1hNTCxBLmNvbnRhaW5zPUUuY29udGFpbnMsQS5lc2NhcGVTZWxlY3Rvcj1FLmVzY2FwZTt2YXIgVD1mdW5jdGlvbihlLHQsbil7dmFyIHI9W10saT12b2lkIDAhPT1uO3doaWxlKChlPWVbdF0pJiY5IT09ZS5ub2RlVHlwZSlpZigxPT09ZS5ub2RlVHlwZSl7aWYoaSYmQShlKS5pcyhuKSlicmVhaztyLnB1c2goZSl9cmV0dXJuIHJ9LE89ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W107ZTtlPWUubmV4dFNpYmxpbmcpMT09PWUubm9kZVR5cGUmJmUhPT10JiZuLnB1c2goZSk7cmV0dXJuIG59LEI9QS5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBEKGUsdCl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXQudG9Mb3dlckNhc2UoKX12YXIgaj0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlvbiBOKGUsdCxuKXtyZXR1cm4gZyh0KT9BLmdyZXAoZSwoZnVuY3Rpb24oZSxyKXtyZXR1cm4hIXQuY2FsbChlLHIsZSkhPT1ufSkpOnQubm9kZVR5cGU/QS5ncmVwKGUsKGZ1bmN0aW9uKGUpe3JldHVybiBlPT09dCE9PW59KSk6InN0cmluZyIhPT10eXBlb2YgdD9BLmdyZXAoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIGYuY2FsbCh0LGUpPi0xIT09bn0pKTpBLmZpbHRlcih0LGUsbil9QS5maWx0ZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRbMF07cmV0dXJuIG4mJihlPSI6bm90KCIrZSsiKSIpLDE9PT10Lmxlbmd0aCYmMT09PXIubm9kZVR5cGU/QS5maW5kLm1hdGNoZXNTZWxlY3RvcihyLGUpP1tyXTpbXTpBLmZpbmQubWF0Y2hlcyhlLEEuZ3JlcCh0LChmdW5jdGlvbihlKXtyZXR1cm4gMT09PWUubm9kZVR5cGV9KSkpfSxBLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT09dHlwZW9mIGUpcmV0dXJuIHRoaXMucHVzaFN0YWNrKEEoZSkuZmlsdGVyKChmdW5jdGlvbigpe2Zvcih0PTA7dDxyO3QrKylpZihBLmNvbnRhaW5zKGlbdF0sdGhpcykpcmV0dXJuITB9KSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKylBLmZpbmQoZSxpW3RdLG4pO3JldHVybiByPjE/QS51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soTih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soTih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhTih0aGlzLCJzdHJpbmciPT09dHlwZW9mIGUmJkIudGVzdChlKT9BKGUpOmV8fFtdLCExKS5sZW5ndGh9fSk7dmFyICQsUj0vXig/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSspKSQvLEw9QS5mbi5pbml0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpO2lmKCFlKXJldHVybiB0aGlzO2lmKG49bnx8JCwic3RyaW5nIj09PXR5cGVvZiBlKXtpZihyPSI8Ij09PWVbMF0mJiI+Ij09PWVbZS5sZW5ndGgtMV0mJmUubGVuZ3RoPj0zP1tudWxsLGUsbnVsbF06Ui5leGVjKGUpLCFyfHwhclsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKHJbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIEE/dFswXTp0LEEubWVyZ2UodGhpcyxBLnBhcnNlSFRNTChyWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OmIsITApKSxqLnRlc3QoclsxXSkmJkEuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KWcodGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4gaT1iLmdldEVsZW1lbnRCeUlkKHJbMl0pLGkmJih0aGlzWzBdPWksdGhpcy5sZW5ndGg9MSksdGhpc31yZXR1cm4gZS5ub2RlVHlwZT8odGhpc1swXT1lLHRoaXMubGVuZ3RoPTEsdGhpcyk6ZyhlKT92b2lkIDAhPT1uLnJlYWR5P24ucmVhZHkoZSk6ZShBKTpBLm1ha2VBcnJheShlLHRoaXMpfTtMLnByb3RvdHlwZT1BLmZuLCQ9QShiKTt2YXIgUD0vXig/OnBhcmVudHN8cHJldig/OlVudGlsfEFsbCkpLyxNPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O2Z1bmN0aW9uIEkoZSx0KXt3aGlsZSgoZT1lW3RdKSYmMSE9PWUubm9kZVR5cGUpO3JldHVybiBlfUEuZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oZSl7dmFyIHQ9QShlLHRoaXMpLG49dC5sZW5ndGg7cmV0dXJuIHRoaXMuZmlsdGVyKChmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoQS5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSkpfSxjbG9zZXN0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wLGk9dGhpcy5sZW5ndGgsbz1bXSxhPSJzdHJpbmciIT09dHlwZW9mIGUmJkEoZSk7aWYoIUIudGVzdChlKSlmb3IoO3I8aTtyKyspZm9yKG49dGhpc1tyXTtuJiZuIT09dDtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT9hLmluZGV4KG4pPi0xOjE9PT1uLm5vZGVUeXBlJiZBLmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sZSkpKXtvLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8ubGVuZ3RoPjE/QS51bmlxdWVTb3J0KG8pOm8pfSxpbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gZT8ic3RyaW5nIj09PXR5cGVvZiBlP2YuY2FsbChBKGUpLHRoaXNbMF0pOmYuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soQS51bmlxdWVTb3J0KEEubWVyZ2UodGhpcy5nZXQoKSxBKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLEEuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gVChlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFQoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIEkoZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gSShlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gVChlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBUKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBUKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVChlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gTygoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuY29udGVudERvY3VtZW50JiZzKGUuY29udGVudERvY3VtZW50KT9lLmNvbnRlbnREb2N1bWVudDooRChlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLEEubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSwoZnVuY3Rpb24oZSx0KXtBLmZuW2VdPWZ1bmN0aW9uKG4scil7dmFyIGk9QS5tYXAodGhpcyx0LG4pO3JldHVybiJVbnRpbCIhPT1lLnNsaWNlKC01KSYmKHI9biksciYmInN0cmluZyI9PT10eXBlb2YgciYmKGk9QS5maWx0ZXIocixpKSksdGhpcy5sZW5ndGg+MSYmKE1bZV18fEEudW5pcXVlU29ydChpKSxQLnRlc3QoZSkmJmkucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhpKX19KSk7dmFyIEg9L1teXHgyMFx0XHJcblxmXSsvZztmdW5jdGlvbiB6KGUpe3ZhciB0PXt9O3JldHVybiBBLmVhY2goZS5tYXRjaChIKXx8W10sKGZ1bmN0aW9uKGUsbil7dFtuXT0hMH0pKSx0fWZ1bmN0aW9uIEYoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gVShlKXt0aHJvdyBlfWZ1bmN0aW9uIHEoZSx0LG4scil7dmFyIGk7dHJ5e2UmJmcoaT1lLnByb21pc2UpP2kuY2FsbChlKS5kb25lKHQpLmZhaWwobik6ZSYmZyhpPWUudGhlbik/aS5jYWxsKGUsdCxuKTp0LmFwcGx5KHZvaWQgMCxbZV0uc2xpY2UocikpfWNhdGNoKGUpe24uYXBwbHkodm9pZCAwLFtlXSl9fUEuQ2FsbGJhY2tzPWZ1bmN0aW9uKGUpe2U9InN0cmluZyI9PT10eXBlb2YgZT96KGUpOkEuZXh0ZW5kKHt9LGUpO3ZhciB0LG4scixpLG89W10sYT1bXSxzPS0xLHU9ZnVuY3Rpb24oKXtmb3IoaT1pfHxlLm9uY2Uscj10PSEwO2EubGVuZ3RoO3M9LTEpe249YS5zaGlmdCgpO3doaWxlKCsrczxvLmxlbmd0aCkhMT09PW9bc10uYXBwbHkoblswXSxuWzFdKSYmZS5zdG9wT25GYWxzZSYmKHM9by5sZW5ndGgsbj0hMSl9ZS5tZW1vcnl8fChuPSExKSx0PSExLGkmJihvPW4/W106IiIpfSxjPXthZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gbyYmKG4mJiF0JiYocz1vLmxlbmd0aC0xLGEucHVzaChuKSksZnVuY3Rpb24gdChuKXtBLmVhY2gobiwoZnVuY3Rpb24obixyKXtnKHIpP2UudW5pcXVlJiZjLmhhcyhyKXx8by5wdXNoKHIpOnImJnIubGVuZ3RoJiYic3RyaW5nIiE9PWsocikmJnQocil9KSl9KGFyZ3VtZW50cyksbiYmIXQmJnUoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIEEuZWFjaChhcmd1bWVudHMsKGZ1bmN0aW9uKGUsdCl7dmFyIG47d2hpbGUoKG49QS5pbkFycmF5KHQsbyxuKSk+LTEpby5zcGxpY2UobiwxKSxuPD1zJiZzLS19KSksdGhpc30saGFzOmZ1bmN0aW9uKGUpe3JldHVybiBlP0EuaW5BcnJheShlLG8pPi0xOm8ubGVuZ3RoPjB9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIG8mJihvPVtdKSx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGk9YT1bXSxvPW49IiIsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hb30sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPWE9W10sbnx8dHx8KG89bj0iIiksdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuISFpfSxmaXJlV2l0aDpmdW5jdGlvbihlLG4pe3JldHVybiBpfHwobj1ufHxbXSxuPVtlLG4uc2xpY2U/bi5zbGljZSgpOm5dLGEucHVzaChuKSx0fHx1KCkpLHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtyZXR1cm4gYy5maXJlV2l0aCh0aGlzLGFyZ3VtZW50cyksdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXJ9fTtyZXR1cm4gY30sQS5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGUpe3ZhciB0PVtbIm5vdGlmeSIsInByb2dyZXNzIixBLkNhbGxiYWNrcygibWVtb3J5IiksQS5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLEEuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLEEuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixBLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxBLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxyPSJwZW5kaW5nIixpPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiByfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gby5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LGNhdGNoOmZ1bmN0aW9uKGUpe3JldHVybiBpLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cztyZXR1cm4gQS5EZWZlcnJlZCgoZnVuY3Rpb24obil7QS5lYWNoKHQsKGZ1bmN0aW9uKHQscil7dmFyIGk9ZyhlW3JbNF1dKSYmZVtyWzRdXTtvW3JbMV1dKChmdW5jdGlvbigpe3ZhciBlPWkmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJmcoZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhuLm5vdGlmeSkuZG9uZShuLnJlc29sdmUpLmZhaWwobi5yZWplY3QpOm5bclswXSsiV2l0aCJdKHRoaXMsaT9bZV06YXJndW1lbnRzKX0pKX0pKSxlPW51bGx9KSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKGUscixpKXt2YXIgbz0wO2Z1bmN0aW9uIGEoZSx0LHIsaSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM9dGhpcyx1PWFyZ3VtZW50cyxjPWZ1bmN0aW9uKCl7dmFyIG4sYztpZighKGU8bykpe2lmKG49ci5hcHBseShzLHUpLG49PT10LnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTtjPW4mJigib2JqZWN0Ij09PXR5cGVvZiBufHwiZnVuY3Rpb24iPT09dHlwZW9mIG4pJiZuLnRoZW4sZyhjKT9pP2MuY2FsbChuLGEobyx0LEYsaSksYShvLHQsVSxpKSk6KG8rKyxjLmNhbGwobixhKG8sdCxGLGkpLGEobyx0LFUsaSksYShvLHQsRix0Lm5vdGlmeVdpdGgpKSk6KHIhPT1GJiYocz12b2lkIDAsdT1bbl0pLChpfHx0LnJlc29sdmVXaXRoKShzLHUpKX19LGw9aT9jOmZ1bmN0aW9uKCl7dHJ5e2MoKX1jYXRjaChuKXtBLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJkEuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhuLGwuc3RhY2tUcmFjZSksZSsxPj1vJiYociE9PVUmJihzPXZvaWQgMCx1PVtuXSksdC5yZWplY3RXaXRoKHMsdSkpfX07ZT9sKCk6KEEuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYobC5zdGFja1RyYWNlPUEuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLG4uc2V0VGltZW91dChsKSl9fXJldHVybiBBLkRlZmVycmVkKChmdW5jdGlvbihuKXt0WzBdWzNdLmFkZChhKDAsbixnKGkpP2k6RixuLm5vdGlmeVdpdGgpKSx0WzFdWzNdLmFkZChhKDAsbixnKGUpP2U6RikpLHRbMl1bM10uYWRkKGEoMCxuLGcocik/cjpVKSl9KSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lP0EuZXh0ZW5kKGUsaSk6aX19LG89e307cmV0dXJuIEEuZWFjaCh0LChmdW5jdGlvbihlLG4pe3ZhciBhPW5bMl0scz1uWzVdO2lbblsxXV09YS5hZGQscyYmYS5hZGQoKGZ1bmN0aW9uKCl7cj1zfSksdFszLWVdWzJdLmRpc2FibGUsdFszLWVdWzNdLmRpc2FibGUsdFswXVsyXS5sb2NrLHRbMF1bM10ubG9jayksYS5hZGQoblszXS5maXJlKSxvW25bMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIG9bblswXSsiV2l0aCJdKHRoaXM9PT1vP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sb1tuWzBdKyJXaXRoIl09YS5maXJlV2l0aH0pKSxpLnByb21pc2UobyksZSYmZS5jYWxsKG8sbyksb30sd2hlbjpmdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49dCxyPUFycmF5KG4pLGk9dS5jYWxsKGFyZ3VtZW50cyksbz1BLkRlZmVycmVkKCksYT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24obil7cltlXT10aGlzLGlbZV09YXJndW1lbnRzLmxlbmd0aD4xP3UuY2FsbChhcmd1bWVudHMpOm4sLS10fHxvLnJlc29sdmVXaXRoKHIsaSl9fTtpZih0PD0xJiYocShlLG8uZG9uZShhKG4pKS5yZXNvbHZlLG8ucmVqZWN0LCF0KSwicGVuZGluZyI9PT1vLnN0YXRlKCl8fGcoaVtuXSYmaVtuXS50aGVuKSkpcmV0dXJuIG8udGhlbigpO3doaWxlKG4tLSlxKGlbbl0sYShuKSxvLnJlamVjdCk7cmV0dXJuIG8ucHJvbWlzZSgpfX0pO3ZhciBXPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO0EuRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLHQpe24uY29uc29sZSYmbi5jb25zb2xlLndhcm4mJmUmJlcudGVzdChlLm5hbWUpJiZuLmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayx0KX0sQS5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihlKXtuLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhyb3cgZX0pKX07dmFyIFk9QS5EZWZlcnJlZCgpO2Z1bmN0aW9uIFYoKXtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFYpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsViksQS5yZWFkeSgpfUEuZm4ucmVhZHk9ZnVuY3Rpb24oZSl7cmV0dXJuIFkudGhlbihlKS5jYXRjaCgoZnVuY3Rpb24oZSl7QS5yZWFkeUV4Y2VwdGlvbihlKX0pKSx0aGlzfSxBLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tQS5yZWFkeVdhaXQ6QS5pc1JlYWR5KXx8KEEuaXNSZWFkeT0hMCwhMCE9PWUmJi0tQS5yZWFkeVdhaXQ+MHx8WS5yZXNvbHZlV2l0aChiLFtBXSkpfX0pLEEucmVhZHkudGhlbj1ZLnRoZW4sImNvbXBsZXRlIj09PWIucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09Yi5yZWFkeVN0YXRlJiYhYi5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/bi5zZXRUaW1lb3V0KEEucmVhZHkpOihiLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFYpLG4uYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsVikpO3ZhciBYPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxjPW51bGw9PW47aWYoIm9iamVjdCI9PT1rKG4pKWZvcihzIGluIGk9ITAsbilYKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLGcocil8fChhPSEwKSxjJiYoYT8odC5jYWxsKGUsciksdD1udWxsKTooYz10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBjLmNhbGwoQShlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpjP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxHPS9eLW1zLS8sSz0vLShbYS16XSkvZztmdW5jdGlvbiBKKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBRKGUpe3JldHVybiBlLnJlcGxhY2UoRywibXMtIikucmVwbGFjZShLLEopfXZhciBaPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gZWUoKXt0aGlzLmV4cGFuZG89QS5leHBhbmRvK2VlLnVpZCsrfWVlLnVpZD0xLGVlLnByb3RvdHlwZT17Y2FjaGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZVt0aGlzLmV4cGFuZG9dO3JldHVybiB0fHwodD17fSxaKGUpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dDpPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0aGlzLmV4cGFuZG8se3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwfSkpKSx0fSxzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9dGhpcy5jYWNoZShlKTtpZigic3RyaW5nIj09PXR5cGVvZiB0KWlbUSh0KV09bjtlbHNlIGZvcihyIGluIHQpaVtRKHIpXT10W3JdO3JldHVybiBpfSxnZXQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLmNhY2hlKGUpOmVbdGhpcy5leHBhbmRvXSYmZVt0aGlzLmV4cGFuZG9dW1EodCldfSxhY2Nlc3M6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT10fHx0JiYic3RyaW5nIj09PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe0FycmF5LmlzQXJyYXkodCk/dD10Lm1hcChRKToodD1RKHQpLHQ9dCBpbiByP1t0XTp0Lm1hdGNoKEgpfHxbXSksbj10Lmxlbmd0aDt3aGlsZShuLS0pZGVsZXRlIHJbdFtuXV19KHZvaWQgMD09PXR8fEEuaXNFbXB0eU9iamVjdChyKSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT12b2lkIDA6ZGVsZXRlIGVbdGhpcy5leHBhbmRvXSl9fSxoYXNEYXRhOmZ1bmN0aW9uKGUpe3ZhciB0PWVbdGhpcy5leHBhbmRvXTtyZXR1cm4gdm9pZCAwIT09dCYmIUEuaXNFbXB0eU9iamVjdCh0KX19O3ZhciB0ZT1uZXcgZWUsbmU9bmV3IGVlLHJlPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8saWU9L1tBLVpdL2c7ZnVuY3Rpb24gb2UoZSl7cmV0dXJuInRydWUiPT09ZXx8ImZhbHNlIiE9PWUmJigibnVsbCI9PT1lP251bGw6ZT09PStlKyIiPytlOnJlLnRlc3QoZSk/SlNPTi5wYXJzZShlKTplKX1mdW5jdGlvbiBhZShlLHQsbil7dmFyIHI7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShpZSwiLSQmIikudG9Mb3dlckNhc2UoKSxuPWUuZ2V0QXR0cmlidXRlKHIpLCJzdHJpbmciPT09dHlwZW9mIG4pe3RyeXtuPW9lKG4pfWNhdGNoKGkpe31uZS5zZXQoZSx0LG4pfWVsc2Ugbj12b2lkIDA7cmV0dXJuIG59QS5leHRlbmQoe2hhc0RhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIG5lLmhhc0RhdGEoZSl8fHRlLmhhc0RhdGEoZSl9LGRhdGE6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuZS5hY2Nlc3MoZSx0LG4pfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUsdCl7bmUucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGUuYWNjZXNzKGUsdCxuKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oZSx0KXt0ZS5yZW1vdmUoZSx0KX19KSxBLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvPXRoaXNbMF0sYT1vJiZvLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09ZSl7aWYodGhpcy5sZW5ndGgmJihpPW5lLmdldChvKSwxPT09by5ub2RlVHlwZSYmIXRlLmdldChvLCJoYXNEYXRhQXR0cnMiKSkpe249YS5sZW5ndGg7d2hpbGUobi0tKWFbbl0mJihyPWFbbl0ubmFtZSwwPT09ci5pbmRleE9mKCJkYXRhLSIpJiYocj1RKHIuc2xpY2UoNSkpLGFlKG8scixpW3JdKSkpO3RlLnNldChvLCJoYXNEYXRhQXR0cnMiLCEwKX1yZXR1cm4gaX1yZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBlP3RoaXMuZWFjaCgoZnVuY3Rpb24oKXtuZS5zZXQodGhpcyxlKX0pKTpYKHRoaXMsKGZ1bmN0aW9uKHQpe3ZhciBuO2lmKG8mJnZvaWQgMD09PXQpcmV0dXJuIG49bmUuZ2V0KG8sZSksdm9pZCAwIT09bj9uOihuPWFlKG8sZSksdm9pZCAwIT09bj9uOnZvaWQgMCk7dGhpcy5lYWNoKChmdW5jdGlvbigpe25lLnNldCh0aGlzLGUsdCl9KSl9KSxudWxsLHQsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7bmUucmVtb3ZlKHRoaXMsZSl9KSl9fSksQS5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVldWUiLHI9dGUuZ2V0KGUsdCksbiYmKCFyfHxBcnJheS5pc0FycmF5KG4pP3I9dGUuYWNjZXNzKGUsdCxBLm1ha2VBcnJheShuKSk6ci5wdXNoKG4pKSxyfHxbXX0sZGVxdWV1ZTpmdW5jdGlvbihlLHQpe3Q9dHx8ImZ4Ijt2YXIgbj1BLnF1ZXVlKGUsdCkscj1uLmxlbmd0aCxpPW4uc2hpZnQoKSxvPUEuX3F1ZXVlSG9va3MoZSx0KSxhPWZ1bmN0aW9uKCl7QS5kZXF1ZXVlKGUsdCl9OyJpbnByb2dyZXNzIj09PWkmJihpPW4uc2hpZnQoKSxyLS0pLGkmJigiZngiPT09dCYmbi51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIG8uc3RvcCxpLmNhbGwoZSxhLG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIHRlLmdldChlLG4pfHx0ZS5hY2Nlc3MoZSxuLHtlbXB0eTpBLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoKGZ1bmN0aW9uKCl7dGUucmVtb3ZlKGUsW3QrInF1ZXVlIixuXSl9KSl9KX19KSxBLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj0yO3JldHVybiJzdHJpbmciIT09dHlwZW9mIGUmJih0PWUsZT0iZngiLG4tLSksYXJndW1lbnRzLmxlbmd0aDxuP0EucXVldWUodGhpc1swXSxlKTp2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBuPUEucXVldWUodGhpcyxlLHQpO0EuX3F1ZXVlSG9va3ModGhpcyxlKSwiZngiPT09ZSYmImlucHJvZ3Jlc3MiIT09blswXSYmQS5kZXF1ZXVlKHRoaXMsZSl9KSl9LGRlcXVldWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtBLmRlcXVldWUodGhpcyxlKX0pKX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5xdWV1ZShlfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MSxpPUEuRGVmZXJyZWQoKSxvPXRoaXMsYT10aGlzLmxlbmd0aCxzPWZ1bmN0aW9uKCl7LS1yfHxpLnJlc29sdmVXaXRoKG8sW29dKX07InN0cmluZyIhPT10eXBlb2YgZSYmKHQ9ZSxlPXZvaWQgMCksZT1lfHwiZngiO3doaWxlKGEtLSluPXRlLmdldChvW2FdLGUrInF1ZXVlSG9va3MiKSxuJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgc2U9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsdWU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK3NlKyIpKFthLXolXSopJCIsImkiKSxjZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLGxlPWIuZG9jdW1lbnRFbGVtZW50LGZlPWZ1bmN0aW9uKGUpe3JldHVybiBBLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sZGU9e2NvbXBvc2VkOiEwfTtsZS5nZXRSb290Tm9kZSYmKGZlPWZ1bmN0aW9uKGUpe3JldHVybiBBLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShkZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgcGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT10fHxlLCJub25lIj09PWUuc3R5bGUuZGlzcGxheXx8IiI9PT1lLnN0eWxlLmRpc3BsYXkmJmZlKGUpJiYibm9uZSI9PT1BLmNzcyhlLCJkaXNwbGF5Iil9O2Z1bmN0aW9uIGhlKGUsdCxuLHIpe3ZhciBpLG8sYT0yMCxzPXI/ZnVuY3Rpb24oKXtyZXR1cm4gci5jdXIoKX06ZnVuY3Rpb24oKXtyZXR1cm4gQS5jc3MoZSx0LCIiKX0sdT1zKCksYz1uJiZuWzNdfHwoQS5jc3NOdW1iZXJbdF0/IiI6InB4IiksbD1lLm5vZGVUeXBlJiYoQS5jc3NOdW1iZXJbdF18fCJweCIhPT1jJiYrdSkmJnVlLmV4ZWMoQS5jc3MoZSx0KSk7aWYobCYmbFszXSE9PWMpe3UvPTIsYz1jfHxsWzNdLGw9K3V8fDE7d2hpbGUoYS0tKUEuc3R5bGUoZSx0LGwrYyksKDEtbykqKDEtKG89cygpL3V8fC41KSk8PTAmJihhPTApLGwvPW87bCo9MixBLnN0eWxlKGUsdCxsK2MpLG49bnx8W119cmV0dXJuIG4mJihsPStsfHwrdXx8MCxpPW5bMV0/bCsoblsxXSsxKSpuWzJdOituWzJdLHImJihyLnVuaXQ9YyxyLnN0YXJ0PWwsci5lbmQ9aSkpLGl9dmFyIHZlPXt9O2Z1bmN0aW9uIG1lKGUpe3ZhciB0LG49ZS5vd25lckRvY3VtZW50LHI9ZS5ub2RlTmFtZSxpPXZlW3JdO3JldHVybiBpfHwodD1uLmJvZHkuYXBwZW5kQ2hpbGQobi5jcmVhdGVFbGVtZW50KHIpKSxpPUEuY3NzKHQsImRpc3BsYXkiKSx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksIm5vbmUiPT09aSYmKGk9ImJsb2NrIiksdmVbcl09aSxpKX1mdW5jdGlvbiB5ZShlLHQpe2Zvcih2YXIgbixyLGk9W10sbz0wLGE9ZS5sZW5ndGg7bzxhO28rKylyPWVbb10sci5zdHlsZSYmKG49ci5zdHlsZS5kaXNwbGF5LHQ/KCJub25lIj09PW4mJihpW29dPXRlLmdldChyLCJkaXNwbGF5Iil8fG51bGwsaVtvXXx8KHIuc3R5bGUuZGlzcGxheT0iIikpLCIiPT09ci5zdHlsZS5kaXNwbGF5JiZwZShyKSYmKGlbb109bWUocikpKToibm9uZSIhPT1uJiYoaVtvXT0ibm9uZSIsdGUuc2V0KHIsImRpc3BsYXkiLG4pKSk7Zm9yKG89MDtvPGE7bysrKW51bGwhPWlbb10mJihlW29dLnN0eWxlLmRpc3BsYXk9aVtvXSk7cmV0dXJuIGV9QS5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4geWUodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4geWUodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihlKXtyZXR1cm4iYm9vbGVhbiI9PT10eXBlb2YgZT9lP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaCgoZnVuY3Rpb24oKXtwZSh0aGlzKT9BKHRoaXMpLnNob3coKTpBKHRoaXMpLmhpZGUoKX0pKX19KTt2YXIgZ2U9L14oPzpjaGVja2JveHxyYWRpbykkL2ksd2U9LzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSopL2ksYmU9L14kfF5tb2R1bGUkfFwvKD86amF2YXxlY21hKXNjcmlwdC9pOyhmdW5jdGlvbigpe3ZhciBlPWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLHQ9ZS5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxuPWIuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtuLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksbi5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksbi5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksdC5hcHBlbmRDaGlsZChuKSx5LmNoZWNrQ2xvbmU9dC5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsdC5pbm5lckhUTUw9Ijx0ZXh0YXJlYT54PC90ZXh0YXJlYT4iLHkubm9DbG9uZUNoZWNrZWQ9ISF0LmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSx0LmlubmVySFRNTD0iPG9wdGlvbj48L29wdGlvbj4iLHkub3B0aW9uPSEhdC5sYXN0Q2hpbGR9KSgpO3ZhciBfZT17dGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2Z1bmN0aW9uIHhlKGUsdCl7dmFyIG47cmV0dXJuIG49InVuZGVmaW5lZCIhPT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPT10eXBlb2YgZS5xdWVyeVNlbGVjdG9yQWxsP2UucXVlcnlTZWxlY3RvckFsbCh0fHwiKiIpOltdLHZvaWQgMD09PXR8fHQmJkQoZSx0KT9BLm1lcmdlKFtlXSxuKTpufWZ1bmN0aW9uIGtlKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKXRlLnNldChlW25dLCJnbG9iYWxFdmFsIiwhdHx8dGUuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9X2UudGJvZHk9X2UudGZvb3Q9X2UuY29sZ3JvdXA9X2UuY2FwdGlvbj1fZS50aGVhZCxfZS50aD1fZS50ZCx5Lm9wdGlvbnx8KF9lLm9wdGdyb3VwPV9lLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgQ2U9Lzx8JiM/XHcrOy87ZnVuY3Rpb24gQWUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsYyxsLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZD1bXSxwPTAsaD1lLmxlbmd0aDtwPGg7cCsrKWlmKG89ZVtwXSxvfHwwPT09bylpZigib2JqZWN0Ij09PWsobykpQS5tZXJnZShkLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYoQ2UudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KHdlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1fZVtzXXx8X2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStBLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxsPXVbMF07d2hpbGUobC0tKWE9YS5sYXN0Q2hpbGQ7QS5tZXJnZShkLGEuY2hpbGROb2RlcyksYT1mLmZpcnN0Q2hpbGQsYS50ZXh0Q29udGVudD0iIn1lbHNlIGQucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLHA9MDt3aGlsZShvPWRbcCsrXSlpZihyJiZBLmluQXJyYXkobyxyKT4tMSlpJiZpLnB1c2gobyk7ZWxzZSBpZihjPWZlKG8pLGE9eGUoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksYyYma2UoYSksbil7bD0wO3doaWxlKG89YVtsKytdKWJlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgU2U9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIEVlKCl7cmV0dXJuITB9ZnVuY3Rpb24gVGUoKXtyZXR1cm4hMX1mdW5jdGlvbiBPZShlLHQpe3JldHVybiBlPT09QmUoKT09PSgiZm9jdXMiPT09dCl9ZnVuY3Rpb24gQmUoKXt0cnl7cmV0dXJuIGIuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fWZ1bmN0aW9uIERlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT09dHlwZW9mIHQpe2ZvcihzIGluInN0cmluZyIhPT10eXBlb2YgbiYmKHI9cnx8bixuPXZvaWQgMCksdClEZShlLHMsbixyLHRbc10sbyk7cmV0dXJuIGV9aWYobnVsbD09ciYmbnVsbD09aT8oaT1uLHI9bj12b2lkIDApOm51bGw9PWkmJigic3RyaW5nIj09PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9VGU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksaT1mdW5jdGlvbihlKXtyZXR1cm4gQSgpLm9mZihlKSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD1BLmd1aWQrKykpLGUuZWFjaCgoZnVuY3Rpb24oKXtBLmV2ZW50LmFkZCh0aGlzLHQsaSxyLG4pfSkpfWZ1bmN0aW9uIGplKGUsdCxuKXtuPyh0ZS5zZXQoZSx0LCExKSxBLmV2ZW50LmFkZChlLHQse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciByLGksbz10ZS5nZXQodGhpcyx0KTtpZigxJmUuaXNUcmlnZ2VyJiZ0aGlzW3RdKXtpZihvLmxlbmd0aCkoQS5ldmVudC5zcGVjaWFsW3RdfHx7fSkuZGVsZWdhdGVUeXBlJiZlLnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYobz11LmNhbGwoYXJndW1lbnRzKSx0ZS5zZXQodGhpcyx0LG8pLHI9bih0aGlzLHQpLHRoaXNbdF0oKSxpPXRlLmdldCh0aGlzLHQpLG8hPT1pfHxyP3RlLnNldCh0aGlzLHQsITEpOmk9e30sbyE9PWkpcmV0dXJuIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksZS5wcmV2ZW50RGVmYXVsdCgpLGkmJmkudmFsdWV9ZWxzZSBvLmxlbmd0aCYmKHRlLnNldCh0aGlzLHQse3ZhbHVlOkEuZXZlbnQudHJpZ2dlcihBLmV4dGVuZChvWzBdLEEuRXZlbnQucHJvdG90eXBlKSxvLnNsaWNlKDEpLHRoaXMpfSksZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSl9fSkpOnZvaWQgMD09PXRlLmdldChlLHQpJiZBLmV2ZW50LmFkZChlLHQsRWUpfUEuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxjLGwsZixkLHAsaCx2LG09dGUuZ2V0KGUpO2lmKFooZSkpe24uaGFuZGxlciYmKG89bixuPW8uaGFuZGxlcixpPW8uc2VsZWN0b3IpLGkmJkEuZmluZC5tYXRjaGVzU2VsZWN0b3IobGUsaSksbi5ndWlkfHwobi5ndWlkPUEuZ3VpZCsrKSwodT1tLmV2ZW50cyl8fCh1PW0uZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkpLChhPW0uaGFuZGxlKXx8KGE9bS5oYW5kbGU9ZnVuY3Rpb24odCl7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgQSYmQS5ldmVudC50cmlnZ2VyZWQhPT10LnR5cGU/QS5ldmVudC5kaXNwYXRjaC5hcHBseShlLGFyZ3VtZW50cyk6dm9pZCAwfSksdD0odHx8IiIpLm1hdGNoKEgpfHxbIiJdLGM9dC5sZW5ndGg7d2hpbGUoYy0tKXM9U2UuZXhlYyh0W2NdKXx8W10scD12PXNbMV0saD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLHAmJihmPUEuZXZlbnQuc3BlY2lhbFtwXXx8e30scD0oaT9mLmRlbGVnYXRlVHlwZTpmLmJpbmRUeXBlKXx8cCxmPUEuZXZlbnQuc3BlY2lhbFtwXXx8e30sbD1BLmV4dGVuZCh7dHlwZTpwLG9yaWdUeXBlOnYsZGF0YTpyLGhhbmRsZXI6bixndWlkOm4uZ3VpZCxzZWxlY3RvcjppLG5lZWRzQ29udGV4dDppJiZBLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoaSksbmFtZXNwYWNlOmguam9pbigiLiIpfSxvKSwoZD11W3BdKXx8KGQ9dVtwXT1bXSxkLmRlbGVnYXRlQ291bnQ9MCxmLnNldHVwJiYhMSE9PWYuc2V0dXAuY2FsbChlLHIsaCxhKXx8ZS5hZGRFdmVudExpc3RlbmVyJiZlLmFkZEV2ZW50TGlzdGVuZXIocCxhKSksZi5hZGQmJihmLmFkZC5jYWxsKGUsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1uLmd1aWQpKSxpP2Quc3BsaWNlKGQuZGVsZWdhdGVDb3VudCsrLDAsbCk6ZC5wdXNoKGwpLEEuZXZlbnQuZ2xvYmFsW3BdPSEwKX19LHJlbW92ZTpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvLGEscyx1LGMsbCxmLGQscCxoLHYsbT10ZS5oYXNEYXRhKGUpJiZ0ZS5nZXQoZSk7aWYobSYmKHU9bS5ldmVudHMpKXt0PSh0fHwiIikubWF0Y2goSCl8fFsiIl0sYz10Lmxlbmd0aDt3aGlsZShjLS0paWYocz1TZS5leGVjKHRbY10pfHxbXSxwPXY9c1sxXSxoPShzWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCkscCl7Zj1BLmV2ZW50LnNwZWNpYWxbcF18fHt9LHA9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fHAsZD11W3BdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPWQubGVuZ3RoO3doaWxlKG8tLSlsPWRbb10sIWkmJnYhPT1sLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1sLmd1aWR8fHMmJiFzLnRlc3QobC5uYW1lc3BhY2UpfHxyJiZyIT09bC5zZWxlY3RvciYmKCIqKiIhPT1yfHwhbC5zZWxlY3Rvcil8fChkLnNwbGljZShvLDEpLGwuc2VsZWN0b3ImJmQuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsbCkpO2EmJiFkLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCxtLmhhbmRsZSl8fEEucmVtb3ZlRXZlbnQoZSxwLG0uaGFuZGxlKSxkZWxldGUgdVtwXSl9ZWxzZSBmb3IocCBpbiB1KUEuZXZlbnQucmVtb3ZlKGUscCt0W2NdLG4sciwhMCk7QS5pc0VtcHR5T2JqZWN0KHUpJiZ0ZS5yZW1vdmUoZSwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHM9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLHU9QS5ldmVudC5maXgoZSksYz0odGUuZ2V0KHRoaXMsImV2ZW50cyIpfHxPYmplY3QuY3JlYXRlKG51bGwpKVt1LnR5cGVdfHxbXSxsPUEuZXZlbnQuc3BlY2lhbFt1LnR5cGVdfHx7fTtmb3Ioc1swXT11LHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXNbdF09YXJndW1lbnRzW3RdO2lmKHUuZGVsZWdhdGVUYXJnZXQ9dGhpcywhbC5wcmVEaXNwYXRjaHx8ITEhPT1sLnByZURpc3BhdGNoLmNhbGwodGhpcyx1KSl7YT1BLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyx1LGMpLHQ9MDt3aGlsZSgoaT1hW3QrK10pJiYhdS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXt1LmN1cnJlbnRUYXJnZXQ9aS5lbGVtLG49MDt3aGlsZSgobz1pLmhhbmRsZXJzW24rK10pJiYhdS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKXUucm5hbWVzcGFjZSYmITEhPT1vLm5hbWVzcGFjZSYmIXUucm5hbWVzcGFjZS50ZXN0KG8ubmFtZXNwYWNlKXx8KHUuaGFuZGxlT2JqPW8sdS5kYXRhPW8uZGF0YSxyPSgoQS5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIpLmFwcGx5KGkuZWxlbSxzKSx2b2lkIDAhPT1yJiYhMT09PSh1LnJlc3VsdD1yKSYmKHUucHJldmVudERlZmF1bHQoKSx1LnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGwucG9zdERpc3BhdGNoJiZsLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsdSksdS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvLGEscz1bXSx1PXQuZGVsZWdhdGVDb3VudCxjPWUudGFyZ2V0O2lmKHUmJmMubm9kZVR5cGUmJiEoImNsaWNrIj09PWUudHlwZSYmZS5idXR0b24+PTEpKWZvcig7YyE9PXRoaXM7Yz1jLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWMubm9kZVR5cGUmJigiY2xpY2siIT09ZS50eXBlfHwhMCE9PWMuZGlzYWJsZWQpKXtmb3Iobz1bXSxhPXt9LG49MDtuPHU7bisrKXI9dFtuXSxpPXIuc2VsZWN0b3IrIiAiLHZvaWQgMD09PWFbaV0mJihhW2ldPXIubmVlZHNDb250ZXh0P0EoaSx0aGlzKS5pbmRleChjKT4tMTpBLmZpbmQoaSx0aGlzLG51bGwsW2NdKS5sZW5ndGgpLGFbaV0mJm8ucHVzaChyKTtvLmxlbmd0aCYmcy5wdXNoKHtlbGVtOmMsaGFuZGxlcnM6b30pfXJldHVybiBjPXRoaXMsdTx0Lmxlbmd0aCYmcy5wdXNoKHtlbGVtOmMsaGFuZGxlcnM6dC5zbGljZSh1KX0pLHN9LGFkZFByb3A6ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5FdmVudC5wcm90b3R5cGUsZSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmcodCk/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHQodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFtlXX0sc2V0OmZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KX19KX0sZml4OmZ1bmN0aW9uKGUpe3JldHVybiBlW0EuZXhwYW5kb10/ZTpuZXcgQS5FdmVudChlKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOntzZXR1cDpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBnZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkQodCwiaW5wdXQiKSYmamUodCwiY2xpY2siLEVlKSwhMX0sdHJpZ2dlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzfHxlO3JldHVybiBnZS50ZXN0KHQudHlwZSkmJnQuY2xpY2smJkQodCwiaW5wdXQiKSYmamUodCwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7cmV0dXJuIGdlLnRlc3QodC50eXBlKSYmdC5jbGljayYmRCh0LCJpbnB1dCIpJiZ0ZS5nZXQodCwiY2xpY2siKXx8RCh0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihlKXt2b2lkIDAhPT1lLnJlc3VsdCYmZS5vcmlnaW5hbEV2ZW50JiYoZS5vcmlnaW5hbEV2ZW50LnJldHVyblZhbHVlPWUucmVzdWx0KX19fX0sQS5yZW1vdmVFdmVudD1mdW5jdGlvbihlLHQsbil7ZS5yZW1vdmVFdmVudExpc3RlbmVyJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuKX0sQS5FdmVudD1mdW5jdGlvbihlLHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEEuRXZlbnQpKXJldHVybiBuZXcgQS5FdmVudChlLHQpO2UmJmUudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWUsdGhpcy50eXBlPWUudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1lLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWUuZGVmYXVsdFByZXZlbnRlZCYmITE9PT1lLnJldHVyblZhbHVlP0VlOlRlLHRoaXMudGFyZ2V0PWUudGFyZ2V0JiYzPT09ZS50YXJnZXQubm9kZVR5cGU/ZS50YXJnZXQucGFyZW50Tm9kZTplLnRhcmdldCx0aGlzLmN1cnJlbnRUYXJnZXQ9ZS5jdXJyZW50VGFyZ2V0LHRoaXMucmVsYXRlZFRhcmdldD1lLnJlbGF0ZWRUYXJnZXQpOnRoaXMudHlwZT1lLHQmJkEuZXh0ZW5kKHRoaXMsdCksdGhpcy50aW1lU3RhbXA9ZSYmZS50aW1lU3RhbXB8fERhdGUubm93KCksdGhpc1tBLmV4cGFuZG9dPSEwfSxBLkV2ZW50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6QS5FdmVudCxpc0RlZmF1bHRQcmV2ZW50ZWQ6VGUsaXNQcm9wYWdhdGlvblN0b3BwZWQ6VGUsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6VGUsaXNTaW11bGF0ZWQ6ITEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9RWUsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUucHJldmVudERlZmF1bHQoKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9RWUsZSYmIXRoaXMuaXNTaW11bGF0ZWQmJmUuc3RvcFByb3BhZ2F0aW9uKCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPUVlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxBLmVhY2goe2FsdEtleTohMCxidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsY2hhbmdlZFRvdWNoZXM6ITAsY3RybEtleTohMCxkZXRhaWw6ITAsZXZlbnRQaGFzZTohMCxtZXRhS2V5OiEwLHBhZ2VYOiEwLHBhZ2VZOiEwLHNoaWZ0S2V5OiEwLHZpZXc6ITAsY2hhcjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxBLmV2ZW50LmFkZFByb3ApLEEuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sKGZ1bmN0aW9uKGUsdCl7QS5ldmVudC5zcGVjaWFsW2VdPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBqZSh0aGlzLGUsT2UpLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGplKHRoaXMsZSksITB9LF9kZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuITB9LGRlbGVnYXRlVHlwZTp0fX0pKSxBLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LChmdW5jdGlvbihlLHQpe0EuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOnQsYmluZFR5cGU6dCxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIG4scj10aGlzLGk9ZS5yZWxhdGVkVGFyZ2V0LG89ZS5oYW5kbGVPYmo7cmV0dXJuIGkmJihpPT09cnx8QS5jb250YWlucyhyLGkpKXx8KGUudHlwZT1vLm9yaWdUeXBlLG49by5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLnR5cGU9dCksbn19fSkpLEEuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRGUodGhpcyxlLHQsbixyKX0sb25lOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBEZSh0aGlzLGUsdCxuLHIsMSl9LG9mZjpmdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZihlJiZlLnByZXZlbnREZWZhdWx0JiZlLmhhbmRsZU9iailyZXR1cm4gcj1lLmhhbmRsZU9iaixBKGUuZGVsZWdhdGVUYXJnZXQpLm9mZihyLm5hbWVzcGFjZT9yLm9yaWdUeXBlKyIuIityLm5hbWVzcGFjZTpyLm9yaWdUeXBlLHIuc2VsZWN0b3Isci5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0fHwobj10LHQ9dm9pZCAwKSwhMT09PW4mJihuPVRlKSx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7QS5ldmVudC5yZW1vdmUodGhpcyxlLG4sdCl9KSl9fSk7dmFyIE5lPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLCRlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLFJlPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBMZShlLHQpe3JldHVybiBEKGUsInRhYmxlIikmJkQoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZBKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIFBlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gTWUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIEllKGUsdCl7dmFyIG4scixpLG8sYSxzLHU7aWYoMT09PXQubm9kZVR5cGUpe2lmKHRlLmhhc0RhdGEoZSkmJihvPXRlLmdldChlKSx1PW8uZXZlbnRzLHUpKWZvcihpIGluIHRlLnJlbW92ZSh0LCJoYW5kbGUgZXZlbnRzIiksdSlmb3Iobj0wLHI9dVtpXS5sZW5ndGg7bjxyO24rKylBLmV2ZW50LmFkZCh0LGksdVtpXVtuXSk7bmUuaGFzRGF0YShlKSYmKGE9bmUuYWNjZXNzKGUpLHM9QS5leHRlbmQoe30sYSksbmUuc2V0KHQscykpfX1mdW5jdGlvbiBIZShlLHQpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsiaW5wdXQiPT09biYmZ2UudGVzdChlLnR5cGUpP3QuY2hlY2tlZD1lLmNoZWNrZWQ6ImlucHV0IiE9PW4mJiJ0ZXh0YXJlYSIhPT1ufHwodC5kZWZhdWx0VmFsdWU9ZS5kZWZhdWx0VmFsdWUpfWZ1bmN0aW9uIHplKGUsdCxuLHIpe3Q9Yyh0KTt2YXIgaSxvLGEscyx1LGwsZj0wLGQ9ZS5sZW5ndGgscD1kLTEsaD10WzBdLHY9ZyhoKTtpZih2fHxkPjEmJiJzdHJpbmciPT09dHlwZW9mIGgmJiF5LmNoZWNrQ2xvbmUmJiRlLnRlc3QoaCkpcmV0dXJuIGUuZWFjaCgoZnVuY3Rpb24oaSl7dmFyIG89ZS5lcShpKTt2JiYodFswXT1oLmNhbGwodGhpcyxpLG8uaHRtbCgpKSksemUobyx0LG4scil9KSk7aWYoZCYmKGk9QWUodCxlWzBdLm93bmVyRG9jdW1lbnQsITEsZSxyKSxvPWkuZmlyc3RDaGlsZCwxPT09aS5jaGlsZE5vZGVzLmxlbmd0aCYmKGk9byksb3x8cikpe2ZvcihhPUEubWFwKHhlKGksInNjcmlwdCIpLFBlKSxzPWEubGVuZ3RoO2Y8ZDtmKyspdT1pLGYhPT1wJiYodT1BLmNsb25lKHUsITAsITApLHMmJkEubWVyZ2UoYSx4ZSh1LCJzY3JpcHQiKSkpLG4uY2FsbChlW2ZdLHUsZik7aWYocylmb3IobD1hW2EubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsQS5tYXAoYSxNZSksZj0wO2Y8cztmKyspdT1hW2ZdLGJlLnRlc3QodS50eXBlfHwiIikmJiF0ZS5hY2Nlc3ModSwiZ2xvYmFsRXZhbCIpJiZBLmNvbnRhaW5zKGwsdSkmJih1LnNyYyYmIm1vZHVsZSIhPT0odS50eXBlfHwiIikudG9Mb3dlckNhc2UoKT9BLl9ldmFsVXJsJiYhdS5ub01vZHVsZSYmQS5fZXZhbFVybCh1LnNyYyx7bm9uY2U6dS5ub25jZXx8dS5nZXRBdHRyaWJ1dGUoIm5vbmNlIil9LGwpOngodS50ZXh0Q29udGVudC5yZXBsYWNlKFJlLCIiKSx1LGwpKX1yZXR1cm4gZX1mdW5jdGlvbiBGZShlLHQsbil7Zm9yKHZhciByLGk9dD9BLmZpbHRlcih0LGUpOmUsbz0wO251bGwhPShyPWlbb10pO28rKylufHwxIT09ci5ub2RlVHlwZXx8QS5jbGVhbkRhdGEoeGUocikpLHIucGFyZW50Tm9kZSYmKG4mJmZlKHIpJiZrZSh4ZShyLCJzY3JpcHQiKSksci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHIpKTtyZXR1cm4gZX1BLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sY2xvbmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5jbG9uZU5vZGUoITApLHU9ZmUoZSk7aWYoIXkubm9DbG9uZUNoZWNrZWQmJigxPT09ZS5ub2RlVHlwZXx8MTE9PT1lLm5vZGVUeXBlKSYmIUEuaXNYTUxEb2MoZSkpZm9yKGE9eGUocyksbz14ZShlKSxyPTAsaT1vLmxlbmd0aDtyPGk7cisrKUhlKG9bcl0sYVtyXSk7aWYodClpZihuKWZvcihvPW98fHhlKGUpLGE9YXx8eGUocykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylJZShvW3JdLGFbcl0pO2Vsc2UgSWUoZSxzKTtyZXR1cm4gYT14ZShzLCJzY3JpcHQiKSxhLmxlbmd0aD4wJiZrZShhLCF1JiZ4ZShlLCJzY3JpcHQiKSksc30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1BLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihaKG4pKXtpZih0PW5bdGUuZXhwYW5kb10pe2lmKHQuZXZlbnRzKWZvcihyIGluIHQuZXZlbnRzKWlbcl0/QS5ldmVudC5yZW1vdmUobixyKTpBLnJlbW92ZUV2ZW50KG4scix0LmhhbmRsZSk7blt0ZS5leHBhbmRvXT12b2lkIDB9bltuZS5leHBhbmRvXSYmKG5bbmUuZXhwYW5kb109dm9pZCAwKX19fSksQS5mbi5leHRlbmQoe2RldGFjaDpmdW5jdGlvbihlKXtyZXR1cm4gRmUodGhpcyxlLCEwKX0scmVtb3ZlOmZ1bmN0aW9uKGUpe3JldHVybiBGZSh0aGlzLGUpfSx0ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiBYKHRoaXMsKGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP0EudGV4dCh0aGlzKTp0aGlzLmVtcHR5KCkuZWFjaCgoZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KSl9KSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB6ZSh0aGlzLGFyZ3VtZW50cywoZnVuY3Rpb24oZSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciB0PUxlKHRoaXMsZSk7dC5hcHBlbmRDaGlsZChlKX19KSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gemUodGhpcyxhcmd1bWVudHMsKGZ1bmN0aW9uKGUpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgdD1MZSh0aGlzLGUpO3QuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKX19KSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiB6ZSh0aGlzLGFyZ3VtZW50cywoZnVuY3Rpb24oZSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcyl9KSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHplKHRoaXMsYXJndW1lbnRzLChmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pKX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD0wO251bGwhPShlPXRoaXNbdF0pO3QrKykxPT09ZS5ub2RlVHlwZSYmKEEuY2xlYW5EYXRhKHhlKGUsITEpKSxlLnRleHRDb250ZW50PSIiKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1udWxsIT1lJiZlLHQ9bnVsbD09dD9lOnQsdGhpcy5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIEEuY2xvbmUodGhpcyxlLHQpfSkpfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiBYKHRoaXMsKGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXNbMF18fHt9LG49MCxyPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWUmJjE9PT10Lm5vZGVUeXBlKXJldHVybiB0LmlubmVySFRNTDtpZigic3RyaW5nIj09PXR5cGVvZiBlJiYhTmUudGVzdChlKSYmIV9lWyh3ZS5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7ZT1BLmh0bWxQcmVmaWx0ZXIoZSk7dHJ5e2Zvcig7bjxyO24rKyl0PXRoaXNbbl18fHt9LDE9PT10Lm5vZGVUeXBlJiYoQS5jbGVhbkRhdGEoeGUodCwhMSkpLHQuaW5uZXJIVE1MPWUpO3Q9MH1jYXRjaChpKXt9fXQmJnRoaXMuZW1wdHkoKS5hcHBlbmQoZSl9KSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIHplKHRoaXMsYXJndW1lbnRzLChmdW5jdGlvbih0KXt2YXIgbj10aGlzLnBhcmVudE5vZGU7QS5pbkFycmF5KHRoaXMsZSk8MCYmKEEuY2xlYW5EYXRhKHhlKHRoaXMpKSxuJiZuLnJlcGxhY2VDaGlsZCh0LHRoaXMpKX0pLGUpfX0pLEEuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LChmdW5jdGlvbihlLHQpe0EuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciBuLHI9W10saT1BKGUpLG89aS5sZW5ndGgtMSxhPTA7YTw9bzthKyspbj1hPT09bz90aGlzOnRoaXMuY2xvbmUoITApLEEoaVthXSlbdF0obiksbC5hcHBseShyLG4uZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhyKX19KSk7dmFyIFVlPW5ldyBSZWdFeHAoIl4oIitzZSsiKSg/IXB4KVthLXolXSskIiwiaSIpLHFlPWZ1bmN0aW9uKGUpe3ZhciB0PWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gdCYmdC5vcGVuZXJ8fCh0PW4pLHQuZ2V0Q29tcHV0ZWRTdHlsZShlKX0sV2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz17fTtmb3IoaSBpbiB0KW9baV09ZS5zdHlsZVtpXSxlLnN0eWxlW2ldPXRbaV07Zm9yKGkgaW4gcj1uLmNhbGwoZSksdCllLnN0eWxlW2ldPW9baV07cmV0dXJuIHJ9LFllPW5ldyBSZWdFeHAoY2Uuam9pbigifCIpLCJpIik7ZnVuY3Rpb24gVmUoZSx0LG4pe3ZhciByLGksbyxhLHM9ZS5zdHlsZTtyZXR1cm4gbj1ufHxxZShlKSxuJiYoYT1uLmdldFByb3BlcnR5VmFsdWUodCl8fG5bdF0sIiIhPT1hfHxmZShlKXx8KGE9QS5zdHlsZShlLHQpKSwheS5waXhlbEJveFN0eWxlcygpJiZVZS50ZXN0KGEpJiZZZS50ZXN0KHQpJiYocj1zLndpZHRoLGk9cy5taW5XaWR0aCxvPXMubWF4V2lkdGgscy5taW5XaWR0aD1zLm1heFdpZHRoPXMud2lkdGg9YSxhPW4ud2lkdGgscy53aWR0aD1yLHMubWluV2lkdGg9aSxzLm1heFdpZHRoPW8pKSx2b2lkIDAhPT1hP2ErIiI6YX1mdW5jdGlvbiBYZShlLHQpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtpZighZSgpKXJldHVybih0aGlzLmdldD10KS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7ZGVsZXRlIHRoaXMuZ2V0fX19KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2lmKGwpe2Muc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O21hcmdpbi10b3A6MXB4O3BhZGRpbmc6MDtib3JkZXI6MCIsbC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo2MCU7dG9wOjElIixsZS5hcHBlbmRDaGlsZChjKS5hcHBlbmRDaGlsZChsKTt2YXIgZT1uLmdldENvbXB1dGVkU3R5bGUobCk7cj0iMSUiIT09ZS50b3AsdT0xMj09PXQoZS5tYXJnaW5MZWZ0KSxsLnN0eWxlLnJpZ2h0PSI2MCUiLGE9MzY9PT10KGUucmlnaHQpLGk9MzY9PT10KGUud2lkdGgpLGwuc3R5bGUucG9zaXRpb249ImFic29sdXRlIixvPTEyPT09dChsLm9mZnNldFdpZHRoLzMpLGxlLnJlbW92ZUNoaWxkKGMpLGw9bnVsbH19ZnVuY3Rpb24gdChlKXtyZXR1cm4gTWF0aC5yb3VuZChwYXJzZUZsb2F0KGUpKX12YXIgcixpLG8sYSxzLHUsYz1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGw9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLnN0eWxlJiYobC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGwuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIix5LmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09bC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxBLmV4dGVuZCh5LHtib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBlKCksaX0scGl4ZWxCb3hTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGF9LHBpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHJlbGlhYmxlTWFyZ2luTGVmdDpmdW5jdGlvbigpe3JldHVybiBlKCksdX0sc2Nyb2xsYm94U2l6ZTpmdW5jdGlvbigpe3JldHVybiBlKCksb30scmVsaWFibGVUckRpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgZSx0LHIsaTtyZXR1cm4gbnVsbD09cyYmKGU9Yi5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpLHQ9Yi5jcmVhdGVFbGVtZW50KCJ0ciIpLHI9Yi5jcmVhdGVFbGVtZW50KCJkaXYiKSxlLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7Ym9yZGVyLWNvbGxhcHNlOnNlcGFyYXRlIix0LnN0eWxlLmNzc1RleHQ9ImJvcmRlcjoxcHggc29saWQiLHQuc3R5bGUuaGVpZ2h0PSIxcHgiLHIuc3R5bGUuaGVpZ2h0PSI5cHgiLHIuc3R5bGUuZGlzcGxheT0iYmxvY2siLGxlLmFwcGVuZENoaWxkKGUpLmFwcGVuZENoaWxkKHQpLmFwcGVuZENoaWxkKHIpLGk9bi5nZXRDb21wdXRlZFN0eWxlKHQpLHM9cGFyc2VJbnQoaS5oZWlnaHQsMTApK3BhcnNlSW50KGkuYm9yZGVyVG9wV2lkdGgsMTApK3BhcnNlSW50KGkuYm9yZGVyQm90dG9tV2lkdGgsMTApPT09dC5vZmZzZXRIZWlnaHQsbGUucmVtb3ZlQ2hpbGQoZSkpLHN9fSkpfSkoKTt2YXIgR2U9WyJXZWJraXQiLCJNb3oiLCJtcyJdLEtlPWIuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsSmU9e307ZnVuY3Rpb24gUWUoZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj1HZS5sZW5ndGg7d2hpbGUobi0tKWlmKGU9R2Vbbl0rdCxlIGluIEtlKXJldHVybiBlfWZ1bmN0aW9uIFplKGUpe3ZhciB0PUEuY3NzUHJvcHNbZV18fEplW2VdO3JldHVybiB0fHwoZSBpbiBLZT9lOkplW2VdPVFlKGUpfHxlKX12YXIgZXQ9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLHR0PS9eLS0vLG50PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxydD17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZnVuY3Rpb24gaXQoZSx0LG4pe3ZhciByPXVlLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIpOnR9ZnVuY3Rpb24gb3QoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0wO2lmKG49PT0ocj8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwO2Zvcig7YTw0O2ErPTIpIm1hcmdpbiI9PT1uJiYodSs9QS5jc3MoZSxuK2NlW2FdLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYodS09QS5jc3MoZSwicGFkZGluZyIrY2VbYV0sITAsaSkpLCJtYXJnaW4iIT09biYmKHUtPUEuY3NzKGUsImJvcmRlciIrY2VbYV0rIldpZHRoIiwhMCxpKSkpOih1Kz1BLmNzcyhlLCJwYWRkaW5nIitjZVthXSwhMCxpKSwicGFkZGluZyIhPT1uP3UrPUEuY3NzKGUsImJvcmRlciIrY2VbYV0rIldpZHRoIiwhMCxpKTpzKz1BLmNzcyhlLCJib3JkZXIiK2NlW2FdKyJXaWR0aCIsITAsaSkpO3JldHVybiFyJiZvPj0wJiYodSs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVsib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKV0tby11LXMtLjUpKXx8MCksdX1mdW5jdGlvbiBhdChlLHQsbil7dmFyIHI9cWUoZSksaT0heS5ib3hTaXppbmdSZWxpYWJsZSgpfHxuLG89aSYmImJvcmRlci1ib3giPT09QS5jc3MoZSwiYm94U2l6aW5nIiwhMSxyKSxhPW8scz1WZShlLHQsciksdT0ib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtpZihVZS50ZXN0KHMpKXtpZighbilyZXR1cm4gcztzPSJhdXRvIn1yZXR1cm4oIXkuYm94U2l6aW5nUmVsaWFibGUoKSYmb3x8IXkucmVsaWFibGVUckRpbWVuc2lvbnMoKSYmRChlLCJ0ciIpfHwiYXV0byI9PT1zfHwhcGFyc2VGbG9hdChzKSYmImlubGluZSI9PT1BLmNzcyhlLCJkaXNwbGF5IiwhMSxyKSkmJmUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJihvPSJib3JkZXItYm94Ij09PUEuY3NzKGUsImJveFNpemluZyIsITEsciksYT11IGluIGUsYSYmKHM9ZVt1XSkpLHM9cGFyc2VGbG9hdChzKXx8MCxzK290KGUsdCxufHwobz8iYm9yZGVyIjoiY29udGVudCIpLGEscixzKSsicHgifWZ1bmN0aW9uIHN0KGUsdCxuLHIsaSl7cmV0dXJuIG5ldyBzdC5wcm90b3R5cGUuaW5pdChlLHQsbixyLGkpfUEuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49VmUoZSwib3BhY2l0eSIpO3JldHVybiIiPT09bj8iMSI6bn19fX0sY3NzTnVtYmVyOnthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmbGV4R3JvdzohMCxmbGV4U2hyaW5rOiEwLGZvbnRXZWlnaHQ6ITAsZ3JpZEFyZWE6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TdGFydDohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1N0YXJ0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6e30sc3R5bGU6ZnVuY3Rpb24oZSx0LG4scil7aWYoZSYmMyE9PWUubm9kZVR5cGUmJjghPT1lLm5vZGVUeXBlJiZlLnN0eWxlKXt2YXIgaSxvLGEscz1RKHQpLHU9dHQudGVzdCh0KSxjPWUuc3R5bGU7aWYodXx8KHQ9WmUocykpLGE9QS5jc3NIb29rc1t0XXx8QS5jc3NIb29rc1tzXSx2b2lkIDA9PT1uKXJldHVybiBhJiYiZ2V0ImluIGEmJnZvaWQgMCE9PShpPWEuZ2V0KGUsITEscikpP2k6Y1t0XTtvPXR5cGVvZiBuLCJzdHJpbmciPT09byYmKGk9dWUuZXhlYyhuKSkmJmlbMV0mJihuPWhlKGUsdCxpKSxvPSJudW1iZXIiKSxudWxsIT1uJiZuPT09biYmKCJudW1iZXIiIT09b3x8dXx8KG4rPWkmJmlbM118fChBLmNzc051bWJlcltzXT8iIjoicHgiKSkseS5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoY1t0XT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/Yy5zZXRQcm9wZXJ0eSh0LG4pOmNbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVEodCksdT10dC50ZXN0KHQpO3JldHVybiB1fHwodD1aZShzKSksYT1BLmNzc0hvb2tzW3RdfHxBLmNzc0hvb2tzW3NdLGEmJiJnZXQiaW4gYSYmKGk9YS5nZXQoZSwhMCxuKSksdm9pZCAwPT09aSYmKGk9VmUoZSx0LHIpKSwibm9ybWFsIj09PWkmJnQgaW4gcnQmJihpPXJ0W3RdKSwiIj09PW58fG4/KG89cGFyc2VGbG9hdChpKSwhMD09PW58fGlzRmluaXRlKG8pP298fDA6aSk6aX19KSxBLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLChmdW5jdGlvbihlLHQpe0EuY3NzSG9va3NbdF09e2dldDpmdW5jdGlvbihlLG4scil7aWYobilyZXR1cm4hZXQudGVzdChBLmNzcyhlLCJkaXNwbGF5IikpfHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiZlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoP2F0KGUsdCxyKTpXZShlLG50LChmdW5jdGlvbigpe3JldHVybiBhdChlLHQscil9KSl9LHNldDpmdW5jdGlvbihlLG4scil7dmFyIGksbz1xZShlKSxhPSF5LnNjcm9sbGJveFNpemUoKSYmImFic29sdXRlIj09PW8ucG9zaXRpb24scz1hfHxyLHU9cyYmImJvcmRlci1ib3giPT09QS5jc3MoZSwiYm94U2l6aW5nIiwhMSxvKSxjPXI/b3QoZSx0LHIsdSxvKTowO3JldHVybiB1JiZhJiYoYy09TWF0aC5jZWlsKGVbIm9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSldLXBhcnNlRmxvYXQob1t0XSktb3QoZSx0LCJib3JkZXIiLCExLG8pLS41KSksYyYmKGk9dWUuZXhlYyhuKSkmJiJweCIhPT0oaVszXXx8InB4IikmJihlLnN0eWxlW3RdPW4sbj1BLmNzcyhlLHQpKSxpdChlLG4sYyl9fX0pKSxBLmNzc0hvb2tzLm1hcmdpbkxlZnQ9WGUoeS5yZWxpYWJsZU1hcmdpbkxlZnQsKGZ1bmN0aW9uKGUsdCl7aWYodClyZXR1cm4ocGFyc2VGbG9hdChWZShlLCJtYXJnaW5MZWZ0IikpfHxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtV2UoZSx7bWFyZ2luTGVmdDowfSwoZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKSsicHgifSkpLEEuZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LChmdW5jdGlvbihlLHQpe0EuY3NzSG9va3NbZSt0XT17ZXhwYW5kOmZ1bmN0aW9uKG4pe2Zvcih2YXIgcj0wLGk9e30sbz0ic3RyaW5nIj09PXR5cGVvZiBuP24uc3BsaXQoIiAiKTpbbl07cjw0O3IrKylpW2UrY2Vbcl0rdF09b1tyXXx8b1tyLTJdfHxvWzBdO3JldHVybiBpfX0sIm1hcmdpbiIhPT1lJiYoQS5jc3NIb29rc1tlK3RdLnNldD1pdCl9KSksQS5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihlLHQpe3JldHVybiBYKHRoaXMsKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPXFlKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPUEuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9BLnN0eWxlKGUsdCxuKTpBLmNzcyhlLHQpfSksZSx0LGFyZ3VtZW50cy5sZW5ndGg+MSl9fSksQS5Ud2Vlbj1zdCxzdC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnN0LGluaXQ6ZnVuY3Rpb24oZSx0LG4scixpLG8pe3RoaXMuZWxlbT1lLHRoaXMucHJvcD1uLHRoaXMuZWFzaW5nPWl8fEEuZWFzaW5nLl9kZWZhdWx0LHRoaXMub3B0aW9ucz10LHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1yLHRoaXMudW5pdD1vfHwoQS5jc3NOdW1iZXJbbl0/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBlPXN0LnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBlJiZlLmdldD9lLmdldCh0aGlzKTpzdC5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oZSl7dmFyIHQsbj1zdC5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPXQ9QS5lYXNpbmdbdGhpcy5lYXNpbmddKGUsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmUsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9dD1lLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSp0K3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLG4mJm4uc2V0P24uc2V0KHRoaXMpOnN0LnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319LHN0LnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1zdC5wcm90b3R5cGUsc3QucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxudWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2UucHJvcF06KHQ9QS5jc3MoZS5lbGVtLGUucHJvcCwiIiksdCYmImF1dG8iIT09dD90OjApfSxzZXQ6ZnVuY3Rpb24oZSl7QS5meC5zdGVwW2UucHJvcF0/QS5meC5zdGVwW2UucHJvcF0oZSk6MSE9PWUuZWxlbS5ub2RlVHlwZXx8IUEuY3NzSG9va3NbZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW1plKGUucHJvcCldP2UuZWxlbVtlLnByb3BdPWUubm93OkEuc3R5bGUoZS5lbGVtLGUucHJvcCxlLm5vdytlLnVuaXQpfX19LHN0LnByb3BIb29rcy5zY3JvbGxUb3A9c3QucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihlKXtlLmVsZW0ubm9kZVR5cGUmJmUuZWxlbS5wYXJlbnROb2RlJiYoZS5lbGVtW2UucHJvcF09ZS5ub3cpfX0sQS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sc3dpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuLjUtTWF0aC5jb3MoZSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxBLmZ4PXN0LnByb3RvdHlwZS5pbml0LEEuZnguc3RlcD17fTt2YXIgdXQsY3QsbHQ9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGZ0PS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gZHQoKXtjdCYmKCExPT09Yi5oaWRkZW4mJm4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lP24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGR0KTpuLnNldFRpbWVvdXQoZHQsQS5meC5pbnRlcnZhbCksQS5meC50aWNrKCkpfWZ1bmN0aW9uIHB0KCl7cmV0dXJuIG4uc2V0VGltZW91dCgoZnVuY3Rpb24oKXt1dD12b2lkIDB9KSksdXQ9RGF0ZS5ub3coKX1mdW5jdGlvbiBodChlLHQpe3ZhciBuLHI9MCxpPXtoZWlnaHQ6ZX07Zm9yKHQ9dD8xOjA7cjw0O3IrPTItdCluPWNlW3JdLGlbIm1hcmdpbiIrbl09aVsicGFkZGluZyIrbl09ZTtyZXR1cm4gdCYmKGkub3BhY2l0eT1pLndpZHRoPWUpLGl9ZnVuY3Rpb24gdnQoZSx0LG4pe2Zvcih2YXIgcixpPShndC50d2VlbmVyc1t0XXx8W10pLmNvbmNhdChndC50d2VlbmVyc1siKiJdKSxvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlmKHI9aVtvXS5jYWxsKG4sdCxlKSlyZXR1cm4gcn1mdW5jdGlvbiBtdChlLHQsbil7dmFyIHIsaSxvLGEscyx1LGMsbCxmPSJ3aWR0aCJpbiB0fHwiaGVpZ2h0ImluIHQsZD10aGlzLHA9e30saD1lLnN0eWxlLHY9ZS5ub2RlVHlwZSYmcGUoZSksbT10ZS5nZXQoZSwiZnhzaG93Iik7Zm9yKHIgaW4gbi5xdWV1ZXx8KGE9QS5fcXVldWVIb29rcyhlLCJmeCIpLG51bGw9PWEudW5xdWV1ZWQmJihhLnVucXVldWVkPTAscz1hLmVtcHR5LmZpcmUsYS5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7YS51bnF1ZXVlZHx8cygpfSksYS51bnF1ZXVlZCsrLGQuYWx3YXlzKChmdW5jdGlvbigpe2QuYWx3YXlzKChmdW5jdGlvbigpe2EudW5xdWV1ZWQtLSxBLnF1ZXVlKGUsImZ4IikubGVuZ3RofHxhLmVtcHR5LmZpcmUoKX0pKX0pKSksdClpZihpPXRbcl0sbHQudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PSh2PyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhbXx8dm9pZCAwPT09bVtyXSljb250aW51ZTt2PSEwfXBbcl09bSYmbVtyXXx8QS5zdHlsZShlLHIpfWlmKHU9IUEuaXNFbXB0eU9iamVjdCh0KSx1fHwhQS5pc0VtcHR5T2JqZWN0KHApKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sYz1tJiZtLmRpc3BsYXksbnVsbD09YyYmKGM9dGUuZ2V0KGUsImRpc3BsYXkiKSksbD1BLmNzcyhlLCJkaXNwbGF5IiksIm5vbmUiPT09bCYmKGM/bD1jOih5ZShbZV0sITApLGM9ZS5zdHlsZS5kaXNwbGF5fHxjLGw9QS5jc3MoZSwiZGlzcGxheSIpLHllKFtlXSkpKSwoImlubGluZSI9PT1sfHwiaW5saW5lLWJsb2NrIj09PWwmJm51bGwhPWMpJiYibm9uZSI9PT1BLmNzcyhlLCJmbG9hdCIpJiYodXx8KGQuZG9uZSgoZnVuY3Rpb24oKXtoLmRpc3BsYXk9Y30pKSxudWxsPT1jJiYobD1oLmRpc3BsYXksYz0ibm9uZSI9PT1sPyIiOmwpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVyZmxvdz0iaGlkZGVuIixkLmFsd2F5cygoZnVuY3Rpb24oKXtoLm92ZXJmbG93PW4ub3ZlcmZsb3dbMF0saC5vdmVyZmxvd1g9bi5vdmVyZmxvd1sxXSxoLm92ZXJmbG93WT1uLm92ZXJmbG93WzJdfSkpKSx1PSExLHApdXx8KG0/ImhpZGRlbiJpbiBtJiYodj1tLmhpZGRlbik6bT10ZS5hY2Nlc3MoZSwiZnhzaG93Iix7ZGlzcGxheTpjfSksbyYmKG0uaGlkZGVuPSF2KSx2JiZ5ZShbZV0sITApLGQuZG9uZSgoZnVuY3Rpb24oKXtmb3IociBpbiB2fHx5ZShbZV0pLHRlLnJlbW92ZShlLCJmeHNob3ciKSxwKUEuc3R5bGUoZSxyLHBbcl0pfSkpKSx1PXZ0KHY/bVtyXTowLHIsZCksciBpbiBtfHwobVtyXT11LnN0YXJ0LHYmJih1LmVuZD11LnN0YXJ0LHUuc3RhcnQ9MCkpfWZ1bmN0aW9uIHl0KGUsdCl7dmFyIG4scixpLG8sYTtmb3IobiBpbiBlKWlmKHI9UShuKSxpPXRbcl0sbz1lW25dLEFycmF5LmlzQXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSxhPUEuY3NzSG9va3Nbcl0sYSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX1mdW5jdGlvbiBndChlLHQsbil7dmFyIHIsaSxvPTAsYT1ndC5wcmVmaWx0ZXJzLmxlbmd0aCxzPUEuRGVmZXJyZWQoKS5hbHdheXMoKGZ1bmN0aW9uKCl7ZGVsZXRlIHUuZWxlbX0pKSx1PWZ1bmN0aW9uKCl7aWYoaSlyZXR1cm4hMTtmb3IodmFyIHQ9dXR8fHB0KCksbj1NYXRoLm1heCgwLGMuc3RhcnRUaW1lK2MuZHVyYXRpb24tdCkscj1uL2MuZHVyYXRpb258fDAsbz0xLXIsYT0wLHU9Yy50d2VlbnMubGVuZ3RoO2E8dTthKyspYy50d2VlbnNbYV0ucnVuKG8pO3JldHVybiBzLm5vdGlmeVdpdGgoZSxbYyxvLG5dKSxvPDEmJnU/bjoodXx8cy5ub3RpZnlXaXRoKGUsW2MsMSwwXSkscy5yZXNvbHZlV2l0aChlLFtjXSksITEpfSxjPXMucHJvbWlzZSh7ZWxlbTplLHByb3BzOkEuZXh0ZW5kKHt9LHQpLG9wdHM6QS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e30sZWFzaW5nOkEuZWFzaW5nLl9kZWZhdWx0fSxuKSxvcmlnaW5hbFByb3BlcnRpZXM6dCxvcmlnaW5hbE9wdGlvbnM6bixzdGFydFRpbWU6dXR8fHB0KCksZHVyYXRpb246bi5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24odCxuKXt2YXIgcj1BLlR3ZWVuKGUsYy5vcHRzLHQsbixjLm9wdHMuc3BlY2lhbEVhc2luZ1t0XXx8Yy5vcHRzLmVhc2luZyk7cmV0dXJuIGMudHdlZW5zLnB1c2gocikscn0sc3RvcDpmdW5jdGlvbih0KXt2YXIgbj0wLHI9dD9jLnR3ZWVucy5sZW5ndGg6MDtpZihpKXJldHVybiB0aGlzO2ZvcihpPSEwO248cjtuKyspYy50d2VlbnNbbl0ucnVuKDEpO3JldHVybiB0PyhzLm5vdGlmeVdpdGgoZSxbYywxLDBdKSxzLnJlc29sdmVXaXRoKGUsW2MsdF0pKTpzLnJlamVjdFdpdGgoZSxbYyx0XSksdGhpc319KSxsPWMucHJvcHM7Zm9yKHl0KGwsYy5vcHRzLnNwZWNpYWxFYXNpbmcpO288YTtvKyspaWYocj1ndC5wcmVmaWx0ZXJzW29dLmNhbGwoYyxlLGwsYy5vcHRzKSxyKXJldHVybiBnKHIuc3RvcCkmJihBLl9xdWV1ZUhvb2tzKGMuZWxlbSxjLm9wdHMucXVldWUpLnN0b3A9ci5zdG9wLmJpbmQocikpLHI7cmV0dXJuIEEubWFwKGwsdnQsYyksZyhjLm9wdHMuc3RhcnQpJiZjLm9wdHMuc3RhcnQuY2FsbChlLGMpLGMucHJvZ3Jlc3MoYy5vcHRzLnByb2dyZXNzKS5kb25lKGMub3B0cy5kb25lLGMub3B0cy5jb21wbGV0ZSkuZmFpbChjLm9wdHMuZmFpbCkuYWx3YXlzKGMub3B0cy5hbHdheXMpLEEuZngudGltZXIoQS5leHRlbmQodSx7ZWxlbTplLGFuaW06YyxxdWV1ZTpjLm9wdHMucXVldWV9KSksY31BLkFuaW1hdGlvbj1BLmV4dGVuZChndCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIGhlKG4uZWxlbSxlLHVlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7ZyhlKT8odD1lLGU9WyIqIl0pOmU9ZS5tYXRjaChIKTtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluPWVbcl0sZ3QudHdlZW5lcnNbbl09Z3QudHdlZW5lcnNbbl18fFtdLGd0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W210XSxwcmVmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt0P2d0LnByZWZpbHRlcnMudW5zaGlmdChlKTpndC5wcmVmaWx0ZXJzLnB1c2goZSl9fSksQS5zcGVlZD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZSYmIm9iamVjdCI9PT10eXBlb2YgZT9BLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fGcoZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIWcodCkmJnR9O3JldHVybiBBLmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPT10eXBlb2Ygci5kdXJhdGlvbiYmKHIuZHVyYXRpb24gaW4gQS5meC5zcGVlZHM/ci5kdXJhdGlvbj1BLmZ4LnNwZWVkc1tyLmR1cmF0aW9uXTpyLmR1cmF0aW9uPUEuZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1yLnF1ZXVlJiYhMCE9PXIucXVldWV8fChyLnF1ZXVlPSJmeCIpLHIub2xkPXIuY29tcGxldGUsci5jb21wbGV0ZT1mdW5jdGlvbigpe2coci5vbGQpJiZyLm9sZC5jYWxsKHRoaXMpLHIucXVldWUmJkEuZGVxdWV1ZSh0aGlzLHIucXVldWUpfSxyfSxBLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLmZpbHRlcihwZSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTp0fSxlLG4scil9LGFuaW1hdGU6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9QS5pc0VtcHR5T2JqZWN0KGUpLG89QS5zcGVlZCh0LG4sciksYT1mdW5jdGlvbigpe3ZhciB0PWd0KHRoaXMsQS5leHRlbmQoe30sZSksbyk7KGl8fHRlLmdldCh0aGlzLCJmaW5pc2giKSkmJnQuc3RvcCghMCl9O3JldHVybiBhLmZpbmlzaD1hLGl8fCExPT09by5xdWV1ZT90aGlzLmVhY2goYSk6dGhpcy5xdWV1ZShvLnF1ZXVlLGEpfSxzdG9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihlKXt2YXIgdD1lLnN0b3A7ZGVsZXRlIGUuc3RvcCx0KG4pfTtyZXR1cm4ic3RyaW5nIiE9PXR5cGVvZiBlJiYobj10LHQ9ZSxlPXZvaWQgMCksdCYmdGhpcy5xdWV1ZShlfHwiZngiLFtdKSx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9ITAsaT1udWxsIT1lJiZlKyJxdWV1ZUhvb2tzIixvPUEudGltZXJzLGE9dGUuZ2V0KHRoaXMpO2lmKGkpYVtpXSYmYVtpXS5zdG9wJiZyKGFbaV0pO2Vsc2UgZm9yKGkgaW4gYSlhW2ldJiZhW2ldLnN0b3AmJmZ0LnRlc3QoaSkmJnIoYVtpXSk7Zm9yKGk9by5sZW5ndGg7aS0tOylvW2ldLmVsZW0hPT10aGlzfHxudWxsIT1lJiZvW2ldLnF1ZXVlIT09ZXx8KG9baV0uYW5pbS5zdG9wKG4pLHQ9ITEsby5zcGxpY2UoaSwxKSk7IXQmJm58fEEuZGVxdWV1ZSh0aGlzLGUpfSkpfSxmaW5pc2g6ZnVuY3Rpb24oZSl7cmV0dXJuITEhPT1lJiYoZT1lfHwiZngiKSx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQsbj10ZS5nZXQodGhpcykscj1uW2UrInF1ZXVlIl0saT1uW2UrInF1ZXVlSG9va3MiXSxvPUEudGltZXJzLGE9cj9yLmxlbmd0aDowO2ZvcihuLmZpbmlzaD0hMCxBLnF1ZXVlKHRoaXMsZSxbXSksaSYmaS5zdG9wJiZpLnN0b3AuY2FsbCh0aGlzLCEwKSx0PW8ubGVuZ3RoO3QtLTspb1t0XS5lbGVtPT09dGhpcyYmb1t0XS5xdWV1ZT09PWUmJihvW3RdLmFuaW0uc3RvcCghMCksby5zcGxpY2UodCwxKSk7Zm9yKHQ9MDt0PGE7dCsrKXJbdF0mJnJbdF0uZmluaXNoJiZyW3RdLmZpbmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBuLmZpbmlzaH0pKX19KSxBLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLChmdW5jdGlvbihlLHQpe3ZhciBuPUEuZm5bdF07QS5mblt0XT1mdW5jdGlvbihlLHIsaSl7cmV0dXJuIG51bGw9PWV8fCJib29sZWFuIj09PXR5cGVvZiBlP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOnRoaXMuYW5pbWF0ZShodCh0LCEwKSxlLHIsaSl9fSkpLEEuZWFjaCh7c2xpZGVEb3duOmh0KCJzaG93Iiksc2xpZGVVcDpodCgiaGlkZSIpLHNsaWRlVG9nZ2xlOmh0KCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LChmdW5jdGlvbihlLHQpe0EuZm5bZV09ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0aGlzLmFuaW1hdGUodCxlLG4scil9fSkpLEEudGltZXJzPVtdLEEuZngudGljaz1mdW5jdGlvbigpe3ZhciBlLHQ9MCxuPUEudGltZXJzO2Zvcih1dD1EYXRlLm5vdygpO3Q8bi5sZW5ndGg7dCsrKWU9blt0XSxlKCl8fG5bdF0hPT1lfHxuLnNwbGljZSh0LS0sMSk7bi5sZW5ndGh8fEEuZnguc3RvcCgpLHV0PXZvaWQgMH0sQS5meC50aW1lcj1mdW5jdGlvbihlKXtBLnRpbWVycy5wdXNoKGUpLEEuZnguc3RhcnQoKX0sQS5meC5pbnRlcnZhbD0xMyxBLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7Y3R8fChjdD0hMCxkdCgpKX0sQS5meC5zdG9wPWZ1bmN0aW9uKCl7Y3Q9bnVsbH0sQS5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sQS5mbi5kZWxheT1mdW5jdGlvbihlLHQpe3JldHVybiBlPUEuZngmJkEuZnguc3BlZWRzW2VdfHxlLHQ9dHx8ImZ4Iix0aGlzLnF1ZXVlKHQsKGZ1bmN0aW9uKHQscil7dmFyIGk9bi5zZXRUaW1lb3V0KHQsZSk7ci5zdG9wPWZ1bmN0aW9uKCl7bi5jbGVhclRpbWVvdXQoaSl9fSkpfSxmdW5jdGlvbigpe3ZhciBlPWIuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSx0PWIuY3JlYXRlRWxlbWVudCgic2VsZWN0Iiksbj10LmFwcGVuZENoaWxkKGIuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpO2UudHlwZT0iY2hlY2tib3giLHkuY2hlY2tPbj0iIiE9PWUudmFsdWUseS5vcHRTZWxlY3RlZD1uLnNlbGVjdGVkLGU9Yi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGUudmFsdWU9InQiLGUudHlwZT0icmFkaW8iLHkucmFkaW9WYWx1ZT0idCI9PT1lLnZhbHVlfSgpO3ZhciB3dCxidD1BLmV4cHIuYXR0ckhhbmRsZTtBLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiBYKHRoaXMsQS5hdHRyLGUsdCxhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7QS5yZW1vdmVBdHRyKHRoaXMsZSl9KSl9fSksQS5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz1lLm5vZGVUeXBlO2lmKDMhPT1vJiY4IT09byYmMiE9PW8pcmV0dXJuInVuZGVmaW5lZCI9PT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/QS5wcm9wKGUsdCxuKTooMT09PW8mJkEuaXNYTUxEb2MoZSl8fChpPUEuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChBLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpP3d0OnZvaWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCBBLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIiKSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOihyPUEuZmluZC5hdHRyKGUsdCksbnVsbD09cj92b2lkIDA6cikpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihlLHQpe2lmKCF5LnJhZGlvVmFsdWUmJiJyYWRpbyI9PT10JiZEKGUsImlucHV0Iikpe3ZhciBuPWUudmFsdWU7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJ0eXBlIix0KSxuJiYoZS52YWx1ZT1uKSx0fX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wLGk9dCYmdC5tYXRjaChIKTtpZihpJiYxPT09ZS5ub2RlVHlwZSl3aGlsZShuPWlbcisrXSllLnJlbW92ZUF0dHJpYnV0ZShuKX19KSx3dD17c2V0OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hMT09PXQ/QS5yZW1vdmVBdHRyKGUsbik6ZS5zZXRBdHRyaWJ1dGUobixuKSxufX0sQS5lYWNoKEEuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLChmdW5jdGlvbihlLHQpe3ZhciBuPWJ0W3RdfHxBLmZpbmQuYXR0cjtidFt0XT1mdW5jdGlvbihlLHQscil7dmFyIGksbyxhPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gcnx8KG89YnRbYV0sYnRbYV09aSxpPW51bGwhPW4oZSx0LHIpP2E6bnVsbCxidFthXT1vKSxpfX0pKTt2YXIgX3Q9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSx4dD0vXig/OmF8YXJlYSkkL2k7ZnVuY3Rpb24ga3QoZSl7dmFyIHQ9ZS5tYXRjaChIKXx8W107cmV0dXJuIHQuam9pbigiICIpfWZ1bmN0aW9uIEN0KGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifWZ1bmN0aW9uIEF0KGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2U6InN0cmluZyI9PT10eXBlb2YgZSYmZS5tYXRjaChIKXx8W119QS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gWCh0aGlzLEEucHJvcCxlLHQsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW0EucHJvcEZpeFtlXXx8ZV19KSl9fSksQS5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbz1lLm5vZGVUeXBlO2lmKDMhPT1vJiY4IT09byYmMiE9PW8pcmV0dXJuIDE9PT1vJiZBLmlzWE1MRG9jKGUpfHwodD1BLnByb3BGaXhbdF18fHQsaT1BLnByb3BIb29rc1t0XSksdm9pZCAwIT09bj9pJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjplW3RdPW46aSYmImdldCJpbiBpJiZudWxsIT09KHI9aS5nZXQoZSx0KSk/cjplW3RdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9QS5maW5kLmF0dHIoZSwidGFiaW5kZXgiKTtyZXR1cm4gdD9wYXJzZUludCh0LDEwKTpfdC50ZXN0KGUubm9kZU5hbWUpfHx4dC50ZXN0KGUubm9kZU5hbWUpJiZlLmhyZWY/MDotMX19fSxwcm9wRml4Ontmb3I6Imh0bWxGb3IiLGNsYXNzOiJjbGFzc05hbWUifX0pLHkub3B0U2VsZWN0ZWR8fChBLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3QmJih0LnNlbGVjdGVkSW5kZXgsdC5wYXJlbnROb2RlJiZ0LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksQS5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sKGZ1bmN0aW9uKCl7QS5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pKSxBLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHMsdT0wO2lmKGcoZSkpcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7QSh0aGlzKS5hZGRDbGFzcyhlLmNhbGwodGhpcyx0LEN0KHRoaXMpKSl9KSk7aWYodD1BdChlKSx0Lmxlbmd0aCl3aGlsZShuPXRoaXNbdSsrXSlpZihpPUN0KG4pLHI9MT09PW4ubm9kZVR5cGUmJiIgIitrdChpKSsiICIscil7YT0wO3doaWxlKG89dFthKytdKXIuaW5kZXhPZigiICIrbysiICIpPDAmJihyKz1vKyIgIik7cz1rdChyKSxpIT09cyYmbi5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHMsdT0wO2lmKGcoZSkpcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24odCl7QSh0aGlzKS5yZW1vdmVDbGFzcyhlLmNhbGwodGhpcyx0LEN0KHRoaXMpKSl9KSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZih0PUF0KGUpLHQubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9Q3Qobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK2t0KGkpKyIgIixyKXthPTA7d2hpbGUobz10W2ErK10pd2hpbGUoci5pbmRleE9mKCIgIitvKyIgIik+LTEpcj1yLnJlcGxhY2UoIiAiK28rIiAiLCIgIik7cz1rdChyKSxpIT09cyYmbi5zZXRBdHRyaWJ1dGUoImNsYXNzIixzKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10eXBlb2YgZSxyPSJzdHJpbmciPT09bnx8QXJyYXkuaXNBcnJheShlKTtyZXR1cm4iYm9vbGVhbiI9PT10eXBlb2YgdCYmcj90P3RoaXMuYWRkQ2xhc3MoZSk6dGhpcy5yZW1vdmVDbGFzcyhlKTpnKGUpP3RoaXMuZWFjaCgoZnVuY3Rpb24obil7QSh0aGlzKS50b2dnbGVDbGFzcyhlLmNhbGwodGhpcyxuLEN0KHRoaXMpLHQpLHQpfSkpOnRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdCxpLG8sYTtpZihyKXtpPTAsbz1BKHRoaXMpLGE9QXQoZSk7d2hpbGUodD1hW2krK10pby5oYXNDbGFzcyh0KT9vLnJlbW92ZUNsYXNzKHQpOm8uYWRkQ2xhc3ModCl9ZWxzZSB2b2lkIDAhPT1lJiYiYm9vbGVhbiIhPT1ufHwodD1DdCh0aGlzKSx0JiZ0ZS5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsdCksdGhpcy5zZXRBdHRyaWJ1dGUmJnRoaXMuc2V0QXR0cmlidXRlKCJjbGFzcyIsdHx8ITE9PT1lPyIiOnRlLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYoIiAiK2t0KEN0KG4pKSsiICIpLmluZGV4T2YodCk+LTEpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIFN0PS9cci9nO0EuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1nKGUpLHRoaXMuZWFjaCgoZnVuY3Rpb24obil7dmFyIGk7MT09PXRoaXMubm9kZVR5cGUmJihpPXI/ZS5jYWxsKHRoaXMsbixBKHRoaXMpLnZhbCgpKTplLG51bGw9PWk/aT0iIjoibnVtYmVyIj09PXR5cGVvZiBpP2krPSIiOkFycmF5LmlzQXJyYXkoaSkmJihpPUEubWFwKGksKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSkpLHQ9QS52YWxIb29rc1t0aGlzLnR5cGVdfHxBLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sdCYmInNldCJpbiB0JiZ2b2lkIDAhPT10LnNldCh0aGlzLGksInZhbHVlIil8fCh0aGlzLnZhbHVlPWkpKX0pKSk6aT8odD1BLnZhbEhvb2tzW2kudHlwZV18fEEudmFsSG9va3NbaS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSx0JiYiZ2V0ImluIHQmJnZvaWQgMCE9PShuPXQuZ2V0KGksInZhbHVlIikpP246KG49aS52YWx1ZSwic3RyaW5nIj09PXR5cGVvZiBuP24ucmVwbGFjZShTdCwiIik6bnVsbD09bj8iIjpuKSk6dm9pZCAwfX0pLEEuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9QS5maW5kLmF0dHIoZSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9dD90Omt0KEEudGV4dChlKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaT1lLm9wdGlvbnMsbz1lLnNlbGVjdGVkSW5kZXgsYT0ic2VsZWN0LW9uZSI9PT1lLnR5cGUscz1hP251bGw6W10sdT1hP28rMTppLmxlbmd0aDtmb3Iocj1vPDA/dTphP286MDtyPHU7cisrKWlmKG49aVtyXSwobi5zZWxlY3RlZHx8cj09PW8pJiYhbi5kaXNhYmxlZCYmKCFuLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFEKG4ucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKHQ9QShuKS52YWwoKSxhKXJldHVybiB0O3MucHVzaCh0KX1yZXR1cm4gc30sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG4scixpPWUub3B0aW9ucyxvPUEubWFrZUFycmF5KHQpLGE9aS5sZW5ndGg7d2hpbGUoYS0tKXI9aVthXSwoci5zZWxlY3RlZD1BLmluQXJyYXkoQS52YWxIb29rcy5vcHRpb24uZ2V0KHIpLG8pPi0xKSYmKG49ITApO3JldHVybiBufHwoZS5zZWxlY3RlZEluZGV4PS0xKSxvfX19fSksQS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLChmdW5jdGlvbigpe0EudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD1BLmluQXJyYXkoQShlKS52YWwoKSx0KT4tMX19LHkuY2hlY2tPbnx8KEEudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KSkseS5mb2N1c2luPSJvbmZvY3VzaW4iaW4gbjt2YXIgRXQ9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLFR0PWZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCl9O0EuZXh0ZW5kKEEuZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oZSx0LHIsaSl7dmFyIG8sYSxzLHUsYyxsLGYsZCxwPVtyfHxiXSx2PWguY2FsbChlLCJ0eXBlIik/ZS50eXBlOmUsbT1oLmNhbGwoZSwibmFtZXNwYWNlIik/ZS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihhPWQ9cz1yPXJ8fGIsMyE9PXIubm9kZVR5cGUmJjghPT1yLm5vZGVUeXBlJiYhRXQudGVzdCh2K0EuZXZlbnQudHJpZ2dlcmVkKSYmKHYuaW5kZXhPZigiLiIpPi0xJiYobT12LnNwbGl0KCIuIiksdj1tLnNoaWZ0KCksbS5zb3J0KCkpLGM9di5pbmRleE9mKCI6Iik8MCYmIm9uIit2LGU9ZVtBLmV4cGFuZG9dP2U6bmV3IEEuRXZlbnQodiwib2JqZWN0Ij09PXR5cGVvZiBlJiZlKSxlLmlzVHJpZ2dlcj1pPzI6MyxlLm5hbWVzcGFjZT1tLmpvaW4oIi4iKSxlLnJuYW1lc3BhY2U9ZS5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrbS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGUucmVzdWx0PXZvaWQgMCxlLnRhcmdldHx8KGUudGFyZ2V0PXIpLHQ9bnVsbD09dD9bZV06QS5tYWtlQXJyYXkodCxbZV0pLGY9QS5ldmVudC5zcGVjaWFsW3ZdfHx7fSxpfHwhZi50cmlnZ2VyfHwhMSE9PWYudHJpZ2dlci5hcHBseShyLHQpKSl7aWYoIWkmJiFmLm5vQnViYmxlJiYhdyhyKSl7Zm9yKHU9Zi5kZWxlZ2F0ZVR5cGV8fHYsRXQudGVzdCh1K3YpfHwoYT1hLnBhcmVudE5vZGUpO2E7YT1hLnBhcmVudE5vZGUpcC5wdXNoKGEpLHM9YTtzPT09KHIub3duZXJEb2N1bWVudHx8YikmJnAucHVzaChzLmRlZmF1bHRWaWV3fHxzLnBhcmVudFdpbmRvd3x8bil9bz0wO3doaWxlKChhPXBbbysrXSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpZD1hLGUudHlwZT1vPjE/dTpmLmJpbmRUeXBlfHx2LGw9KHRlLmdldChhLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbZS50eXBlXSYmdGUuZ2V0KGEsImhhbmRsZSIpLGwmJmwuYXBwbHkoYSx0KSxsPWMmJmFbY10sbCYmbC5hcHBseSYmWihhKSYmKGUucmVzdWx0PWwuYXBwbHkoYSx0KSwhMT09PWUucmVzdWx0JiZlLnByZXZlbnREZWZhdWx0KCkpO3JldHVybiBlLnR5cGU9dixpfHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxmLl9kZWZhdWx0JiYhMSE9PWYuX2RlZmF1bHQuYXBwbHkocC5wb3AoKSx0KXx8IVoocil8fGMmJmcoclt2XSkmJiF3KHIpJiYocz1yW2NdLHMmJihyW2NdPW51bGwpLEEuZXZlbnQudHJpZ2dlcmVkPXYsZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZkLmFkZEV2ZW50TGlzdGVuZXIodixUdCksclt2XSgpLGUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSYmZC5yZW1vdmVFdmVudExpc3RlbmVyKHYsVHQpLEEuZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxzJiYocltjXT1zKSksZS5yZXN1bHR9fSxzaW11bGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9QS5leHRlbmQobmV3IEEuRXZlbnQsbix7dHlwZTplLGlzU2ltdWxhdGVkOiEwfSk7QS5ldmVudC50cmlnZ2VyKHIsbnVsbCx0KX19KSxBLmZuLmV4dGVuZCh7dHJpZ2dlcjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7QS5ldmVudC50cmlnZ2VyKGUsdCx0aGlzKX0pKX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIEEuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSkseS5mb2N1c2lufHxBLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LChmdW5jdGlvbihlLHQpe3ZhciBuPWZ1bmN0aW9uKGUpe0EuZXZlbnQuc2ltdWxhdGUodCxlLnRhcmdldCxBLmV2ZW50LmZpeChlKSl9O0EuZXZlbnQuc3BlY2lhbFt0XT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsaT10ZS5hY2Nlc3Mocix0KTtpfHxyLmFkZEV2ZW50TGlzdGVuZXIoZSxuLCEwKSx0ZS5hY2Nlc3Mocix0LChpfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgcj10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsaT10ZS5hY2Nlc3Mocix0KS0xO2k/dGUuYWNjZXNzKHIsdCxpKTooci5yZW1vdmVFdmVudExpc3RlbmVyKGUsbiwhMCksdGUucmVtb3ZlKHIsdCkpfX19KSk7dmFyIE90PW4ubG9jYXRpb24sQnQ9e2d1aWQ6RGF0ZS5ub3coKX0sRHQ9L1w/LztBLnBhcnNlWE1MPWZ1bmN0aW9uKGUpe3ZhciB0LHI7aWYoIWV8fCJzdHJpbmciIT09dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3Q9KG5ldyBuLkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsInRleHQveG1sIil9Y2F0Y2goaSl7fXJldHVybiByPXQmJnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIilbMF0sdCYmIXJ8fEEuZXJyb3IoIkludmFsaWQgWE1MOiAiKyhyP0EubWFwKHIuY2hpbGROb2RlcywoZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KSkuam9pbigiXG4iKTplKSksdH07dmFyIGp0PS9cW1xdJC8sTnQ9L1xyP1xuL2csJHQ9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLFJ0PS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmdW5jdGlvbiBMdChlLHQsbixyKXt2YXIgaTtpZihBcnJheS5pc0FycmF5KHQpKUEuZWFjaCh0LChmdW5jdGlvbih0LGkpe258fGp0LnRlc3QoZSk/cihlLGkpOkx0KGUrIlsiKygib2JqZWN0Ij09PXR5cGVvZiBpJiZudWxsIT1pP3Q6IiIpKyJdIixpLG4scil9KSk7ZWxzZSBpZihufHwib2JqZWN0IiE9PWsodCkpcihlLHQpO2Vsc2UgZm9yKGkgaW4gdClMdChlKyJbIitpKyJdIix0W2ldLG4scil9QS5wYXJhbT1mdW5jdGlvbihlLHQpe3ZhciBuLHI9W10saT1mdW5jdGlvbihlLHQpe3ZhciBuPWcodCk/dCgpOnQ7cltyLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGUpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09bj8iIjpuKX07aWYobnVsbD09ZSlyZXR1cm4iIjtpZihBcnJheS5pc0FycmF5KGUpfHxlLmpxdWVyeSYmIUEuaXNQbGFpbk9iamVjdChlKSlBLmVhY2goZSwoZnVuY3Rpb24oKXtpKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pKTtlbHNlIGZvcihuIGluIGUpTHQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxBLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIEEucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoKGZ1bmN0aW9uKCl7dmFyIGU9QS5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGU/QS5tYWtlQXJyYXkoZSk6dGhpc30pKS5maWx0ZXIoKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFBKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmUnQudGVzdCh0aGlzLm5vZGVOYW1lKSYmISR0LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFnZS50ZXN0KGUpKX0pKS5tYXAoKGZ1bmN0aW9uKGUsdCl7dmFyIG49QSh0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09bj9udWxsOkFycmF5LmlzQXJyYXkobik/QS5tYXAobiwoZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShOdCwiXHJcbiIpfX0pKTp7bmFtZTp0Lm5hbWUsdmFsdWU6bi5yZXBsYWNlKE50LCJcclxuIil9fSkpLmdldCgpfX0pO3ZhciBQdD0vJTIwL2csTXQ9LyMuKiQvLEl0PS8oWz8mXSlfPVteJl0qLyxIdD0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLHp0PS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLEZ0PS9eKD86R0VUfEhFQUQpJC8sVXQ9L15cL1wvLyxxdD17fSxXdD17fSxZdD0iKi8iLmNvbmNhdCgiKiIpLFZ0PWIuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIFh0KGUpe3JldHVybiBmdW5jdGlvbih0LG4peyJzdHJpbmciIT09dHlwZW9mIHQmJihuPXQsdD0iKiIpO3ZhciByLGk9MCxvPXQudG9Mb3dlckNhc2UoKS5tYXRjaChIKXx8W107aWYoZyhuKSl3aGlsZShyPW9baSsrXSkiKyI9PT1yWzBdPyhyPXIuc2xpY2UoMSl8fCIqIiwoZVtyXT1lW3JdfHxbXSkudW5zaGlmdChuKSk6KGVbcl09ZVtyXXx8W10pLnB1c2gobil9fWZ1bmN0aW9uIEd0KGUsdCxuLHIpe3ZhciBpPXt9LG89ZT09PVd0O2Z1bmN0aW9uIGEocyl7dmFyIHU7cmV0dXJuIGlbc109ITAsQS5lYWNoKGVbc118fFtdLChmdW5jdGlvbihlLHMpe3ZhciBjPXModCxuLHIpO3JldHVybiJzdHJpbmciIT09dHlwZW9mIGN8fG98fGlbY10/bz8hKHU9Yyk6dm9pZCAwOih0LmRhdGFUeXBlcy51bnNoaWZ0KGMpLGEoYyksITEpfSkpLHV9cmV0dXJuIGEodC5kYXRhVHlwZXNbMF0pfHwhaVsiKiJdJiZhKCIqIil9ZnVuY3Rpb24gS3QoZSx0KXt2YXIgbixyLGk9QS5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9pZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmQS5leHRlbmQoITAsZSxyKSxlfWZ1bmN0aW9uIEp0KGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSx2b2lkIDA9PT1yJiYocj1lLm1pbWVUeXBlfHx0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYocilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0udGVzdChyKSl7dS51bnNoaWZ0KGkpO2JyZWFrfWlmKHVbMF1pbiBuKW89dVswXTtlbHNle2ZvcihpIGluIG4pe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwoYT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9PXVbMF0mJnUudW5zaGlmdChvKSxuW29dfWZ1bmN0aW9uIFF0KGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsYz17fSxsPWUuZGF0YVR5cGVzLnNsaWNlKCk7aWYobFsxXSlmb3IoYSBpbiBlLmNvbnZlcnRlcnMpY1thLnRvTG93ZXJDYXNlKCldPWUuY29udmVydGVyc1thXTtvPWwuc2hpZnQoKTt3aGlsZShvKWlmKGUucmVzcG9uc2VGaWVsZHNbb10mJihuW2UucmVzcG9uc2VGaWVsZHNbb11dPXQpLCF1JiZyJiZlLmRhdGFGaWx0ZXImJih0PWUuZGF0YUZpbHRlcih0LGUuZGF0YVR5cGUpKSx1PW8sbz1sLnNoaWZ0KCksbylpZigiKiI9PT1vKW89dTtlbHNlIGlmKCIqIiE9PXUmJnUhPT1vKXtpZihhPWNbdSsiICIrb118fGNbIiogIitvXSwhYSlmb3IoaSBpbiBjKWlmKHM9aS5zcGxpdCgiICIpLHNbMV09PT1vJiYoYT1jW3UrIiAiK3NbMF1dfHxjWyIqICIrc1swXV0sYSkpeyEwPT09YT9hPWNbaV06ITAhPT1jW2ldJiYobz1zWzBdLGwudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmUudGhyb3dzKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZil7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9mOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fVZ0LmhyZWY9T3QuaHJlZixBLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6T3QuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6enQudGVzdChPdC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpZdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6QS5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/S3QoS3QoZSxBLmFqYXhTZXR0aW5ncyksdCk6S3QoQS5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6WHQocXQpLGFqYXhUcmFuc3BvcnQ6WHQoV3QpLGFqYXg6ZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09PXR5cGVvZiBlJiYodD1lLGU9dm9pZCAwKSx0PXR8fHt9O3ZhciByLGksbyxhLHMsdSxjLGwsZixkLHA9QS5hamF4U2V0dXAoe30sdCksaD1wLmNvbnRleHR8fHAsdj1wLmNvbnRleHQmJihoLm5vZGVUeXBlfHxoLmpxdWVyeSk/QShoKTpBLmV2ZW50LG09QS5EZWZlcnJlZCgpLHk9QS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksZz1wLnN0YXR1c0NvZGV8fHt9LHc9e30sXz17fSx4PSJjYW5jZWxlZCIsaz17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGMpe2lmKCFhKXthPXt9O3doaWxlKHQ9SHQuZXhlYyhvKSlhW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdPShhW3RbMV0udG9Mb3dlckNhc2UoKSsiICJdfHxbXSkuY29uY2F0KHRbMl0pfXQ9YVtlLnRvTG93ZXJDYXNlKCkrIiAiXX1yZXR1cm4gbnVsbD09dD9udWxsOnQuam9pbigiLCAiKX0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGM/bzpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWMmJihlPV9bZS50b0xvd2VyQ2FzZSgpXT1fW2UudG9Mb3dlckNhc2UoKV18fGUsd1tlXT10KSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1jJiYocC5taW1lVHlwZT1lKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpaWYoYylrLmFsd2F5cyhlW2suc3RhdHVzXSk7ZWxzZSBmb3IodCBpbiBlKWdbdF09W2dbdF0sZVt0XV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGUpe3ZhciB0PWV8fHg7cmV0dXJuIHImJnIuYWJvcnQodCksQygwLHQpLHRoaXN9fTtpZihtLnByb21pc2UoaykscC51cmw9KChlfHxwLnVybHx8T3QuaHJlZikrIiIpLnJlcGxhY2UoVXQsT3QucHJvdG9jb2wrIi8vIikscC50eXBlPXQubWV0aG9kfHx0LnR5cGV8fHAubWV0aG9kfHxwLnR5cGUscC5kYXRhVHlwZXM9KHAuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChIKXx8WyIiXSxudWxsPT1wLmNyb3NzRG9tYWluKXt1PWIuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXt1LmhyZWY9cC51cmwsdS5ocmVmPXUuaHJlZixwLmNyb3NzRG9tYWluPVZ0LnByb3RvY29sKyIvLyIrVnQuaG9zdCE9PXUucHJvdG9jb2wrIi8vIit1Lmhvc3R9Y2F0Y2goUyl7cC5jcm9zc0RvbWFpbj0hMH19aWYocC5kYXRhJiZwLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9PXR5cGVvZiBwLmRhdGEmJihwLmRhdGE9QS5wYXJhbShwLmRhdGEscC50cmFkaXRpb25hbCkpLEd0KHF0LHAsdCxrKSxjKXJldHVybiBrO2ZvcihmIGluIGw9QS5ldmVudCYmcC5nbG9iYWwsbCYmMD09PUEuYWN0aXZlKysmJkEuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0IikscC50eXBlPXAudHlwZS50b1VwcGVyQ2FzZSgpLHAuaGFzQ29udGVudD0hRnQudGVzdChwLnR5cGUpLGk9cC51cmwucmVwbGFjZShNdCwiIikscC5oYXNDb250ZW50P3AuZGF0YSYmcC5wcm9jZXNzRGF0YSYmMD09PShwLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJihwLmRhdGE9cC5kYXRhLnJlcGxhY2UoUHQsIisiKSk6KGQ9cC51cmwuc2xpY2UoaS5sZW5ndGgpLHAuZGF0YSYmKHAucHJvY2Vzc0RhdGF8fCJzdHJpbmciPT09dHlwZW9mIHAuZGF0YSkmJihpKz0oRHQudGVzdChpKT8iJiI6Ij8iKStwLmRhdGEsZGVsZXRlIHAuZGF0YSksITE9PT1wLmNhY2hlJiYoaT1pLnJlcGxhY2UoSXQsIiQxIiksZD0oRHQudGVzdChpKT8iJiI6Ij8iKSsiXz0iK0J0Lmd1aWQrKytkKSxwLnVybD1pK2QpLHAuaWZNb2RpZmllZCYmKEEubGFzdE1vZGlmaWVkW2ldJiZrLnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixBLmxhc3RNb2RpZmllZFtpXSksQS5ldGFnW2ldJiZrLnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLEEuZXRhZ1tpXSkpLChwLmRhdGEmJnAuaGFzQ29udGVudCYmITEhPT1wLmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmay5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHAuY29udGVudFR5cGUpLGsuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixwLmRhdGFUeXBlc1swXSYmcC5hY2NlcHRzW3AuZGF0YVR5cGVzWzBdXT9wLmFjY2VwdHNbcC5kYXRhVHlwZXNbMF1dKygiKiIhPT1wLmRhdGFUeXBlc1swXT8iLCAiK1l0KyI7IHE9MC4wMSI6IiIpOnAuYWNjZXB0c1siKiJdKSxwLmhlYWRlcnMpay5zZXRSZXF1ZXN0SGVhZGVyKGYscC5oZWFkZXJzW2ZdKTtpZihwLmJlZm9yZVNlbmQmJighMT09PXAuYmVmb3JlU2VuZC5jYWxsKGgsayxwKXx8YykpcmV0dXJuIGsuYWJvcnQoKTtpZih4PSJhYm9ydCIseS5hZGQocC5jb21wbGV0ZSksay5kb25lKHAuc3VjY2Vzcyksay5mYWlsKHAuZXJyb3IpLHI9R3QoV3QscCx0LGspLHIpe2lmKGsucmVhZHlTdGF0ZT0xLGwmJnYudHJpZ2dlcigiYWpheFNlbmQiLFtrLHBdKSxjKXJldHVybiBrO3AuYXN5bmMmJnAudGltZW91dD4wJiYocz1uLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ay5hYm9ydCgidGltZW91dCIpfSkscC50aW1lb3V0KSk7dHJ5e2M9ITEsci5zZW5kKHcsQyl9Y2F0Y2goUyl7aWYoYyl0aHJvdyBTO0MoLTEsUyl9fWVsc2UgQygtMSwiTm8gVHJhbnNwb3J0Iik7ZnVuY3Rpb24gQyhlLHQsYSx1KXt2YXIgZixkLHcsYixfLHg9dDtjfHwoYz0hMCxzJiZuLmNsZWFyVGltZW91dChzKSxyPXZvaWQgMCxvPXV8fCIiLGsucmVhZHlTdGF0ZT1lPjA/NDowLGY9ZT49MjAwJiZlPDMwMHx8MzA0PT09ZSxhJiYoYj1KdChwLGssYSkpLCFmJiZBLmluQXJyYXkoInNjcmlwdCIscC5kYXRhVHlwZXMpPi0xJiZBLmluQXJyYXkoImpzb24iLHAuZGF0YVR5cGVzKTwwJiYocC5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSksYj1RdChwLGIsayxmKSxmPyhwLmlmTW9kaWZpZWQmJihfPWsuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSxfJiYoQS5sYXN0TW9kaWZpZWRbaV09XyksXz1rLmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksXyYmKEEuZXRhZ1tpXT1fKSksMjA0PT09ZXx8IkhFQUQiPT09cC50eXBlP3g9Im5vY29udGVudCI6MzA0PT09ZT94PSJub3Rtb2RpZmllZCI6KHg9Yi5zdGF0ZSxkPWIuZGF0YSx3PWIuZXJyb3IsZj0hdykpOih3PXgsIWUmJnh8fCh4PSJlcnJvciIsZTwwJiYoZT0wKSkpLGsuc3RhdHVzPWUsay5zdGF0dXNUZXh0PSh0fHx4KSsiIixmP20ucmVzb2x2ZVdpdGgoaCxbZCx4LGtdKTptLnJlamVjdFdpdGgoaCxbayx4LHddKSxrLnN0YXR1c0NvZGUoZyksZz12b2lkIDAsbCYmdi50cmlnZ2VyKGY/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbayxwLGY/ZDp3XSkseS5maXJlV2l0aChoLFtrLHhdKSxsJiYodi50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtrLHBdKSwtLUEuYWN0aXZlfHxBLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4ga30sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEEuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBBLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxBLmVhY2goWyJnZXQiLCJwb3N0Il0sKGZ1bmN0aW9uKGUsdCl7QVt0XT1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4gZyhuKSYmKGk9aXx8cixyPW4sbj12b2lkIDApLEEuYWpheChBLmV4dGVuZCh7dXJsOmUsdHlwZTp0LGRhdGFUeXBlOmksZGF0YTpuLHN1Y2Nlc3M6cn0sQS5pc1BsYWluT2JqZWN0KGUpJiZlKSl9fSkpLEEuYWpheFByZWZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlwZT1lLmhlYWRlcnNbdF18fCIiKX0pKSxBLl9ldmFsVXJsPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQS5hamF4KHt1cmw6ZSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKCl7fX0sZGF0YUZpbHRlcjpmdW5jdGlvbihlKXtBLmdsb2JhbEV2YWwoZSx0LG4pfX0pfSxBLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gdGhpc1swXSYmKGcoZSkmJihlPWUuY2FsbCh0aGlzWzBdKSksdD1BKGUsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCksdGhpc1swXS5wYXJlbnROb2RlJiZ0Lmluc2VydEJlZm9yZSh0aGlzWzBdKSx0Lm1hcCgoZnVuY3Rpb24oKXt2YXIgZT10aGlzO3doaWxlKGUuZmlyc3RFbGVtZW50Q2hpbGQpZT1lLmZpcnN0RWxlbWVudENoaWxkO3JldHVybiBlfSkpLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGUpe3JldHVybiBnKGUpP3RoaXMuZWFjaCgoZnVuY3Rpb24odCl7QSh0aGlzKS53cmFwSW5uZXIoZS5jYWxsKHRoaXMsdCkpfSkpOnRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgdD1BKHRoaXMpLG49dC5jb250ZW50cygpO24ubGVuZ3RoP24ud3JhcEFsbChlKTp0LmFwcGVuZChlKX0pKX0sd3JhcDpmdW5jdGlvbihlKXt2YXIgdD1nKGUpO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKG4pe0EodGhpcykud3JhcEFsbCh0P2UuY2FsbCh0aGlzLG4pOmUpfSkpfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goKGZ1bmN0aW9uKCl7QSh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkpLHRoaXN9fSksQS5leHByLnBzZXVkb3MuaGlkZGVuPWZ1bmN0aW9uKGUpe3JldHVybiFBLmV4cHIucHNldWRvcy52aXNpYmxlKGUpfSxBLmV4cHIucHNldWRvcy52aXNpYmxlPWZ1bmN0aW9uKGUpe3JldHVybiEhKGUub2Zmc2V0V2lkdGh8fGUub2Zmc2V0SGVpZ2h0fHxlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0sQS5hamF4U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgbi5YTUxIdHRwUmVxdWVzdH1jYXRjaChlKXt9fTt2YXIgWnQ9ezA6MjAwLDEyMjM6MjA0fSxlbj1BLmFqYXhTZXR0aW5ncy54aHIoKTt5LmNvcnM9ISFlbiYmIndpdGhDcmVkZW50aWFscyJpbiBlbix5LmFqYXg9ZW49ISFlbixBLmFqYXhUcmFuc3BvcnQoKGZ1bmN0aW9uKGUpe3ZhciB0LHI7aWYoeS5jb3JzfHxlbiYmIWUuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oaSxvKXt2YXIgYSxzPWUueGhyKCk7aWYocy5vcGVuKGUudHlwZSxlLnVybCxlLmFzeW5jLGUudXNlcm5hbWUsZS5wYXNzd29yZCksZS54aHJGaWVsZHMpZm9yKGEgaW4gZS54aHJGaWVsZHMpc1thXT1lLnhockZpZWxkc1thXTtmb3IoYSBpbiBlLm1pbWVUeXBlJiZzLm92ZXJyaWRlTWltZVR5cGUmJnMub3ZlcnJpZGVNaW1lVHlwZShlLm1pbWVUeXBlKSxlLmNyb3NzRG9tYWlufHxpWyJYLVJlcXVlc3RlZC1XaXRoIl18fChpWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksaSlzLnNldFJlcXVlc3RIZWFkZXIoYSxpW2FdKTt0PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3QmJih0PXI9cy5vbmxvYWQ9cy5vbmVycm9yPXMub25hYm9ydD1zLm9udGltZW91dD1zLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3MuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9PXR5cGVvZiBzLnN0YXR1cz9vKDAsImVycm9yIik6byhzLnN0YXR1cyxzLnN0YXR1c1RleHQpOm8oWnRbcy5zdGF0dXNdfHxzLnN0YXR1cyxzLnN0YXR1c1RleHQsInRleHQiIT09KHMucmVzcG9uc2VUeXBlfHwidGV4dCIpfHwic3RyaW5nIiE9PXR5cGVvZiBzLnJlc3BvbnNlVGV4dD97YmluYXJ5OnMucmVzcG9uc2V9Ont0ZXh0OnMucmVzcG9uc2VUZXh0fSxzLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSl9fSxzLm9ubG9hZD10KCkscj1zLm9uZXJyb3I9cy5vbnRpbWVvdXQ9dCgiZXJyb3IiKSx2b2lkIDAhPT1zLm9uYWJvcnQ/cy5vbmFib3J0PXI6cy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT09cy5yZWFkeVN0YXRlJiZuLnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dCYmcigpfSkpfSx0PXQoImFib3J0Iik7dHJ5e3Muc2VuZChlLmhhc0NvbnRlbnQmJmUuZGF0YXx8bnVsbCl9Y2F0Y2godSl7aWYodCl0aHJvdyB1fX0sYWJvcnQ6ZnVuY3Rpb24oKXt0JiZ0KCl9fX0pKSxBLmFqYXhQcmVmaWx0ZXIoKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSksQS5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oZSl7cmV0dXJuIEEuZ2xvYmFsRXZhbChlKSxlfX19KSxBLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsKGZ1bmN0aW9uKGUpe3ZvaWQgMD09PWUuY2FjaGUmJihlLmNhY2hlPSExKSxlLmNyb3NzRG9tYWluJiYoZS50eXBlPSJHRVQiKX0pKSxBLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsKGZ1bmN0aW9uKGUpe3ZhciB0LG47aWYoZS5jcm9zc0RvbWFpbnx8ZS5zY3JpcHRBdHRycylyZXR1cm57c2VuZDpmdW5jdGlvbihyLGkpe3Q9QSgiPHNjcmlwdD4iKS5hdHRyKGUuc2NyaXB0QXR0cnN8fHt9KS5wcm9wKHtjaGFyc2V0OmUuc2NyaXB0Q2hhcnNldCxzcmM6ZS51cmx9KS5vbigibG9hZCBlcnJvciIsbj1mdW5jdGlvbihlKXt0LnJlbW92ZSgpLG49bnVsbCxlJiZpKCJlcnJvciI9PT1lLnR5cGU/NDA0OjIwMCxlLnR5cGUpfSksYi5oZWFkLmFwcGVuZENoaWxkKHRbMF0pfSxhYm9ydDpmdW5jdGlvbigpe24mJm4oKX19fSkpO3ZhciB0bj1bXSxubj0vKD0pXD8oPz0mfCQpfFw/XD8vO0EuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXt2YXIgZT10bi5wb3AoKXx8QS5leHBhbmRvKyJfIitCdC5ndWlkKys7cmV0dXJuIHRoaXNbZV09ITAsZX19KSxBLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLChmdW5jdGlvbihlLHQscil7dmFyIGksbyxhLHM9ITEhPT1lLmpzb25wJiYobm4udGVzdChlLnVybCk/InVybCI6InN0cmluZyI9PT10eXBlb2YgZS5kYXRhJiYwPT09KGUuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmbm4udGVzdChlLmRhdGEpJiYiZGF0YSIpO2lmKHN8fCJqc29ucCI9PT1lLmRhdGFUeXBlc1swXSlyZXR1cm4gaT1lLmpzb25wQ2FsbGJhY2s9ZyhlLmpzb25wQ2FsbGJhY2spP2UuanNvbnBDYWxsYmFjaygpOmUuanNvbnBDYWxsYmFjayxzP2Vbc109ZVtzXS5yZXBsYWNlKG5uLCIkMSIraSk6ITEhPT1lLmpzb25wJiYoZS51cmwrPShEdC50ZXN0KGUudXJsKT8iJiI6Ij8iKStlLmpzb25wKyI9IitpKSxlLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gYXx8QS5lcnJvcihpKyIgd2FzIG5vdCBjYWxsZWQiKSxhWzBdfSxlLmRhdGFUeXBlc1swXT0ianNvbiIsbz1uW2ldLG5baV09ZnVuY3Rpb24oKXthPWFyZ3VtZW50c30sci5hbHdheXMoKGZ1bmN0aW9uKCl7dm9pZCAwPT09bz9BKG4pLnJlbW92ZVByb3AoaSk6bltpXT1vLGVbaV0mJihlLmpzb25wQ2FsbGJhY2s9dC5qc29ucENhbGxiYWNrLHRuLnB1c2goaSkpLGEmJmcobykmJm8oYVswXSksYT1vPXZvaWQgMH0pKSwic2NyaXB0In0pKSx5LmNyZWF0ZUhUTUxEb2N1bWVudD1mdW5jdGlvbigpe3ZhciBlPWIuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5O3JldHVybiBlLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1lLmNoaWxkTm9kZXMubGVuZ3RofSgpLEEucGFyc2VIVE1MPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4ic3RyaW5nIiE9PXR5cGVvZiBlP1tdOigiYm9vbGVhbiI9PT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9jdW1lbnQ/KHQ9Yi5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLHI9dC5jcmVhdGVFbGVtZW50KCJiYXNlIiksci5ocmVmPWIubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQocikpOnQ9YiksaT1qLmV4ZWMoZSksbz0hbiYmW10saT9bdC5jcmVhdGVFbGVtZW50KGlbMV0pXTooaT1BZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmQShvKS5yZW1vdmUoKSxBLm1lcmdlKFtdLGkuY2hpbGROb2RlcykpKTt2YXIgcixpLG99LEEuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybiBzPi0xJiYocj1rdChlLnNsaWNlKHMpKSxlPWUuc2xpY2UoMCxzKSksZyh0KT8obj10LHQ9dm9pZCAwKTp0JiYib2JqZWN0Ij09PXR5cGVvZiB0JiYoaT0iUE9TVCIpLGEubGVuZ3RoPjAmJkEuYWpheCh7dXJsOmUsdHlwZTppfHwiR0VUIixkYXRhVHlwZToiaHRtbCIsZGF0YTp0fSkuZG9uZSgoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKHI/QSgiPGRpdj4iKS5hcHBlbmQoQS5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KSkuYWx3YXlzKG4mJmZ1bmN0aW9uKGUsdCl7YS5lYWNoKChmdW5jdGlvbigpe24uYXBwbHkodGhpcyxvfHxbZS5yZXNwb25zZVRleHQsdCxlXSl9KSl9KSx0aGlzfSxBLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbihlKXtyZXR1cm4gQS5ncmVwKEEudGltZXJzLChmdW5jdGlvbih0KXtyZXR1cm4gZT09PXQuZWxlbX0pKS5sZW5ndGh9LEEub2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksbyxhLHMsdSxjLGw9QS5jc3MoZSwicG9zaXRpb24iKSxmPUEoZSksZD17fTsic3RhdGljIj09PWwmJihlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLHM9Zi5vZmZzZXQoKSxvPUEuY3NzKGUsInRvcCIpLHU9QS5jc3MoZSwibGVmdCIpLGM9KCJhYnNvbHV0ZSI9PT1sfHwiZml4ZWQiPT09bCkmJihvK3UpLmluZGV4T2YoImF1dG8iKT4tMSxjPyhyPWYucG9zaXRpb24oKSxhPXIudG9wLGk9ci5sZWZ0KTooYT1wYXJzZUZsb2F0KG8pfHwwLGk9cGFyc2VGbG9hdCh1KXx8MCksZyh0KSYmKHQ9dC5jYWxsKGUsbixBLmV4dGVuZCh7fSxzKSkpLG51bGwhPXQudG9wJiYoZC50b3A9dC50b3Atcy50b3ArYSksbnVsbCE9dC5sZWZ0JiYoZC5sZWZ0PXQubGVmdC1zLmxlZnQraSksInVzaW5nImluIHQ/dC51c2luZy5jYWxsKGUsZCk6Zi5jc3MoZCl9fSxBLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKGUpe2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PWU/dGhpczp0aGlzLmVhY2goKGZ1bmN0aW9uKHQpe0Eub2Zmc2V0LnNldE9mZnNldCh0aGlzLGUsdCl9KSk7dmFyIHQsbixyPXRoaXNbMF07cmV0dXJuIHI/ci5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8odD1yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49ci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LHt0b3A6dC50b3Arbi5wYWdlWU9mZnNldCxsZWZ0OnQubGVmdCtuLnBhZ2VYT2Zmc2V0fSk6e3RvcDowLGxlZnQ6MH06dm9pZCAwfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBlLHQsbixyPXRoaXNbMF0saT17dG9wOjAsbGVmdDowfTtpZigiZml4ZWQiPT09QS5jc3MociwicG9zaXRpb24iKSl0PXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZWxzZXt0PXRoaXMub2Zmc2V0KCksbj1yLm93bmVyRG9jdW1lbnQsZT1yLm9mZnNldFBhcmVudHx8bi5kb2N1bWVudEVsZW1lbnQ7d2hpbGUoZSYmKGU9PT1uLmJvZHl8fGU9PT1uLmRvY3VtZW50RWxlbWVudCkmJiJzdGF0aWMiPT09QS5jc3MoZSwicG9zaXRpb24iKSllPWUucGFyZW50Tm9kZTtlJiZlIT09ciYmMT09PWUubm9kZVR5cGUmJihpPUEoZSkub2Zmc2V0KCksaS50b3ArPUEuY3NzKGUsImJvcmRlclRvcFdpZHRoIiwhMCksaS5sZWZ0Kz1BLmNzcyhlLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDp0LnRvcC1pLnRvcC1BLmNzcyhyLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OnQubGVmdC1pLmxlZnQtQS5jc3MociwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcCgoZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShlJiYic3RhdGljIj09PUEuY3NzKGUsInBvc2l0aW9uIikpZT1lLm9mZnNldFBhcmVudDtyZXR1cm4gZXx8bGV9KSl9fSksQS5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LChmdW5jdGlvbihlLHQpe3ZhciBuPSJwYWdlWU9mZnNldCI9PT10O0EuZm5bZV09ZnVuY3Rpb24ocil7cmV0dXJuIFgodGhpcywoZnVuY3Rpb24oZSxyLGkpe3ZhciBvO2lmKHcoZSk/bz1lOjk9PT1lLm5vZGVUeXBlJiYobz1lLmRlZmF1bHRWaWV3KSx2b2lkIDA9PT1pKXJldHVybiBvP29bdF06ZVtyXTtvP28uc2Nyb2xsVG8obj9vLnBhZ2VYT2Zmc2V0Omksbj9pOm8ucGFnZVlPZmZzZXQpOmVbcl09aX0pLGUscixhcmd1bWVudHMubGVuZ3RoKX19KSksQS5lYWNoKFsidG9wIiwibGVmdCJdLChmdW5jdGlvbihlLHQpe0EuY3NzSG9va3NbdF09WGUoeS5waXhlbFBvc2l0aW9uLChmdW5jdGlvbihlLG4pe2lmKG4pcmV0dXJuIG49VmUoZSx0KSxVZS50ZXN0KG4pP0EoZSkucG9zaXRpb24oKVt0XSsicHgiOm59KSl9KSksQS5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sKGZ1bmN0aW9uKGUsdCl7QS5lYWNoKHtwYWRkaW5nOiJpbm5lciIrZSxjb250ZW50OnQsIiI6Im91dGVyIitlfSwoZnVuY3Rpb24obixyKXtBLmZuW3JdPWZ1bmN0aW9uKGksbyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aCYmKG58fCJib29sZWFuIiE9PXR5cGVvZiBpKSxzPW58fCghMD09PWl8fCEwPT09bz8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFgodGhpcywoZnVuY3Rpb24odCxuLGkpe3ZhciBvO3JldHVybiB3KHQpPzA9PT1yLmluZGV4T2YoIm91dGVyIik/dFsiaW5uZXIiK2VdOnQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2VdOjk9PT10Lm5vZGVUeXBlPyhvPXQuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KHQuYm9keVsic2Nyb2xsIitlXSxvWyJzY3JvbGwiK2VdLHQuYm9keVsib2Zmc2V0IitlXSxvWyJvZmZzZXQiK2VdLG9bImNsaWVudCIrZV0pKTp2b2lkIDA9PT1pP0EuY3NzKHQsbixzKTpBLnN0eWxlKHQsbixpLHMpfSksdCxhP2k6dm9pZCAwLGEpfX0pKX0pKSxBLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSwoZnVuY3Rpb24oZSx0KXtBLmZuW3RdPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9uKHQsZSl9fSkpLEEuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdGhpcy5vbihlLG51bGwsdCxuKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub2ZmKGUsbnVsbCx0KX0sZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMub24odCxlLG4scil9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihlLCIqKiIpOnRoaXMub2ZmKHQsZXx8IioqIixuKX0saG92ZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGUpLm1vdXNlbGVhdmUodHx8ZSl9fSksQS5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNvdXQgcmVzaXplIHNjcm9sbCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGNvbnRleHRtZW51Ii5zcGxpdCgiICIpLChmdW5jdGlvbihlLHQpe0EuZm5bdF09ZnVuY3Rpb24oZSxuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24odCxudWxsLGUsbik6dGhpcy50cmlnZ2VyKHQpfX0pKTt2YXIgcm49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nO0EucHJveHk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGk7aWYoInN0cmluZyI9PT10eXBlb2YgdCYmKG49ZVt0XSx0PWUsZT1uKSxnKGUpKXJldHVybiByPXUuY2FsbChhcmd1bWVudHMsMiksaT1mdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KHR8fHRoaXMsci5jb25jYXQodS5jYWxsKGFyZ3VtZW50cykpKX0saS5ndWlkPWUuZ3VpZD1lLmd1aWR8fEEuZ3VpZCsrLGl9LEEuaG9sZFJlYWR5PWZ1bmN0aW9uKGUpe2U/QS5yZWFkeVdhaXQrKzpBLnJlYWR5KCEwKX0sQS5pc0FycmF5PUFycmF5LmlzQXJyYXksQS5wYXJzZUpTT049SlNPTi5wYXJzZSxBLm5vZGVOYW1lPUQsQS5pc0Z1bmN0aW9uPWcsQS5pc1dpbmRvdz13LEEuY2FtZWxDYXNlPVEsQS50eXBlPWssQS5ub3c9RGF0ZS5ub3csQS5pc051bWVyaWM9ZnVuY3Rpb24oZSl7dmFyIHQ9QS50eXBlKGUpO3JldHVybigibnVtYmVyIj09PXR8fCJzdHJpbmciPT09dCkmJiFpc05hTihlLXBhcnNlRmxvYXQoZSkpfSxBLnRyaW09ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/IiI6KGUrIiIpLnJlcGxhY2Uocm4sIiIpfSxyPVtdLGk9ZnVuY3Rpb24oKXtyZXR1cm4gQX0uYXBwbHkodCxyKSx2b2lkIDA9PT1pfHwoZS5leHBvcnRzPWkpO3ZhciBvbj1uLmpRdWVyeSxhbj1uLiQ7cmV0dXJuIEEubm9Db25mbGljdD1mdW5jdGlvbihlKXtyZXR1cm4gbi4kPT09QSYmKG4uJD1hbiksZSYmbi5qUXVlcnk9PT1BJiYobi5qUXVlcnk9b24pLEF9LCJ1bmRlZmluZWQiPT09dHlwZW9mIG8mJihuLmpRdWVyeT1uLiQ9QSksQX0pKX0sIjExYzEiOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJjNDM3IiksaT1uKCJjNjRlIiksbz1pO28udjE9cixvLnY0PWksZS5leHBvcnRzPW99LCIxMWRjIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0LHIpe3ZhciBpPTY1NTM2LG89NDI5NDk2NzI5NTtmdW5jdGlvbiBhKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfXZhciBzPW4oIjg3MDciKS5CdWZmZXIsdT10LmNyeXB0b3x8dC5tc0NyeXB0bztmdW5jdGlvbiBjKGUsdCl7aWYoZT5vKXRocm93IG5ldyBSYW5nZUVycm9yKCJyZXF1ZXN0ZWQgdG9vIG1hbnkgcmFuZG9tIGJ5dGVzIik7dmFyIG49cy5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT5pKWZvcih2YXIgYT0wO2E8ZTthKz1pKXUuZ2V0UmFuZG9tVmFsdWVzKG4uc2xpY2UoYSxhK2kpKTtlbHNlIHUuZ2V0UmFuZG9tVmFsdWVzKG4pO3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdD9yLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxuKX0pKTpufXUmJnUuZ2V0UmFuZG9tVmFsdWVzP2UuZXhwb3J0cz1jOmUuZXhwb3J0cz1hfSkuY2FsbCh0aGlzLG4oImM4YmEiKSxuKCI0MzYyIikpfSwxMzgyOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIxMTMyIiksbigiNzJmZSIpLG4oIjJiNzkiKSxuKCIzOGJhIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZSxuPXQubGliLHI9bi5TdHJlYW1DaXBoZXIsaT10LmFsZ28sbz1bXSxhPVtdLHM9W10sdT1pLlJhYmJpdD1yLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5fa2V5LndvcmRzLHQ9dGhpcy5jZmcuaXYsbj0wO248NDtuKyspZVtuXT0xNjcxMTkzNSYoZVtuXTw8OHxlW25dPj4+MjQpfDQyNzgyNTUzNjAmKGVbbl08PDI0fGVbbl0+Pj44KTt2YXIgcj10aGlzLl9YPVtlWzBdLGVbM108PDE2fGVbMl0+Pj4xNixlWzFdLGVbMF08PDE2fGVbM10+Pj4xNixlWzJdLGVbMV08PDE2fGVbMF0+Pj4xNixlWzNdLGVbMl08PDE2fGVbMV0+Pj4xNl0saT10aGlzLl9DPVtlWzJdPDwxNnxlWzJdPj4+MTYsNDI5NDkwMTc2MCZlWzBdfDY1NTM1JmVbMV0sZVszXTw8MTZ8ZVszXT4+PjE2LDQyOTQ5MDE3NjAmZVsxXXw2NTUzNSZlWzJdLGVbMF08PDE2fGVbMF0+Pj4xNiw0Mjk0OTAxNzYwJmVbMl18NjU1MzUmZVszXSxlWzFdPDwxNnxlWzFdPj4+MTYsNDI5NDkwMTc2MCZlWzNdfDY1NTM1JmVbMF1dO3RoaXMuX2I9MDtmb3Iobj0wO248NDtuKyspYy5jYWxsKHRoaXMpO2ZvcihuPTA7bjw4O24rKylpW25dXj1yW24rNCY3XTtpZih0KXt2YXIgbz10LndvcmRzLGE9b1swXSxzPW9bMV0sdT0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihzPDw4fHM+Pj4yNCl8NDI3ODI1NTM2MCYoczw8MjR8cz4+PjgpLGY9dT4+PjE2fDQyOTQ5MDE3NjAmbCxkPWw8PDE2fDY1NTM1JnU7aVswXV49dSxpWzFdXj1mLGlbMl1ePWwsaVszXV49ZCxpWzRdXj11LGlbNV1ePWYsaVs2XV49bCxpWzddXj1kO2ZvcihuPTA7bjw0O24rKyljLmNhbGwodGhpcyl9fSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9YO2MuY2FsbCh0aGlzKSxvWzBdPW5bMF1ebls1XT4+PjE2Xm5bM108PDE2LG9bMV09blsyXV5uWzddPj4+MTZebls1XTw8MTYsb1syXT1uWzRdXm5bMV0+Pj4xNl5uWzddPDwxNixvWzNdPW5bNl1eblszXT4+PjE2Xm5bMV08PDE2O2Zvcih2YXIgcj0wO3I8NDtyKyspb1tyXT0xNjcxMTkzNSYob1tyXTw8OHxvW3JdPj4+MjQpfDQyNzgyNTUzNjAmKG9bcl08PDI0fG9bcl0+Pj44KSxlW3Qrcl1ePW9bcl19LGJsb2NrU2l6ZTo0LGl2U2l6ZToyfSk7ZnVuY3Rpb24gYygpe2Zvcih2YXIgZT10aGlzLl9YLHQ9dGhpcy5fQyxuPTA7bjw4O24rKylhW25dPXRbbl07dFswXT10WzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHRbMV09dFsxXSszNTQ1MDUyMzcxKyh0WzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsdFsyXT10WzJdKzg4NjI2MzA5MisodFsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHRbM109dFszXSsxMjk1MzA3NTk3Kyh0WzJdPj4+MDxhWzJdPj4+MD8xOjApfDAsdFs0XT10WzRdKzM1NDUwNTIzNzErKHRbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCx0WzVdPXRbNV0rODg2MjYzMDkyKyh0WzRdPj4+MDxhWzRdPj4+MD8xOjApfDAsdFs2XT10WzZdKzEyOTUzMDc1OTcrKHRbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCx0WzddPXRbN10rMzU0NTA1MjM3MSsodFs2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9dFs3XT4+PjA8YVs3XT4+PjA/MTowO2ZvcihuPTA7bjw4O24rKyl7dmFyIHI9ZVtuXSt0W25dLGk9NjU1MzUmcixvPXI+Pj4xNix1PSgoaSppPj4+MTcpK2kqbz4+PjE1KStvKm8sYz0oKDQyOTQ5MDE3NjAmcikqcnwwKSsoKDY1NTM1JnIpKnJ8MCk7c1tuXT11XmN9ZVswXT1zWzBdKyhzWzddPDwxNnxzWzddPj4+MTYpKyhzWzZdPDwxNnxzWzZdPj4+MTYpfDAsZVsxXT1zWzFdKyhzWzBdPDw4fHNbMF0+Pj4yNCkrc1s3XXwwLGVbMl09c1syXSsoc1sxXTw8MTZ8c1sxXT4+PjE2KSsoc1swXTw8MTZ8c1swXT4+PjE2KXwwLGVbM109c1szXSsoc1syXTw8OHxzWzJdPj4+MjQpK3NbMV18MCxlWzRdPXNbNF0rKHNbM108PDE2fHNbM10+Pj4xNikrKHNbMl08PDE2fHNbMl0+Pj4xNil8MCxlWzVdPXNbNV0rKHNbNF08PDh8c1s0XT4+PjI0KStzWzNdfDAsZVs2XT1zWzZdKyhzWzVdPDwxNnxzWzVdPj4+MTYpKyhzWzRdPDwxNnxzWzRdPj4+MTYpfDAsZVs3XT1zWzddKyhzWzZdPDw4fHNbNl0+Pj4yNCkrc1s1XXwwfXQuUmFiYml0PXIuX2NyZWF0ZUhlbHBlcih1KX0oKSxlLlJhYmJpdH0pKX0sIjE3ZTEiOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyKXtlLmV4cG9ydHM9cihuKCIyMWJmIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyKXt2YXIgdD1lLG49dC5saWIscj1uLldvcmRBcnJheSxpPXIuaW5pdCxvPXIuaW5pdD1mdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihlPW5ldyBVaW50OEFycmF5KGUpKSwoZSBpbnN0YW5jZW9mIEludDhBcnJheXx8InVuZGVmaW5lZCIhPT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJmUgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8ZSBpbnN0YW5jZW9mIEludDE2QXJyYXl8fGUgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8ZSBpbnN0YW5jZW9mIEludDMyQXJyYXl8fGUgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8ZSBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8ZSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkmJihlPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpKSxlIGluc3RhbmNlb2YgVWludDhBcnJheSl7Zm9yKHZhciB0PWUuYnl0ZUxlbmd0aCxuPVtdLHI9MDtyPHQ7cisrKW5bcj4+PjJdfD1lW3JdPDwyNC1yJTQqODtpLmNhbGwodGhpcyxuLHQpfWVsc2UgaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O28ucHJvdG90eXBlPXJ9fSgpLGUubGliLldvcmRBcnJheX0pKX0sIjE5MWIiOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCI5NGY4IikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZSxuPXQubGliLHI9bi5Xb3JkQXJyYXksaT10LmFsZ28sbz1pLlNIQTI1NixhPWkuU0hBMjI0PW8uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IHIuaW5pdChbMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBlPW8uX2RvRmluYWxpemUuY2FsbCh0aGlzKTtyZXR1cm4gZS5zaWdCeXRlcy09NCxlfX0pO3QuU0hBMjI0PW8uX2NyZWF0ZUhlbHBlcihhKSx0LkhtYWNTSEEyMjQ9by5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSxlLlNIQTIyNH0pKX0sIjFmYjUiOmZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5ieXRlTGVuZ3RoPWwsdC50b0J5dGVBcnJheT1kLHQuZnJvbUJ5dGVBcnJheT12O2Zvcih2YXIgcj1bXSxpPVtdLG89InVuZGVmaW5lZCIhPT10eXBlb2YgVWludDhBcnJheT9VaW50OEFycmF5OkFycmF5LGE9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHM9MCx1PWEubGVuZ3RoO3M8dTsrK3MpcltzXT1hW3NdLGlbYS5jaGFyQ29kZUF0KHMpXT1zO2Z1bmN0aW9uIGMoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodCU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7dmFyIG49ZS5pbmRleE9mKCI9Iik7LTE9PT1uJiYobj10KTt2YXIgcj1uPT09dD8wOjQtbiU0O3JldHVybltuLHJdfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9YyhlKSxuPXRbMF0scj10WzFdO3JldHVybiAzKihuK3IpLzQtcn1mdW5jdGlvbiBmKGUsdCxuKXtyZXR1cm4gMyoodCtuKS80LW59ZnVuY3Rpb24gZChlKXt2YXIgdCxuLHI9YyhlKSxhPXJbMF0scz1yWzFdLHU9bmV3IG8oZihlLGEscykpLGw9MCxkPXM+MD9hLTQ6YTtmb3Iobj0wO248ZDtuKz00KXQ9aVtlLmNoYXJDb2RlQXQobildPDwxOHxpW2UuY2hhckNvZGVBdChuKzEpXTw8MTJ8aVtlLmNoYXJDb2RlQXQobisyKV08PDZ8aVtlLmNoYXJDb2RlQXQobiszKV0sdVtsKytdPXQ+PjE2JjI1NSx1W2wrK109dD4+OCYyNTUsdVtsKytdPTI1NSZ0O3JldHVybiAyPT09cyYmKHQ9aVtlLmNoYXJDb2RlQXQobildPDwyfGlbZS5jaGFyQ29kZUF0KG4rMSldPj40LHVbbCsrXT0yNTUmdCksMT09PXMmJih0PWlbZS5jaGFyQ29kZUF0KG4pXTw8MTB8aVtlLmNoYXJDb2RlQXQobisxKV08PDR8aVtlLmNoYXJDb2RlQXQobisyKV0+PjIsdVtsKytdPXQ+PjgmMjU1LHVbbCsrXT0yNTUmdCksdX1mdW5jdGlvbiBwKGUpe3JldHVybiByW2U+PjE4JjYzXStyW2U+PjEyJjYzXStyW2U+PjYmNjNdK3JbNjMmZV19ZnVuY3Rpb24gaChlLHQsbil7Zm9yKHZhciByLGk9W10sbz10O288bjtvKz0zKXI9KGVbb108PDE2JjE2NzExNjgwKSsoZVtvKzFdPDw4JjY1MjgwKSsoMjU1JmVbbysyXSksaS5wdXNoKHAocikpO3JldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIHYoZSl7Zm9yKHZhciB0LG49ZS5sZW5ndGgsaT1uJTMsbz1bXSxhPTE2MzgzLHM9MCx1PW4taTtzPHU7cys9YSlvLnB1c2goaChlLHMscythPnU/dTpzK2EpKTtyZXR1cm4gMT09PWk/KHQ9ZVtuLTFdLG8ucHVzaChyW3Q+PjJdK3JbdDw8NCY2M10rIj09IikpOjI9PT1pJiYodD0oZVtuLTJdPDw4KStlW24tMV0sby5wdXNoKHJbdD4+MTBdK3JbdD4+NCY2M10rclt0PDwyJjYzXSsiPSIpKSxvLmpvaW4oIiIpfWlbIi0iLmNoYXJDb2RlQXQoMCldPTYyLGlbIl8iLmNoYXJDb2RlQXQoMCldPTYzfSwiMjFiZiI6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LG4pe2UuZXhwb3J0cz1uKCl9KSgwLChmdW5jdGlvbigpe3ZhciBlPWV8fGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXJldHVybiBmdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4gZS5wcm90b3R5cGU9dCxuPW5ldyBlLGUucHJvdG90eXBlPW51bGwsbn19KCkscj17fSxpPXIubGliPXt9LG89aS5CYXNlPWZ1bmN0aW9uKCl7cmV0dXJue2V4dGVuZDpmdW5jdGlvbihlKXt2YXIgdD1uKHRoaXMpO3JldHVybiBlJiZ0Lm1peEluKGUpLHQuaGFzT3duUHJvcGVydHkoImluaXQiKSYmdGhpcy5pbml0IT09dC5pbml0fHwodC5pbml0PWZ1bmN0aW9uKCl7dC4kc3VwZXIuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSx0LmluaXQucHJvdG90eXBlPXQsdC4kc3VwZXI9dGhpcyx0fSxjcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmV4dGVuZCgpO3JldHVybiBlLmluaXQuYXBwbHkoZSxhcmd1bWVudHMpLGV9LGluaXQ6ZnVuY3Rpb24oKXt9LG1peEluOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJih0aGlzW3RdPWVbdF0pO2UuaGFzT3duUHJvcGVydHkoInRvU3RyaW5nIikmJih0aGlzLnRvU3RyaW5nPWUudG9TdHJpbmcpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19fSgpLGE9aS5Xb3JkQXJyYXk9by5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSxuKXtlPXRoaXMud29yZHM9ZXx8W10sdGhpcy5zaWdCeXRlcz1uIT10P246NCplLmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fHUpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMud29yZHMsbj1lLndvcmRzLHI9dGhpcy5zaWdCeXRlcyxpPWUuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLHIlNClmb3IodmFyIG89MDtvPGk7bysrKXt2YXIgYT1uW28+Pj4yXT4+PjI0LW8lNCo4JjI1NTt0W3Irbz4+PjJdfD1hPDwyNC0ocitvKSU0Kjh9ZWxzZSBmb3Iobz0wO288aTtvKz00KXRbcitvPj4+Ml09bltvPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPWksdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndvcmRzLG49dGhpcy5zaWdCeXRlczt0W24+Pj4yXSY9NDI5NDk2NzI5NTw8MzItbiU0KjgsdC5sZW5ndGg9ZS5jZWlsKG4vNCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGU9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBlLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksZX0scmFuZG9tOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPVtdLGk9ZnVuY3Rpb24odCl7dD10O3ZhciBuPTk4NzY1NDMyMSxyPTQyOTQ5NjcyOTU7cmV0dXJuIGZ1bmN0aW9uKCl7bj0zNjk2OSooNjU1MzUmbikrKG4+PjE2KSZyLHQ9MThlMyooNjU1MzUmdCkrKHQ+PjE2KSZyO3ZhciBpPShuPDwxNikrdCZyO3JldHVybiBpLz00Mjk0OTY3Mjk2LGkrPS41LGkqKGUucmFuZG9tKCk+LjU/MTotMSl9fSxvPTA7bzx0O28rPTQpe3ZhciBzPWkoNDI5NDk2NzI5Nioobnx8ZS5yYW5kb20oKSkpO249OTg3NjU0MDcxKnMoKSxyLnB1c2goNDI5NDk2NzI5NipzKCl8MCl9cmV0dXJuIG5ldyBhLmluaXQocix0KX19KSxzPXIuZW5jPXt9LHU9cy5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS53b3JkcyxuPWUuc2lnQnl0ZXMscj1bXSxpPTA7aTxuO2krKyl7dmFyIG89dFtpPj4+Ml0+Pj4yNC1pJTQqOCYyNTU7ci5wdXNoKChvPj4+NCkudG9TdHJpbmcoMTYpKSxyLnB1c2goKDE1Jm8pLnRvU3RyaW5nKDE2KSl9cmV0dXJuIHIuam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxuPVtdLHI9MDtyPHQ7cis9MiluW3I+Pj4zXXw9cGFyc2VJbnQoZS5zdWJzdHIociwyKSwxNik8PDI0LXIlOCo0O3JldHVybiBuZXcgYS5pbml0KG4sdC8yKX19LGM9cy5MYXRpbjE9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS53b3JkcyxuPWUuc2lnQnl0ZXMscj1bXSxpPTA7aTxuO2krKyl7dmFyIG89dFtpPj4+Ml0+Pj4yNC1pJTQqOCYyNTU7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiByLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgsbj1bXSxyPTA7cjx0O3IrKyluW3I+Pj4yXXw9KDI1NSZlLmNoYXJDb2RlQXQocikpPDwyNC1yJTQqODtyZXR1cm4gbmV3IGEuaW5pdChuLHQpfX0sbD1zLlV0Zjg9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoYy5zdHJpbmdpZnkoZSkpKX1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBVVEYtOCBkYXRhIil9fSxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gYy5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpKX19LGY9aS5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPW8uZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IGEuaW5pdCx0aGlzLl9uRGF0YUJ5dGVzPTB9LF9hcHBlbmQ6ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1sLnBhcnNlKGUpKSx0aGlzLl9kYXRhLmNvbmNhdChlKSx0aGlzLl9uRGF0YUJ5dGVzKz1lLnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbih0KXt2YXIgbj10aGlzLl9kYXRhLHI9bi53b3JkcyxpPW4uc2lnQnl0ZXMsbz10aGlzLmJsb2NrU2l6ZSxzPTQqbyx1PWkvczt1PXQ/ZS5jZWlsKHUpOmUubWF4KCgwfHUpLXRoaXMuX21pbkJ1ZmZlclNpemUsMCk7dmFyIGM9dSpvLGw9ZS5taW4oNCpjLGkpO2lmKGMpe2Zvcih2YXIgZj0wO2Y8YztmKz1vKXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKHIsZik7dmFyIGQ9ci5zcGxpY2UoMCxjKTtuLnNpZ0J5dGVzLT1sfXJldHVybiBuZXcgYS5pbml0KGQsbCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGU9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBlLl9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSxlfSxfbWluQnVmZmVyU2l6ZTowfSksZD0oaS5IYXNoZXI9Zi5leHRlbmQoe2NmZzpvLmV4dGVuZCgpLGluaXQ6ZnVuY3Rpb24oZSl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKGUpLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2FwcGVuZChlKSx0aGlzLl9wcm9jZXNzKCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24oZSl7ZSYmdGhpcy5fYXBwZW5kKGUpO3ZhciB0PXRoaXMuX2RvRmluYWxpemUoKTtyZXR1cm4gdH0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBlLmluaXQobikuZmluYWxpemUodCl9fSxfY3JlYXRlSG1hY0hlbHBlcjpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IGQuSE1BQy5pbml0KGUsbikuZmluYWxpemUodCl9fX0pLHIuYWxnbz17fSk7cmV0dXJuIHJ9KE1hdGgpO3JldHVybiBlfSkpfSwyMzY2OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdLHI9MDtyPDI1NjsrK3IpbltyXT0ocisyNTYpLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSk7ZnVuY3Rpb24gaShlLHQpe3ZhciByPXR8fDAsaT1uO3JldHVybltpW2VbcisrXV0saVtlW3IrK11dLGlbZVtyKytdXSxpW2VbcisrXV0sIi0iLGlbZVtyKytdXSxpW2VbcisrXV0sIi0iLGlbZVtyKytdXSxpW2VbcisrXV0sIi0iLGlbZVtyKytdXSxpW2VbcisrXV0sIi0iLGlbZVtyKytdXSxpW2VbcisrXV0saVtlW3IrK11dLGlbZVtyKytdXSxpW2VbcisrXV0saVtlW3IrK11dXS5qb2luKCIiKX1lLmV4cG9ydHM9aX0sMjg3NzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixpLG8sYSxzKXt2YXIgdSxjPSJmdW5jdGlvbiI9PT10eXBlb2YgZT9lLm9wdGlvbnM6ZTtpZih0JiYoYy5yZW5kZXI9dCxjLnN0YXRpY1JlbmRlckZucz1uLGMuX2NvbXBpbGVkPSEwKSxyJiYoYy5mdW5jdGlvbmFsPSEwKSxvJiYoYy5fc2NvcGVJZD0iZGF0YS12LSIrbyksYT8odT1mdW5jdGlvbihlKXtlPWV8fHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fHx0aGlzLnBhcmVudCYmdGhpcy5wYXJlbnQuJHZub2RlJiZ0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCxlfHwidW5kZWZpbmVkIj09PXR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9ffHwoZT1fX1ZVRV9TU1JfQ09OVEVYVF9fKSxpJiZpLmNhbGwodGhpcyxlKSxlJiZlLl9yZWdpc3RlcmVkQ29tcG9uZW50cyYmZS5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKGEpfSxjLl9zc3JSZWdpc3Rlcj11KTppJiYodT1zP2Z1bmN0aW9uKCl7aS5jYWxsKHRoaXMsKGMuZnVuY3Rpb25hbD90aGlzLnBhcmVudDp0aGlzKS4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KX06aSksdSlpZihjLmZ1bmN0aW9uYWwpe2MuX2luamVjdFN0eWxlcz11O3ZhciBsPWMucmVuZGVyO2MucmVuZGVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUuY2FsbCh0KSxsKGUsdCl9fWVsc2V7dmFyIGY9Yy5iZWZvcmVDcmVhdGU7Yy5iZWZvcmVDcmVhdGU9Zj9bXS5jb25jYXQoZix1KTpbdV19cmV0dXJue2V4cG9ydHM6ZSxvcHRpb25zOmN9fW4uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gcn0pKX0sIjJhNjYiOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIzOGJhIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFkLlplcm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj00KnQ7ZS5jbGFtcCgpLGUuc2lnQnl0ZXMrPW4tKGUuc2lnQnl0ZXMlbnx8bil9LHVucGFkOmZ1bmN0aW9uKGUpe3ZhciB0PWUud29yZHMsbj1lLnNpZ0J5dGVzLTE7d2hpbGUoISh0W24+Pj4yXT4+PjI0LW4lNCo4JjI1NSkpbi0tO2Uuc2lnQnl0ZXM9bisxfX0sZS5wYWQuWmVyb1BhZGRpbmd9KSl9LCIyYjBlIjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXsKLyohCiAqIFZ1ZS5qcyB2Mi42LjEyCiAqIChjKSAyMDE0LTIwMjAgRXZhbiBZb3UKICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgogKi8KdmFyIG49T2JqZWN0LmZyZWV6ZSh7fSk7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdm9pZCAwPT09ZXx8bnVsbD09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4gdm9pZCAwIT09ZSYmbnVsbCE9PWV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4hMD09PWV9ZnVuY3Rpb24gYShlKXtyZXR1cm4hMT09PWV9ZnVuY3Rpb24gcyhlKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBlfHwibnVtYmVyIj09PXR5cGVvZiBlfHwic3ltYm9sIj09PXR5cGVvZiBlfHwiYm9vbGVhbiI9PT10eXBlb2YgZX1mdW5jdGlvbiB1KGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PT10eXBlb2YgZX12YXIgYz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIltvYmplY3QgT2JqZWN0XSI9PT1jLmNhbGwoZSl9ZnVuY3Rpb24gZihlKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PWMuY2FsbChlKX1mdW5jdGlvbiBkKGUpe3ZhciB0PXBhcnNlRmxvYXQoU3RyaW5nKGUpKTtyZXR1cm4gdD49MCYmTWF0aC5mbG9vcih0KT09PXQmJmlzRmluaXRlKGUpfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIGkoZSkmJiJmdW5jdGlvbiI9PT10eXBlb2YgZS50aGVuJiYiZnVuY3Rpb24iPT09dHlwZW9mIGUuY2F0Y2h9ZnVuY3Rpb24gaChlKXtyZXR1cm4gbnVsbD09ZT8iIjpBcnJheS5pc0FycmF5KGUpfHxsKGUpJiZlLnRvU3RyaW5nPT09Yz9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIHYoZSl7dmFyIHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4odCk/ZTp0fWZ1bmN0aW9uIG0oZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldfTpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19bSgic2xvdCxjb21wb25lbnQiLCEwKTt2YXIgeT1tKCJrZXkscmVmLHNsb3Qsc2xvdC1zY29wZSxpcyIpO2Z1bmN0aW9uIGcoZSx0KXtpZihlLmxlbmd0aCl7dmFyIG49ZS5pbmRleE9mKHQpO2lmKG4+LTEpcmV0dXJuIGUuc3BsaWNlKG4sMSl9fXZhciB3PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYihlLHQpe3JldHVybiB3LmNhbGwoZSx0KX1mdW5jdGlvbiBfKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXRbbl07cmV0dXJuIHJ8fCh0W25dPWUobikpfX12YXIgeD0vLShcdykvZyxrPV8oKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoeCwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD90LnRvVXBwZXJDYXNlKCk6IiJ9KSl9KSksQz1fKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpfSkpLEE9L1xCKFtBLVpdKS9nLFM9XygoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShBLCItJDEiKS50b0xvd2VyQ2FzZSgpfSkpO2Z1bmN0aW9uIEUoZSx0KXtmdW5jdGlvbiBuKG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg7cmV0dXJuIHI/cj4xP2UuYXBwbHkodCxhcmd1bWVudHMpOmUuY2FsbCh0LG4pOmUuY2FsbCh0KX1yZXR1cm4gbi5fbGVuZ3RoPWUubGVuZ3RoLG59ZnVuY3Rpb24gVChlLHQpe3JldHVybiBlLmJpbmQodCl9dmFyIE89RnVuY3Rpb24ucHJvdG90eXBlLmJpbmQ/VDpFO2Z1bmN0aW9uIEIoZSx0KXt0PXR8fDA7dmFyIG49ZS5sZW5ndGgtdCxyPW5ldyBBcnJheShuKTt3aGlsZShuLS0pcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gRChlLHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBqKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmRCh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIE4oZSx0LG4pe312YXIgJD1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LFI9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIEwoZSx0KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj11KGUpLHI9dSh0KTtpZighbnx8IXIpcmV0dXJuIW4mJiFyJiZTdHJpbmcoZSk9PT1TdHJpbmcodCk7dHJ5e3ZhciBpPUFycmF5LmlzQXJyYXkoZSksbz1BcnJheS5pc0FycmF5KHQpO2lmKGkmJm8pcmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGgmJmUuZXZlcnkoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIEwoZSx0W25dKX0pKTtpZihlIGluc3RhbmNlb2YgRGF0ZSYmdCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIGUuZ2V0VGltZSgpPT09dC5nZXRUaW1lKCk7aWYoaXx8bylyZXR1cm4hMTt2YXIgYT1PYmplY3Qua2V5cyhlKSxzPU9iamVjdC5rZXlzKHQpO3JldHVybiBhLmxlbmd0aD09PXMubGVuZ3RoJiZhLmV2ZXJ5KChmdW5jdGlvbihuKXtyZXR1cm4gTChlW25dLHRbbl0pfSkpfWNhdGNoKGMpe3JldHVybiExfX1mdW5jdGlvbiBQKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoTChlW25dLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIE0oZSl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7dHx8KHQ9ITAsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX12YXIgST0iZGF0YS1zZXJ2ZXItcmVuZGVyZWQiLEg9WyJjb21wb25lbnQiLCJkaXJlY3RpdmUiLCJmaWx0ZXIiXSx6PVsiYmVmb3JlQ3JlYXRlIiwiY3JlYXRlZCIsImJlZm9yZU1vdW50IiwibW91bnRlZCIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJiZWZvcmVEZXN0cm95IiwiZGVzdHJveWVkIiwiYWN0aXZhdGVkIiwiZGVhY3RpdmF0ZWQiLCJlcnJvckNhcHR1cmVkIiwic2VydmVyUHJlZmV0Y2giXSxGPXtvcHRpb25NZXJnZVN0cmF0ZWdpZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxzaWxlbnQ6ITEscHJvZHVjdGlvblRpcDohMSxkZXZ0b29sczohMSxwZXJmb3JtYW5jZTohMSxlcnJvckhhbmRsZXI6bnVsbCx3YXJuSGFuZGxlcjpudWxsLGlnbm9yZWRFbGVtZW50czpbXSxrZXlDb2RlczpPYmplY3QuY3JlYXRlKG51bGwpLGlzUmVzZXJ2ZWRUYWc6JCxpc1Jlc2VydmVkQXR0cjokLGlzVW5rbm93bkVsZW1lbnQ6JCxnZXRUYWdOYW1lc3BhY2U6TixwYXJzZVBsYXRmb3JtVGFnTmFtZTpSLG11c3RVc2VQcm9wOiQsYXN5bmM6ITAsX2xpZmVjeWNsZUhvb2tzOnp9LFU9L2EtekEtWlx1MDBCN1x1MDBDMC1cdTAwRDZcdTAwRDgtXHUwMEY2XHUwMEY4LVx1MDM3RFx1MDM3Ri1cdTFGRkZcdTIwMEMtXHUyMDBEXHUyMDNGLVx1MjA0MFx1MjA3MC1cdTIxOEZcdTJDMDAtXHUyRkVGXHUzMDAxLVx1RDdGRlx1RjkwMC1cdUZEQ0ZcdUZERjAtXHVGRkZELztmdW5jdGlvbiBxKGUpe3ZhciB0PShlKyIiKS5jaGFyQ29kZUF0KDApO3JldHVybiAzNj09PXR8fDk1PT09dH1mdW5jdGlvbiBXKGUsdCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohIXIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9dmFyIFk9bmV3IFJlZ0V4cCgiW14iK1Uuc291cmNlKyIuJF9cXGRdIik7ZnVuY3Rpb24gVihlKXtpZighWS50ZXN0KGUpKXt2YXIgdD1lLnNwbGl0KCIuIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXtpZighZSlyZXR1cm47ZT1lW3Rbbl1dfXJldHVybiBlfX19dmFyIFgsRz0iX19wcm90b19fImlue30sSz0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3csSj0idW5kZWZpbmVkIiE9PXR5cGVvZiBXWEVudmlyb25tZW50JiYhIVdYRW52aXJvbm1lbnQucGxhdGZvcm0sUT1KJiZXWEVudmlyb25tZW50LnBsYXRmb3JtLnRvTG93ZXJDYXNlKCksWj1LJiZ3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLGVlPVomJi9tc2llfHRyaWRlbnQvLnRlc3QoWiksdGU9WiYmWi5pbmRleE9mKCJtc2llIDkuMCIpPjAsbmU9WiYmWi5pbmRleE9mKCJlZGdlLyIpPjAscmU9KFomJlouaW5kZXhPZigiYW5kcm9pZCIpLFomJi9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChaKXx8ImlvcyI9PT1RKSxpZT0oWiYmL2Nocm9tZVwvXGQrLy50ZXN0KFopLFomJi9waGFudG9tanMvLnRlc3QoWiksWiYmWi5tYXRjaCgvZmlyZWZveFwvKFxkKykvKSksb2U9e30ud2F0Y2gsYWU9ITE7aWYoSyl0cnl7dmFyIHNlPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShzZSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe2FlPSEwfX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0LXBhc3NpdmUiLG51bGwsc2UpfWNhdGNoKGthKXt9dmFyIHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PVgmJihYPSFLJiYhSiYmInVuZGVmaW5lZCIhPT10eXBlb2YgZSYmKGVbInByb2Nlc3MiXSYmInNlcnZlciI9PT1lWyJwcm9jZXNzIl0uZW52LlZVRV9FTlYpKSxYfSxjZT1LJiZ3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztmdW5jdGlvbiBsZShlKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGUmJi9uYXRpdmUgY29kZS8udGVzdChlLnRvU3RyaW5nKCkpfXZhciBmZSxkZT0idW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2wmJmxlKFN5bWJvbCkmJiJ1bmRlZmluZWQiIT09dHlwZW9mIFJlZmxlY3QmJmxlKFJlZmxlY3Qub3duS2V5cyk7ZmU9InVuZGVmaW5lZCIhPT10eXBlb2YgU2V0JiZsZShTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT10aGlzLnNldFtlXX0sZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuc2V0W2VdPSEwfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9LGV9KCk7dmFyIHBlPU4saGU9MCx2ZT1mdW5jdGlvbigpe3RoaXMuaWQ9aGUrKyx0aGlzLnN1YnM9W119O3ZlLnByb3RvdHlwZS5hZGRTdWI9ZnVuY3Rpb24oZSl7dGhpcy5zdWJzLnB1c2goZSl9LHZlLnByb3RvdHlwZS5yZW1vdmVTdWI9ZnVuY3Rpb24oZSl7Zyh0aGlzLnN1YnMsZSl9LHZlLnByb3RvdHlwZS5kZXBlbmQ9ZnVuY3Rpb24oKXt2ZS50YXJnZXQmJnZlLnRhcmdldC5hZGREZXAodGhpcyl9LHZlLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN1YnMuc2xpY2UoKTtmb3IodmFyIHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZVt0XS51cGRhdGUoKX0sdmUudGFyZ2V0PW51bGw7dmFyIG1lPVtdO2Z1bmN0aW9uIHllKGUpe21lLnB1c2goZSksdmUudGFyZ2V0PWV9ZnVuY3Rpb24gZ2UoKXttZS5wb3AoKSx2ZS50YXJnZXQ9bWVbbWUubGVuZ3RoLTFdfXZhciB3ZT1mdW5jdGlvbihlLHQsbixyLGksbyxhLHMpe3RoaXMudGFnPWUsdGhpcy5kYXRhPXQsdGhpcy5jaGlsZHJlbj1uLHRoaXMudGV4dD1yLHRoaXMuZWxtPWksdGhpcy5ucz12b2lkIDAsdGhpcy5jb250ZXh0PW8sdGhpcy5mbkNvbnRleHQ9dm9pZCAwLHRoaXMuZm5PcHRpb25zPXZvaWQgMCx0aGlzLmZuU2NvcGVJZD12b2lkIDAsdGhpcy5rZXk9dCYmdC5rZXksdGhpcy5jb21wb25lbnRPcHRpb25zPWEsdGhpcy5jb21wb25lbnRJbnN0YW5jZT12b2lkIDAsdGhpcy5wYXJlbnQ9dm9pZCAwLHRoaXMucmF3PSExLHRoaXMuaXNTdGF0aWM9ITEsdGhpcy5pc1Jvb3RJbnNlcnQ9ITAsdGhpcy5pc0NvbW1lbnQ9ITEsdGhpcy5pc0Nsb25lZD0hMSx0aGlzLmlzT25jZT0hMSx0aGlzLmFzeW5jRmFjdG9yeT1zLHRoaXMuYXN5bmNNZXRhPXZvaWQgMCx0aGlzLmlzQXN5bmNQbGFjZWhvbGRlcj0hMX0sYmU9e2NoaWxkOntjb25maWd1cmFibGU6ITB9fTtiZS5jaGlsZC5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb21wb25lbnRJbnN0YW5jZX0sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMod2UucHJvdG90eXBlLGJlKTt2YXIgX2U9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9IiIpO3ZhciB0PW5ldyB3ZTtyZXR1cm4gdC50ZXh0PWUsdC5pc0NvbW1lbnQ9ITAsdH07ZnVuY3Rpb24geGUoZSl7cmV0dXJuIG5ldyB3ZSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxTdHJpbmcoZSkpfWZ1bmN0aW9uIGtlKGUpe3ZhciB0PW5ldyB3ZShlLnRhZyxlLmRhdGEsZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5zbGljZSgpLGUudGV4dCxlLmVsbSxlLmNvbnRleHQsZS5jb21wb25lbnRPcHRpb25zLGUuYXN5bmNGYWN0b3J5KTtyZXR1cm4gdC5ucz1lLm5zLHQuaXNTdGF0aWM9ZS5pc1N0YXRpYyx0LmtleT1lLmtleSx0LmlzQ29tbWVudD1lLmlzQ29tbWVudCx0LmZuQ29udGV4dD1lLmZuQ29udGV4dCx0LmZuT3B0aW9ucz1lLmZuT3B0aW9ucyx0LmZuU2NvcGVJZD1lLmZuU2NvcGVJZCx0LmFzeW5jTWV0YT1lLmFzeW5jTWV0YSx0LmlzQ2xvbmVkPSEwLHR9dmFyIENlPUFycmF5LnByb3RvdHlwZSxBZT1PYmplY3QuY3JlYXRlKENlKSxTZT1bInB1c2giLCJwb3AiLCJzaGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdO1NlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PUNlW2VdO1coQWUsZSwoZnVuY3Rpb24oKXt2YXIgbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGg7d2hpbGUoci0tKW5bcl09YXJndW1lbnRzW3JdO3ZhciBpLG89dC5hcHBseSh0aGlzLG4pLGE9dGhpcy5fX29iX187c3dpdGNoKGUpe2Nhc2UicHVzaCI6Y2FzZSJ1bnNoaWZ0IjppPW47YnJlYWs7Y2FzZSJzcGxpY2UiOmk9bi5zbGljZSgyKTticmVha31yZXR1cm4gaSYmYS5vYnNlcnZlQXJyYXkoaSksYS5kZXAubm90aWZ5KCksb30pKX0pKTt2YXIgRWU9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoQWUpLFRlPSEwO2Z1bmN0aW9uIE9lKGUpe1RlPWV9dmFyIEJlPWZ1bmN0aW9uKGUpe3RoaXMudmFsdWU9ZSx0aGlzLmRlcD1uZXcgdmUsdGhpcy52bUNvdW50PTAsVyhlLCJfX29iX18iLHRoaXMpLEFycmF5LmlzQXJyYXkoZSk/KEc/RGUoZSxBZSk6amUoZSxBZSxFZSksdGhpcy5vYnNlcnZlQXJyYXkoZSkpOnRoaXMud2FsayhlKX07ZnVuY3Rpb24gRGUoZSx0KXtlLl9fcHJvdG9fXz10fWZ1bmN0aW9uIGplKGUsdCxuKXtmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe3ZhciBvPW5bcl07VyhlLG8sdFtvXSl9fWZ1bmN0aW9uIE5lKGUsdCl7dmFyIG47aWYodShlKSYmIShlIGluc3RhbmNlb2Ygd2UpKXJldHVybiBiKGUsIl9fb2JfXyIpJiZlLl9fb2JfXyBpbnN0YW5jZW9mIEJlP249ZS5fX29iX186VGUmJiF1ZSgpJiYoQXJyYXkuaXNBcnJheShlKXx8bChlKSkmJk9iamVjdC5pc0V4dGVuc2libGUoZSkmJiFlLl9pc1Z1ZSYmKG49bmV3IEJlKGUpKSx0JiZuJiZuLnZtQ291bnQrKyxufWZ1bmN0aW9uICRlKGUsdCxuLHIsaSl7dmFyIG89bmV3IHZlLGE9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpO2lmKCFhfHwhMSE9PWEuY29uZmlndXJhYmxlKXt2YXIgcz1hJiZhLmdldCx1PWEmJmEuc2V0O3MmJiF1fHwyIT09YXJndW1lbnRzLmxlbmd0aHx8KG49ZVt0XSk7dmFyIGM9IWkmJk5lKG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3ZhciB0PXM/cy5jYWxsKGUpOm47cmV0dXJuIHZlLnRhcmdldCYmKG8uZGVwZW5kKCksYyYmKGMuZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkodCkmJlBlKHQpKSksdH0sc2V0OmZ1bmN0aW9uKHQpe3ZhciByPXM/cy5jYWxsKGUpOm47dD09PXJ8fHQhPT10JiZyIT09cnx8cyYmIXV8fCh1P3UuY2FsbChlLHQpOm49dCxjPSFpJiZOZSh0KSxvLm5vdGlmeSgpKX19KX19ZnVuY3Rpb24gUmUoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkmJmQodCkpcmV0dXJuIGUubGVuZ3RoPU1hdGgubWF4KGUubGVuZ3RoLHQpLGUuc3BsaWNlKHQsMSxuKSxuO2lmKHQgaW4gZSYmISh0IGluIE9iamVjdC5wcm90b3R5cGUpKXJldHVybiBlW3RdPW4sbjt2YXIgcj1lLl9fb2JfXztyZXR1cm4gZS5faXNWdWV8fHImJnIudm1Db3VudD9uOnI/KCRlKHIudmFsdWUsdCxuKSxyLmRlcC5ub3RpZnkoKSxuKTooZVt0XT1uLG4pfWZ1bmN0aW9uIExlKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSYmZCh0KSllLnNwbGljZSh0LDEpO2Vsc2V7dmFyIG49ZS5fX29iX187ZS5faXNWdWV8fG4mJm4udm1Db3VudHx8YihlLHQpJiYoZGVsZXRlIGVbdF0sbiYmbi5kZXAubm90aWZ5KCkpfX1mdW5jdGlvbiBQZShlKXtmb3IodmFyIHQ9dm9pZCAwLG49MCxyPWUubGVuZ3RoO248cjtuKyspdD1lW25dLHQmJnQuX19vYl9fJiZ0Ll9fb2JfXy5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheSh0KSYmUGUodCl9QmUucHJvdG90eXBlLndhbGs9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKGUpLG49MDtuPHQubGVuZ3RoO24rKykkZShlLHRbbl0pfSxCZS5wcm90b3R5cGUub2JzZXJ2ZUFycmF5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylOZShlW3RdKX07dmFyIE1lPUYub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO2Z1bmN0aW9uIEllKGUsdCl7aWYoIXQpcmV0dXJuIGU7Zm9yKHZhciBuLHIsaSxvPWRlP1JlZmxlY3Qub3duS2V5cyh0KTpPYmplY3Qua2V5cyh0KSxhPTA7YTxvLmxlbmd0aDthKyspbj1vW2FdLCJfX29iX18iIT09biYmKHI9ZVtuXSxpPXRbbl0sYihlLG4pP3IhPT1pJiZsKHIpJiZsKGkpJiZJZShyLGkpOlJlKGUsbixpKSk7cmV0dXJuIGV9ZnVuY3Rpb24gSGUoZSx0LG4pe3JldHVybiBuP2Z1bmN0aW9uKCl7dmFyIHI9ImZ1bmN0aW9uIj09PXR5cGVvZiB0P3QuY2FsbChuLG4pOnQsaT0iZnVuY3Rpb24iPT09dHlwZW9mIGU/ZS5jYWxsKG4sbik6ZTtyZXR1cm4gcj9JZShyLGkpOml9OnQ/ZT9mdW5jdGlvbigpe3JldHVybiBJZSgiZnVuY3Rpb24iPT09dHlwZW9mIHQ/dC5jYWxsKHRoaXMsdGhpcyk6dCwiZnVuY3Rpb24iPT09dHlwZW9mIGU/ZS5jYWxsKHRoaXMsdGhpcyk6ZSl9OnQ6ZX1mdW5jdGlvbiB6ZShlLHQpe3ZhciBuPXQ/ZT9lLmNvbmNhdCh0KTpBcnJheS5pc0FycmF5KHQpP3Q6W3RdOmU7cmV0dXJuIG4/RmUobik6bn1mdW5jdGlvbiBGZShlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKS0xPT09dC5pbmRleE9mKGVbbl0pJiZ0LnB1c2goZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gVWUoZSx0LG4scil7dmFyIGk9T2JqZWN0LmNyZWF0ZShlfHxudWxsKTtyZXR1cm4gdD9EKGksdCk6aX1NZS5kYXRhPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj9IZShlLHQsbik6dCYmImZ1bmN0aW9uIiE9PXR5cGVvZiB0P2U6SGUoZSx0KX0sei5mb3JFYWNoKChmdW5jdGlvbihlKXtNZVtlXT16ZX0pKSxILmZvckVhY2goKGZ1bmN0aW9uKGUpe01lW2UrInMiXT1VZX0pKSxNZS53YXRjaD1mdW5jdGlvbihlLHQsbixyKXtpZihlPT09b2UmJihlPXZvaWQgMCksdD09PW9lJiYodD12b2lkIDApLCF0KXJldHVybiBPYmplY3QuY3JlYXRlKGV8fG51bGwpO2lmKCFlKXJldHVybiB0O3ZhciBpPXt9O2Zvcih2YXIgbyBpbiBEKGksZSksdCl7dmFyIGE9aVtvXSxzPXRbb107YSYmIUFycmF5LmlzQXJyYXkoYSkmJihhPVthXSksaVtvXT1hP2EuY29uY2F0KHMpOkFycmF5LmlzQXJyYXkocyk/czpbc119cmV0dXJuIGl9LE1lLnByb3BzPU1lLm1ldGhvZHM9TWUuaW5qZWN0PU1lLmNvbXB1dGVkPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEQoaSxlKSx0JiZEKGksdCksaX0sTWUucHJvdmlkZT1IZTt2YXIgcWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9O2Z1bmN0aW9uIFdlKGUsdCl7dmFyIG49ZS5wcm9wcztpZihuKXt2YXIgcixpLG8sYT17fTtpZihBcnJheS5pc0FycmF5KG4pKXtyPW4ubGVuZ3RoO3doaWxlKHItLSlpPW5bcl0sInN0cmluZyI9PT10eXBlb2YgaSYmKG89ayhpKSxhW29dPXt0eXBlOm51bGx9KX1lbHNlIGlmKGwobikpZm9yKHZhciBzIGluIG4paT1uW3NdLG89ayhzKSxhW29dPWwoaSk/aTp7dHlwZTppfTtlbHNlIDA7ZS5wcm9wcz1hfX1mdW5jdGlvbiBZZShlLHQpe3ZhciBuPWUuaW5qZWN0O2lmKG4pe3ZhciByPWUuaW5qZWN0PXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspcltuW2ldXT17ZnJvbTpuW2ldfTtlbHNlIGlmKGwobikpZm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107cltvXT1sKGEpP0Qoe2Zyb206b30sYSk6e2Zyb206YX19ZWxzZSAwfX1mdW5jdGlvbiBWZShlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTsiZnVuY3Rpb24iPT09dHlwZW9mIHImJih0W25dPXtiaW5kOnIsdXBkYXRlOnJ9KX19ZnVuY3Rpb24gWGUoZSx0LG4pe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgdCYmKHQ9dC5vcHRpb25zKSxXZSh0LG4pLFllKHQsbiksVmUodCksIXQuX2Jhc2UmJih0LmV4dGVuZHMmJihlPVhlKGUsdC5leHRlbmRzLG4pKSx0Lm1peGlucykpZm9yKHZhciByPTAsaT10Lm1peGlucy5sZW5ndGg7cjxpO3IrKyllPVhlKGUsdC5taXhpbnNbcl0sbik7dmFyIG8sYT17fTtmb3IobyBpbiBlKXMobyk7Zm9yKG8gaW4gdCliKGUsbyl8fHMobyk7ZnVuY3Rpb24gcyhyKXt2YXIgaT1NZVtyXXx8cWU7YVtyXT1pKGVbcl0sdFtyXSxuLHIpfXJldHVybiBhfWZ1bmN0aW9uIEdlKGUsdCxuLHIpe2lmKCJzdHJpbmciPT09dHlwZW9mIG4pe3ZhciBpPWVbdF07aWYoYihpLG4pKXJldHVybiBpW25dO3ZhciBvPWsobik7aWYoYihpLG8pKXJldHVybiBpW29dO3ZhciBhPUMobyk7aWYoYihpLGEpKXJldHVybiBpW2FdO3ZhciBzPWlbbl18fGlbb118fGlbYV07cmV0dXJuIHN9fWZ1bmN0aW9uIEtlKGUsdCxuLHIpe3ZhciBpPXRbZV0sbz0hYihuLGUpLGE9bltlXSxzPWV0KEJvb2xlYW4saS50eXBlKTtpZihzPi0xKWlmKG8mJiFiKGksImRlZmF1bHQiKSlhPSExO2Vsc2UgaWYoIiI9PT1hfHxhPT09UyhlKSl7dmFyIHU9ZXQoU3RyaW5nLGkudHlwZSk7KHU8MHx8czx1KSYmKGE9ITApfWlmKHZvaWQgMD09PWEpe2E9SmUocixpLGUpO3ZhciBjPVRlO09lKCEwKSxOZShhKSxPZShjKX1yZXR1cm4gYX1mdW5jdGlvbiBKZShlLHQsbil7aWYoYih0LCJkZWZhdWx0Iikpe3ZhciByPXQuZGVmYXVsdDtyZXR1cm4gZSYmZS4kb3B0aW9ucy5wcm9wc0RhdGEmJnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1lLl9wcm9wc1tuXT9lLl9wcm9wc1tuXToiZnVuY3Rpb24iPT09dHlwZW9mIHImJiJGdW5jdGlvbiIhPT1RZSh0LnR5cGUpP3IuY2FsbChlKTpyfX1mdW5jdGlvbiBRZShlKXt2YXIgdD1lJiZlLnRvU3RyaW5nKCkubWF0Y2goL15ccypmdW5jdGlvbiAoXHcrKS8pO3JldHVybiB0P3RbMV06IiJ9ZnVuY3Rpb24gWmUoZSx0KXtyZXR1cm4gUWUoZSk9PT1RZSh0KX1mdW5jdGlvbiBldChlLHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiBaZSh0LGUpPzA6LTE7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKFplKHRbbl0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gdHQoZSx0LG4pe3llKCk7dHJ5e2lmKHQpe3ZhciByPXQ7d2hpbGUocj1yLiRwYXJlbnQpe3ZhciBpPXIuJG9wdGlvbnMuZXJyb3JDYXB0dXJlZDtpZihpKWZvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKXRyeXt2YXIgYT0hMT09PWlbb10uY2FsbChyLGUsdCxuKTtpZihhKXJldHVybn1jYXRjaChrYSl7cnQoa2EsciwiZXJyb3JDYXB0dXJlZCBob29rIil9fX1ydChlLHQsbil9ZmluYWxseXtnZSgpfX1mdW5jdGlvbiBudChlLHQsbixyLGkpe3ZhciBvO3RyeXtvPW4/ZS5hcHBseSh0LG4pOmUuY2FsbCh0KSxvJiYhby5faXNWdWUmJnAobykmJiFvLl9oYW5kbGVkJiYoby5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHR0KGUscixpKyIgKFByb21pc2UvYXN5bmMpIil9KSksby5faGFuZGxlZD0hMCl9Y2F0Y2goa2Epe3R0KGthLHIsaSl9cmV0dXJuIG99ZnVuY3Rpb24gcnQoZSx0LG4pe2lmKEYuZXJyb3JIYW5kbGVyKXRyeXtyZXR1cm4gRi5lcnJvckhhbmRsZXIuY2FsbChudWxsLGUsdCxuKX1jYXRjaChrYSl7a2EhPT1lJiZpdChrYSxudWxsLCJjb25maWcuZXJyb3JIYW5kbGVyIil9aXQoZSx0LG4pfWZ1bmN0aW9uIGl0KGUsdCxuKXtpZighSyYmIUp8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGNvbnNvbGUpdGhyb3cgZTtjb25zb2xlLmVycm9yKGUpfXZhciBvdCxhdD0hMSxzdD1bXSx1dD0hMTtmdW5jdGlvbiBjdCgpe3V0PSExO3ZhciBlPXN0LnNsaWNlKDApO3N0Lmxlbmd0aD0wO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0oKX1pZigidW5kZWZpbmVkIiE9PXR5cGVvZiBQcm9taXNlJiZsZShQcm9taXNlKSl7dmFyIGx0PVByb21pc2UucmVzb2x2ZSgpO290PWZ1bmN0aW9uKCl7bHQudGhlbihjdCkscmUmJnNldFRpbWVvdXQoTil9LGF0PSEwfWVsc2UgaWYoZWV8fCJ1bmRlZmluZWQiPT09dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXJ8fCFsZShNdXRhdGlvbk9ic2VydmVyKSYmIltvYmplY3QgTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yXSIhPT1NdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkpb3Q9InVuZGVmaW5lZCIhPT10eXBlb2Ygc2V0SW1tZWRpYXRlJiZsZShzZXRJbW1lZGlhdGUpP2Z1bmN0aW9uKCl7c2V0SW1tZWRpYXRlKGN0KX06ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGN0LDApfTtlbHNle3ZhciBmdD0xLGR0PW5ldyBNdXRhdGlvbk9ic2VydmVyKGN0KSxwdD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZnQpKTtkdC5vYnNlcnZlKHB0LHtjaGFyYWN0ZXJEYXRhOiEwfSksb3Q9ZnVuY3Rpb24oKXtmdD0oZnQrMSklMixwdC5kYXRhPVN0cmluZyhmdCl9LGF0PSEwfWZ1bmN0aW9uIGh0KGUsdCl7dmFyIG47aWYoc3QucHVzaCgoZnVuY3Rpb24oKXtpZihlKXRyeXtlLmNhbGwodCl9Y2F0Y2goa2Epe3R0KGthLHQsIm5leHRUaWNrIil9ZWxzZSBuJiZuKHQpfSkpLHV0fHwodXQ9ITAsb3QoKSksIWUmJiJ1bmRlZmluZWQiIT09dHlwZW9mIFByb21pc2UpcmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtuPWV9KSl9dmFyIHZ0PW5ldyBmZTtmdW5jdGlvbiBtdChlKXt5dChlLHZ0KSx2dC5jbGVhcigpfWZ1bmN0aW9uIHl0KGUsdCl7dmFyIG4scixpPUFycmF5LmlzQXJyYXkoZSk7aWYoISghaSYmIXUoZSl8fE9iamVjdC5pc0Zyb3plbihlKXx8ZSBpbnN0YW5jZW9mIHdlKSl7aWYoZS5fX29iX18pe3ZhciBvPWUuX19vYl9fLmRlcC5pZDtpZih0LmhhcyhvKSlyZXR1cm47dC5hZGQobyl9aWYoaSl7bj1lLmxlbmd0aDt3aGlsZShuLS0peXQoZVtuXSx0KX1lbHNle3I9T2JqZWN0LmtleXMoZSksbj1yLmxlbmd0aDt3aGlsZShuLS0peXQoZVtyW25dXSx0KX19fXZhciBndD1fKChmdW5jdGlvbihlKXt2YXIgdD0iJiI9PT1lLmNoYXJBdCgwKTtlPXQ/ZS5zbGljZSgxKTplO3ZhciBuPSJ+Ij09PWUuY2hhckF0KDApO2U9bj9lLnNsaWNlKDEpOmU7dmFyIHI9IiEiPT09ZS5jaGFyQXQoMCk7cmV0dXJuIGU9cj9lLnNsaWNlKDEpOmUse25hbWU6ZSxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6dH19KSk7ZnVuY3Rpb24gd3QoZSx0KXtmdW5jdGlvbiBuKCl7dmFyIGU9YXJndW1lbnRzLHI9bi5mbnM7aWYoIUFycmF5LmlzQXJyYXkocikpcmV0dXJuIG50KHIsbnVsbCxhcmd1bWVudHMsdCwidi1vbiBoYW5kbGVyIik7Zm9yKHZhciBpPXIuc2xpY2UoKSxvPTA7bzxpLmxlbmd0aDtvKyspbnQoaVtvXSxudWxsLGUsdCwidi1vbiBoYW5kbGVyIil9cmV0dXJuIG4uZm5zPWUsbn1mdW5jdGlvbiBidChlLHQsbixpLGEscyl7dmFyIHUsYyxsLGY7Zm9yKHUgaW4gZSljPWVbdV0sbD10W3VdLGY9Z3QodSkscihjKXx8KHIobCk/KHIoYy5mbnMpJiYoYz1lW3VdPXd0KGMscykpLG8oZi5vbmNlKSYmKGM9ZVt1XT1hKGYubmFtZSxjLGYuY2FwdHVyZSkpLG4oZi5uYW1lLGMsZi5jYXB0dXJlLGYucGFzc2l2ZSxmLnBhcmFtcykpOmMhPT1sJiYobC5mbnM9YyxlW3VdPWwpKTtmb3IodSBpbiB0KXIoZVt1XSkmJihmPWd0KHUpLGkoZi5uYW1lLHRbdV0sZi5jYXB0dXJlKSl9ZnVuY3Rpb24gX3QoZSx0LG4pe3ZhciBhO2UgaW5zdGFuY2VvZiB3ZSYmKGU9ZS5kYXRhLmhvb2t8fChlLmRhdGEuaG9vaz17fSkpO3ZhciBzPWVbdF07ZnVuY3Rpb24gdSgpe24uYXBwbHkodGhpcyxhcmd1bWVudHMpLGcoYS5mbnMsdSl9cihzKT9hPXd0KFt1XSk6aShzLmZucykmJm8ocy5tZXJnZWQpPyhhPXMsYS5mbnMucHVzaCh1KSk6YT13dChbcyx1XSksYS5tZXJnZWQ9ITAsZVt0XT1hfWZ1bmN0aW9uIHh0KGUsdCxuKXt2YXIgbz10Lm9wdGlvbnMucHJvcHM7aWYoIXIobykpe3ZhciBhPXt9LHM9ZS5hdHRycyx1PWUucHJvcHM7aWYoaShzKXx8aSh1KSlmb3IodmFyIGMgaW4gbyl7dmFyIGw9UyhjKTtrdChhLHUsYyxsLCEwKXx8a3QoYSxzLGMsbCwhMSl9cmV0dXJuIGF9fWZ1bmN0aW9uIGt0KGUsdCxuLHIsbyl7aWYoaSh0KSl7aWYoYih0LG4pKXJldHVybiBlW25dPXRbbl0sb3x8ZGVsZXRlIHRbbl0sITA7aWYoYih0LHIpKXJldHVybiBlW25dPXRbcl0sb3x8ZGVsZXRlIHRbcl0sITB9cmV0dXJuITF9ZnVuY3Rpb24gQ3QoZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYoQXJyYXkuaXNBcnJheShlW3RdKSlyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxlKTtyZXR1cm4gZX1mdW5jdGlvbiBBdChlKXtyZXR1cm4gcyhlKT9beGUoZSldOkFycmF5LmlzQXJyYXkoZSk/RXQoZSk6dm9pZCAwfWZ1bmN0aW9uIFN0KGUpe3JldHVybiBpKGUpJiZpKGUudGV4dCkmJmEoZS5pc0NvbW1lbnQpfWZ1bmN0aW9uIEV0KGUsdCl7dmFyIG4sYSx1LGMsbD1bXTtmb3Iobj0wO248ZS5sZW5ndGg7bisrKWE9ZVtuXSxyKGEpfHwiYm9vbGVhbiI9PT10eXBlb2YgYXx8KHU9bC5sZW5ndGgtMSxjPWxbdV0sQXJyYXkuaXNBcnJheShhKT9hLmxlbmd0aD4wJiYoYT1FdChhLCh0fHwiIikrIl8iK24pLFN0KGFbMF0pJiZTdChjKSYmKGxbdV09eGUoYy50ZXh0K2FbMF0udGV4dCksYS5zaGlmdCgpKSxsLnB1c2guYXBwbHkobCxhKSk6cyhhKT9TdChjKT9sW3VdPXhlKGMudGV4dCthKToiIiE9PWEmJmwucHVzaCh4ZShhKSk6U3QoYSkmJlN0KGMpP2xbdV09eGUoYy50ZXh0K2EudGV4dCk6KG8oZS5faXNWTGlzdCkmJmkoYS50YWcpJiZyKGEua2V5KSYmaSh0KSYmKGEua2V5PSJfX3ZsaXN0Iit0KyJfIituKyJfXyIpLGwucHVzaChhKSkpO3JldHVybiBsfWZ1bmN0aW9uIFR0KGUpe3ZhciB0PWUuJG9wdGlvbnMucHJvdmlkZTt0JiYoZS5fcHJvdmlkZWQ9ImZ1bmN0aW9uIj09PXR5cGVvZiB0P3QuY2FsbChlKTp0KX1mdW5jdGlvbiBPdChlKXt2YXIgdD1CdChlLiRvcHRpb25zLmluamVjdCxlKTt0JiYoT2UoITEpLE9iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKG4peyRlKGUsbix0W25dKX0pKSxPZSghMCkpfWZ1bmN0aW9uIEJ0KGUsdCl7aWYoZSl7Zm9yKHZhciBuPU9iamVjdC5jcmVhdGUobnVsbCkscj1kZT9SZWZsZWN0Lm93bktleXMoZSk6T2JqZWN0LmtleXMoZSksaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbz1yW2ldO2lmKCJfX29iX18iIT09byl7dmFyIGE9ZVtvXS5mcm9tLHM9dDt3aGlsZShzKXtpZihzLl9wcm92aWRlZCYmYihzLl9wcm92aWRlZCxhKSl7bltvXT1zLl9wcm92aWRlZFthXTticmVha31zPXMuJHBhcmVudH1pZighcylpZigiZGVmYXVsdCJpbiBlW29dKXt2YXIgdT1lW29dLmRlZmF1bHQ7bltvXT0iZnVuY3Rpb24iPT09dHlwZW9mIHU/dS5jYWxsKHQpOnV9ZWxzZSAwfX1yZXR1cm4gbn19ZnVuY3Rpb24gRHQoZSx0KXtpZighZXx8IWUubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgbj17fSxyPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT10JiZvLmZuQ29udGV4dCE9PXR8fCFhfHxudWxsPT1hLnNsb3QpKG4uZGVmYXVsdHx8KG4uZGVmYXVsdD1bXSkpLnB1c2gobyk7ZWxzZXt2YXIgcz1hLnNsb3QsdT1uW3NdfHwobltzXT1bXSk7InRlbXBsYXRlIj09PW8udGFnP3UucHVzaC5hcHBseSh1LG8uY2hpbGRyZW58fFtdKTp1LnB1c2gobyl9fWZvcih2YXIgYyBpbiBuKW5bY10uZXZlcnkoanQpJiZkZWxldGUgbltjXTtyZXR1cm4gbn1mdW5jdGlvbiBqdChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJiFlLmFzeW5jRmFjdG9yeXx8IiAiPT09ZS50ZXh0fWZ1bmN0aW9uIE50KGUsdCxyKXt2YXIgaSxvPU9iamVjdC5rZXlzKHQpLmxlbmd0aD4wLGE9ZT8hIWUuJHN0YWJsZTohbyxzPWUmJmUuJGtleTtpZihlKXtpZihlLl9ub3JtYWxpemVkKXJldHVybiBlLl9ub3JtYWxpemVkO2lmKGEmJnImJnIhPT1uJiZzPT09ci4ka2V5JiYhbyYmIXIuJGhhc05vcm1hbClyZXR1cm4gcjtmb3IodmFyIHUgaW4gaT17fSxlKWVbdV0mJiIkIiE9PXVbMF0mJihpW3VdPSR0KHQsdSxlW3VdKSl9ZWxzZSBpPXt9O2Zvcih2YXIgYyBpbiB0KWMgaW4gaXx8KGlbY109UnQodCxjKSk7cmV0dXJuIGUmJk9iamVjdC5pc0V4dGVuc2libGUoZSkmJihlLl9ub3JtYWxpemVkPWkpLFcoaSwiJHN0YWJsZSIsYSksVyhpLCIka2V5IixzKSxXKGksIiRoYXNOb3JtYWwiLG8pLGl9ZnVuY3Rpb24gJHQoZSx0LG4pe3ZhciByPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD9uLmFwcGx5KG51bGwsYXJndW1lbnRzKTpuKHt9KTtyZXR1cm4gZT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiYhQXJyYXkuaXNBcnJheShlKT9bZV06QXQoZSksZSYmKDA9PT1lLmxlbmd0aHx8MT09PWUubGVuZ3RoJiZlWzBdLmlzQ29tbWVudCk/dm9pZCAwOmV9O3JldHVybiBuLnByb3h5JiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtnZXQ6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHJ9ZnVuY3Rpb24gUnQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZVt0XX19ZnVuY3Rpb24gTHQoZSx0KXt2YXIgbixyLG8sYSxzO2lmKEFycmF5LmlzQXJyYXkoZSl8fCJzdHJpbmciPT09dHlwZW9mIGUpZm9yKG49bmV3IEFycmF5KGUubGVuZ3RoKSxyPTAsbz1lLmxlbmd0aDtyPG87cisrKW5bcl09dChlW3JdLHIpO2Vsc2UgaWYoIm51bWJlciI9PT10eXBlb2YgZSlmb3Iobj1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT10KHIrMSxyKTtlbHNlIGlmKHUoZSkpaWYoZGUmJmVbU3ltYm9sLml0ZXJhdG9yXSl7bj1bXTt2YXIgYz1lW1N5bWJvbC5pdGVyYXRvcl0oKSxsPWMubmV4dCgpO3doaWxlKCFsLmRvbmUpbi5wdXNoKHQobC52YWx1ZSxuLmxlbmd0aCkpLGw9Yy5uZXh0KCl9ZWxzZSBmb3IoYT1PYmplY3Qua2V5cyhlKSxuPW5ldyBBcnJheShhLmxlbmd0aCkscj0wLG89YS5sZW5ndGg7cjxvO3IrKylzPWFbcl0sbltyXT10KGVbc10scyxyKTtyZXR1cm4gaShuKXx8KG49W10pLG4uX2lzVkxpc3Q9ITAsbn1mdW5jdGlvbiBQdChlLHQsbixyKXt2YXIgaSxvPXRoaXMuJHNjb3BlZFNsb3RzW2VdO28/KG49bnx8e30sciYmKG49RChEKHt9LHIpLG4pKSxpPW8obil8fHQpOmk9dGhpcy4kc2xvdHNbZV18fHQ7dmFyIGE9biYmbi5zbG90O3JldHVybiBhP3RoaXMuJGNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIix7c2xvdDphfSxpKTppfWZ1bmN0aW9uIE10KGUpe3JldHVybiBHZSh0aGlzLiRvcHRpb25zLCJmaWx0ZXJzIixlLCEwKXx8Un1mdW5jdGlvbiBJdChlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpPy0xPT09ZS5pbmRleE9mKHQpOmUhPT10fWZ1bmN0aW9uIEh0KGUsdCxuLHIsaSl7dmFyIG89Ri5rZXlDb2Rlc1t0XXx8bjtyZXR1cm4gaSYmciYmIUYua2V5Q29kZXNbdF0/SXQoaSxyKTpvP0l0KG8sZSk6cj9TKHIpIT09dDp2b2lkIDB9ZnVuY3Rpb24genQoZSx0LG4scixpKXtpZihuKWlmKHUobikpe3ZhciBvO0FycmF5LmlzQXJyYXkobikmJihuPWoobikpO3ZhciBhPWZ1bmN0aW9uKGEpe2lmKCJjbGFzcyI9PT1hfHwic3R5bGUiPT09YXx8eShhKSlvPWU7ZWxzZXt2YXIgcz1lLmF0dHJzJiZlLmF0dHJzLnR5cGU7bz1yfHxGLm11c3RVc2VQcm9wKHQscyxhKT9lLmRvbVByb3BzfHwoZS5kb21Qcm9wcz17fSk6ZS5hdHRyc3x8KGUuYXR0cnM9e30pfXZhciB1PWsoYSksYz1TKGEpO2lmKCEodSBpbiBvKSYmIShjIGluIG8pJiYob1thXT1uW2FdLGkpKXt2YXIgbD1lLm9ufHwoZS5vbj17fSk7bFsidXBkYXRlOiIrYV09ZnVuY3Rpb24oZSl7blthXT1lfX19O2Zvcih2YXIgcyBpbiBuKWEocyl9ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBGdChlLHQpe3ZhciBuPXRoaXMuX3N0YXRpY1RyZWVzfHwodGhpcy5fc3RhdGljVHJlZXM9W10pLHI9bltlXTtyZXR1cm4gciYmIXR8fChyPW5bZV09dGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbZV0uY2FsbCh0aGlzLl9yZW5kZXJQcm94eSxudWxsLHRoaXMpLHF0KHIsIl9fc3RhdGljX18iK2UsITEpKSxyfWZ1bmN0aW9uIFV0KGUsdCxuKXtyZXR1cm4gcXQoZSwiX19vbmNlX18iK3QrKG4/Il8iK246IiIpLCEwKSxlfWZ1bmN0aW9uIHF0KGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0mJiJzdHJpbmciIT09dHlwZW9mIGVbcl0mJld0KGVbcl0sdCsiXyIrcixuKTtlbHNlIFd0KGUsdCxuKX1mdW5jdGlvbiBXdChlLHQsbil7ZS5pc1N0YXRpYz0hMCxlLmtleT10LGUuaXNPbmNlPW59ZnVuY3Rpb24gWXQoZSx0KXtpZih0KWlmKGwodCkpe3ZhciBuPWUub249ZS5vbj9EKHt9LGUub24pOnt9O2Zvcih2YXIgciBpbiB0KXt2YXIgaT1uW3JdLG89dFtyXTtuW3JdPWk/W10uY29uY2F0KGksbyk6b319ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBWdChlLHQsbixyKXt0PXR8fHskc3RhYmxlOiFufTtmb3IodmFyIGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXTtBcnJheS5pc0FycmF5KG8pP1Z0KG8sdCxuKTpvJiYoby5wcm94eSYmKG8uZm4ucHJveHk9ITApLHRbby5rZXldPW8uZm4pfXJldHVybiByJiYodC4ka2V5PXIpLHR9ZnVuY3Rpb24gWHQoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rPTIpe3ZhciByPXRbbl07InN0cmluZyI9PT10eXBlb2YgciYmciYmKGVbdFtuXV09dFtuKzFdKX1yZXR1cm4gZX1mdW5jdGlvbiBHdChlLHQpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGU/dCtlOmV9ZnVuY3Rpb24gS3QoZSl7ZS5fbz1VdCxlLl9uPXYsZS5fcz1oLGUuX2w9THQsZS5fdD1QdCxlLl9xPUwsZS5faT1QLGUuX209RnQsZS5fZj1NdCxlLl9rPUh0LGUuX2I9enQsZS5fdj14ZSxlLl9lPV9lLGUuX3U9VnQsZS5fZz1ZdCxlLl9kPVh0LGUuX3A9R3R9ZnVuY3Rpb24gSnQoZSx0LHIsaSxhKXt2YXIgcyx1PXRoaXMsYz1hLm9wdGlvbnM7YihpLCJfdWlkIik/KHM9T2JqZWN0LmNyZWF0ZShpKSxzLl9vcmlnaW5hbD1pKToocz1pLGk9aS5fb3JpZ2luYWwpO3ZhciBsPW8oYy5fY29tcGlsZWQpLGY9IWw7dGhpcy5kYXRhPWUsdGhpcy5wcm9wcz10LHRoaXMuY2hpbGRyZW49cix0aGlzLnBhcmVudD1pLHRoaXMubGlzdGVuZXJzPWUub258fG4sdGhpcy5pbmplY3Rpb25zPUJ0KGMuaW5qZWN0LGkpLHRoaXMuc2xvdHM9ZnVuY3Rpb24oKXtyZXR1cm4gdS4kc2xvdHN8fE50KGUuc2NvcGVkU2xvdHMsdS4kc2xvdHM9RHQocixpKSksdS4kc2xvdHN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJzY29wZWRTbG90cyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE50KGUuc2NvcGVkU2xvdHMsdGhpcy5zbG90cygpKX19KSxsJiYodGhpcy4kb3B0aW9ucz1jLHRoaXMuJHNsb3RzPXRoaXMuc2xvdHMoKSx0aGlzLiRzY29wZWRTbG90cz1OdChlLnNjb3BlZFNsb3RzLHRoaXMuJHNsb3RzKSksYy5fc2NvcGVJZD90aGlzLl9jPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWZuKHMsZSx0LG4scixmKTtyZXR1cm4gbyYmIUFycmF5LmlzQXJyYXkobykmJihvLmZuU2NvcGVJZD1jLl9zY29wZUlkLG8uZm5Db250ZXh0PWkpLG99OnRoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGZuKHMsZSx0LG4scixmKX19ZnVuY3Rpb24gUXQoZSx0LHIsbyxhKXt2YXIgcz1lLm9wdGlvbnMsdT17fSxjPXMucHJvcHM7aWYoaShjKSlmb3IodmFyIGwgaW4gYyl1W2xdPUtlKGwsYyx0fHxuKTtlbHNlIGkoci5hdHRycykmJmVuKHUsci5hdHRycyksaShyLnByb3BzKSYmZW4odSxyLnByb3BzKTt2YXIgZj1uZXcgSnQocix1LGEsbyxlKSxkPXMucmVuZGVyLmNhbGwobnVsbCxmLl9jLGYpO2lmKGQgaW5zdGFuY2VvZiB3ZSlyZXR1cm4gWnQoZCxyLGYucGFyZW50LHMsZik7aWYoQXJyYXkuaXNBcnJheShkKSl7Zm9yKHZhciBwPUF0KGQpfHxbXSxoPW5ldyBBcnJheShwLmxlbmd0aCksdj0wO3Y8cC5sZW5ndGg7disrKWhbdl09WnQocFt2XSxyLGYucGFyZW50LHMsZik7cmV0dXJuIGh9fWZ1bmN0aW9uIFp0KGUsdCxuLHIsaSl7dmFyIG89a2UoZSk7cmV0dXJuIG8uZm5Db250ZXh0PW4sby5mbk9wdGlvbnM9cix0LnNsb3QmJigoby5kYXRhfHwoby5kYXRhPXt9KSkuc2xvdD10LnNsb3QpLG99ZnVuY3Rpb24gZW4oZSx0KXtmb3IodmFyIG4gaW4gdCllW2sobildPXRbbl19S3QoSnQucHJvdG90eXBlKTt2YXIgdG49e2luaXQ6ZnVuY3Rpb24oZSx0KXtpZihlLmNvbXBvbmVudEluc3RhbmNlJiYhZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQmJmUuZGF0YS5rZWVwQWxpdmUpe3ZhciBuPWU7dG4ucHJlcGF0Y2gobixuKX1lbHNle3ZhciByPWUuY29tcG9uZW50SW5zdGFuY2U9b24oZSxCbik7ci4kbW91bnQodD9lLmVsbTp2b2lkIDAsdCl9fSxwcmVwYXRjaDpmdW5jdGlvbihlLHQpe3ZhciBuPXQuY29tcG9uZW50T3B0aW9ucyxyPXQuY29tcG9uZW50SW5zdGFuY2U9ZS5jb21wb25lbnRJbnN0YW5jZTtSbihyLG4ucHJvcHNEYXRhLG4ubGlzdGVuZXJzLHQsbi5jaGlsZHJlbil9LGluc2VydDpmdW5jdGlvbihlKXt2YXIgdD1lLmNvbnRleHQsbj1lLmNvbXBvbmVudEluc3RhbmNlO24uX2lzTW91bnRlZHx8KG4uX2lzTW91bnRlZD0hMCxJbihuLCJtb3VudGVkIikpLGUuZGF0YS5rZWVwQWxpdmUmJih0Ll9pc01vdW50ZWQ/UW4obik6UG4obiwhMCkpfSxkZXN0cm95OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29tcG9uZW50SW5zdGFuY2U7dC5faXNEZXN0cm95ZWR8fChlLmRhdGEua2VlcEFsaXZlP01uKHQsITApOnQuJGRlc3Ryb3koKSl9fSxubj1PYmplY3Qua2V5cyh0bik7ZnVuY3Rpb24gcm4oZSx0LG4sYSxzKXtpZighcihlKSl7dmFyIGM9bi4kb3B0aW9ucy5fYmFzZTtpZih1KGUpJiYoZT1jLmV4dGVuZChlKSksImZ1bmN0aW9uIj09PXR5cGVvZiBlKXt2YXIgbDtpZihyKGUuY2lkKSYmKGw9ZSxlPV9uKGwsYyksdm9pZCAwPT09ZSkpcmV0dXJuIGJuKGwsdCxuLGEscyk7dD10fHx7fSxfcihlKSxpKHQubW9kZWwpJiZ1bihlLm9wdGlvbnMsdCk7dmFyIGY9eHQodCxlLHMpO2lmKG8oZS5vcHRpb25zLmZ1bmN0aW9uYWwpKXJldHVybiBRdChlLGYsdCxuLGEpO3ZhciBkPXQub247aWYodC5vbj10Lm5hdGl2ZU9uLG8oZS5vcHRpb25zLmFic3RyYWN0KSl7dmFyIHA9dC5zbG90O3Q9e30scCYmKHQuc2xvdD1wKX1hbih0KTt2YXIgaD1lLm9wdGlvbnMubmFtZXx8cyx2PW5ldyB3ZSgidnVlLWNvbXBvbmVudC0iK2UuY2lkKyhoPyItIitoOiIiKSx0LHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4se0N0b3I6ZSxwcm9wc0RhdGE6ZixsaXN0ZW5lcnM6ZCx0YWc6cyxjaGlsZHJlbjphfSxsKTtyZXR1cm4gdn19fWZ1bmN0aW9uIG9uKGUsdCl7dmFyIG49e19pc0NvbXBvbmVudDohMCxfcGFyZW50Vm5vZGU6ZSxwYXJlbnQ6dH0scj1lLmRhdGEuaW5saW5lVGVtcGxhdGU7cmV0dXJuIGkocikmJihuLnJlbmRlcj1yLnJlbmRlcixuLnN0YXRpY1JlbmRlckZucz1yLnN0YXRpY1JlbmRlckZucyksbmV3IGUuY29tcG9uZW50T3B0aW9ucy5DdG9yKG4pfWZ1bmN0aW9uIGFuKGUpe2Zvcih2YXIgdD1lLmhvb2t8fChlLmhvb2s9e30pLG49MDtuPG5uLmxlbmd0aDtuKyspe3ZhciByPW5uW25dLGk9dFtyXSxvPXRuW3JdO2k9PT1vfHxpJiZpLl9tZXJnZWR8fCh0W3JdPWk/c24obyxpKTpvKX19ZnVuY3Rpb24gc24oZSx0KXt2YXIgbj1mdW5jdGlvbihuLHIpe2UobixyKSx0KG4scil9O3JldHVybiBuLl9tZXJnZWQ9ITAsbn1mdW5jdGlvbiB1bihlLHQpe3ZhciBuPWUubW9kZWwmJmUubW9kZWwucHJvcHx8InZhbHVlIixyPWUubW9kZWwmJmUubW9kZWwuZXZlbnR8fCJpbnB1dCI7KHQuYXR0cnN8fCh0LmF0dHJzPXt9KSlbbl09dC5tb2RlbC52YWx1ZTt2YXIgbz10Lm9ufHwodC5vbj17fSksYT1vW3JdLHM9dC5tb2RlbC5jYWxsYmFjaztpKGEpPyhBcnJheS5pc0FycmF5KGEpPy0xPT09YS5pbmRleE9mKHMpOmEhPT1zKSYmKG9bcl09W3NdLmNvbmNhdChhKSk6b1tyXT1zfXZhciBjbj0xLGxuPTI7ZnVuY3Rpb24gZm4oZSx0LG4scixpLGEpe3JldHVybihBcnJheS5pc0FycmF5KG4pfHxzKG4pKSYmKGk9cixyPW4sbj12b2lkIDApLG8oYSkmJihpPWxuKSxkbihlLHQsbixyLGkpfWZ1bmN0aW9uIGRuKGUsdCxuLHIsbyl7aWYoaShuKSYmaShuLl9fb2JfXykpcmV0dXJuIF9lKCk7aWYoaShuKSYmaShuLmlzKSYmKHQ9bi5pcyksIXQpcmV0dXJuIF9lKCk7dmFyIGEscyx1OyhBcnJheS5pc0FycmF5KHIpJiYiZnVuY3Rpb24iPT09dHlwZW9mIHJbMF0mJihuPW58fHt9LG4uc2NvcGVkU2xvdHM9e2RlZmF1bHQ6clswXX0sci5sZW5ndGg9MCksbz09PWxuP3I9QXQocik6bz09PWNuJiYocj1DdChyKSksInN0cmluZyI9PT10eXBlb2YgdCk/KHM9ZS4kdm5vZGUmJmUuJHZub2RlLm5zfHxGLmdldFRhZ05hbWVzcGFjZSh0KSxhPUYuaXNSZXNlcnZlZFRhZyh0KT9uZXcgd2UoRi5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0KSxuLHIsdm9pZCAwLHZvaWQgMCxlKTpuJiZuLnByZXx8IWkodT1HZShlLiRvcHRpb25zLCJjb21wb25lbnRzIix0KSk/bmV3IHdlKHQsbixyLHZvaWQgMCx2b2lkIDAsZSk6cm4odSxuLGUscix0KSk6YT1ybih0LG4sZSxyKTtyZXR1cm4gQXJyYXkuaXNBcnJheShhKT9hOmkoYSk/KGkocykmJnBuKGEscyksaShuKSYmaG4obiksYSk6X2UoKX1mdW5jdGlvbiBwbihlLHQsbil7aWYoZS5ucz10LCJmb3JlaWduT2JqZWN0Ij09PWUudGFnJiYodD12b2lkIDAsbj0hMCksaShlLmNoaWxkcmVuKSlmb3IodmFyIGE9MCxzPWUuY2hpbGRyZW4ubGVuZ3RoO2E8czthKyspe3ZhciB1PWUuY2hpbGRyZW5bYV07aSh1LnRhZykmJihyKHUubnMpfHxvKG4pJiYic3ZnIiE9PXUudGFnKSYmcG4odSx0LG4pfX1mdW5jdGlvbiBobihlKXt1KGUuc3R5bGUpJiZtdChlLnN0eWxlKSx1KGUuY2xhc3MpJiZtdChlLmNsYXNzKX1mdW5jdGlvbiB2bihlKXtlLl92bm9kZT1udWxsLGUuX3N0YXRpY1RyZWVzPW51bGw7dmFyIHQ9ZS4kb3B0aW9ucyxyPWUuJHZub2RlPXQuX3BhcmVudFZub2RlLGk9ciYmci5jb250ZXh0O2UuJHNsb3RzPUR0KHQuX3JlbmRlckNoaWxkcmVuLGkpLGUuJHNjb3BlZFNsb3RzPW4sZS5fYz1mdW5jdGlvbih0LG4scixpKXtyZXR1cm4gZm4oZSx0LG4scixpLCExKX0sZS4kY3JlYXRlRWxlbWVudD1mdW5jdGlvbih0LG4scixpKXtyZXR1cm4gZm4oZSx0LG4scixpLCEwKX07dmFyIG89ciYmci5kYXRhOyRlKGUsIiRhdHRycyIsbyYmby5hdHRyc3x8bixudWxsLCEwKSwkZShlLCIkbGlzdGVuZXJzIix0Ll9wYXJlbnRMaXN0ZW5lcnN8fG4sbnVsbCwhMCl9dmFyIG1uLHluPW51bGw7ZnVuY3Rpb24gZ24oZSl7S3QoZS5wcm90b3R5cGUpLGUucHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbihlKXtyZXR1cm4gaHQoZSx0aGlzKX0sZS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxuPXQuJG9wdGlvbnMscj1uLnJlbmRlcixpPW4uX3BhcmVudFZub2RlO2kmJih0LiRzY29wZWRTbG90cz1OdChpLmRhdGEuc2NvcGVkU2xvdHMsdC4kc2xvdHMsdC4kc2NvcGVkU2xvdHMpKSx0LiR2bm9kZT1pO3RyeXt5bj10LGU9ci5jYWxsKHQuX3JlbmRlclByb3h5LHQuJGNyZWF0ZUVsZW1lbnQpfWNhdGNoKGthKXt0dChrYSx0LCJyZW5kZXIiKSxlPXQuX3Zub2RlfWZpbmFsbHl7eW49bnVsbH1yZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmMT09PWUubGVuZ3RoJiYoZT1lWzBdKSxlIGluc3RhbmNlb2Ygd2V8fChlPV9lKCkpLGUucGFyZW50PWksZX19ZnVuY3Rpb24gd24oZSx0KXtyZXR1cm4oZS5fX2VzTW9kdWxlfHxkZSYmIk1vZHVsZSI9PT1lW1N5bWJvbC50b1N0cmluZ1RhZ10pJiYoZT1lLmRlZmF1bHQpLHUoZSk/dC5leHRlbmQoZSk6ZX1mdW5jdGlvbiBibihlLHQsbixyLGkpe3ZhciBvPV9lKCk7cmV0dXJuIG8uYXN5bmNGYWN0b3J5PWUsby5hc3luY01ldGE9e2RhdGE6dCxjb250ZXh0Om4sY2hpbGRyZW46cix0YWc6aX0sb31mdW5jdGlvbiBfbihlLHQpe2lmKG8oZS5lcnJvcikmJmkoZS5lcnJvckNvbXApKXJldHVybiBlLmVycm9yQ29tcDtpZihpKGUucmVzb2x2ZWQpKXJldHVybiBlLnJlc29sdmVkO3ZhciBuPXluO2lmKG4mJmkoZS5vd25lcnMpJiYtMT09PWUub3duZXJzLmluZGV4T2YobikmJmUub3duZXJzLnB1c2gobiksbyhlLmxvYWRpbmcpJiZpKGUubG9hZGluZ0NvbXApKXJldHVybiBlLmxvYWRpbmdDb21wO2lmKG4mJiFpKGUub3duZXJzKSl7dmFyIGE9ZS5vd25lcnM9W25dLHM9ITAsYz1udWxsLGw9bnVsbDtuLiRvbigiaG9vazpkZXN0cm95ZWQiLChmdW5jdGlvbigpe3JldHVybiBnKGEsbil9KSk7dmFyIGY9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1hLmxlbmd0aDt0PG47dCsrKWFbdF0uJGZvcmNlVXBkYXRlKCk7ZSYmKGEubGVuZ3RoPTAsbnVsbCE9PWMmJihjbGVhclRpbWVvdXQoYyksYz1udWxsKSxudWxsIT09bCYmKGNsZWFyVGltZW91dChsKSxsPW51bGwpKX0sZD1NKChmdW5jdGlvbihuKXtlLnJlc29sdmVkPXduKG4sdCkscz9hLmxlbmd0aD0wOmYoITApfSkpLGg9TSgoZnVuY3Rpb24odCl7aShlLmVycm9yQ29tcCkmJihlLmVycm9yPSEwLGYoITApKX0pKSx2PWUoZCxoKTtyZXR1cm4gdSh2KSYmKHAodik/cihlLnJlc29sdmVkKSYmdi50aGVuKGQsaCk6cCh2LmNvbXBvbmVudCkmJih2LmNvbXBvbmVudC50aGVuKGQsaCksaSh2LmVycm9yKSYmKGUuZXJyb3JDb21wPXduKHYuZXJyb3IsdCkpLGkodi5sb2FkaW5nKSYmKGUubG9hZGluZ0NvbXA9d24odi5sb2FkaW5nLHQpLDA9PT12LmRlbGF5P2UubG9hZGluZz0hMDpjPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7Yz1udWxsLHIoZS5yZXNvbHZlZCkmJnIoZS5lcnJvcikmJihlLmxvYWRpbmc9ITAsZighMSkpfSksdi5kZWxheXx8MjAwKSksaSh2LnRpbWVvdXQpJiYobD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2w9bnVsbCxyKGUucmVzb2x2ZWQpJiZoKG51bGwpfSksdi50aW1lb3V0KSkpKSxzPSExLGUubG9hZGluZz9lLmxvYWRpbmdDb21wOmUucmVzb2x2ZWR9fWZ1bmN0aW9uIHhuKGUpe3JldHVybiBlLmlzQ29tbWVudCYmZS5hc3luY0ZhY3Rvcnl9ZnVuY3Rpb24ga24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIG49ZVt0XTtpZihpKG4pJiYoaShuLmNvbXBvbmVudE9wdGlvbnMpfHx4bihuKSkpcmV0dXJuIG59fWZ1bmN0aW9uIENuKGUpe2UuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLGUuX2hhc0hvb2tFdmVudD0hMTt2YXIgdD1lLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7dCYmVG4oZSx0KX1mdW5jdGlvbiBBbihlLHQpe21uLiRvbihlLHQpfWZ1bmN0aW9uIFNuKGUsdCl7bW4uJG9mZihlLHQpfWZ1bmN0aW9uIEVuKGUsdCl7dmFyIG49bW47cmV0dXJuIGZ1bmN0aW9uIHIoKXt2YXIgaT10LmFwcGx5KG51bGwsYXJndW1lbnRzKTtudWxsIT09aSYmbi4kb2ZmKGUscil9fWZ1bmN0aW9uIFRuKGUsdCxuKXttbj1lLGJ0KHQsbnx8e30sQW4sU24sRW4sZSksbW49dm9pZCAwfWZ1bmN0aW9uIE9uKGUpe3ZhciB0PS9eaG9vazovO2UucHJvdG90eXBlLiRvbj1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIGk9MCxvPWUubGVuZ3RoO2k8bztpKyspci4kb24oZVtpXSxuKTtlbHNlKHIuX2V2ZW50c1tlXXx8KHIuX2V2ZW50c1tlXT1bXSkpLnB1c2gobiksdC50ZXN0KGUpJiYoci5faGFzSG9va0V2ZW50PSEwKTtyZXR1cm4gcn0sZS5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYoZSxyKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj10LG4uJG9uKGUsciksbn0sZS5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLG47aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKW4uJG9mZihlW3JdLHQpO3JldHVybiBufXZhciBvLGE9bi5fZXZlbnRzW2VdO2lmKCFhKXJldHVybiBuO2lmKCF0KXJldHVybiBuLl9ldmVudHNbZV09bnVsbCxuO3ZhciBzPWEubGVuZ3RoO3doaWxlKHMtLSlpZihvPWFbc10sbz09PXR8fG8uZm49PT10KXthLnNwbGljZShzLDEpO2JyZWFrfXJldHVybiBufSxlLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5fZXZlbnRzW2VdO2lmKG4pe249bi5sZW5ndGg+MT9CKG4pOm47Zm9yKHZhciByPUIoYXJndW1lbnRzLDEpLGk9J2V2ZW50IGhhbmRsZXIgZm9yICInK2UrJyInLG89MCxhPW4ubGVuZ3RoO288YTtvKyspbnQobltvXSx0LHIsdCxpKX1yZXR1cm4gdH19dmFyIEJuPW51bGw7ZnVuY3Rpb24gRG4oZSl7dmFyIHQ9Qm47cmV0dXJuIEJuPWUsZnVuY3Rpb24oKXtCbj10fX1mdW5jdGlvbiBqbihlKXt2YXIgdD1lLiRvcHRpb25zLG49dC5wYXJlbnQ7aWYobiYmIXQuYWJzdHJhY3Qpe3doaWxlKG4uJG9wdGlvbnMuYWJzdHJhY3QmJm4uJHBhcmVudCluPW4uJHBhcmVudDtuLiRjaGlsZHJlbi5wdXNoKGUpfWUuJHBhcmVudD1uLGUuJHJvb3Q9bj9uLiRyb290OmUsZS4kY2hpbGRyZW49W10sZS4kcmVmcz17fSxlLl93YXRjaGVyPW51bGwsZS5faW5hY3RpdmU9bnVsbCxlLl9kaXJlY3RJbmFjdGl2ZT0hMSxlLl9pc01vdW50ZWQ9ITEsZS5faXNEZXN0cm95ZWQ9ITEsZS5faXNCZWluZ0Rlc3Ryb3llZD0hMX1mdW5jdGlvbiBObihlKXtlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPW4uJGVsLGk9bi5fdm5vZGUsbz1EbihuKTtuLl92bm9kZT1lLG4uJGVsPWk/bi5fX3BhdGNoX18oaSxlKTpuLl9fcGF0Y2hfXyhuLiRlbCxlLHQsITEpLG8oKSxyJiYoci5fX3Z1ZV9fPW51bGwpLG4uJGVsJiYobi4kZWwuX192dWVfXz1uKSxuLiR2bm9kZSYmbi4kcGFyZW50JiZuLiR2bm9kZT09PW4uJHBhcmVudC5fdm5vZGUmJihuLiRwYXJlbnQuJGVsPW4uJGVsKX0sZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLl93YXRjaGVyJiZlLl93YXRjaGVyLnVwZGF0ZSgpfSxlLnByb3RvdHlwZS4kZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIWUuX2lzQmVpbmdEZXN0cm95ZWQpe0luKGUsImJlZm9yZURlc3Ryb3kiKSxlLl9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciB0PWUuJHBhcmVudDshdHx8dC5faXNCZWluZ0Rlc3Ryb3llZHx8ZS4kb3B0aW9ucy5hYnN0cmFjdHx8Zyh0LiRjaGlsZHJlbixlKSxlLl93YXRjaGVyJiZlLl93YXRjaGVyLnRlYXJkb3duKCk7dmFyIG49ZS5fd2F0Y2hlcnMubGVuZ3RoO3doaWxlKG4tLSllLl93YXRjaGVyc1tuXS50ZWFyZG93bigpO2UuX2RhdGEuX19vYl9fJiZlLl9kYXRhLl9fb2JfXy52bUNvdW50LS0sZS5faXNEZXN0cm95ZWQ9ITAsZS5fX3BhdGNoX18oZS5fdm5vZGUsbnVsbCksSW4oZSwiZGVzdHJveWVkIiksZS4kb2ZmKCksZS4kZWwmJihlLiRlbC5fX3Z1ZV9fPW51bGwpLGUuJHZub2RlJiYoZS4kdm5vZGUucGFyZW50PW51bGwpfX19ZnVuY3Rpb24gJG4oZSx0LG4pe3ZhciByO3JldHVybiBlLiRlbD10LGUuJG9wdGlvbnMucmVuZGVyfHwoZS4kb3B0aW9ucy5yZW5kZXI9X2UpLEluKGUsImJlZm9yZU1vdW50Iikscj1mdW5jdGlvbigpe2UuX3VwZGF0ZShlLl9yZW5kZXIoKSxuKX0sbmV3IG5yKGUscixOLHtiZWZvcmU6ZnVuY3Rpb24oKXtlLl9pc01vdW50ZWQmJiFlLl9pc0Rlc3Ryb3llZCYmSW4oZSwiYmVmb3JlVXBkYXRlIil9fSwhMCksbj0hMSxudWxsPT1lLiR2bm9kZSYmKGUuX2lzTW91bnRlZD0hMCxJbihlLCJtb3VudGVkIikpLGV9ZnVuY3Rpb24gUm4oZSx0LHIsaSxvKXt2YXIgYT1pLmRhdGEuc2NvcGVkU2xvdHMscz1lLiRzY29wZWRTbG90cyx1PSEhKGEmJiFhLiRzdGFibGV8fHMhPT1uJiYhcy4kc3RhYmxlfHxhJiZlLiRzY29wZWRTbG90cy4ka2V5IT09YS4ka2V5KSxjPSEhKG98fGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVufHx1KTtpZihlLiRvcHRpb25zLl9wYXJlbnRWbm9kZT1pLGUuJHZub2RlPWksZS5fdm5vZGUmJihlLl92bm9kZS5wYXJlbnQ9aSksZS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW49byxlLiRhdHRycz1pLmRhdGEuYXR0cnN8fG4sZS4kbGlzdGVuZXJzPXJ8fG4sdCYmZS4kb3B0aW9ucy5wcm9wcyl7T2UoITEpO2Zvcih2YXIgbD1lLl9wcm9wcyxmPWUuJG9wdGlvbnMuX3Byb3BLZXlzfHxbXSxkPTA7ZDxmLmxlbmd0aDtkKyspe3ZhciBwPWZbZF0saD1lLiRvcHRpb25zLnByb3BzO2xbcF09S2UocCxoLHQsZSl9T2UoITApLGUuJG9wdGlvbnMucHJvcHNEYXRhPXR9cj1yfHxuO3ZhciB2PWUuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztlLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM9cixUbihlLHIsdiksYyYmKGUuJHNsb3RzPUR0KG8saS5jb250ZXh0KSxlLiRmb3JjZVVwZGF0ZSgpKX1mdW5jdGlvbiBMbihlKXt3aGlsZShlJiYoZT1lLiRwYXJlbnQpKWlmKGUuX2luYWN0aXZlKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFBuKGUsdCl7aWYodCl7aWYoZS5fZGlyZWN0SW5hY3RpdmU9ITEsTG4oZSkpcmV0dXJufWVsc2UgaWYoZS5fZGlyZWN0SW5hY3RpdmUpcmV0dXJuO2lmKGUuX2luYWN0aXZlfHxudWxsPT09ZS5faW5hY3RpdmUpe2UuX2luYWN0aXZlPSExO2Zvcih2YXIgbj0wO248ZS4kY2hpbGRyZW4ubGVuZ3RoO24rKylQbihlLiRjaGlsZHJlbltuXSk7SW4oZSwiYWN0aXZhdGVkIil9fWZ1bmN0aW9uIE1uKGUsdCl7aWYoKCF0fHwoZS5fZGlyZWN0SW5hY3RpdmU9ITAsIUxuKGUpKSkmJiFlLl9pbmFjdGl2ZSl7ZS5faW5hY3RpdmU9ITA7Zm9yKHZhciBuPTA7bjxlLiRjaGlsZHJlbi5sZW5ndGg7bisrKU1uKGUuJGNoaWxkcmVuW25dKTtJbihlLCJkZWFjdGl2YXRlZCIpfX1mdW5jdGlvbiBJbihlLHQpe3llKCk7dmFyIG49ZS4kb3B0aW9uc1t0XSxyPXQrIiBob29rIjtpZihuKWZvcih2YXIgaT0wLG89bi5sZW5ndGg7aTxvO2krKyludChuW2ldLGUsbnVsbCxlLHIpO2UuX2hhc0hvb2tFdmVudCYmZS4kZW1pdCgiaG9vazoiK3QpLGdlKCl9dmFyIEhuPVtdLHpuPVtdLEZuPXt9LFVuPSExLHFuPSExLFduPTA7ZnVuY3Rpb24gWW4oKXtXbj1Ibi5sZW5ndGg9em4ubGVuZ3RoPTAsRm49e30sVW49cW49ITF9dmFyIFZuPTAsWG49RGF0ZS5ub3c7aWYoSyYmIWVlKXt2YXIgR249d2luZG93LnBlcmZvcm1hbmNlO0duJiYiZnVuY3Rpb24iPT09dHlwZW9mIEduLm5vdyYmWG4oKT5kb2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKS50aW1lU3RhbXAmJihYbj1mdW5jdGlvbigpe3JldHVybiBHbi5ub3coKX0pfWZ1bmN0aW9uIEtuKCl7dmFyIGUsdDtmb3IoVm49WG4oKSxxbj0hMCxIbi5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLmlkLXQuaWR9KSksV249MDtXbjxIbi5sZW5ndGg7V24rKyllPUhuW1duXSxlLmJlZm9yZSYmZS5iZWZvcmUoKSx0PWUuaWQsRm5bdF09bnVsbCxlLnJ1bigpO3ZhciBuPXpuLnNsaWNlKCkscj1Ibi5zbGljZSgpO1luKCksWm4obiksSm4ociksY2UmJkYuZGV2dG9vbHMmJmNlLmVtaXQoImZsdXNoIil9ZnVuY3Rpb24gSm4oZSl7dmFyIHQ9ZS5sZW5ndGg7d2hpbGUodC0tKXt2YXIgbj1lW3RdLHI9bi52bTtyLl93YXRjaGVyPT09biYmci5faXNNb3VudGVkJiYhci5faXNEZXN0cm95ZWQmJkluKHIsInVwZGF0ZWQiKX19ZnVuY3Rpb24gUW4oZSl7ZS5faW5hY3RpdmU9ITEsem4ucHVzaChlKX1mdW5jdGlvbiBabihlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdLl9pbmFjdGl2ZT0hMCxQbihlW3RdLCEwKX1mdW5jdGlvbiBlcihlKXt2YXIgdD1lLmlkO2lmKG51bGw9PUZuW3RdKXtpZihGblt0XT0hMCxxbil7dmFyIG49SG4ubGVuZ3RoLTE7d2hpbGUobj5XbiYmSG5bbl0uaWQ+ZS5pZCluLS07SG4uc3BsaWNlKG4rMSwwLGUpfWVsc2UgSG4ucHVzaChlKTtVbnx8KFVuPSEwLGh0KEtuKSl9fXZhciB0cj0wLG5yPWZ1bmN0aW9uKGUsdCxuLHIsaSl7dGhpcy52bT1lLGkmJihlLl93YXRjaGVyPXRoaXMpLGUuX3dhdGNoZXJzLnB1c2godGhpcykscj8odGhpcy5kZWVwPSEhci5kZWVwLHRoaXMudXNlcj0hIXIudXNlcix0aGlzLmxhenk9ISFyLmxhenksdGhpcy5zeW5jPSEhci5zeW5jLHRoaXMuYmVmb3JlPXIuYmVmb3JlKTp0aGlzLmRlZXA9dGhpcy51c2VyPXRoaXMubGF6eT10aGlzLnN5bmM9ITEsdGhpcy5jYj1uLHRoaXMuaWQ9Kyt0cix0aGlzLmFjdGl2ZT0hMCx0aGlzLmRpcnR5PXRoaXMubGF6eSx0aGlzLmRlcHM9W10sdGhpcy5uZXdEZXBzPVtdLHRoaXMuZGVwSWRzPW5ldyBmZSx0aGlzLm5ld0RlcElkcz1uZXcgZmUsdGhpcy5leHByZXNzaW9uPSIiLCJmdW5jdGlvbiI9PT10eXBlb2YgdD90aGlzLmdldHRlcj10Oih0aGlzLmdldHRlcj1WKHQpLHRoaXMuZ2V0dGVyfHwodGhpcy5nZXR0ZXI9TikpLHRoaXMudmFsdWU9dGhpcy5sYXp5P3ZvaWQgMDp0aGlzLmdldCgpfTtuci5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7dmFyIGU7eWUodGhpcyk7dmFyIHQ9dGhpcy52bTt0cnl7ZT10aGlzLmdldHRlci5jYWxsKHQsdCl9Y2F0Y2goa2Epe2lmKCF0aGlzLnVzZXIpdGhyb3cga2E7dHQoa2EsdCwnZ2V0dGVyIGZvciB3YXRjaGVyICInK3RoaXMuZXhwcmVzc2lvbisnIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZtdChlKSxnZSgpLHRoaXMuY2xlYW51cERlcHMoKX1yZXR1cm4gZX0sbnIucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sbnIucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5kZXBzLmxlbmd0aDt3aGlsZShlLS0pe3ZhciB0PXRoaXMuZGVwc1tlXTt0aGlzLm5ld0RlcElkcy5oYXModC5pZCl8fHQucmVtb3ZlU3ViKHRoaXMpfXZhciBuPXRoaXMuZGVwSWRzO3RoaXMuZGVwSWRzPXRoaXMubmV3RGVwSWRzLHRoaXMubmV3RGVwSWRzPW4sdGhpcy5uZXdEZXBJZHMuY2xlYXIoKSxuPXRoaXMuZGVwcyx0aGlzLmRlcHM9dGhpcy5uZXdEZXBzLHRoaXMubmV3RGVwcz1uLHRoaXMubmV3RGVwcy5sZW5ndGg9MH0sbnIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMubGF6eT90aGlzLmRpcnR5PSEwOnRoaXMuc3luYz90aGlzLnJ1bigpOmVyKHRoaXMpfSxuci5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7aWYodGhpcy5hY3RpdmUpe3ZhciBlPXRoaXMuZ2V0KCk7aWYoZSE9PXRoaXMudmFsdWV8fHUoZSl8fHRoaXMuZGVlcCl7dmFyIHQ9dGhpcy52YWx1ZTtpZih0aGlzLnZhbHVlPWUsdGhpcy51c2VyKXRyeXt0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfWNhdGNoKGthKXt0dChrYSx0aGlzLnZtLCdjYWxsYmFjayBmb3Igd2F0Y2hlciAiJyt0aGlzLmV4cHJlc3Npb24rJyInKX1lbHNlIHRoaXMuY2IuY2FsbCh0aGlzLnZtLGUsdCl9fX0sbnIucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLmdldCgpLHRoaXMuZGlydHk9ITF9LG5yLnByb3RvdHlwZS5kZXBlbmQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmRlcHMubGVuZ3RoO3doaWxlKGUtLSl0aGlzLmRlcHNbZV0uZGVwZW5kKCl9LG5yLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkfHxnKHRoaXMudm0uX3dhdGNoZXJzLHRoaXMpO3ZhciBlPXRoaXMuZGVwcy5sZW5ndGg7d2hpbGUoZS0tKXRoaXMuZGVwc1tlXS5yZW1vdmVTdWIodGhpcyk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgcnI9e2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpOLHNldDpOfTtmdW5jdGlvbiBpcihlLHQsbil7cnIuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbdF1bbl19LHJyLnNldD1mdW5jdGlvbihlKXt0aGlzW3RdW25dPWV9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4scnIpfWZ1bmN0aW9uIG9yKGUpe2UuX3dhdGNoZXJzPVtdO3ZhciB0PWUuJG9wdGlvbnM7dC5wcm9wcyYmYXIoZSx0LnByb3BzKSx0Lm1ldGhvZHMmJmhyKGUsdC5tZXRob2RzKSx0LmRhdGE/c3IoZSk6TmUoZS5fZGF0YT17fSwhMCksdC5jb21wdXRlZCYmbHIoZSx0LmNvbXB1dGVkKSx0LndhdGNoJiZ0LndhdGNoIT09b2UmJnZyKGUsdC53YXRjaCl9ZnVuY3Rpb24gYXIoZSx0KXt2YXIgbj1lLiRvcHRpb25zLnByb3BzRGF0YXx8e30scj1lLl9wcm9wcz17fSxpPWUuJG9wdGlvbnMuX3Byb3BLZXlzPVtdLG89IWUuJHBhcmVudDtvfHxPZSghMSk7dmFyIGE9ZnVuY3Rpb24obyl7aS5wdXNoKG8pO3ZhciBhPUtlKG8sdCxuLGUpOyRlKHIsbyxhKSxvIGluIGV8fGlyKGUsIl9wcm9wcyIsbyl9O2Zvcih2YXIgcyBpbiB0KWEocyk7T2UoITApfWZ1bmN0aW9uIHNyKGUpe3ZhciB0PWUuJG9wdGlvbnMuZGF0YTt0PWUuX2RhdGE9ImZ1bmN0aW9uIj09PXR5cGVvZiB0P3VyKHQsZSk6dHx8e30sbCh0KXx8KHQ9e30pO3ZhciBuPU9iamVjdC5rZXlzKHQpLHI9ZS4kb3B0aW9ucy5wcm9wcyxpPShlLiRvcHRpb25zLm1ldGhvZHMsbi5sZW5ndGgpO3doaWxlKGktLSl7dmFyIG89bltpXTswLHImJmIocixvKXx8cShvKXx8aXIoZSwiX2RhdGEiLG8pfU5lKHQsITApfWZ1bmN0aW9uIHVyKGUsdCl7eWUoKTt0cnl7cmV0dXJuIGUuY2FsbCh0LHQpfWNhdGNoKGthKXtyZXR1cm4gdHQoa2EsdCwiZGF0YSgpIikse319ZmluYWxseXtnZSgpfX12YXIgY3I9e2xhenk6ITB9O2Z1bmN0aW9uIGxyKGUsdCl7dmFyIG49ZS5fY29tcHV0ZWRXYXRjaGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHI9dWUoKTtmb3IodmFyIGkgaW4gdCl7dmFyIG89dFtpXSxhPSJmdW5jdGlvbiI9PT10eXBlb2Ygbz9vOm8uZ2V0OzAscnx8KG5baV09bmV3IG5yKGUsYXx8TixOLGNyKSksaSBpbiBlfHxmcihlLGksbyl9fWZ1bmN0aW9uIGZyKGUsdCxuKXt2YXIgcj0hdWUoKTsiZnVuY3Rpb24iPT09dHlwZW9mIG4/KHJyLmdldD1yP2RyKHQpOnByKG4pLHJyLnNldD1OKToocnIuZ2V0PW4uZ2V0P3ImJiExIT09bi5jYWNoZT9kcih0KTpwcihuLmdldCk6Tixyci5zZXQ9bi5zZXR8fE4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQscnIpfWZ1bmN0aW9uIGRyKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbXB1dGVkV2F0Y2hlcnMmJnRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNbZV07aWYodClyZXR1cm4gdC5kaXJ0eSYmdC5ldmFsdWF0ZSgpLHZlLnRhcmdldCYmdC5kZXBlbmQoKSx0LnZhbHVlfX1mdW5jdGlvbiBwcihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMsdGhpcyl9fWZ1bmN0aW9uIGhyKGUsdCl7ZS4kb3B0aW9ucy5wcm9wcztmb3IodmFyIG4gaW4gdCllW25dPSJmdW5jdGlvbiIhPT10eXBlb2YgdFtuXT9OOk8odFtuXSxlKX1mdW5jdGlvbiB2cihlLHQpe2Zvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspbXIoZSxuLHJbaV0pO2Vsc2UgbXIoZSxuLHIpfX1mdW5jdGlvbiBtcihlLHQsbixyKXtyZXR1cm4gbChuKSYmKHI9bixuPW4uaGFuZGxlciksInN0cmluZyI9PT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfWZ1bmN0aW9uIHlyKGUpe3ZhciB0PXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YX19LG49e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcm9wc319O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiJGRhdGEiLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiJHByb3BzIixuKSxlLnByb3RvdHlwZS4kc2V0PVJlLGUucHJvdG90eXBlLiRkZWxldGU9TGUsZS5wcm90b3R5cGUuJHdhdGNoPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lmKGwodCkpcmV0dXJuIG1yKHIsZSx0LG4pO249bnx8e30sbi51c2VyPSEwO3ZhciBpPW5ldyBucihyLGUsdCxuKTtpZihuLmltbWVkaWF0ZSl0cnl7dC5jYWxsKHIsaS52YWx1ZSl9Y2F0Y2gobyl7dHQobyxyLCdjYWxsYmFjayBmb3IgaW1tZWRpYXRlIHdhdGNoZXIgIicraS5leHByZXNzaW9uKyciJyl9cmV0dXJuIGZ1bmN0aW9uKCl7aS50ZWFyZG93bigpfX19dmFyIGdyPTA7ZnVuY3Rpb24gd3IoZSl7ZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0Ll91aWQ9Z3IrKyx0Ll9pc1Z1ZT0hMCxlJiZlLl9pc0NvbXBvbmVudD9icih0LGUpOnQuJG9wdGlvbnM9WGUoX3IodC5jb25zdHJ1Y3RvciksZXx8e30sdCksdC5fcmVuZGVyUHJveHk9dCx0Ll9zZWxmPXQsam4odCksQ24odCksdm4odCksSW4odCwiYmVmb3JlQ3JlYXRlIiksT3QodCksb3IodCksVHQodCksSW4odCwiY3JlYXRlZCIpLHQuJG9wdGlvbnMuZWwmJnQuJG1vdW50KHQuJG9wdGlvbnMuZWwpfX1mdW5jdGlvbiBicihlLHQpe3ZhciBuPWUuJG9wdGlvbnM9T2JqZWN0LmNyZWF0ZShlLmNvbnN0cnVjdG9yLm9wdGlvbnMpLHI9dC5fcGFyZW50Vm5vZGU7bi5wYXJlbnQ9dC5wYXJlbnQsbi5fcGFyZW50Vm5vZGU9cjt2YXIgaT1yLmNvbXBvbmVudE9wdGlvbnM7bi5wcm9wc0RhdGE9aS5wcm9wc0RhdGEsbi5fcGFyZW50TGlzdGVuZXJzPWkubGlzdGVuZXJzLG4uX3JlbmRlckNoaWxkcmVuPWkuY2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPWkudGFnLHQucmVuZGVyJiYobi5yZW5kZXI9dC5yZW5kZXIsbi5zdGF0aWNSZW5kZXJGbnM9dC5zdGF0aWNSZW5kZXJGbnMpfWZ1bmN0aW9uIF9yKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj1fcihlLnN1cGVyKSxyPWUuc3VwZXJPcHRpb25zO2lmKG4hPT1yKXtlLnN1cGVyT3B0aW9ucz1uO3ZhciBpPXhyKGUpO2kmJkQoZS5leHRlbmRPcHRpb25zLGkpLHQ9ZS5vcHRpb25zPVhlKG4sZS5leHRlbmRPcHRpb25zKSx0Lm5hbWUmJih0LmNvbXBvbmVudHNbdC5uYW1lXT1lKX19cmV0dXJuIHR9ZnVuY3Rpb24geHIoZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBpIGluIG4pbltpXSE9PXJbaV0mJih0fHwodD17fSksdFtpXT1uW2ldKTtyZXR1cm4gdH1mdW5jdGlvbiBrcihlKXt0aGlzLl9pbml0KGUpfWZ1bmN0aW9uIENyKGUpe2UudXNlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2luc3RhbGxlZFBsdWdpbnN8fCh0aGlzLl9pbnN0YWxsZWRQbHVnaW5zPVtdKTtpZih0LmluZGV4T2YoZSk+LTEpcmV0dXJuIHRoaXM7dmFyIG49Qihhcmd1bWVudHMsMSk7cmV0dXJuIG4udW5zaGlmdCh0aGlzKSwiZnVuY3Rpb24iPT09dHlwZW9mIGUuaW5zdGFsbD9lLmluc3RhbGwuYXBwbHkoZSxuKToiZnVuY3Rpb24iPT09dHlwZW9mIGUmJmUuYXBwbHkobnVsbCxuKSx0LnB1c2goZSksdGhpc319ZnVuY3Rpb24gQXIoZSl7ZS5taXhpbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zPVhlKHRoaXMub3B0aW9ucyxlKSx0aGlzfX1mdW5jdGlvbiBTcihlKXtlLmNpZD0wO3ZhciB0PTE7ZS5leHRlbmQ9ZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgbj10aGlzLHI9bi5jaWQsaT1lLl9DdG9yfHwoZS5fQ3Rvcj17fSk7aWYoaVtyXSlyZXR1cm4gaVtyXTt2YXIgbz1lLm5hbWV8fG4ub3B0aW9ucy5uYW1lO3ZhciBhPWZ1bmN0aW9uKGUpe3RoaXMuX2luaXQoZSl9O3JldHVybiBhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSxhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPXQrKyxhLm9wdGlvbnM9WGUobi5vcHRpb25zLGUpLGFbInN1cGVyIl09bixhLm9wdGlvbnMucHJvcHMmJkVyKGEpLGEub3B0aW9ucy5jb21wdXRlZCYmVHIoYSksYS5leHRlbmQ9bi5leHRlbmQsYS5taXhpbj1uLm1peGluLGEudXNlPW4udXNlLEguZm9yRWFjaCgoZnVuY3Rpb24oZSl7YVtlXT1uW2VdfSkpLG8mJihhLm9wdGlvbnMuY29tcG9uZW50c1tvXT1hKSxhLnN1cGVyT3B0aW9ucz1uLm9wdGlvbnMsYS5leHRlbmRPcHRpb25zPWUsYS5zZWFsZWRPcHRpb25zPUQoe30sYS5vcHRpb25zKSxpW3JdPWEsYX19ZnVuY3Rpb24gRXIoZSl7dmFyIHQ9ZS5vcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiB0KWlyKGUucHJvdG90eXBlLCJfcHJvcHMiLG4pfWZ1bmN0aW9uIFRyKGUpe3ZhciB0PWUub3B0aW9ucy5jb21wdXRlZDtmb3IodmFyIG4gaW4gdClmcihlLnByb3RvdHlwZSxuLHRbbl0pfWZ1bmN0aW9uIE9yKGUpe0guZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlLG4pe3JldHVybiBuPygiY29tcG9uZW50Ij09PXQmJmwobikmJihuLm5hbWU9bi5uYW1lfHxlLG49dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChuKSksImRpcmVjdGl2ZSI9PT10JiYiZnVuY3Rpb24iPT09dHlwZW9mIG4mJihuPXtiaW5kOm4sdXBkYXRlOm59KSx0aGlzLm9wdGlvbnNbdCsicyJdW2VdPW4sbik6dGhpcy5vcHRpb25zW3QrInMiXVtlXX19KSl9ZnVuY3Rpb24gQnIoZSl7cmV0dXJuIGUmJihlLkN0b3Iub3B0aW9ucy5uYW1lfHxlLnRhZyl9ZnVuY3Rpb24gRHIoZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLmluZGV4T2YodCk+LTE6InN0cmluZyI9PT10eXBlb2YgZT9lLnNwbGl0KCIsIikuaW5kZXhPZih0KT4tMTohIWYoZSkmJmUudGVzdCh0KX1mdW5jdGlvbiBqcihlLHQpe3ZhciBuPWUuY2FjaGUscj1lLmtleXMsaT1lLl92bm9kZTtmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtpZihhKXt2YXIgcz1CcihhLmNvbXBvbmVudE9wdGlvbnMpO3MmJiF0KHMpJiZOcihuLG8scixpKX19fWZ1bmN0aW9uIE5yKGUsdCxuLHIpe3ZhciBpPWVbdF07IWl8fHImJmkudGFnPT09ci50YWd8fGkuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKSxlW3RdPW51bGwsZyhuLHQpfXdyKGtyKSx5cihrciksT24oa3IpLE5uKGtyKSxnbihrcik7dmFyICRyPVtTdHJpbmcsUmVnRXhwLEFycmF5XSxScj17bmFtZToia2VlcC1hbGl2ZSIsYWJzdHJhY3Q6ITAscHJvcHM6e2luY2x1ZGU6JHIsZXhjbHVkZTokcixtYXg6W1N0cmluZyxOdW1iZXJdfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMua2V5cz1bXX0sZGVzdHJveWVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMuY2FjaGUpTnIodGhpcy5jYWNoZSxlLHRoaXMua2V5cyl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJHdhdGNoKCJpbmNsdWRlIiwoZnVuY3Rpb24odCl7anIoZSwoZnVuY3Rpb24oZSl7cmV0dXJuIERyKHQsZSl9KSl9KSksdGhpcy4kd2F0Y2goImV4Y2x1ZGUiLChmdW5jdGlvbih0KXtqcihlLChmdW5jdGlvbihlKXtyZXR1cm4hRHIodCxlKX0pKX0pKX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy4kc2xvdHMuZGVmYXVsdCx0PWtuKGUpLG49dCYmdC5jb21wb25lbnRPcHRpb25zO2lmKG4pe3ZhciByPUJyKG4pLGk9dGhpcyxvPWkuaW5jbHVkZSxhPWkuZXhjbHVkZTtpZihvJiYoIXJ8fCFEcihvLHIpKXx8YSYmciYmRHIoYSxyKSlyZXR1cm4gdDt2YXIgcz10aGlzLHU9cy5jYWNoZSxjPXMua2V5cyxsPW51bGw9PXQua2V5P24uQ3Rvci5jaWQrKG4udGFnPyI6OiIrbi50YWc6IiIpOnQua2V5O3VbbF0/KHQuY29tcG9uZW50SW5zdGFuY2U9dVtsXS5jb21wb25lbnRJbnN0YW5jZSxnKGMsbCksYy5wdXNoKGwpKToodVtsXT10LGMucHVzaChsKSx0aGlzLm1heCYmYy5sZW5ndGg+cGFyc2VJbnQodGhpcy5tYXgpJiZOcih1LGNbMF0sYyx0aGlzLl92bm9kZSkpLHQuZGF0YS5rZWVwQWxpdmU9ITB9cmV0dXJuIHR8fGUmJmVbMF19fSxMcj17S2VlcEFsaXZlOlJyfTtmdW5jdGlvbiBQcihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEZ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiY29uZmlnIix0KSxlLnV0aWw9e3dhcm46cGUsZXh0ZW5kOkQsbWVyZ2VPcHRpb25zOlhlLGRlZmluZVJlYWN0aXZlOiRlfSxlLnNldD1SZSxlLmRlbGV0ZT1MZSxlLm5leHRUaWNrPWh0LGUub2JzZXJ2YWJsZT1mdW5jdGlvbihlKXtyZXR1cm4gTmUoZSksZX0sZS5vcHRpb25zPU9iamVjdC5jcmVhdGUobnVsbCksSC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLm9wdGlvbnNbdCsicyJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSksZS5vcHRpb25zLl9iYXNlPWUsRChlLm9wdGlvbnMuY29tcG9uZW50cyxMciksQ3IoZSksQXIoZSksU3IoZSksT3IoZSl9UHIoa3IpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShrci5wcm90b3R5cGUsIiRpc1NlcnZlciIse2dldDp1ZX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShrci5wcm90b3R5cGUsIiRzc3JDb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHZub2RlJiZ0aGlzLiR2bm9kZS5zc3JDb250ZXh0fX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShrciwiRnVuY3Rpb25hbFJlbmRlckNvbnRleHQiLHt2YWx1ZTpKdH0pLGtyLnZlcnNpb249IjIuNi4xMiI7dmFyIE1yPW0oInN0eWxlLGNsYXNzIiksSXI9bSgiaW5wdXQsdGV4dGFyZWEsb3B0aW9uLHNlbGVjdCxwcm9ncmVzcyIpLEhyPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idmFsdWUiPT09biYmSXIoZSkmJiJidXR0b24iIT09dHx8InNlbGVjdGVkIj09PW4mJiJvcHRpb24iPT09ZXx8ImNoZWNrZWQiPT09biYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT1uJiYidmlkZW8iPT09ZX0senI9bSgiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksRnI9bSgiZXZlbnRzLGNhcmV0LHR5cGluZyxwbGFpbnRleHQtb25seSIpLFVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIFhyKHQpfHwiZmFsc2UiPT09dD8iZmFsc2UiOiJjb250ZW50ZWRpdGFibGUiPT09ZSYmRnIodCk/dDoidHJ1ZSJ9LHFyPW0oImFsbG93ZnVsbHNjcmVlbixhc3luYyxhdXRvZm9jdXMsYXV0b3BsYXksY2hlY2tlZCxjb21wYWN0LGNvbnRyb2xzLGRlY2xhcmUsZGVmYXVsdCxkZWZhdWx0Y2hlY2tlZCxkZWZhdWx0bXV0ZWQsZGVmYXVsdHNlbGVjdGVkLGRlZmVyLGRpc2FibGVkLGVuYWJsZWQsZm9ybW5vdmFsaWRhdGUsaGlkZGVuLGluZGV0ZXJtaW5hdGUsaW5lcnQsaXNtYXAsaXRlbXNjb3BlLGxvb3AsbXVsdGlwbGUsbXV0ZWQsbm9ocmVmLG5vcmVzaXplLG5vc2hhZGUsbm92YWxpZGF0ZSxub3dyYXAsb3BlbixwYXVzZW9uZXhpdCxyZWFkb25seSxyZXF1aXJlZCxyZXZlcnNlZCxzY29wZWQsc2VhbWxlc3Msc2VsZWN0ZWQsc29ydGFibGUsdHJhbnNsYXRlLHRydWVzcGVlZCx0eXBlbXVzdG1hdGNoLHZpc2libGUiKSxXcj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsWXI9ZnVuY3Rpb24oZSl7cmV0dXJuIjoiPT09ZS5jaGFyQXQoNSkmJiJ4bGluayI9PT1lLnNsaWNlKDAsNSl9LFZyPWZ1bmN0aW9uKGUpe3JldHVybiBZcihlKT9lLnNsaWNlKDYsZS5sZW5ndGgpOiIifSxYcj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZXx8ITE9PT1lfTtmdW5jdGlvbiBHcihlKXt2YXIgdD1lLmRhdGEsbj1lLHI9ZTt3aGlsZShpKHIuY29tcG9uZW50SW5zdGFuY2UpKXI9ci5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUsciYmci5kYXRhJiYodD1LcihyLmRhdGEsdCkpO3doaWxlKGkobj1uLnBhcmVudCkpbiYmbi5kYXRhJiYodD1Lcih0LG4uZGF0YSkpO3JldHVybiBKcih0LnN0YXRpY0NsYXNzLHQuY2xhc3MpfWZ1bmN0aW9uIEtyKGUsdCl7cmV0dXJue3N0YXRpY0NsYXNzOlFyKGUuc3RhdGljQ2xhc3MsdC5zdGF0aWNDbGFzcyksY2xhc3M6aShlLmNsYXNzKT9bZS5jbGFzcyx0LmNsYXNzXTp0LmNsYXNzfX1mdW5jdGlvbiBKcihlLHQpe3JldHVybiBpKGUpfHxpKHQpP1FyKGUsWnIodCkpOiIifWZ1bmN0aW9uIFFyKGUsdCl7cmV0dXJuIGU/dD9lKyIgIit0OmU6dHx8IiJ9ZnVuY3Rpb24gWnIoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZWkoZSk6dShlKT90aShlKToic3RyaW5nIj09PXR5cGVvZiBlP2U6IiJ9ZnVuY3Rpb24gZWkoZSl7Zm9yKHZhciB0LG49IiIscj0wLG89ZS5sZW5ndGg7cjxvO3IrKylpKHQ9WnIoZVtyXSkpJiYiIiE9PXQmJihuJiYobis9IiAiKSxuKz10KTtyZXR1cm4gbn1mdW5jdGlvbiB0aShlKXt2YXIgdD0iIjtmb3IodmFyIG4gaW4gZSllW25dJiYodCYmKHQrPSIgIiksdCs9bik7cmV0dXJuIHR9dmFyIG5pPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixtYXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIn0scmk9bSgiaHRtbCxib2R5LGJhc2UsaGVhZCxsaW5rLG1ldGEsc3R5bGUsdGl0bGUsYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGZvb3RlcixoZWFkZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGdyb3VwLG5hdixzZWN0aW9uLGRpdixkZCxkbCxkdCxmaWdjYXB0aW9uLGZpZ3VyZSxwaWN0dXJlLGhyLGltZyxsaSxtYWluLG9sLHAscHJlLHVsLGEsYixhYmJyLGJkaSxiZG8sYnIsY2l0ZSxjb2RlLGRhdGEsZGZuLGVtLGksa2JkLG1hcmsscSxycCxydCxydGMscnVieSxzLHNhbXAsc21hbGwsc3BhbixzdHJvbmcsc3ViLHN1cCx0aW1lLHUsdmFyLHdicixhcmVhLGF1ZGlvLG1hcCx0cmFjayx2aWRlbyxlbWJlZCxvYmplY3QscGFyYW0sc291cmNlLGNhbnZhcyxzY3JpcHQsbm9zY3JpcHQsZGVsLGlucyxjYXB0aW9uLGNvbCxjb2xncm91cCx0YWJsZSx0aGVhZCx0Ym9keSx0ZCx0aCx0cixidXR0b24sZGF0YWxpc3QsZmllbGRzZXQsZm9ybSxpbnB1dCxsYWJlbCxsZWdlbmQsbWV0ZXIsb3B0Z3JvdXAsb3B0aW9uLG91dHB1dCxwcm9ncmVzcyxzZWxlY3QsdGV4dGFyZWEsZGV0YWlscyxkaWFsb2csbWVudSxtZW51aXRlbSxzdW1tYXJ5LGNvbnRlbnQsZWxlbWVudCxzaGFkb3csdGVtcGxhdGUsYmxvY2txdW90ZSxpZnJhbWUsdGZvb3QiKSxpaT1tKCJzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4scG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2UsdmlldyIsITApLG9pPWZ1bmN0aW9uKGUpe3JldHVybiByaShlKXx8aWkoZSl9O2Z1bmN0aW9uIGFpKGUpe3JldHVybiBpaShlKT8ic3ZnIjoibWF0aCI9PT1lPyJtYXRoIjp2b2lkIDB9dmFyIHNpPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gdWkoZSl7aWYoIUspcmV0dXJuITA7aWYob2koZSkpcmV0dXJuITE7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbCE9c2lbZV0pcmV0dXJuIHNpW2VdO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIGUuaW5kZXhPZigiLSIpPi0xP3NpW2VdPXQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTFVua25vd25FbGVtZW50fHx0LmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxFbGVtZW50OnNpW2VdPS9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QodC50b1N0cmluZygpKX12YXIgY2k9bSgidGV4dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmwiKTtmdW5jdGlvbiBsaShlKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXt2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUpO3JldHVybiB0fHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKX1yZXR1cm4gZX1mdW5jdGlvbiBmaShlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuInNlbGVjdCIhPT1lfHx0LmRhdGEmJnQuZGF0YS5hdHRycyYmdm9pZCAwIT09dC5kYXRhLmF0dHJzLm11bHRpcGxlJiZuLnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCJtdWx0aXBsZSIpLG59ZnVuY3Rpb24gZGkoZSx0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5pW2VdLHQpfWZ1bmN0aW9uIHBpKGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKX1mdW5jdGlvbiBoaShlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudChlKX1mdW5jdGlvbiB2aShlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX1mdW5jdGlvbiBtaShlLHQpe2UucmVtb3ZlQ2hpbGQodCl9ZnVuY3Rpb24geWkoZSx0KXtlLmFwcGVuZENoaWxkKHQpfWZ1bmN0aW9uIGdpKGUpe3JldHVybiBlLnBhcmVudE5vZGV9ZnVuY3Rpb24gd2koZSl7cmV0dXJuIGUubmV4dFNpYmxpbmd9ZnVuY3Rpb24gYmkoZSl7cmV0dXJuIGUudGFnTmFtZX1mdW5jdGlvbiBfaShlLHQpe2UudGV4dENvbnRlbnQ9dH1mdW5jdGlvbiB4aShlLHQpe2Uuc2V0QXR0cmlidXRlKHQsIiIpfXZhciBraT1PYmplY3QuZnJlZXplKHtjcmVhdGVFbGVtZW50OmZpLGNyZWF0ZUVsZW1lbnROUzpkaSxjcmVhdGVUZXh0Tm9kZTpwaSxjcmVhdGVDb21tZW50OmhpLGluc2VydEJlZm9yZTp2aSxyZW1vdmVDaGlsZDptaSxhcHBlbmRDaGlsZDp5aSxwYXJlbnROb2RlOmdpLG5leHRTaWJsaW5nOndpLHRhZ05hbWU6Ymksc2V0VGV4dENvbnRlbnQ6X2ksc2V0U3R5bGVTY29wZTp4aX0pLENpPXtjcmVhdGU6ZnVuY3Rpb24oZSx0KXtBaSh0KX0sdXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZS5kYXRhLnJlZiE9PXQuZGF0YS5yZWYmJihBaShlLCEwKSxBaSh0KSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7QWkoZSwhMCl9fTtmdW5jdGlvbiBBaShlLHQpe3ZhciBuPWUuZGF0YS5yZWY7aWYoaShuKSl7dmFyIHI9ZS5jb250ZXh0LG89ZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5lbG0sYT1yLiRyZWZzO3Q/QXJyYXkuaXNBcnJheShhW25dKT9nKGFbbl0sbyk6YVtuXT09PW8mJihhW25dPXZvaWQgMCk6ZS5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJyYXkoYVtuXSk/YVtuXS5pbmRleE9mKG8pPDAmJmFbbl0ucHVzaChvKTphW25dPVtvXTphW25dPW99fXZhciBTaT1uZXcgd2UoIiIse30sW10pLEVpPVsiY3JlYXRlIiwiYWN0aXZhdGUiLCJ1cGRhdGUiLCJyZW1vdmUiLCJkZXN0cm95Il07ZnVuY3Rpb24gVGkoZSx0KXtyZXR1cm4gZS5rZXk9PT10LmtleSYmKGUudGFnPT09dC50YWcmJmUuaXNDb21tZW50PT09dC5pc0NvbW1lbnQmJmkoZS5kYXRhKT09PWkodC5kYXRhKSYmT2koZSx0KXx8byhlLmlzQXN5bmNQbGFjZWhvbGRlcikmJmUuYXN5bmNGYWN0b3J5PT09dC5hc3luY0ZhY3RvcnkmJnIodC5hc3luY0ZhY3RvcnkuZXJyb3IpKX1mdW5jdGlvbiBPaShlLHQpe2lmKCJpbnB1dCIhPT1lLnRhZylyZXR1cm4hMDt2YXIgbixyPWkobj1lLmRhdGEpJiZpKG49bi5hdHRycykmJm4udHlwZSxvPWkobj10LmRhdGEpJiZpKG49bi5hdHRycykmJm4udHlwZTtyZXR1cm4gcj09PW98fGNpKHIpJiZjaShvKX1mdW5jdGlvbiBCaShlLHQsbil7dmFyIHIsbyxhPXt9O2ZvcihyPXQ7cjw9bjsrK3Ipbz1lW3JdLmtleSxpKG8pJiYoYVtvXT1yKTtyZXR1cm4gYX1mdW5jdGlvbiBEaShlKXt2YXIgdCxuLGE9e30sdT1lLm1vZHVsZXMsYz1lLm5vZGVPcHM7Zm9yKHQ9MDt0PEVpLmxlbmd0aDsrK3QpZm9yKGFbRWlbdF1dPVtdLG49MDtuPHUubGVuZ3RoOysrbilpKHVbbl1bRWlbdF1dKSYmYVtFaVt0XV0ucHVzaCh1W25dW0VpW3RdXSk7ZnVuY3Rpb24gbChlKXtyZXR1cm4gbmV3IHdlKGMudGFnTmFtZShlKS50b0xvd2VyQ2FzZSgpLHt9LFtdLHZvaWQgMCxlKX1mdW5jdGlvbiBmKGUsdCl7ZnVuY3Rpb24gbigpezA9PT0tLW4ubGlzdGVuZXJzJiZkKGUpfXJldHVybiBuLmxpc3RlbmVycz10LG59ZnVuY3Rpb24gZChlKXt2YXIgdD1jLnBhcmVudE5vZGUoZSk7aSh0KSYmYy5yZW1vdmVDaGlsZCh0LGUpfWZ1bmN0aW9uIHAoZSx0LG4scixhLHMsdSl7aWYoaShlLmVsbSkmJmkocykmJihlPXNbdV09a2UoZSkpLGUuaXNSb290SW5zZXJ0PSFhLCFoKGUsdCxuLHIpKXt2YXIgbD1lLmRhdGEsZj1lLmNoaWxkcmVuLGQ9ZS50YWc7aShkKT8oZS5lbG09ZS5ucz9jLmNyZWF0ZUVsZW1lbnROUyhlLm5zLGQpOmMuY3JlYXRlRWxlbWVudChkLGUpLHgoZSksdyhlLGYsdCksaShsKSYmXyhlLHQpLGcobixlLmVsbSxyKSk6byhlLmlzQ29tbWVudCk/KGUuZWxtPWMuY3JlYXRlQ29tbWVudChlLnRleHQpLGcobixlLmVsbSxyKSk6KGUuZWxtPWMuY3JlYXRlVGV4dE5vZGUoZS50ZXh0KSxnKG4sZS5lbG0scikpfX1mdW5jdGlvbiBoKGUsdCxuLHIpe3ZhciBhPWUuZGF0YTtpZihpKGEpKXt2YXIgcz1pKGUuY29tcG9uZW50SW5zdGFuY2UpJiZhLmtlZXBBbGl2ZTtpZihpKGE9YS5ob29rKSYmaShhPWEuaW5pdCkmJmEoZSwhMSksaShlLmNvbXBvbmVudEluc3RhbmNlKSlyZXR1cm4gdihlLHQpLGcobixlLmVsbSxyKSxvKHMpJiZ5KGUsdCxuLHIpLCEwfX1mdW5jdGlvbiB2KGUsdCl7aShlLmRhdGEucGVuZGluZ0luc2VydCkmJih0LnB1c2guYXBwbHkodCxlLmRhdGEucGVuZGluZ0luc2VydCksZS5kYXRhLnBlbmRpbmdJbnNlcnQ9bnVsbCksZS5lbG09ZS5jb21wb25lbnRJbnN0YW5jZS4kZWwsYihlKT8oXyhlLHQpLHgoZSkpOihBaShlKSx0LnB1c2goZSkpfWZ1bmN0aW9uIHkoZSx0LG4scil7dmFyIG8scz1lO3doaWxlKHMuY29tcG9uZW50SW5zdGFuY2UpaWYocz1zLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSxpKG89cy5kYXRhKSYmaShvPW8udHJhbnNpdGlvbikpe2ZvcihvPTA7bzxhLmFjdGl2YXRlLmxlbmd0aDsrK28pYS5hY3RpdmF0ZVtvXShTaSxzKTt0LnB1c2gocyk7YnJlYWt9ZyhuLGUuZWxtLHIpfWZ1bmN0aW9uIGcoZSx0LG4pe2koZSkmJihpKG4pP2MucGFyZW50Tm9kZShuKT09PWUmJmMuaW5zZXJ0QmVmb3JlKGUsdCxuKTpjLmFwcGVuZENoaWxkKGUsdCkpfWZ1bmN0aW9uIHcoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkodCkpezA7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpcCh0W3JdLG4sZS5lbG0sbnVsbCwhMCx0LHIpfWVsc2UgcyhlLnRleHQpJiZjLmFwcGVuZENoaWxkKGUuZWxtLGMuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGUudGV4dCkpKX1mdW5jdGlvbiBiKGUpe3doaWxlKGUuY29tcG9uZW50SW5zdGFuY2UpZT1lLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZTtyZXR1cm4gaShlLnRhZyl9ZnVuY3Rpb24gXyhlLG4pe2Zvcih2YXIgcj0wO3I8YS5jcmVhdGUubGVuZ3RoOysrcilhLmNyZWF0ZVtyXShTaSxlKTt0PWUuZGF0YS5ob29rLGkodCkmJihpKHQuY3JlYXRlKSYmdC5jcmVhdGUoU2ksZSksaSh0Lmluc2VydCkmJm4ucHVzaChlKSl9ZnVuY3Rpb24geChlKXt2YXIgdDtpZihpKHQ9ZS5mblNjb3BlSWQpKWMuc2V0U3R5bGVTY29wZShlLmVsbSx0KTtlbHNle3ZhciBuPWU7d2hpbGUobilpKHQ9bi5jb250ZXh0KSYmaSh0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZjLnNldFN0eWxlU2NvcGUoZS5lbG0sdCksbj1uLnBhcmVudH1pKHQ9Qm4pJiZ0IT09ZS5jb250ZXh0JiZ0IT09ZS5mbkNvbnRleHQmJmkodD10LiRvcHRpb25zLl9zY29wZUlkKSYmYy5zZXRTdHlsZVNjb3BlKGUuZWxtLHQpfWZ1bmN0aW9uIGsoZSx0LG4scixpLG8pe2Zvcig7cjw9aTsrK3IpcChuW3JdLG8sZSx0LCExLG4scil9ZnVuY3Rpb24gQyhlKXt2YXIgdCxuLHI9ZS5kYXRhO2lmKGkocikpZm9yKGkodD1yLmhvb2spJiZpKHQ9dC5kZXN0cm95KSYmdChlKSx0PTA7dDxhLmRlc3Ryb3kubGVuZ3RoOysrdClhLmRlc3Ryb3lbdF0oZSk7aWYoaSh0PWUuY2hpbGRyZW4pKWZvcihuPTA7bjxlLmNoaWxkcmVuLmxlbmd0aDsrK24pQyhlLmNoaWxkcmVuW25dKX1mdW5jdGlvbiBBKGUsdCxuKXtmb3IoO3Q8PW47Kyt0KXt2YXIgcj1lW3RdO2kocikmJihpKHIudGFnKT8oUyhyKSxDKHIpKTpkKHIuZWxtKSl9fWZ1bmN0aW9uIFMoZSx0KXtpZihpKHQpfHxpKGUuZGF0YSkpe3ZhciBuLHI9YS5yZW1vdmUubGVuZ3RoKzE7Zm9yKGkodCk/dC5saXN0ZW5lcnMrPXI6dD1mKGUuZWxtLHIpLGkobj1lLmNvbXBvbmVudEluc3RhbmNlKSYmaShuPW4uX3Zub2RlKSYmaShuLmRhdGEpJiZTKG4sdCksbj0wO248YS5yZW1vdmUubGVuZ3RoOysrbilhLnJlbW92ZVtuXShlLHQpO2kobj1lLmRhdGEuaG9vaykmJmkobj1uLnJlbW92ZSk/bihlLHQpOnQoKX1lbHNlIGQoZS5lbG0pfWZ1bmN0aW9uIEUoZSx0LG4sbyxhKXt2YXIgcyx1LGwsZixkPTAsaD0wLHY9dC5sZW5ndGgtMSxtPXRbMF0seT10W3ZdLGc9bi5sZW5ndGgtMSx3PW5bMF0sYj1uW2ddLF89IWE7d2hpbGUoZDw9diYmaDw9ZylyKG0pP209dFsrK2RdOnIoeSk/eT10Wy0tdl06VGkobSx3KT8oTyhtLHcsbyxuLGgpLG09dFsrK2RdLHc9blsrK2hdKTpUaSh5LGIpPyhPKHksYixvLG4sZykseT10Wy0tdl0sYj1uWy0tZ10pOlRpKG0sYik/KE8obSxiLG8sbixnKSxfJiZjLmluc2VydEJlZm9yZShlLG0uZWxtLGMubmV4dFNpYmxpbmcoeS5lbG0pKSxtPXRbKytkXSxiPW5bLS1nXSk6VGkoeSx3KT8oTyh5LHcsbyxuLGgpLF8mJmMuaW5zZXJ0QmVmb3JlKGUseS5lbG0sbS5lbG0pLHk9dFstLXZdLHc9blsrK2hdKToocihzKSYmKHM9QmkodCxkLHYpKSx1PWkody5rZXkpP3Nbdy5rZXldOlQodyx0LGQsdikscih1KT9wKHcsbyxlLG0uZWxtLCExLG4saCk6KGw9dFt1XSxUaShsLHcpPyhPKGwsdyxvLG4saCksdFt1XT12b2lkIDAsXyYmYy5pbnNlcnRCZWZvcmUoZSxsLmVsbSxtLmVsbSkpOnAodyxvLGUsbS5lbG0sITEsbixoKSksdz1uWysraF0pO2Q+dj8oZj1yKG5bZysxXSk/bnVsbDpuW2crMV0uZWxtLGsoZSxmLG4saCxnLG8pKTpoPmcmJkEodCxkLHYpfWZ1bmN0aW9uIFQoZSx0LG4scil7Zm9yKHZhciBvPW47bzxyO28rKyl7dmFyIGE9dFtvXTtpZihpKGEpJiZUaShlLGEpKXJldHVybiBvfX1mdW5jdGlvbiBPKGUsdCxuLHMsdSxsKXtpZihlIT09dCl7aSh0LmVsbSkmJmkocykmJih0PXNbdV09a2UodCkpO3ZhciBmPXQuZWxtPWUuZWxtO2lmKG8oZS5pc0FzeW5jUGxhY2Vob2xkZXIpKWkodC5hc3luY0ZhY3RvcnkucmVzb2x2ZWQpP2ooZS5lbG0sdCxuKTp0LmlzQXN5bmNQbGFjZWhvbGRlcj0hMDtlbHNlIGlmKG8odC5pc1N0YXRpYykmJm8oZS5pc1N0YXRpYykmJnQua2V5PT09ZS5rZXkmJihvKHQuaXNDbG9uZWQpfHxvKHQuaXNPbmNlKSkpdC5jb21wb25lbnRJbnN0YW5jZT1lLmNvbXBvbmVudEluc3RhbmNlO2Vsc2V7dmFyIGQscD10LmRhdGE7aShwKSYmaShkPXAuaG9vaykmJmkoZD1kLnByZXBhdGNoKSYmZChlLHQpO3ZhciBoPWUuY2hpbGRyZW4sdj10LmNoaWxkcmVuO2lmKGkocCkmJmIodCkpe2ZvcihkPTA7ZDxhLnVwZGF0ZS5sZW5ndGg7KytkKWEudXBkYXRlW2RdKGUsdCk7aShkPXAuaG9vaykmJmkoZD1kLnVwZGF0ZSkmJmQoZSx0KX1yKHQudGV4dCk/aShoKSYmaSh2KT9oIT09diYmRShmLGgsdixuLGwpOmkodik/KGkoZS50ZXh0KSYmYy5zZXRUZXh0Q29udGVudChmLCIiKSxrKGYsbnVsbCx2LDAsdi5sZW5ndGgtMSxuKSk6aShoKT9BKGgsMCxoLmxlbmd0aC0xKTppKGUudGV4dCkmJmMuc2V0VGV4dENvbnRlbnQoZiwiIik6ZS50ZXh0IT09dC50ZXh0JiZjLnNldFRleHRDb250ZW50KGYsdC50ZXh0KSxpKHApJiZpKGQ9cC5ob29rKSYmaShkPWQucG9zdHBhdGNoKSYmZChlLHQpfX19ZnVuY3Rpb24gQihlLHQsbil7aWYobyhuKSYmaShlLnBhcmVudCkpZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PXQ7ZWxzZSBmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcil0W3JdLmRhdGEuaG9vay5pbnNlcnQodFtyXSl9dmFyIEQ9bSgiYXR0cnMsY2xhc3Msc3RhdGljQ2xhc3Msc3RhdGljU3R5bGUsa2V5Iik7ZnVuY3Rpb24gaihlLHQsbixyKXt2YXIgYSxzPXQudGFnLHU9dC5kYXRhLGM9dC5jaGlsZHJlbjtpZihyPXJ8fHUmJnUucHJlLHQuZWxtPWUsbyh0LmlzQ29tbWVudCkmJmkodC5hc3luY0ZhY3RvcnkpKXJldHVybiB0LmlzQXN5bmNQbGFjZWhvbGRlcj0hMCwhMDtpZihpKHUpJiYoaShhPXUuaG9vaykmJmkoYT1hLmluaXQpJiZhKHQsITApLGkoYT10LmNvbXBvbmVudEluc3RhbmNlKSkpcmV0dXJuIHYodCxuKSwhMDtpZihpKHMpKXtpZihpKGMpKWlmKGUuaGFzQ2hpbGROb2RlcygpKWlmKGkoYT11KSYmaShhPWEuZG9tUHJvcHMpJiZpKGE9YS5pbm5lckhUTUwpKXtpZihhIT09ZS5pbm5lckhUTUwpcmV0dXJuITF9ZWxzZXtmb3IodmFyIGw9ITAsZj1lLmZpcnN0Q2hpbGQsZD0wO2Q8Yy5sZW5ndGg7ZCsrKXtpZighZnx8IWooZixjW2RdLG4scikpe2w9ITE7YnJlYWt9Zj1mLm5leHRTaWJsaW5nfWlmKCFsfHxmKXJldHVybiExfWVsc2Ugdyh0LGMsbik7aWYoaSh1KSl7dmFyIHA9ITE7Zm9yKHZhciBoIGluIHUpaWYoIUQoaCkpe3A9ITAsXyh0LG4pO2JyZWFrfSFwJiZ1WyJjbGFzcyJdJiZtdCh1WyJjbGFzcyJdKX19ZWxzZSBlLmRhdGEhPT10LnRleHQmJihlLmRhdGE9dC50ZXh0KTtyZXR1cm4hMH1yZXR1cm4gZnVuY3Rpb24oZSx0LG4scyl7aWYoIXIodCkpe3ZhciB1PSExLGY9W107aWYocihlKSl1PSEwLHAodCxmKTtlbHNle3ZhciBkPWkoZS5ub2RlVHlwZSk7aWYoIWQmJlRpKGUsdCkpTyhlLHQsZixudWxsLG51bGwscyk7ZWxzZXtpZihkKXtpZigxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoSSkmJihlLnJlbW92ZUF0dHJpYnV0ZShJKSxuPSEwKSxvKG4pJiZqKGUsdCxmKSlyZXR1cm4gQih0LGYsITApLGU7ZT1sKGUpfXZhciBoPWUuZWxtLHY9Yy5wYXJlbnROb2RlKGgpO2lmKHAodCxmLGguX2xlYXZlQ2I/bnVsbDp2LGMubmV4dFNpYmxpbmcoaCkpLGkodC5wYXJlbnQpKXt2YXIgbT10LnBhcmVudCx5PWIodCk7d2hpbGUobSl7Zm9yKHZhciBnPTA7ZzxhLmRlc3Ryb3kubGVuZ3RoOysrZylhLmRlc3Ryb3lbZ10obSk7aWYobS5lbG09dC5lbG0seSl7Zm9yKHZhciB3PTA7dzxhLmNyZWF0ZS5sZW5ndGg7Kyt3KWEuY3JlYXRlW3ddKFNpLG0pO3ZhciBfPW0uZGF0YS5ob29rLmluc2VydDtpZihfLm1lcmdlZClmb3IodmFyIHg9MTt4PF8uZm5zLmxlbmd0aDt4KyspXy5mbnNbeF0oKX1lbHNlIEFpKG0pO209bS5wYXJlbnR9fWkodik/QShbZV0sMCwwKTppKGUudGFnKSYmQyhlKX19cmV0dXJuIEIodCxmLHUpLHQuZWxtfWkoZSkmJkMoZSl9fXZhciBqaT17Y3JlYXRlOk5pLHVwZGF0ZTpOaSxkZXN0cm95OmZ1bmN0aW9uKGUpe05pKGUsU2kpfX07ZnVuY3Rpb24gTmkoZSx0KXsoZS5kYXRhLmRpcmVjdGl2ZXN8fHQuZGF0YS5kaXJlY3RpdmVzKSYmJGkoZSx0KX1mdW5jdGlvbiAkaShlLHQpe3ZhciBuLHIsaSxvPWU9PT1TaSxhPXQ9PT1TaSxzPUxpKGUuZGF0YS5kaXJlY3RpdmVzLGUuY29udGV4dCksdT1MaSh0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLGM9W10sbD1bXTtmb3IobiBpbiB1KXI9c1tuXSxpPXVbbl0scj8oaS5vbGRWYWx1ZT1yLnZhbHVlLGkub2xkQXJnPXIuYXJnLE1pKGksInVwZGF0ZSIsdCxlKSxpLmRlZiYmaS5kZWYuY29tcG9uZW50VXBkYXRlZCYmbC5wdXNoKGkpKTooTWkoaSwiYmluZCIsdCxlKSxpLmRlZiYmaS5kZWYuaW5zZXJ0ZWQmJmMucHVzaChpKSk7aWYoYy5sZW5ndGgpe3ZhciBmPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPTA7bjxjLmxlbmd0aDtuKyspTWkoY1tuXSwiaW5zZXJ0ZWQiLHQsZSl9O28/X3QodCwiaW5zZXJ0IixmKTpmKCl9aWYobC5sZW5ndGgmJl90KHQsInBvc3RwYXRjaCIsKGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTA7bjxsLmxlbmd0aDtuKyspTWkobFtuXSwiY29tcG9uZW50VXBkYXRlZCIsdCxlKX0pKSwhbylmb3IobiBpbiBzKXVbbl18fE1pKHNbbl0sInVuYmluZCIsZSxlLGEpfXZhciBSaT1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIExpKGUsdCl7dmFyIG4scixpPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGk7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylyPWVbbl0sci5tb2RpZmllcnN8fChyLm1vZGlmaWVycz1SaSksaVtQaShyKV09cixyLmRlZj1HZSh0LiRvcHRpb25zLCJkaXJlY3RpdmVzIixyLm5hbWUsITApO3JldHVybiBpfWZ1bmN0aW9uIFBpKGUpe3JldHVybiBlLnJhd05hbWV8fGUubmFtZSsiLiIrT2JqZWN0LmtleXMoZS5tb2RpZmllcnN8fHt9KS5qb2luKCIuIil9ZnVuY3Rpb24gTWkoZSx0LG4scixpKXt2YXIgbz1lLmRlZiYmZS5kZWZbdF07aWYobyl0cnl7byhuLmVsbSxlLG4scixpKX1jYXRjaChrYSl7dHQoa2Esbi5jb250ZXh0LCJkaXJlY3RpdmUgIitlLm5hbWUrIiAiK3QrIiBob29rIil9fXZhciBJaT1bQ2ksamldO2Z1bmN0aW9uIEhpKGUsdCl7dmFyIG49dC5jb21wb25lbnRPcHRpb25zO2lmKCghaShuKXx8ITEhPT1uLkN0b3Iub3B0aW9ucy5pbmhlcml0QXR0cnMpJiYoIXIoZS5kYXRhLmF0dHJzKXx8IXIodC5kYXRhLmF0dHJzKSkpe3ZhciBvLGEscyx1PXQuZWxtLGM9ZS5kYXRhLmF0dHJzfHx7fSxsPXQuZGF0YS5hdHRyc3x8e307Zm9yKG8gaW4gaShsLl9fb2JfXykmJihsPXQuZGF0YS5hdHRycz1EKHt9LGwpKSxsKWE9bFtvXSxzPWNbb10scyE9PWEmJnppKHUsbyxhKTtmb3IobyBpbihlZXx8bmUpJiZsLnZhbHVlIT09Yy52YWx1ZSYmemkodSwidmFsdWUiLGwudmFsdWUpLGMpcihsW29dKSYmKFlyKG8pP3UucmVtb3ZlQXR0cmlidXRlTlMoV3IsVnIobykpOnpyKG8pfHx1LnJlbW92ZUF0dHJpYnV0ZShvKSl9fWZ1bmN0aW9uIHppKGUsdCxuKXtlLnRhZ05hbWUuaW5kZXhPZigiLSIpPi0xP0ZpKGUsdCxuKTpxcih0KT9YcihuKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KToobj0iYWxsb3dmdWxsc2NyZWVuIj09PXQmJiJFTUJFRCI9PT1lLnRhZ05hbWU/InRydWUiOnQsZS5zZXRBdHRyaWJ1dGUodCxuKSk6enIodCk/ZS5zZXRBdHRyaWJ1dGUodCxVcih0LG4pKTpZcih0KT9YcihuKT9lLnJlbW92ZUF0dHJpYnV0ZU5TKFdyLFZyKHQpKTplLnNldEF0dHJpYnV0ZU5TKFdyLHQsbik6RmkoZSx0LG4pfWZ1bmN0aW9uIEZpKGUsdCxuKXtpZihYcihuKSllLnJlbW92ZUF0dHJpYnV0ZSh0KTtlbHNle2lmKGVlJiYhdGUmJiJURVhUQVJFQSI9PT1lLnRhZ05hbWUmJiJwbGFjZWhvbGRlciI9PT10JiYiIiE9PW4mJiFlLl9faWVwaCl7dmFyIHI9ZnVuY3Rpb24odCl7dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImlucHV0IixyKX07ZS5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsciksZS5fX2llcGg9ITB9ZS5zZXRBdHRyaWJ1dGUodCxuKX19dmFyIFVpPXtjcmVhdGU6SGksdXBkYXRlOkhpfTtmdW5jdGlvbiBxaShlLHQpe3ZhciBuPXQuZWxtLG89dC5kYXRhLGE9ZS5kYXRhO2lmKCEocihvLnN0YXRpY0NsYXNzKSYmcihvLmNsYXNzKSYmKHIoYSl8fHIoYS5zdGF0aWNDbGFzcykmJnIoYS5jbGFzcykpKSl7dmFyIHM9R3IodCksdT1uLl90cmFuc2l0aW9uQ2xhc3NlcztpKHUpJiYocz1RcihzLFpyKHUpKSkscyE9PW4uX3ByZXZDbGFzcyYmKG4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyksbi5fcHJldkNsYXNzPXMpfX12YXIgV2ksWWk9e2NyZWF0ZTpxaSx1cGRhdGU6cWl9LFZpPSJfX3IiLFhpPSJfX2MiO2Z1bmN0aW9uIEdpKGUpe2lmKGkoZVtWaV0pKXt2YXIgdD1lZT8iY2hhbmdlIjoiaW5wdXQiO2VbdF09W10uY29uY2F0KGVbVmldLGVbdF18fFtdKSxkZWxldGUgZVtWaV19aShlW1hpXSkmJihlLmNoYW5nZT1bXS5jb25jYXQoZVtYaV0sZS5jaGFuZ2V8fFtdKSxkZWxldGUgZVtYaV0pfWZ1bmN0aW9uIEtpKGUsdCxuKXt2YXIgcj1XaTtyZXR1cm4gZnVuY3Rpb24gaSgpe3ZhciBvPXQuYXBwbHkobnVsbCxhcmd1bWVudHMpO251bGwhPT1vJiZaaShlLGksbixyKX19dmFyIEppPWF0JiYhKGllJiZOdW1iZXIoaWVbMV0pPD01Myk7ZnVuY3Rpb24gUWkoZSx0LG4scil7aWYoSmkpe3ZhciBpPVZuLG89dDt0PW8uX3dyYXBwZXI9ZnVuY3Rpb24oZSl7aWYoZS50YXJnZXQ9PT1lLmN1cnJlbnRUYXJnZXR8fGUudGltZVN0YW1wPj1pfHxlLnRpbWVTdGFtcDw9MHx8ZS50YXJnZXQub3duZXJEb2N1bWVudCE9PWRvY3VtZW50KXJldHVybiBvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19V2kuYWRkRXZlbnRMaXN0ZW5lcihlLHQsYWU/e2NhcHR1cmU6bixwYXNzaXZlOnJ9Om4pfWZ1bmN0aW9uIFppKGUsdCxuLHIpeyhyfHxXaSkucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQuX3dyYXBwZXJ8fHQsbil9ZnVuY3Rpb24gZW8oZSx0KXtpZighcihlLmRhdGEub24pfHwhcih0LmRhdGEub24pKXt2YXIgbj10LmRhdGEub258fHt9LGk9ZS5kYXRhLm9ufHx7fTtXaT10LmVsbSxHaShuKSxidChuLGksUWksWmksS2ksdC5jb250ZXh0KSxXaT12b2lkIDB9fXZhciB0byxubz17Y3JlYXRlOmVvLHVwZGF0ZTplb307ZnVuY3Rpb24gcm8oZSx0KXtpZighcihlLmRhdGEuZG9tUHJvcHMpfHwhcih0LmRhdGEuZG9tUHJvcHMpKXt2YXIgbixvLGE9dC5lbG0scz1lLmRhdGEuZG9tUHJvcHN8fHt9LHU9dC5kYXRhLmRvbVByb3BzfHx7fTtmb3IobiBpbiBpKHUuX19vYl9fKSYmKHU9dC5kYXRhLmRvbVByb3BzPUQoe30sdSkpLHMpbiBpbiB1fHwoYVtuXT0iIik7Zm9yKG4gaW4gdSl7aWYobz11W25dLCJ0ZXh0Q29udGVudCI9PT1ufHwiaW5uZXJIVE1MIj09PW4pe2lmKHQuY2hpbGRyZW4mJih0LmNoaWxkcmVuLmxlbmd0aD0wKSxvPT09c1tuXSljb250aW51ZTsxPT09YS5jaGlsZE5vZGVzLmxlbmd0aCYmYS5yZW1vdmVDaGlsZChhLmNoaWxkTm9kZXNbMF0pfWlmKCJ2YWx1ZSI9PT1uJiYiUFJPR1JFU1MiIT09YS50YWdOYW1lKXthLl92YWx1ZT1vO3ZhciBjPXIobyk/IiI6U3RyaW5nKG8pO2lvKGEsYykmJihhLnZhbHVlPWMpfWVsc2UgaWYoImlubmVySFRNTCI9PT1uJiZpaShhLnRhZ05hbWUpJiZyKGEuaW5uZXJIVE1MKSl7dG89dG98fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRvLmlubmVySFRNTD0iPHN2Zz4iK28rIjwvc3ZnPiI7dmFyIGw9dG8uZmlyc3RDaGlsZDt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO3doaWxlKGwuZmlyc3RDaGlsZClhLmFwcGVuZENoaWxkKGwuZmlyc3RDaGlsZCl9ZWxzZSBpZihvIT09c1tuXSl0cnl7YVtuXT1vfWNhdGNoKGthKXt9fX19ZnVuY3Rpb24gaW8oZSx0KXtyZXR1cm4hZS5jb21wb3NpbmcmJigiT1BUSU9OIj09PWUudGFnTmFtZXx8b28oZSx0KXx8YW8oZSx0KSl9ZnVuY3Rpb24gb28oZSx0KXt2YXIgbj0hMDt0cnl7bj1kb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ZX1jYXRjaChrYSl7fXJldHVybiBuJiZlLnZhbHVlIT09dH1mdW5jdGlvbiBhbyhlLHQpe3ZhciBuPWUudmFsdWUscj1lLl92TW9kaWZpZXJzO2lmKGkocikpe2lmKHIubnVtYmVyKXJldHVybiB2KG4pIT09dih0KTtpZihyLnRyaW0pcmV0dXJuIG4udHJpbSgpIT09dC50cmltKCl9cmV0dXJuIG4hPT10fXZhciBzbz17Y3JlYXRlOnJvLHVwZGF0ZTpyb30sdW89XygoZnVuY3Rpb24oZSl7dmFyIHQ9e30sbj0vOyg/IVteKF0qXCkpL2cscj0vOiguKykvO3JldHVybiBlLnNwbGl0KG4pLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPWUuc3BsaXQocik7bi5sZW5ndGg+MSYmKHRbblswXS50cmltKCldPW5bMV0udHJpbSgpKX19KSksdH0pKTtmdW5jdGlvbiBjbyhlKXt2YXIgdD1sbyhlLnN0eWxlKTtyZXR1cm4gZS5zdGF0aWNTdHlsZT9EKGUuc3RhdGljU3R5bGUsdCk6dH1mdW5jdGlvbiBsbyhlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9qKGUpOiJzdHJpbmciPT09dHlwZW9mIGU/dW8oZSk6ZX1mdW5jdGlvbiBmbyhlLHQpe3ZhciBuLHI9e307aWYodCl7dmFyIGk9ZTt3aGlsZShpLmNvbXBvbmVudEluc3RhbmNlKWk9aS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUsaSYmaS5kYXRhJiYobj1jbyhpLmRhdGEpKSYmRChyLG4pfShuPWNvKGUuZGF0YSkpJiZEKHIsbik7dmFyIG89ZTt3aGlsZShvPW8ucGFyZW50KW8uZGF0YSYmKG49Y28oby5kYXRhKSkmJkQocixuKTtyZXR1cm4gcn12YXIgcG8saG89L14tLS8sdm89L1xzKiFpbXBvcnRhbnQkLyxtbz1mdW5jdGlvbihlLHQsbil7aWYoaG8udGVzdCh0KSllLnN0eWxlLnNldFByb3BlcnR5KHQsbik7ZWxzZSBpZih2by50ZXN0KG4pKWUuc3R5bGUuc2V0UHJvcGVydHkoUyh0KSxuLnJlcGxhY2Uodm8sIiIpLCJpbXBvcnRhbnQiKTtlbHNle3ZhciByPWdvKHQpO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKWUuc3R5bGVbcl09bltpXTtlbHNlIGUuc3R5bGVbcl09bn19LHlvPVsiV2Via2l0IiwiTW96IiwibXMiXSxnbz1fKChmdW5jdGlvbihlKXtpZihwbz1wb3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsZT1rKGUpLCJmaWx0ZXIiIT09ZSYmZSBpbiBwbylyZXR1cm4gZTtmb3IodmFyIHQ9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49MDtuPHlvLmxlbmd0aDtuKyspe3ZhciByPXlvW25dK3Q7aWYociBpbiBwbylyZXR1cm4gcn19KSk7ZnVuY3Rpb24gd28oZSx0KXt2YXIgbj10LmRhdGEsbz1lLmRhdGE7aWYoIShyKG4uc3RhdGljU3R5bGUpJiZyKG4uc3R5bGUpJiZyKG8uc3RhdGljU3R5bGUpJiZyKG8uc3R5bGUpKSl7dmFyIGEscyx1PXQuZWxtLGM9by5zdGF0aWNTdHlsZSxsPW8ubm9ybWFsaXplZFN0eWxlfHxvLnN0eWxlfHx7fSxmPWN8fGwsZD1sbyh0LmRhdGEuc3R5bGUpfHx7fTt0LmRhdGEubm9ybWFsaXplZFN0eWxlPWkoZC5fX29iX18pP0Qoe30sZCk6ZDt2YXIgcD1mbyh0LCEwKTtmb3IocyBpbiBmKXIocFtzXSkmJm1vKHUscywiIik7Zm9yKHMgaW4gcClhPXBbc10sYSE9PWZbc10mJm1vKHUscyxudWxsPT1hPyIiOmEpfX12YXIgYm89e2NyZWF0ZTp3byx1cGRhdGU6d299LF9vPS9ccysvO2Z1bmN0aW9uIHhvKGUsdCl7aWYodCYmKHQ9dC50cmltKCkpKWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhPZigiICIpPi0xP3Quc3BsaXQoX28pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5hZGQodCl9KSk6ZS5jbGFzc0xpc3QuYWRkKHQpO2Vsc2V7dmFyIG49IiAiKyhlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpKyIgIjtuLmluZGV4T2YoIiAiK3QrIiAiKTwwJiZlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLChuK3QpLnRyaW0oKSl9fWZ1bmN0aW9uIGtvKGUsdCl7aWYodCYmKHQ9dC50cmltKCkpKWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhPZigiICIpPi0xP3Quc3BsaXQoX28pLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5yZW1vdmUodCl9KSk6ZS5jbGFzc0xpc3QucmVtb3ZlKHQpLGUuY2xhc3NMaXN0Lmxlbmd0aHx8ZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIik7ZWxzZXt2YXIgbj0iICIrKGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiAiLHI9IiAiK3QrIiAiO3doaWxlKG4uaW5kZXhPZihyKT49MCluPW4ucmVwbGFjZShyLCIgIik7bj1uLnRyaW0oKSxuP2Uuc2V0QXR0cmlidXRlKCJjbGFzcyIsbik6ZS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIil9fWZ1bmN0aW9uIENvKGUpe2lmKGUpe2lmKCJvYmplY3QiPT09dHlwZW9mIGUpe3ZhciB0PXt9O3JldHVybiExIT09ZS5jc3MmJkQodCxBbyhlLm5hbWV8fCJ2IikpLEQodCxlKSx0fXJldHVybiJzdHJpbmciPT09dHlwZW9mIGU/QW8oZSk6dm9pZCAwfX12YXIgQW89XygoZnVuY3Rpb24oZSl7cmV0dXJue2VudGVyQ2xhc3M6ZSsiLWVudGVyIixlbnRlclRvQ2xhc3M6ZSsiLWVudGVyLXRvIixlbnRlckFjdGl2ZUNsYXNzOmUrIi1lbnRlci1hY3RpdmUiLGxlYXZlQ2xhc3M6ZSsiLWxlYXZlIixsZWF2ZVRvQ2xhc3M6ZSsiLWxlYXZlLXRvIixsZWF2ZUFjdGl2ZUNsYXNzOmUrIi1sZWF2ZS1hY3RpdmUifX0pKSxTbz1LJiYhdGUsRW89InRyYW5zaXRpb24iLFRvPSJhbmltYXRpb24iLE9vPSJ0cmFuc2l0aW9uIixCbz0idHJhbnNpdGlvbmVuZCIsRG89ImFuaW1hdGlvbiIsam89ImFuaW1hdGlvbmVuZCI7U28mJih2b2lkIDA9PT13aW5kb3cub250cmFuc2l0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXR0cmFuc2l0aW9uZW5kJiYoT289IldlYmtpdFRyYW5zaXRpb24iLEJvPSJ3ZWJraXRUcmFuc2l0aW9uRW5kIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihEbz0iV2Via2l0QW5pbWF0aW9uIixqbz0id2Via2l0QW5pbWF0aW9uRW5kIikpO3ZhciBObz1LP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6c2V0VGltZW91dDpmdW5jdGlvbihlKXtyZXR1cm4gZSgpfTtmdW5jdGlvbiAkbyhlKXtObygoZnVuY3Rpb24oKXtObyhlKX0pKX1mdW5jdGlvbiBSbyhlLHQpe3ZhciBuPWUuX3RyYW5zaXRpb25DbGFzc2VzfHwoZS5fdHJhbnNpdGlvbkNsYXNzZXM9W10pO24uaW5kZXhPZih0KTwwJiYobi5wdXNoKHQpLHhvKGUsdCkpfWZ1bmN0aW9uIExvKGUsdCl7ZS5fdHJhbnNpdGlvbkNsYXNzZXMmJmcoZS5fdHJhbnNpdGlvbkNsYXNzZXMsdCksa28oZSx0KX1mdW5jdGlvbiBQbyhlLHQsbil7dmFyIHI9SW8oZSx0KSxpPXIudHlwZSxvPXIudGltZW91dCxhPXIucHJvcENvdW50O2lmKCFpKXJldHVybiBuKCk7dmFyIHM9aT09PUVvP0JvOmpvLHU9MCxjPWZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHMsbCksbigpfSxsPWZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09ZSYmKyt1Pj1hJiZjKCl9O3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dTxhJiZjKCl9KSxvKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLGwpfXZhciBNbz0vXGIodHJhbnNmb3JtfGFsbCkoLHwkKS87ZnVuY3Rpb24gSW8oZSx0KXt2YXIgbixyPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLGk9KHJbT28rIkRlbGF5Il18fCIiKS5zcGxpdCgiLCAiKSxvPShyW09vKyJEdXJhdGlvbiJdfHwiIikuc3BsaXQoIiwgIiksYT1IbyhpLG8pLHM9KHJbRG8rIkRlbGF5Il18fCIiKS5zcGxpdCgiLCAiKSx1PShyW0RvKyJEdXJhdGlvbiJdfHwiIikuc3BsaXQoIiwgIiksYz1IbyhzLHUpLGw9MCxmPTA7dD09PUVvP2E+MCYmKG49RW8sbD1hLGY9by5sZW5ndGgpOnQ9PT1Ubz9jPjAmJihuPVRvLGw9YyxmPXUubGVuZ3RoKToobD1NYXRoLm1heChhLGMpLG49bD4wP2E+Yz9FbzpUbzpudWxsLGY9bj9uPT09RW8/by5sZW5ndGg6dS5sZW5ndGg6MCk7dmFyIGQ9bj09PUVvJiZNby50ZXN0KHJbT28rIlByb3BlcnR5Il0pO3JldHVybnt0eXBlOm4sdGltZW91dDpsLHByb3BDb3VudDpmLGhhc1RyYW5zZm9ybTpkfX1mdW5jdGlvbiBIbyhlLHQpe3doaWxlKGUubGVuZ3RoPHQubGVuZ3RoKWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsdC5tYXAoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHpvKHQpK3pvKGVbbl0pfSkpKX1mdW5jdGlvbiB6byhlKXtyZXR1cm4gMWUzKk51bWJlcihlLnNsaWNlKDAsLTEpLnJlcGxhY2UoIiwiLCIuIikpfWZ1bmN0aW9uIEZvKGUsdCl7dmFyIG49ZS5lbG07aShuLl9sZWF2ZUNiKSYmKG4uX2xlYXZlQ2IuY2FuY2VsbGVkPSEwLG4uX2xlYXZlQ2IoKSk7dmFyIG89Q28oZS5kYXRhLnRyYW5zaXRpb24pO2lmKCFyKG8pJiYhaShuLl9lbnRlckNiKSYmMT09PW4ubm9kZVR5cGUpe3ZhciBhPW8uY3NzLHM9by50eXBlLGM9by5lbnRlckNsYXNzLGw9by5lbnRlclRvQ2xhc3MsZj1vLmVudGVyQWN0aXZlQ2xhc3MsZD1vLmFwcGVhckNsYXNzLHA9by5hcHBlYXJUb0NsYXNzLGg9by5hcHBlYXJBY3RpdmVDbGFzcyxtPW8uYmVmb3JlRW50ZXIseT1vLmVudGVyLGc9by5hZnRlckVudGVyLHc9by5lbnRlckNhbmNlbGxlZCxiPW8uYmVmb3JlQXBwZWFyLF89by5hcHBlYXIseD1vLmFmdGVyQXBwZWFyLGs9by5hcHBlYXJDYW5jZWxsZWQsQz1vLmR1cmF0aW9uLEE9Qm4sUz1Cbi4kdm5vZGU7d2hpbGUoUyYmUy5wYXJlbnQpQT1TLmNvbnRleHQsUz1TLnBhcmVudDt2YXIgRT0hQS5faXNNb3VudGVkfHwhZS5pc1Jvb3RJbnNlcnQ7aWYoIUV8fF98fCIiPT09Xyl7dmFyIFQ9RSYmZD9kOmMsTz1FJiZoP2g6ZixCPUUmJnA/cDpsLEQ9RSYmYnx8bSxqPUUmJiJmdW5jdGlvbiI9PT10eXBlb2YgXz9fOnksTj1FJiZ4fHxnLCQ9RSYma3x8dyxSPXYodShDKT9DLmVudGVyOkMpOzA7dmFyIEw9ITEhPT1hJiYhdGUsUD1XbyhqKSxJPW4uX2VudGVyQ2I9TSgoZnVuY3Rpb24oKXtMJiYoTG8obixCKSxMbyhuLE8pKSxJLmNhbmNlbGxlZD8oTCYmTG8obixUKSwkJiYkKG4pKTpOJiZOKG4pLG4uX2VudGVyQ2I9bnVsbH0pKTtlLmRhdGEuc2hvd3x8X3QoZSwiaW5zZXJ0IiwoZnVuY3Rpb24oKXt2YXIgdD1uLnBhcmVudE5vZGUscj10JiZ0Ll9wZW5kaW5nJiZ0Ll9wZW5kaW5nW2Uua2V5XTtyJiZyLnRhZz09PWUudGFnJiZyLmVsbS5fbGVhdmVDYiYmci5lbG0uX2xlYXZlQ2IoKSxqJiZqKG4sSSl9KSksRCYmRChuKSxMJiYoUm8obixUKSxSbyhuLE8pLCRvKChmdW5jdGlvbigpe0xvKG4sVCksSS5jYW5jZWxsZWR8fChSbyhuLEIpLFB8fChxbyhSKT9zZXRUaW1lb3V0KEksUik6UG8obixzLEkpKSl9KSkpLGUuZGF0YS5zaG93JiYodCYmdCgpLGomJmoobixJKSksTHx8UHx8SSgpfX19ZnVuY3Rpb24gVW8oZSx0KXt2YXIgbj1lLmVsbTtpKG4uX2VudGVyQ2IpJiYobi5fZW50ZXJDYi5jYW5jZWxsZWQ9ITAsbi5fZW50ZXJDYigpKTt2YXIgbz1DbyhlLmRhdGEudHJhbnNpdGlvbik7aWYocihvKXx8MSE9PW4ubm9kZVR5cGUpcmV0dXJuIHQoKTtpZighaShuLl9sZWF2ZUNiKSl7dmFyIGE9by5jc3Mscz1vLnR5cGUsYz1vLmxlYXZlQ2xhc3MsbD1vLmxlYXZlVG9DbGFzcyxmPW8ubGVhdmVBY3RpdmVDbGFzcyxkPW8uYmVmb3JlTGVhdmUscD1vLmxlYXZlLGg9by5hZnRlckxlYXZlLG09by5sZWF2ZUNhbmNlbGxlZCx5PW8uZGVsYXlMZWF2ZSxnPW8uZHVyYXRpb24sdz0hMSE9PWEmJiF0ZSxiPVdvKHApLF89dih1KGcpP2cubGVhdmU6Zyk7MDt2YXIgeD1uLl9sZWF2ZUNiPU0oKGZ1bmN0aW9uKCl7bi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUuX3BlbmRpbmcmJihuLnBhcmVudE5vZGUuX3BlbmRpbmdbZS5rZXldPW51bGwpLHcmJihMbyhuLGwpLExvKG4sZikpLHguY2FuY2VsbGVkPyh3JiZMbyhuLGMpLG0mJm0obikpOih0KCksaCYmaChuKSksbi5fbGVhdmVDYj1udWxsfSkpO3k/eShrKTprKCl9ZnVuY3Rpb24gaygpe3guY2FuY2VsbGVkfHwoIWUuZGF0YS5zaG93JiZuLnBhcmVudE5vZGUmJigobi5wYXJlbnROb2RlLl9wZW5kaW5nfHwobi5wYXJlbnROb2RlLl9wZW5kaW5nPXt9KSlbZS5rZXldPWUpLGQmJmQobiksdyYmKFJvKG4sYyksUm8obixmKSwkbygoZnVuY3Rpb24oKXtMbyhuLGMpLHguY2FuY2VsbGVkfHwoUm8obixsKSxifHwocW8oXyk/c2V0VGltZW91dCh4LF8pOlBvKG4scyx4KSkpfSkpKSxwJiZwKG4seCksd3x8Ynx8eCgpKX19ZnVuY3Rpb24gcW8oZSl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgZSYmIWlzTmFOKGUpfWZ1bmN0aW9uIFdvKGUpe2lmKHIoZSkpcmV0dXJuITE7dmFyIHQ9ZS5mbnM7cmV0dXJuIGkodCk/V28oQXJyYXkuaXNBcnJheSh0KT90WzBdOnQpOihlLl9sZW5ndGh8fGUubGVuZ3RoKT4xfWZ1bmN0aW9uIFlvKGUsdCl7ITAhPT10LmRhdGEuc2hvdyYmRm8odCl9dmFyIFZvPUs/e2NyZWF0ZTpZbyxhY3RpdmF0ZTpZbyxyZW1vdmU6ZnVuY3Rpb24oZSx0KXshMCE9PWUuZGF0YS5zaG93P1VvKGUsdCk6dCgpfX06e30sWG89W1VpLFlpLG5vLHNvLGJvLFZvXSxHbz1Yby5jb25jYXQoSWkpLEtvPURpKHtub2RlT3BzOmtpLG1vZHVsZXM6R299KTt0ZSYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIiwoZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2UmJmUudm1vZGVsJiZpYShlLCJpbnB1dCIpfSkpO3ZhciBKbz17aW5zZXJ0ZWQ6ZnVuY3Rpb24oZSx0LG4scil7InNlbGVjdCI9PT1uLnRhZz8oci5lbG0mJiFyLmVsbS5fdk9wdGlvbnM/X3QobiwicG9zdHBhdGNoIiwoZnVuY3Rpb24oKXtKby5jb21wb25lbnRVcGRhdGVkKGUsdCxuKX0pKTpRbyhlLHQsbi5jb250ZXh0KSxlLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsdGEpKTooInRleHRhcmVhIj09PW4udGFnfHxjaShlLnR5cGUpKSYmKGUuX3ZNb2RpZmllcnM9dC5tb2RpZmllcnMsdC5tb2RpZmllcnMubGF6eXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsbmEpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLHJhKSxlLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIscmEpLHRlJiYoZS52bW9kZWw9ITApKSl9LGNvbXBvbmVudFVwZGF0ZWQ6ZnVuY3Rpb24oZSx0LG4pe2lmKCJzZWxlY3QiPT09bi50YWcpe1FvKGUsdCxuLmNvbnRleHQpO3ZhciByPWUuX3ZPcHRpb25zLGk9ZS5fdk9wdGlvbnM9W10ubWFwLmNhbGwoZS5vcHRpb25zLHRhKTtpZihpLnNvbWUoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIUwoZSxyW3RdKX0pKSl7dmFyIG89ZS5tdWx0aXBsZT90LnZhbHVlLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlYShlLGkpfSkpOnQudmFsdWUhPT10Lm9sZFZhbHVlJiZlYSh0LnZhbHVlLGkpO28mJmlhKGUsImNoYW5nZSIpfX19fTtmdW5jdGlvbiBRbyhlLHQsbil7Wm8oZSx0LG4pLChlZXx8bmUpJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe1pvKGUsdCxuKX0pLDApfWZ1bmN0aW9uIFpvKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9ZS5tdWx0aXBsZTtpZighaXx8QXJyYXkuaXNBcnJheShyKSl7Zm9yKHZhciBvLGEscz0wLHU9ZS5vcHRpb25zLmxlbmd0aDtzPHU7cysrKWlmKGE9ZS5vcHRpb25zW3NdLGkpbz1QKHIsdGEoYSkpPi0xLGEuc2VsZWN0ZWQhPT1vJiYoYS5zZWxlY3RlZD1vKTtlbHNlIGlmKEwodGEoYSkscikpcmV0dXJuIHZvaWQoZS5zZWxlY3RlZEluZGV4IT09cyYmKGUuc2VsZWN0ZWRJbmRleD1zKSk7aXx8KGUuc2VsZWN0ZWRJbmRleD0tMSl9fWZ1bmN0aW9uIGVhKGUsdCl7cmV0dXJuIHQuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiFMKHQsZSl9KSl9ZnVuY3Rpb24gdGEoZSl7cmV0dXJuIl92YWx1ZSJpbiBlP2UuX3ZhbHVlOmUudmFsdWV9ZnVuY3Rpb24gbmEoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIHJhKGUpe2UudGFyZ2V0LmNvbXBvc2luZyYmKGUudGFyZ2V0LmNvbXBvc2luZz0hMSxpYShlLnRhcmdldCwiaW5wdXQiKSl9ZnVuY3Rpb24gaWEoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudCgiSFRNTEV2ZW50cyIpO24uaW5pdEV2ZW50KHQsITAsITApLGUuZGlzcGF0Y2hFdmVudChuKX1mdW5jdGlvbiBvYShlKXtyZXR1cm4hZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5kYXRhJiZlLmRhdGEudHJhbnNpdGlvbj9lOm9hKGUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlKX12YXIgYWE9e2JpbmQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWU7bj1vYShuKTt2YXIgaT1uLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uLG89ZS5fX3ZPcmlnaW5hbERpc3BsYXk9Im5vbmUiPT09ZS5zdHlsZS5kaXNwbGF5PyIiOmUuc3R5bGUuZGlzcGxheTtyJiZpPyhuLmRhdGEuc2hvdz0hMCxGbyhuLChmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT1vfSkpKTplLnN0eWxlLmRpc3BsYXk9cj9vOiJub25lIn0sdXBkYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9dC5vbGRWYWx1ZTtpZighciE9PSFpKXtuPW9hKG4pO3ZhciBvPW4uZGF0YSYmbi5kYXRhLnRyYW5zaXRpb247bz8obi5kYXRhLnNob3c9ITAscj9GbyhuLChmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheX0pKTpVbyhuLChmdW5jdGlvbigpe2Uuc3R5bGUuZGlzcGxheT0ibm9uZSJ9KSkpOmUuc3R5bGUuZGlzcGxheT1yP2UuX192T3JpZ2luYWxEaXNwbGF5OiJub25lIn19LHVuYmluZDpmdW5jdGlvbihlLHQsbixyLGkpe2l8fChlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXkpfX0sc2E9e21vZGVsOkpvLHNob3c6YWF9LHVhPXtuYW1lOlN0cmluZyxhcHBlYXI6Qm9vbGVhbixjc3M6Qm9vbGVhbixtb2RlOlN0cmluZyx0eXBlOlN0cmluZyxlbnRlckNsYXNzOlN0cmluZyxsZWF2ZUNsYXNzOlN0cmluZyxlbnRlclRvQ2xhc3M6U3RyaW5nLGxlYXZlVG9DbGFzczpTdHJpbmcsZW50ZXJBY3RpdmVDbGFzczpTdHJpbmcsbGVhdmVBY3RpdmVDbGFzczpTdHJpbmcsYXBwZWFyQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJUb0NsYXNzOlN0cmluZyxkdXJhdGlvbjpbTnVtYmVyLFN0cmluZyxPYmplY3RdfTtmdW5jdGlvbiBjYShlKXt2YXIgdD1lJiZlLmNvbXBvbmVudE9wdGlvbnM7cmV0dXJuIHQmJnQuQ3Rvci5vcHRpb25zLmFic3RyYWN0P2NhKGtuKHQuY2hpbGRyZW4pKTplfWZ1bmN0aW9uIGxhKGUpe3ZhciB0PXt9LG49ZS4kb3B0aW9ucztmb3IodmFyIHIgaW4gbi5wcm9wc0RhdGEpdFtyXT1lW3JdO3ZhciBpPW4uX3BhcmVudExpc3RlbmVycztmb3IodmFyIG8gaW4gaSl0W2sobyldPWlbb107cmV0dXJuIHR9ZnVuY3Rpb24gZmEoZSx0KXtpZigvXGQta2VlcC1hbGl2ZSQvLnRlc3QodC50YWcpKXJldHVybiBlKCJrZWVwLWFsaXZlIix7cHJvcHM6dC5jb21wb25lbnRPcHRpb25zLnByb3BzRGF0YX0pfWZ1bmN0aW9uIGRhKGUpe3doaWxlKGU9ZS5wYXJlbnQpaWYoZS5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9ZnVuY3Rpb24gcGEoZSx0KXtyZXR1cm4gdC5rZXk9PT1lLmtleSYmdC50YWc9PT1lLnRhZ312YXIgaGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnfHx4bihlKX0sdmE9ZnVuY3Rpb24oZSl7cmV0dXJuInNob3ciPT09ZS5uYW1lfSxtYT17bmFtZToidHJhbnNpdGlvbiIscHJvcHM6dWEsYWJzdHJhY3Q6ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLiRzbG90cy5kZWZhdWx0O2lmKG4mJihuPW4uZmlsdGVyKGhhKSxuLmxlbmd0aCkpezA7dmFyIHI9dGhpcy5tb2RlOzA7dmFyIGk9blswXTtpZihkYSh0aGlzLiR2bm9kZSkpcmV0dXJuIGk7dmFyIG89Y2EoaSk7aWYoIW8pcmV0dXJuIGk7aWYodGhpcy5fbGVhdmluZylyZXR1cm4gZmEoZSxpKTt2YXIgYT0iX190cmFuc2l0aW9uLSIrdGhpcy5fdWlkKyItIjtvLmtleT1udWxsPT1vLmtleT9vLmlzQ29tbWVudD9hKyJjb21tZW50IjphK28udGFnOnMoby5rZXkpPzA9PT1TdHJpbmcoby5rZXkpLmluZGV4T2YoYSk/by5rZXk6YStvLmtleTpvLmtleTt2YXIgdT0oby5kYXRhfHwoby5kYXRhPXt9KSkudHJhbnNpdGlvbj1sYSh0aGlzKSxjPXRoaXMuX3Zub2RlLGw9Y2EoYyk7aWYoby5kYXRhLmRpcmVjdGl2ZXMmJm8uZGF0YS5kaXJlY3RpdmVzLnNvbWUodmEpJiYoby5kYXRhLnNob3c9ITApLGwmJmwuZGF0YSYmIXBhKG8sbCkmJiF4bihsKSYmKCFsLmNvbXBvbmVudEluc3RhbmNlfHwhbC5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUuaXNDb21tZW50KSl7dmFyIGY9bC5kYXRhLnRyYW5zaXRpb249RCh7fSx1KTtpZigib3V0LWluIj09PXIpcmV0dXJuIHRoaXMuX2xlYXZpbmc9ITAsX3QoZiwiYWZ0ZXJMZWF2ZSIsKGZ1bmN0aW9uKCl7dC5fbGVhdmluZz0hMSx0LiRmb3JjZVVwZGF0ZSgpfSkpLGZhKGUsaSk7aWYoImluLW91dCI9PT1yKXtpZih4bihvKSlyZXR1cm4gYzt2YXIgZCxwPWZ1bmN0aW9uKCl7ZCgpfTtfdCh1LCJhZnRlckVudGVyIixwKSxfdCh1LCJlbnRlckNhbmNlbGxlZCIscCksX3QoZiwiZGVsYXlMZWF2ZSIsKGZ1bmN0aW9uKGUpe2Q9ZX0pKX19cmV0dXJuIGl9fX0seWE9RCh7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSx1YSk7ZGVsZXRlIHlhLm1vZGU7dmFyIGdhPXtwcm9wczp5YSxiZWZvcmVNb3VudDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLl91cGRhdGU7dGhpcy5fdXBkYXRlPWZ1bmN0aW9uKG4scil7dmFyIGk9RG4oZSk7ZS5fX3BhdGNoX18oZS5fdm5vZGUsZS5rZXB0LCExLCEwKSxlLl92bm9kZT1lLmtlcHQsaSgpLHQuY2FsbChlLG4scil9fSxyZW5kZXI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8InNwYW4iLG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPXRoaXMucHJldkNoaWxkcmVuPXRoaXMuY2hpbGRyZW4saT10aGlzLiRzbG90cy5kZWZhdWx0fHxbXSxvPXRoaXMuY2hpbGRyZW49W10sYT1sYSh0aGlzKSxzPTA7czxpLmxlbmd0aDtzKyspe3ZhciB1PWlbc107aWYodS50YWcpaWYobnVsbCE9dS5rZXkmJjAhPT1TdHJpbmcodS5rZXkpLmluZGV4T2YoIl9fdmxpc3QiKSlvLnB1c2godSksblt1LmtleV09dSwodS5kYXRhfHwodS5kYXRhPXt9KSkudHJhbnNpdGlvbj1hO2Vsc2U7fWlmKHIpe2Zvcih2YXIgYz1bXSxsPVtdLGY9MDtmPHIubGVuZ3RoO2YrKyl7dmFyIGQ9cltmXTtkLmRhdGEudHJhbnNpdGlvbj1hLGQuZGF0YS5wb3M9ZC5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbltkLmtleV0/Yy5wdXNoKGQpOmwucHVzaChkKX10aGlzLmtlcHQ9ZSh0LG51bGwsYyksdGhpcy5yZW1vdmVkPWx9cmV0dXJuIGUodCxudWxsLG8pfSx1cGRhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcmV2Q2hpbGRyZW4sdD10aGlzLm1vdmVDbGFzc3x8KHRoaXMubmFtZXx8InYiKSsiLW1vdmUiO2UubGVuZ3RoJiZ0aGlzLmhhc01vdmUoZVswXS5lbG0sdCkmJihlLmZvckVhY2god2EpLGUuZm9yRWFjaChiYSksZS5mb3JFYWNoKF9hKSx0aGlzLl9yZWZsb3c9ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQsZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihlLmRhdGEubW92ZWQpe3ZhciBuPWUuZWxtLHI9bi5zdHlsZTtSbyhuLHQpLHIudHJhbnNmb3JtPXIuV2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcihCbyxuLl9tb3ZlQ2I9ZnVuY3Rpb24gZShyKXtyJiZyLnRhcmdldCE9PW58fHImJiEvdHJhbnNmb3JtJC8udGVzdChyLnByb3BlcnR5TmFtZSl8fChuLnJlbW92ZUV2ZW50TGlzdGVuZXIoQm8sZSksbi5fbW92ZUNiPW51bGwsTG8obix0KSl9KX19KSkpfSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0aW9uKGUsdCl7aWYoIVNvKXJldHVybiExO2lmKHRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hhc01vdmU7dmFyIG49ZS5jbG9uZU5vZGUoKTtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmZS5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7a28obixlKX0pKSx4byhuLHQpLG4uc3R5bGUuZGlzcGxheT0ibm9uZSIsdGhpcy4kZWwuYXBwZW5kQ2hpbGQobik7dmFyIHI9SW8obik7cmV0dXJuIHRoaXMuJGVsLnJlbW92ZUNoaWxkKG4pLHRoaXMuX2hhc01vdmU9ci5oYXNUcmFuc2Zvcm19fX07ZnVuY3Rpb24gd2EoZSl7ZS5lbG0uX21vdmVDYiYmZS5lbG0uX21vdmVDYigpLGUuZWxtLl9lbnRlckNiJiZlLmVsbS5fZW50ZXJDYigpfWZ1bmN0aW9uIGJhKGUpe2UuZGF0YS5uZXdQb3M9ZS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZnVuY3Rpb24gX2EoZSl7dmFyIHQ9ZS5kYXRhLnBvcyxuPWUuZGF0YS5uZXdQb3Mscj10LmxlZnQtbi5sZWZ0LGk9dC50b3Atbi50b3A7aWYocnx8aSl7ZS5kYXRhLm1vdmVkPSEwO3ZhciBvPWUuZWxtLnN0eWxlO28udHJhbnNmb3JtPW8uV2Via2l0VHJhbnNmb3JtPSJ0cmFuc2xhdGUoIityKyJweCwiK2krInB4KSIsby50cmFuc2l0aW9uRHVyYXRpb249IjBzIn19dmFyIHhhPXtUcmFuc2l0aW9uOm1hLFRyYW5zaXRpb25Hcm91cDpnYX07a3IuY29uZmlnLm11c3RVc2VQcm9wPUhyLGtyLmNvbmZpZy5pc1Jlc2VydmVkVGFnPW9pLGtyLmNvbmZpZy5pc1Jlc2VydmVkQXR0cj1Ncixrci5jb25maWcuZ2V0VGFnTmFtZXNwYWNlPWFpLGtyLmNvbmZpZy5pc1Vua25vd25FbGVtZW50PXVpLEQoa3Iub3B0aW9ucy5kaXJlY3RpdmVzLHNhKSxEKGtyLm9wdGlvbnMuY29tcG9uZW50cyx4YSksa3IucHJvdG90eXBlLl9fcGF0Y2hfXz1LP0tvOk4sa3IucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWUmJks/bGkoZSk6dm9pZCAwLCRuKHRoaXMsZSx0KX0sSyYmc2V0VGltZW91dCgoZnVuY3Rpb24oKXtGLmRldnRvb2xzJiZjZSYmY2UuZW1pdCgiaW5pdCIsa3IpfSksMCksdFsiYSJdPWtyfSkuY2FsbCh0aGlzLG4oImM4YmEiKSl9LCIyYjc5IjpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQscixpKXtlLmV4cG9ydHM9cihuKCIyMWJmIiksbigiZGYyZiIpLG4oIjU5ODAiKSl9KSgwLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lLG49dC5saWIscj1uLkJhc2UsaT1uLldvcmRBcnJheSxvPXQuYWxnbyxhPW8uTUQ1LHM9by5FdnBLREY9ci5leHRlbmQoe2NmZzpyLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjphLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24oZSl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKGUpfSxjb21wdXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jZmcscj1uLmhhc2hlci5jcmVhdGUoKSxvPWkuY3JlYXRlKCksYT1vLndvcmRzLHM9bi5rZXlTaXplLHU9bi5pdGVyYXRpb25zO3doaWxlKGEubGVuZ3RoPHMpe2MmJnIudXBkYXRlKGMpO3ZhciBjPXIudXBkYXRlKGUpLmZpbmFsaXplKHQpO3IucmVzZXQoKTtmb3IodmFyIGw9MTtsPHU7bCsrKWM9ci5maW5hbGl6ZShjKSxyLnJlc2V0KCk7by5jb25jYXQoYyl9cmV0dXJuIG8uc2lnQnl0ZXM9NCpzLG99fSk7dC5FdnBLREY9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBzLmNyZWF0ZShuKS5jb21wdXRlKGUsdCl9fSgpLGUuRXZwS0RGfSkpfSwzMjUyOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyKXtlLmV4cG9ydHM9cihuKCIyMWJmIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWUscj1uLmxpYixpPXIuQmFzZSxvPXIuV29yZEFycmF5LGE9bi54NjQ9e307YS5Xb3JkPWkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKGUsdCl7dGhpcy5oaWdoPWUsdGhpcy5sb3c9dH19KSxhLldvcmRBcnJheT1pLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLG4pe2U9dGhpcy53b3Jkcz1lfHxbXSx0aGlzLnNpZ0J5dGVzPW4hPXQ/bjo4KmUubGVuZ3RofSx0b1gzMjpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLndvcmRzLHQ9ZS5sZW5ndGgsbj1bXSxyPTA7cjx0O3IrKyl7dmFyIGk9ZVtyXTtuLnB1c2goaS5oaWdoKSxuLnB1c2goaS5sb3cpfXJldHVybiBvLmNyZWF0ZShuLHRoaXMuc2lnQnl0ZXMpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1pLmNsb25lLmNhbGwodGhpcyksdD1lLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksbj10Lmxlbmd0aCxyPTA7cjxuO3IrKyl0W3JdPXRbcl0uY2xvbmUoKTtyZXR1cm4gZX19KX0oKSxlfSkpfSwzNDUyOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIzMjUyIiksbigiMTdlMSIpLG4oImE4Y2UiKSxuKCIxMTMyIiksbigiNzJmZSIpLG4oImRmMmYiKSxuKCI5NGY4IiksbigiMTkxYiIpLG4oImQ2ZTYiKSxuKCJiODZiIiksbigiZTYxYiIpLG4oIjEwYjciKSxuKCI1OTgwIiksbigiN2JiYyIpLG4oIjJiNzkiKSxuKCIzOGJhIiksbigiMDBiYiIpLG4oImY0ZWEiKSxuKCJhYWVmIiksbigiNGJhOSIpLG4oIjgxYmYiKSxuKCJhODE3IiksbigiYTExYiIpLG4oIjhjZWYiKSxuKCIyYTY2IiksbigiYjg2YyIpLG4oIjZkMDgiKSxuKCJjMTk4IiksbigiYTQwZSIpLG4oImMzYjYiKSxuKCIxMzgyIiksbigiM2Q1YSIpKX0pKDAsKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpfSwiMzhiYSI6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjJiNzkiKSl9KSgwLChmdW5jdGlvbihlKXtlLmxpYi5DaXBoZXJ8fGZ1bmN0aW9uKHQpe3ZhciBuPWUscj1uLmxpYixpPXIuQmFzZSxvPXIuV29yZEFycmF5LGE9ci5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtLHM9bi5lbmMsdT0ocy5VdGY4LHMuQmFzZTY0KSxjPW4uYWxnbyxsPWMuRXZwS0RGLGY9ci5DaXBoZXI9YS5leHRlbmQoe2NmZzppLmV4dGVuZCgpLGNyZWF0ZUVuY3J5cHRvcjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSxlLHQpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fREVDX1hGT1JNX01PREUsZSx0KX0saW5pdDpmdW5jdGlvbihlLHQsbil7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKG4pLHRoaXMuX3hmb3JtTW9kZT1lLHRoaXMuX2tleT10LHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXthLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSxwcm9jZXNzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hcHBlbmQoZSksdGhpcy5fcHJvY2VzcygpfSxmaW5hbGl6ZTpmdW5jdGlvbihlKXtlJiZ0aGlzLl9hcHBlbmQoZSk7dmFyIHQ9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiB0fSxrZXlTaXplOjQsaXZTaXplOjQsX0VOQ19YRk9STV9NT0RFOjEsX0RFQ19YRk9STV9NT0RFOjIsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2s6Yn1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJue2VuY3J5cHQ6ZnVuY3Rpb24obixyLGkpe3JldHVybiBlKHIpLmVuY3J5cHQodCxuLHIsaSl9LGRlY3J5cHQ6ZnVuY3Rpb24obixyLGkpe3JldHVybiBlKHIpLmRlY3J5cHQodCxuLHIsaSl9fX19KCl9KSxkPShyLlN0cmVhbUNpcGhlcj1mLmV4dGVuZCh7X2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9wcm9jZXNzKCEwKTtyZXR1cm4gZX0sYmxvY2tTaXplOjF9KSxuLm1vZGU9e30pLHA9ci5CbG9ja0NpcGhlck1vZGU9aS5leHRlbmQoe2NyZWF0ZUVuY3J5cHRvcjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLkVuY3J5cHRvci5jcmVhdGUoZSx0KX0sY3JlYXRlRGVjcnlwdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuRGVjcnlwdG9yLmNyZWF0ZShlLHQpfSxpbml0OmZ1bmN0aW9uKGUsdCl7dGhpcy5fY2lwaGVyPWUsdGhpcy5faXY9dH19KSxoPWQuQ0JDPWZ1bmN0aW9uKCl7dmFyIGU9cC5leHRlbmQoKTtmdW5jdGlvbiBuKGUsbixyKXt2YXIgaT10aGlzLl9pdjtpZihpKXt2YXIgbz1pO3RoaXMuX2l2PXR9ZWxzZSBvPXRoaXMuX3ByZXZCbG9jaztmb3IodmFyIGE9MDthPHI7YSsrKWVbbithXV49b1thXX1yZXR1cm4gZS5FbmNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX2NpcGhlcixpPXIuYmxvY2tTaXplO24uY2FsbCh0aGlzLGUsdCxpKSxyLmVuY3J5cHRCbG9jayhlLHQpLHRoaXMuX3ByZXZCbG9jaz1lLnNsaWNlKHQsdCtpKX19KSxlLkRlY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fY2lwaGVyLGk9ci5ibG9ja1NpemUsbz1lLnNsaWNlKHQsdCtpKTtyLmRlY3J5cHRCbG9jayhlLHQpLG4uY2FsbCh0aGlzLGUsdCxpKSx0aGlzLl9wcmV2QmxvY2s9b319KSxlfSgpLHY9bi5wYWQ9e30sbT12LlBrY3M3PXtwYWQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49NCp0LHI9bi1lLnNpZ0J5dGVzJW4saT1yPDwyNHxyPDwxNnxyPDw4fHIsYT1bXSxzPTA7czxyO3MrPTQpYS5wdXNoKGkpO3ZhciB1PW8uY3JlYXRlKGEscik7ZS5jb25jYXQodSl9LHVucGFkOmZ1bmN0aW9uKGUpe3ZhciB0PTI1NSZlLndvcmRzW2Uuc2lnQnl0ZXMtMT4+PjJdO2Uuc2lnQnl0ZXMtPXR9fSx5PShyLkJsb2NrQ2lwaGVyPWYuZXh0ZW5kKHtjZmc6Zi5jZmcuZXh0ZW5kKHttb2RlOmgscGFkZGluZzptfSkscmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyk7dmFyIGU9dGhpcy5jZmcsdD1lLml2LG49ZS5tb2RlO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpdmFyIHI9bi5jcmVhdGVFbmNyeXB0b3I7ZWxzZXtyPW4uY3JlYXRlRGVjcnlwdG9yO3RoaXMuX21pbkJ1ZmZlclNpemU9MX10aGlzLl9tb2RlJiZ0aGlzLl9tb2RlLl9fY3JlYXRvcj09cj90aGlzLl9tb2RlLmluaXQodGhpcyx0JiZ0LndvcmRzKToodGhpcy5fbW9kZT1yLmNhbGwobix0aGlzLHQmJnQud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPXIpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24oZSx0KXt0aGlzLl9tb2RlLnByb2Nlc3NCbG9jayhlLHQpfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuY2ZnLnBhZGRpbmc7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl7ZS5wYWQodGhpcy5fZGF0YSx0aGlzLmJsb2NrU2l6ZSk7dmFyIHQ9dGhpcy5fcHJvY2VzcyghMCl9ZWxzZXt0PXRoaXMuX3Byb2Nlc3MoITApO2UudW5wYWQodCl9cmV0dXJuIHR9LGJsb2NrU2l6ZTo0fSksci5DaXBoZXJQYXJhbXM9aS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSl7dGhpcy5taXhJbihlKX0sdG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fHRoaXMuZm9ybWF0dGVyKS5zdHJpbmdpZnkodGhpcyl9fSkpLGc9bi5mb3JtYXQ9e30sdz1nLk9wZW5TU0w9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXt2YXIgdD1lLmNpcGhlcnRleHQsbj1lLnNhbHQ7aWYobil2YXIgcj1vLmNyZWF0ZShbMTM5ODg5MzY4NCwxNzAxMDc2ODMxXSkuY29uY2F0KG4pLmNvbmNhdCh0KTtlbHNlIHI9dDtyZXR1cm4gci50b1N0cmluZyh1KX0scGFyc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dS5wYXJzZShlKSxuPXQud29yZHM7aWYoMTM5ODg5MzY4ND09blswXSYmMTcwMTA3NjgzMT09blsxXSl7dmFyIHI9by5jcmVhdGUobi5zbGljZSgyLDQpKTtuLnNwbGljZSgwLDQpLHQuc2lnQnl0ZXMtPTE2fXJldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDp0LHNhbHQ6cn0pfX0sYj1yLlNlcmlhbGl6YWJsZUNpcGhlcj1pLmV4dGVuZCh7Y2ZnOmkuZXh0ZW5kKHtmb3JtYXQ6d30pLGVuY3J5cHQ6ZnVuY3Rpb24oZSx0LG4scil7cj10aGlzLmNmZy5leHRlbmQocik7dmFyIGk9ZS5jcmVhdGVFbmNyeXB0b3IobixyKSxvPWkuZmluYWxpemUodCksYT1pLmNmZztyZXR1cm4geS5jcmVhdGUoe2NpcGhlcnRleHQ6byxrZXk6bixpdjphLml2LGFsZ29yaXRobTplLG1vZGU6YS5tb2RlLHBhZGRpbmc6YS5wYWRkaW5nLGJsb2NrU2l6ZTplLmJsb2NrU2l6ZSxmb3JtYXR0ZXI6ci5mb3JtYXR9KX0sZGVjcnlwdDpmdW5jdGlvbihlLHQsbixyKXtyPXRoaXMuY2ZnLmV4dGVuZChyKSx0PXRoaXMuX3BhcnNlKHQsci5mb3JtYXQpO3ZhciBpPWUuY3JlYXRlRGVjcnlwdG9yKG4scikuZmluYWxpemUodC5jaXBoZXJ0ZXh0KTtyZXR1cm4gaX0sX3BhcnNlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP3QucGFyc2UoZSx0aGlzKTplfX0pLF89bi5rZGY9e30seD1fLk9wZW5TU0w9e2V4ZWN1dGU6ZnVuY3Rpb24oZSx0LG4scil7cnx8KHI9by5yYW5kb20oOCkpO3ZhciBpPWwuY3JlYXRlKHtrZXlTaXplOnQrbn0pLmNvbXB1dGUoZSxyKSxhPW8uY3JlYXRlKGkud29yZHMuc2xpY2UodCksNCpuKTtyZXR1cm4gaS5zaWdCeXRlcz00KnQseS5jcmVhdGUoe2tleTppLGl2OmEsc2FsdDpyfSl9fSxrPXIuUGFzc3dvcmRCYXNlZENpcGhlcj1iLmV4dGVuZCh7Y2ZnOmIuY2ZnLmV4dGVuZCh7a2RmOnh9KSxlbmNyeXB0OmZ1bmN0aW9uKGUsdCxuLHIpe3I9dGhpcy5jZmcuZXh0ZW5kKHIpO3ZhciBpPXIua2RmLmV4ZWN1dGUobixlLmtleVNpemUsZS5pdlNpemUpO3IuaXY9aS5pdjt2YXIgbz1iLmVuY3J5cHQuY2FsbCh0aGlzLGUsdCxpLmtleSxyKTtyZXR1cm4gby5taXhJbihpKSxvfSxkZWNyeXB0OmZ1bmN0aW9uKGUsdCxuLHIpe3I9dGhpcy5jZmcuZXh0ZW5kKHIpLHQ9dGhpcy5fcGFyc2UodCxyLmZvcm1hdCk7dmFyIGk9ci5rZGYuZXhlY3V0ZShuLGUua2V5U2l6ZSxlLml2U2l6ZSx0LnNhbHQpO3IuaXY9aS5pdjt2YXIgbz1iLmRlY3J5cHQuY2FsbCh0aGlzLGUsdCxpLmtleSxyKTtyZXR1cm4gb319KX0oKX0pKX0sIjNkNWEiOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIxMTMyIiksbigiNzJmZSIpLG4oIjJiNzkiKSxuKCIzOGJhIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZSxuPXQubGliLHI9bi5TdHJlYW1DaXBoZXIsaT10LmFsZ28sbz1bXSxhPVtdLHM9W10sdT1pLlJhYmJpdExlZ2FjeT1yLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9rZXkud29yZHMsdD10aGlzLmNmZy5pdixuPXRoaXMuX1g9W2VbMF0sZVszXTw8MTZ8ZVsyXT4+PjE2LGVbMV0sZVswXTw8MTZ8ZVszXT4+PjE2LGVbMl0sZVsxXTw8MTZ8ZVswXT4+PjE2LGVbM10sZVsyXTw8MTZ8ZVsxXT4+PjE2XSxyPXRoaXMuX0M9W2VbMl08PDE2fGVbMl0+Pj4xNiw0Mjk0OTAxNzYwJmVbMF18NjU1MzUmZVsxXSxlWzNdPDwxNnxlWzNdPj4+MTYsNDI5NDkwMTc2MCZlWzFdfDY1NTM1JmVbMl0sZVswXTw8MTZ8ZVswXT4+PjE2LDQyOTQ5MDE3NjAmZVsyXXw2NTUzNSZlWzNdLGVbMV08PDE2fGVbMV0+Pj4xNiw0Mjk0OTAxNzYwJmVbM118NjU1MzUmZVswXV07dGhpcy5fYj0wO2Zvcih2YXIgaT0wO2k8NDtpKyspYy5jYWxsKHRoaXMpO2ZvcihpPTA7aTw4O2krKylyW2ldXj1uW2krNCY3XTtpZih0KXt2YXIgbz10LndvcmRzLGE9b1swXSxzPW9bMV0sdT0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihzPDw4fHM+Pj4yNCl8NDI3ODI1NTM2MCYoczw8MjR8cz4+PjgpLGY9dT4+PjE2fDQyOTQ5MDE3NjAmbCxkPWw8PDE2fDY1NTM1JnU7clswXV49dSxyWzFdXj1mLHJbMl1ePWwsclszXV49ZCxyWzRdXj11LHJbNV1ePWYscls2XV49bCxyWzddXj1kO2ZvcihpPTA7aTw0O2krKyljLmNhbGwodGhpcyl9fSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9YO2MuY2FsbCh0aGlzKSxvWzBdPW5bMF1ebls1XT4+PjE2Xm5bM108PDE2LG9bMV09blsyXV5uWzddPj4+MTZebls1XTw8MTYsb1syXT1uWzRdXm5bMV0+Pj4xNl5uWzddPDwxNixvWzNdPW5bNl1eblszXT4+PjE2Xm5bMV08PDE2O2Zvcih2YXIgcj0wO3I8NDtyKyspb1tyXT0xNjcxMTkzNSYob1tyXTw8OHxvW3JdPj4+MjQpfDQyNzgyNTUzNjAmKG9bcl08PDI0fG9bcl0+Pj44KSxlW3Qrcl1ePW9bcl19LGJsb2NrU2l6ZTo0LGl2U2l6ZToyfSk7ZnVuY3Rpb24gYygpe2Zvcih2YXIgZT10aGlzLl9YLHQ9dGhpcy5fQyxuPTA7bjw4O24rKylhW25dPXRbbl07dFswXT10WzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHRbMV09dFsxXSszNTQ1MDUyMzcxKyh0WzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsdFsyXT10WzJdKzg4NjI2MzA5MisodFsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHRbM109dFszXSsxMjk1MzA3NTk3Kyh0WzJdPj4+MDxhWzJdPj4+MD8xOjApfDAsdFs0XT10WzRdKzM1NDUwNTIzNzErKHRbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCx0WzVdPXRbNV0rODg2MjYzMDkyKyh0WzRdPj4+MDxhWzRdPj4+MD8xOjApfDAsdFs2XT10WzZdKzEyOTUzMDc1OTcrKHRbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCx0WzddPXRbN10rMzU0NTA1MjM3MSsodFs2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9dFs3XT4+PjA8YVs3XT4+PjA/MTowO2ZvcihuPTA7bjw4O24rKyl7dmFyIHI9ZVtuXSt0W25dLGk9NjU1MzUmcixvPXI+Pj4xNix1PSgoaSppPj4+MTcpK2kqbz4+PjE1KStvKm8sYz0oKDQyOTQ5MDE3NjAmcikqcnwwKSsoKDY1NTM1JnIpKnJ8MCk7c1tuXT11XmN9ZVswXT1zWzBdKyhzWzddPDwxNnxzWzddPj4+MTYpKyhzWzZdPDwxNnxzWzZdPj4+MTYpfDAsZVsxXT1zWzFdKyhzWzBdPDw4fHNbMF0+Pj4yNCkrc1s3XXwwLGVbMl09c1syXSsoc1sxXTw8MTZ8c1sxXT4+PjE2KSsoc1swXTw8MTZ8c1swXT4+PjE2KXwwLGVbM109c1szXSsoc1syXTw8OHxzWzJdPj4+MjQpK3NbMV18MCxlWzRdPXNbNF0rKHNbM108PDE2fHNbM10+Pj4xNikrKHNbMl08PDE2fHNbMl0+Pj4xNil8MCxlWzVdPXNbNV0rKHNbNF08PDh8c1s0XT4+PjI0KStzWzNdfDAsZVs2XT1zWzZdKyhzWzVdPDwxNnxzWzVdPj4+MTYpKyhzWzRdPDwxNnxzWzRdPj4+MTYpfDAsZVs3XT1zWzddKyhzWzZdPDw4fHNbNl0+Pj4yNCkrc1s1XXwwfXQuUmFiYml0TGVnYWN5PXIuX2NyZWF0ZUhlbHBlcih1KX0oKSxlLlJhYmJpdExlZ2FjeX0pKX0sNDM2MjpmdW5jdGlvbihlLHQsbil7dC5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3Quc2hpZnQoKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UuYXBwbHkobnVsbCx0KX0pLDApfSx0LnBsYXRmb3JtPXQuYXJjaD10LmV4ZWNQYXRoPXQudGl0bGU9ImJyb3dzZXIiLHQucGlkPTEsdC5icm93c2VyPSEwLHQuZW52PXt9LHQuYXJndj1bXSx0LmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJObyBzdWNoIG1vZHVsZS4gKFBvc3NpYmx5IG5vdCB5ZXQgbG9hZGVkKSIpfSxmdW5jdGlvbigpe3ZhciBlLHI9Ii8iO3QuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHQuY2hkaXI9ZnVuY3Rpb24odCl7ZXx8KGU9bigiZGY3YyIpKSxyPWUucmVzb2x2ZSh0LHIpfX0oKSx0LmV4aXQ9dC5raWxsPXQudW1hc2s9dC5kbG9wZW49dC51cHRpbWU9dC5tZW1vcnlVc2FnZT10LnV2Q291bnRlcnM9ZnVuY3Rpb24oKXt9LHQuZmVhdHVyZXM9e319LCI0YmE5IjpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQscixpKXtlLmV4cG9ydHM9cihuKCIyMWJmIiksbigiMzhiYSIpKX0pKDAsKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1vZGUuT0ZCPWZ1bmN0aW9uKCl7dmFyIHQ9ZS5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLG49dC5FbmNyeXB0b3I9dC5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2NpcGhlcixyPW4uYmxvY2tTaXplLGk9dGhpcy5faXYsbz10aGlzLl9rZXlzdHJlYW07aSYmKG89dGhpcy5fa2V5c3RyZWFtPWkuc2xpY2UoMCksdGhpcy5faXY9dm9pZCAwKSxuLmVuY3J5cHRCbG9jayhvLDApO2Zvcih2YXIgYT0wO2E8cjthKyspZVt0K2FdXj1vW2FdfX0pO3JldHVybiB0LkRlY3J5cHRvcj1uLHR9KCksZS5tb2RlLk9GQn0pKX0sNTk4MDpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQscil7ZS5leHBvcnRzPXIobigiMjFiZiIpKX0pKDAsKGZ1bmN0aW9uKGUpeyhmdW5jdGlvbigpe3ZhciB0PWUsbj10LmxpYixyPW4uQmFzZSxpPXQuZW5jLG89aS5VdGY4LGE9dC5hbGdvO2EuSE1BQz1yLmV4dGVuZCh7aW5pdDpmdW5jdGlvbihlLHQpe2U9dGhpcy5faGFzaGVyPW5ldyBlLmluaXQsInN0cmluZyI9PXR5cGVvZiB0JiYodD1vLnBhcnNlKHQpKTt2YXIgbj1lLmJsb2NrU2l6ZSxyPTQqbjt0LnNpZ0J5dGVzPnImJih0PWUuZmluYWxpemUodCkpLHQuY2xhbXAoKTtmb3IodmFyIGk9dGhpcy5fb0tleT10LmNsb25lKCksYT10aGlzLl9pS2V5PXQuY2xvbmUoKSxzPWkud29yZHMsdT1hLndvcmRzLGM9MDtjPG47YysrKXNbY11ePTE1NDk1NTY4MjgsdVtjXV49OTA5NTIyNDg2O2kuc2lnQnl0ZXM9YS5zaWdCeXRlcz1yLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9oYXNoZXI7ZS5yZXNldCgpLGUudXBkYXRlKHRoaXMuX2lLZXkpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2hhc2hlci51cGRhdGUoZSksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faGFzaGVyLG49dC5maW5hbGl6ZShlKTt0LnJlc2V0KCk7dmFyIHI9dC5maW5hbGl6ZSh0aGlzLl9vS2V5LmNsb25lKCkuY29uY2F0KG4pKTtyZXR1cm4gcn19KX0pKCl9KSl9LCI2ZDA4IjpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQscixpKXtlLmV4cG9ydHM9cihuKCIyMWJmIiksbigiMzhiYSIpKX0pKDAsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj1lLHI9bi5saWIsaT1yLkNpcGhlclBhcmFtcyxvPW4uZW5jLGE9by5IZXgscz1uLmZvcm1hdDtzLkhleD17c3RyaW5naWZ5OmZ1bmN0aW9uKGUpe3JldHVybiBlLmNpcGhlcnRleHQudG9TdHJpbmcoYSl9LHBhcnNlOmZ1bmN0aW9uKGUpe3ZhciB0PWEucGFyc2UoZSk7cmV0dXJuIGkuY3JlYXRlKHtjaXBoZXJ0ZXh0OnR9KX19fSgpLGUuZm9ybWF0LkhleH0pKX0sIjcyZmUiOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyKXtlLmV4cG9ydHM9cihuKCIyMWJmIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWUscj1uLmxpYixpPXIuV29yZEFycmF5LG89ci5IYXNoZXIsYT1uLmFsZ28scz1bXTsoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPDY0O2UrKylzW2VdPTQyOTQ5NjcyOTYqdC5hYnModC5zaW4oZSsxKSl8MH0pKCk7dmFyIHU9YS5NRDU9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjwxNjtuKyspe3ZhciByPXQrbixpPWVbcl07ZVtyXT0xNjcxMTkzNSYoaTw8OHxpPj4+MjQpfDQyNzgyNTUzNjAmKGk8PDI0fGk+Pj44KX12YXIgbz10aGlzLl9oYXNoLndvcmRzLGE9ZVt0KzBdLHU9ZVt0KzFdLHA9ZVt0KzJdLGg9ZVt0KzNdLHY9ZVt0KzRdLG09ZVt0KzVdLHk9ZVt0KzZdLGc9ZVt0KzddLHc9ZVt0KzhdLGI9ZVt0KzldLF89ZVt0KzEwXSx4PWVbdCsxMV0saz1lW3QrMTJdLEM9ZVt0KzEzXSxBPWVbdCsxNF0sUz1lW3QrMTVdLEU9b1swXSxUPW9bMV0sTz1vWzJdLEI9b1szXTtFPWMoRSxULE8sQixhLDcsc1swXSksQj1jKEIsRSxULE8sdSwxMixzWzFdKSxPPWMoTyxCLEUsVCxwLDE3LHNbMl0pLFQ9YyhULE8sQixFLGgsMjIsc1szXSksRT1jKEUsVCxPLEIsdiw3LHNbNF0pLEI9YyhCLEUsVCxPLG0sMTIsc1s1XSksTz1jKE8sQixFLFQseSwxNyxzWzZdKSxUPWMoVCxPLEIsRSxnLDIyLHNbN10pLEU9YyhFLFQsTyxCLHcsNyxzWzhdKSxCPWMoQixFLFQsTyxiLDEyLHNbOV0pLE89YyhPLEIsRSxULF8sMTcsc1sxMF0pLFQ9YyhULE8sQixFLHgsMjIsc1sxMV0pLEU9YyhFLFQsTyxCLGssNyxzWzEyXSksQj1jKEIsRSxULE8sQywxMixzWzEzXSksTz1jKE8sQixFLFQsQSwxNyxzWzE0XSksVD1jKFQsTyxCLEUsUywyMixzWzE1XSksRT1sKEUsVCxPLEIsdSw1LHNbMTZdKSxCPWwoQixFLFQsTyx5LDksc1sxN10pLE89bChPLEIsRSxULHgsMTQsc1sxOF0pLFQ9bChULE8sQixFLGEsMjAsc1sxOV0pLEU9bChFLFQsTyxCLG0sNSxzWzIwXSksQj1sKEIsRSxULE8sXyw5LHNbMjFdKSxPPWwoTyxCLEUsVCxTLDE0LHNbMjJdKSxUPWwoVCxPLEIsRSx2LDIwLHNbMjNdKSxFPWwoRSxULE8sQixiLDUsc1syNF0pLEI9bChCLEUsVCxPLEEsOSxzWzI1XSksTz1sKE8sQixFLFQsaCwxNCxzWzI2XSksVD1sKFQsTyxCLEUsdywyMCxzWzI3XSksRT1sKEUsVCxPLEIsQyw1LHNbMjhdKSxCPWwoQixFLFQsTyxwLDksc1syOV0pLE89bChPLEIsRSxULGcsMTQsc1szMF0pLFQ9bChULE8sQixFLGssMjAsc1szMV0pLEU9ZihFLFQsTyxCLG0sNCxzWzMyXSksQj1mKEIsRSxULE8sdywxMSxzWzMzXSksTz1mKE8sQixFLFQseCwxNixzWzM0XSksVD1mKFQsTyxCLEUsQSwyMyxzWzM1XSksRT1mKEUsVCxPLEIsdSw0LHNbMzZdKSxCPWYoQixFLFQsTyx2LDExLHNbMzddKSxPPWYoTyxCLEUsVCxnLDE2LHNbMzhdKSxUPWYoVCxPLEIsRSxfLDIzLHNbMzldKSxFPWYoRSxULE8sQixDLDQsc1s0MF0pLEI9ZihCLEUsVCxPLGEsMTEsc1s0MV0pLE89ZihPLEIsRSxULGgsMTYsc1s0Ml0pLFQ9ZihULE8sQixFLHksMjMsc1s0M10pLEU9ZihFLFQsTyxCLGIsNCxzWzQ0XSksQj1mKEIsRSxULE8saywxMSxzWzQ1XSksTz1mKE8sQixFLFQsUywxNixzWzQ2XSksVD1mKFQsTyxCLEUscCwyMyxzWzQ3XSksRT1kKEUsVCxPLEIsYSw2LHNbNDhdKSxCPWQoQixFLFQsTyxnLDEwLHNbNDldKSxPPWQoTyxCLEUsVCxBLDE1LHNbNTBdKSxUPWQoVCxPLEIsRSxtLDIxLHNbNTFdKSxFPWQoRSxULE8sQixrLDYsc1s1Ml0pLEI9ZChCLEUsVCxPLGgsMTAsc1s1M10pLE89ZChPLEIsRSxULF8sMTUsc1s1NF0pLFQ9ZChULE8sQixFLHUsMjEsc1s1NV0pLEU9ZChFLFQsTyxCLHcsNixzWzU2XSksQj1kKEIsRSxULE8sUywxMCxzWzU3XSksTz1kKE8sQixFLFQseSwxNSxzWzU4XSksVD1kKFQsTyxCLEUsQywyMSxzWzU5XSksRT1kKEUsVCxPLEIsdiw2LHNbNjBdKSxCPWQoQixFLFQsTyx4LDEwLHNbNjFdKSxPPWQoTyxCLEUsVCxwLDE1LHNbNjJdKSxUPWQoVCxPLEIsRSxiLDIxLHNbNjNdKSxvWzBdPW9bMF0rRXwwLG9bMV09b1sxXStUfDAsb1syXT1vWzJdK098MCxvWzNdPW9bM10rQnwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2RhdGEsbj1lLndvcmRzLHI9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCplLnNpZ0J5dGVzO25baT4+PjVdfD0xMjg8PDI0LWklMzI7dmFyIG89dC5mbG9vcihyLzQyOTQ5NjcyOTYpLGE9cjtuWzE1KyhpKzY0Pj4+OTw8NCldPTE2NzExOTM1JihvPDw4fG8+Pj4yNCl8NDI3ODI1NTM2MCYobzw8MjR8bz4+PjgpLG5bMTQrKGkrNjQ+Pj45PDw0KV09MTY3MTE5MzUmKGE8PDh8YT4+PjI0KXw0Mjc4MjU1MzYwJihhPDwyNHxhPj4+OCksZS5zaWdCeXRlcz00KihuLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBzPXRoaXMuX2hhc2gsdT1zLndvcmRzLGM9MDtjPDQ7YysrKXt2YXIgbD11W2NdO3VbY109MTY3MTE5MzUmKGw8PDh8bD4+PjI0KXw0Mjc4MjU1MzYwJihsPDwyNHxsPj4+OCl9cmV0dXJuIHN9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGU9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBlLl9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSxlfX0pO2Z1bmN0aW9uIGMoZSx0LG4scixpLG8sYSl7dmFyIHM9ZSsodCZufH50JnIpK2krYTtyZXR1cm4oczw8b3xzPj4+MzItbykrdH1mdW5jdGlvbiBsKGUsdCxuLHIsaSxvLGEpe3ZhciBzPWUrKHQmcnxuJn5yKStpK2E7cmV0dXJuKHM8PG98cz4+PjMyLW8pK3R9ZnVuY3Rpb24gZihlLHQsbixyLGksbyxhKXt2YXIgcz1lKyh0Xm5ecikraSthO3JldHVybihzPDxvfHM+Pj4zMi1vKSt0fWZ1bmN0aW9uIGQoZSx0LG4scixpLG8sYSl7dmFyIHM9ZSsobl4odHx+cikpK2krYTtyZXR1cm4oczw8b3xzPj4+MzItbykrdH1uLk1ENT1vLl9jcmVhdGVIZWxwZXIodSksbi5IbWFjTUQ1PW8uX2NyZWF0ZUhtYWNIZWxwZXIodSl9KE1hdGgpLGUuTUQ1fSkpfSwiN2JiYyI6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oImRmMmYiKSxuKCI1OTgwIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZSxuPXQubGliLHI9bi5CYXNlLGk9bi5Xb3JkQXJyYXksbz10LmFsZ28sYT1vLlNIQTEscz1vLkhNQUMsdT1vLlBCS0RGMj1yLmV4dGVuZCh7Y2ZnOnIuZXh0ZW5kKHtrZXlTaXplOjQsaGFzaGVyOmEsaXRlcmF0aW9uczoxfSksaW5pdDpmdW5jdGlvbihlKXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQoZSl9LGNvbXB1dGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNmZyxyPXMuY3JlYXRlKG4uaGFzaGVyLGUpLG89aS5jcmVhdGUoKSxhPWkuY3JlYXRlKFsxXSksdT1vLndvcmRzLGM9YS53b3JkcyxsPW4ua2V5U2l6ZSxmPW4uaXRlcmF0aW9uczt3aGlsZSh1Lmxlbmd0aDxsKXt2YXIgZD1yLnVwZGF0ZSh0KS5maW5hbGl6ZShhKTtyLnJlc2V0KCk7Zm9yKHZhciBwPWQud29yZHMsaD1wLmxlbmd0aCx2PWQsbT0xO208ZjttKyspe3Y9ci5maW5hbGl6ZSh2KSxyLnJlc2V0KCk7Zm9yKHZhciB5PXYud29yZHMsZz0wO2c8aDtnKyspcFtnXV49eVtnXX1vLmNvbmNhdChkKSxjWzBdKyt9cmV0dXJuIG8uc2lnQnl0ZXM9NCpsLG99fSk7dC5QQktERjI9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB1LmNyZWF0ZShuKS5jb21wdXRlKGUsdCl9fSgpLGUuUEJLREYyfSkpfSwiODFiZiI6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjM4YmEiKSl9KSgwLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tb2RlLkVDQj1mdW5jdGlvbigpe3ZhciB0PWUubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtyZXR1cm4gdC5FbmNyeXB0b3I9dC5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihlLHQpe3RoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2soZSx0KX19KSx0LkRlY3J5cHRvcj10LmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKGUsdCl7dGhpcy5fY2lwaGVyLmRlY3J5cHRCbG9jayhlLHQpfX0pLHR9KCksZS5tb2RlLkVDQn0pKX0sODcwNzpmdW5jdGlvbihlLHQsbil7dmFyIHI9bigiYjYzOSIpLGk9ci5CdWZmZXI7ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgbiBpbiBlKXRbbl09ZVtuXX1mdW5jdGlvbiBhKGUsdCxuKXtyZXR1cm4gaShlLHQsbil9aS5mcm9tJiZpLmFsbG9jJiZpLmFsbG9jVW5zYWZlJiZpLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9cjoobyhyLHQpLHQuQnVmZmVyPWEpLG8oaSxhKSxhLmZyb209ZnVuY3Rpb24oZSx0LG4pe2lmKCJudW1iZXIiPT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gaShlLHQsbil9LGEuYWxsb2M9ZnVuY3Rpb24oZSx0LG4pe2lmKCJudW1iZXIiIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciByPWkoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PT10eXBlb2Ygbj9yLmZpbGwodCxuKTpyLmZpbGwodCk6ci5maWxsKDApLHJ9LGEuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGkoZSl9LGEuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe2lmKCJudW1iZXIiIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByLlNsb3dCdWZmZXIoZSl9fSwiOGNlZiI6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjM4YmEiKSl9KSgwLChmdW5jdGlvbihlKXtyZXR1cm4gZS5wYWQuSXNvOTc5NzE9e3BhZDpmdW5jdGlvbih0LG4pe3QuY29uY2F0KGUubGliLldvcmRBcnJheS5jcmVhdGUoWzIxNDc0ODM2NDhdLDEpKSxlLnBhZC5aZXJvUGFkZGluZy5wYWQodCxuKX0sdW5wYWQ6ZnVuY3Rpb24odCl7ZS5wYWQuWmVyb1BhZGRpbmcudW5wYWQodCksdC5zaWdCeXRlcy0tfX0sZS5wYWQuSXNvOTc5NzF9KSl9LCI4ZjE0IjpmdW5jdGlvbihlLHQsbil7dmFyIHI7KGZ1bmN0aW9uKCl7dmFyIGk9e3k6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLPh8+Bz4zOvc6/z4IiOiLPh8+Bz4zOvc65zrEifSxtbzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Is68zq7Ovc6xz4IiOiLOvM6uzr3Otc+CIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Is61zrLOtM6/zrzOrM60zrEiOiLOtc6yzrTOv868zqzOtM61z4IifSxkOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8izrzOrc+BzrEiOiLOvM6tz4HOtc+CIn0saDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Is+Oz4HOsSI6Is+Oz4HOtc+CIn0sbTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Is67zrXPgM+Ez4wiOiLOu861z4DPhM6sIn0sczpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Is60zrXPhc+EzrXPgc+MzrvOtc+Az4TOvyI6Is60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsSJ9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8iz4fOuc67zrnOv8+Dz4TPjCDPhM6/z4UgzrTOtc+Fz4TOtc+Bzr/Ou86tz4DPhM6/z4UiOiLPh865zrvOuc6/z4PPhM6sIM+Ezr/PhSDOtM61z4XPhM61z4HOv867zq3PgM+Ezr/PhSJ9LGRlY2ltYWw6IiwifSxvPVsi27AiLCLZoSIsItmiIiwi2aMiLCLZpCIsItmlIiwi2aYiLCLZpyIsItmoIiwi2akiXSxhPXthZjp7eToiamFhciIsbW86ZnVuY3Rpb24oZSl7cmV0dXJuIm1hYW5kIisoMT09PWU/IiI6ImUiKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IndlZWsiOiJ3ZWtlIn0sZDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/ImRhZyI6ImRhZSJ9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJ1dXIiOiJ1cmUifSxtOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8ibWludXV0IjoibWludXRlIn0sczpmdW5jdGlvbihlKXtyZXR1cm4ic2Vrb25kZSIrKDE9PT1lPyIiOiJzIil9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiJtaWxsaXNla29uZGUiKygxPT09ZT8iIjoicyIpfSxkZWNpbWFsOiIsIn0sYXI6e3k6ZnVuY3Rpb24oZSl7cmV0dXJuWyLYs9mG2KkiLCLYs9mG2KrYp9mGIiwi2LPZhtmI2KfYqiJdW3AoZSldfSxtbzpmdW5jdGlvbihlKXtyZXR1cm5bIti02YfYsSIsIti02YfYsdin2YYiLCLYo9i02YfYsSJdW3AoZSldfSx3OmZ1bmN0aW9uKGUpe3JldHVyblsi2KPYs9io2YjYuSIsItij2LPYqNmI2LnZitmGIiwi2KPYs9in2KjZiti5Il1bcChlKV19LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuWyLZitmI2YUiLCLZitmI2YXZitmGIiwi2KPZitin2YUiXVtwKGUpXX0saDpmdW5jdGlvbihlKXtyZXR1cm5bItiz2KfYudipIiwi2LPYp9i52KrZitmGIiwi2LPYp9i52KfYqiJdW3AoZSldfSxtOmZ1bmN0aW9uKGUpe3JldHVyblsi2K/ZgtmK2YLYqSIsItiv2YLZitmC2KrYp9mGIiwi2K/Zgtin2KbZgiJdW3AoZSldfSxzOmZ1bmN0aW9uKGUpe3JldHVyblsi2KvYp9mG2YrYqSIsItir2KfZhtmK2KrYp9mGIiwi2KvZiNin2YbZiiJdW3AoZSldfSxtczpmdW5jdGlvbihlKXtyZXR1cm5bItis2LLYoSDZhdmGINin2YTYq9in2YbZitipIiwi2KzYstii2YYg2YXZhiDYp9mE2KvYp9mG2YrYqSIsItij2KzYstin2KEg2YXZhiDYp9mE2KvYp9mG2YrYqSJdW3AoZSldfSxkZWNpbWFsOiIsIixkZWxpbWl0ZXI6IiDZiCAiLF9mb3JtYXRDb3VudDpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1kKG8seyIuIjp0fSkscj1lLnRvU3RyaW5nKCkuc3BsaXQoIiIpLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGE9cltpXTtiKG4sYSkmJihyW2ldPW5bYV0pfXJldHVybiByLmpvaW4oIiIpfX0sYmc6e3k6ZnVuY3Rpb24oZSl7cmV0dXJuWyLQs9C+0LTQuNC90LgiLCLQs9C+0LTQuNC90LAiLCLQs9C+0LTQuNC90LgiXVt2KGUpXX0sbW86ZnVuY3Rpb24oZSl7cmV0dXJuWyLQvNC10YHQtdGG0LAiLCLQvNC10YHQtdGGIiwi0LzQtdGB0LXRhtCwIl1bdihlKV19LHc6ZnVuY3Rpb24oZSl7cmV0dXJuWyLRgdC10LTQvNC40YbQuCIsItGB0LXQtNC80LjRhtCwIiwi0YHQtdC00LzQuNGG0LgiXVt2KGUpXX0sZDpmdW5jdGlvbihlKXtyZXR1cm5bItC00L3QuCIsItC00LXQvSIsItC00L3QuCJdW3YoZSldfSxoOmZ1bmN0aW9uKGUpe3JldHVyblsi0YfQsNGB0LAiLCLRh9Cw0YEiLCLRh9Cw0YHQsCJdW3YoZSldfSxtOmZ1bmN0aW9uKGUpe3JldHVyblsi0LzQuNC90YPRgtC4Iiwi0LzQuNC90YPRgtCwIiwi0LzQuNC90YPRgtC4Il1bdihlKV19LHM6ZnVuY3Rpb24oZSl7cmV0dXJuWyLRgdC10LrRg9C90LTQuCIsItGB0LXQutGD0L3QtNCwIiwi0YHQtdC60YPQvdC00LgiXVt2KGUpXX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuWyLQvNC40LvQuNGB0LXQutGD0L3QtNC4Iiwi0LzQuNC70LjRgdC10LrRg9C90LTQsCIsItC80LjQu9C40YHQtdC60YPQvdC00LgiXVt2KGUpXX0sZGVjaW1hbDoiLCJ9LGJuOnt5OiLgpqzgppvgprAiLG1vOiLgpq7gpr7gprgiLHc6IuCmuOCmquCnjeCmpOCmvuCmuSIsZDoi4Kam4Ka/4KaoIixoOiLgppjgpqjgp43gpp/gpr4iLG06IuCmruCmv+CmqOCmv+CmnyIsczoi4Ka44KeH4KaV4KeH4Kao4KeN4KahIixtczoi4Kau4Ka/4Kay4Ka/4Ka44KeH4KaV4KeH4Kao4KeN4KahIn0sY2E6e3k6ZnVuY3Rpb24oZSl7cmV0dXJuImFueSIrKDE9PT1lPyIiOiJzIil9LG1vOmZ1bmN0aW9uKGUpe3JldHVybiJtZXMiKygxPT09ZT8iIjoib3MiKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4ic2V0bWFuIisoMT09PWU/ImEiOiJlcyIpfSxkOmZ1bmN0aW9uKGUpe3JldHVybiJkaSIrKDE9PT1lPyJhIjoiZXMiKX0saDpmdW5jdGlvbihlKXtyZXR1cm4iaG9yIisoMT09PWU/ImEiOiJlcyIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJtaW51dCIrKDE9PT1lPyIiOiJzIil9LHM6ZnVuY3Rpb24oZSl7cmV0dXJuInNlZ29uIisoMT09PWU/IiI6InMiKX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIm1pbGlzZWdvbiIrKDE9PT1lPyIiOiJzIil9LGRlY2ltYWw6IiwifSxjczp7eTpmdW5jdGlvbihlKXtyZXR1cm5bInJvayIsInJva3UiLCJyb2t5IiwibGV0Il1bbShlKV19LG1vOmZ1bmN0aW9uKGUpe3JldHVyblsibcSbc8OtYyIsIm3Em3PDrWNlIiwibcSbc8OtY2UiLCJtxJtzw61jxa8iXVttKGUpXX0sdzpmdW5jdGlvbihlKXtyZXR1cm5bInTDvWRlbiIsInTDvWRuZSIsInTDvWRueSIsInTDvWRuxa8iXVttKGUpXX0sZDpmdW5jdGlvbihlKXtyZXR1cm5bImRlbiIsImRuZSIsImRueSIsImRuw60iXVttKGUpXX0saDpmdW5jdGlvbihlKXtyZXR1cm5bImhvZGluYSIsImhvZGlueSIsImhvZGlueSIsImhvZGluIl1bbShlKV19LG06ZnVuY3Rpb24oZSl7cmV0dXJuWyJtaW51dGEiLCJtaW51dHkiLCJtaW51dHkiLCJtaW51dCJdW20oZSldfSxzOmZ1bmN0aW9uKGUpe3JldHVyblsic2VrdW5kYSIsInNla3VuZHkiLCJzZWt1bmR5Iiwic2VrdW5kIl1bbShlKV19LG1zOmZ1bmN0aW9uKGUpe3JldHVyblsibWlsaXNla3VuZGEiLCJtaWxpc2VrdW5keSIsIm1pbGlzZWt1bmR5IiwibWlsaXNla3VuZCJdW20oZSldfSxkZWNpbWFsOiIsIn0sY3k6e3k6ImZsd3lkZHluIixtbzoibWlzIix3OiJ3eXRobm9zIixkOiJkaXdybm9kIixoOiJhd3IiLG06Im11bnVkIixzOiJlaWxpYWQiLG1zOiJtaWxpZWlsaWFkIn0sZGE6e3k6IsOlciIsbW86ZnVuY3Rpb24oZSl7cmV0dXJuIm3DpW5lZCIrKDE9PT1lPyIiOiJlciIpfSx3OmZ1bmN0aW9uKGUpe3JldHVybiJ1Z2UiKygxPT09ZT8iIjoiciIpfSxkOmZ1bmN0aW9uKGUpe3JldHVybiJkYWciKygxPT09ZT8iIjoiZSIpfSxoOmZ1bmN0aW9uKGUpe3JldHVybiJ0aW1lIisoMT09PWU/IiI6InIiKX0sbTpmdW5jdGlvbihlKXtyZXR1cm4ibWludXQiKygxPT09ZT8iIjoidGVyIil9LHM6ZnVuY3Rpb24oZSl7cmV0dXJuInNla3VuZCIrKDE9PT1lPyIiOiJlciIpfSxtczpmdW5jdGlvbihlKXtyZXR1cm4ibWlsbGlzZWt1bmQiKygxPT09ZT8iIjoiZXIiKX0sZGVjaW1hbDoiLCJ9LGRlOnt5OmZ1bmN0aW9uKGUpe3JldHVybiJKYWhyIisoMT09PWU/IiI6ImUiKX0sbW86ZnVuY3Rpb24oZSl7cmV0dXJuIk1vbmF0IisoMT09PWU/IiI6ImUiKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4iV29jaGUiKygxPT09ZT8iIjoibiIpfSxkOmZ1bmN0aW9uKGUpe3JldHVybiJUYWciKygxPT09ZT8iIjoiZSIpfSxoOmZ1bmN0aW9uKGUpe3JldHVybiJTdHVuZGUiKygxPT09ZT8iIjoibiIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJNaW51dGUiKygxPT09ZT8iIjoibiIpfSxzOmZ1bmN0aW9uKGUpe3JldHVybiJTZWt1bmRlIisoMT09PWU/IiI6Im4iKX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIk1pbGxpc2VrdW5kZSIrKDE9PT1lPyIiOiJuIil9LGRlY2ltYWw6IiwifSxlbDppLGVuOnt5OmZ1bmN0aW9uKGUpe3JldHVybiJ5ZWFyIisoMT09PWU/IiI6InMiKX0sbW86ZnVuY3Rpb24oZSl7cmV0dXJuIm1vbnRoIisoMT09PWU/IiI6InMiKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4id2VlayIrKDE9PT1lPyIiOiJzIil9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuImRheSIrKDE9PT1lPyIiOiJzIil9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuImhvdXIiKygxPT09ZT8iIjoicyIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJtaW51dGUiKygxPT09ZT8iIjoicyIpfSxzOmZ1bmN0aW9uKGUpe3JldHVybiJzZWNvbmQiKygxPT09ZT8iIjoicyIpfSxtczpmdW5jdGlvbihlKXtyZXR1cm4ibWlsbGlzZWNvbmQiKygxPT09ZT8iIjoicyIpfSxkZWNpbWFsOiIuIn0sZW86e3k6ZnVuY3Rpb24oZSl7cmV0dXJuImphcm8iKygxPT09ZT8iIjoiaiIpfSxtbzpmdW5jdGlvbihlKXtyZXR1cm4ibW9uYXRvIisoMT09PWU/IiI6ImoiKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4ic2VtYWpubyIrKDE9PT1lPyIiOiJqIil9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuInRhZ28iKygxPT09ZT8iIjoiaiIpfSxoOmZ1bmN0aW9uKGUpe3JldHVybiJob3JvIisoMT09PWU/IiI6ImoiKX0sbTpmdW5jdGlvbihlKXtyZXR1cm4ibWludXRvIisoMT09PWU/IiI6ImoiKX0sczpmdW5jdGlvbihlKXtyZXR1cm4ic2VrdW5kbyIrKDE9PT1lPyIiOiJqIil9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiJtaWxpc2VrdW5kbyIrKDE9PT1lPyIiOiJqIil9LGRlY2ltYWw6IiwifSxlczp7eTpmdW5jdGlvbihlKXtyZXR1cm4iYcOxbyIrKDE9PT1lPyIiOiJzIil9LG1vOmZ1bmN0aW9uKGUpe3JldHVybiJtZXMiKygxPT09ZT8iIjoiZXMiKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4ic2VtYW5hIisoMT09PWU/IiI6InMiKX0sZDpmdW5jdGlvbihlKXtyZXR1cm4iZMOtYSIrKDE9PT1lPyIiOiJzIil9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuImhvcmEiKygxPT09ZT8iIjoicyIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJtaW51dG8iKygxPT09ZT8iIjoicyIpfSxzOmZ1bmN0aW9uKGUpe3JldHVybiJzZWd1bmRvIisoMT09PWU/IiI6InMiKX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIm1pbGlzZWd1bmRvIisoMT09PWU/IiI6InMiKX0sZGVjaW1hbDoiLCJ9LGV0Ont5OmZ1bmN0aW9uKGUpe3JldHVybiJhYXN0YSIrKDE9PT1lPyIiOiJ0Iil9LG1vOmZ1bmN0aW9uKGUpe3JldHVybiJrdXUiKygxPT09ZT8iIjoiZCIpfSx3OmZ1bmN0aW9uKGUpe3JldHVybiJuw6RkYWwiKygxPT09ZT8iIjoiYXQiKX0sZDpmdW5jdGlvbihlKXtyZXR1cm4icMOkZXYiKygxPT09ZT8iIjoiYSIpfSxoOmZ1bmN0aW9uKGUpe3JldHVybiJ0dW5kIisoMT09PWU/IiI6ImkiKX0sbTpmdW5jdGlvbihlKXtyZXR1cm4ibWludXQiKygxPT09ZT8iIjoiaXQiKX0sczpmdW5jdGlvbihlKXtyZXR1cm4ic2VrdW5kIisoMT09PWU/IiI6Iml0Iil9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiJtaWxsaXNla3VuZCIrKDE9PT1lPyIiOiJpdCIpfSxkZWNpbWFsOiIsIn0sZXU6e3k6InVydGUiLG1vOiJoaWxhYmV0ZSIsdzoiYXN0ZSIsZDoiZWd1biIsaDoib3JkdSIsbToibWludXR1IixzOiJzZWd1bmRvIixtczoibWlsaXNlZ3VuZG8iLGRlY2ltYWw6IiwifSxmYTp7eToi2LPYp9mEIixtbzoi2YXYp9mHIix3OiLZh9mB2KrZhyIsZDoi2LHZiNiyIixoOiLYs9in2LnYqiIsbToi2K/ZgtuM2YLZhyIsczoi2KvYp9mG24zZhyIsbXM6ItmF24zZhNuMINir2KfZhtuM2YciLGRlY2ltYWw6Ii4ifSxmaTp7eTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/InZ1b3NpIjoidnVvdHRhIn0sbW86ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJrdXVrYXVzaSI6Imt1dWthdXR0YSJ9LHc6ZnVuY3Rpb24oZSl7cmV0dXJuInZpaWtrbyIrKDE9PT1lPyIiOiJhIil9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuInDDpGl2w6QiKygxPT09ZT8iIjoiw6QiKX0saDpmdW5jdGlvbihlKXtyZXR1cm4idHVudGkiKygxPT09ZT8iIjoiYSIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJtaW51dXR0aSIrKDE9PT1lPyIiOiJhIil9LHM6ZnVuY3Rpb24oZSl7cmV0dXJuInNla3VudGkiKygxPT09ZT8iIjoiYSIpfSxtczpmdW5jdGlvbihlKXtyZXR1cm4ibWlsbGlzZWt1bnRpIisoMT09PWU/IiI6ImEiKX0sZGVjaW1hbDoiLCJ9LGZvOnt5OiLDoXIiLG1vOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8ibcOhbmHDsHVyIjoibcOhbmHDsGlyIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/InZpa2EiOiJ2aWt1ciJ9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJkYWd1ciI6ImRhZ2FyIn0saDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/InTDrW1pIjoidMOtbWFyIn0sbTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Im1pbnV0dHVyIjoibWludXR0aXIifSxzOiJzZWt1bmQiLG1zOiJtaWxsaXNla3VuZCIsZGVjaW1hbDoiLCJ9LGZyOnt5OmZ1bmN0aW9uKGUpe3JldHVybiJhbiIrKGU+PTI/InMiOiIiKX0sbW86Im1vaXMiLHc6ZnVuY3Rpb24oZSl7cmV0dXJuInNlbWFpbmUiKyhlPj0yPyJzIjoiIil9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuImpvdXIiKyhlPj0yPyJzIjoiIil9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuImhldXJlIisoZT49Mj8icyI6IiIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJtaW51dGUiKyhlPj0yPyJzIjoiIil9LHM6ZnVuY3Rpb24oZSl7cmV0dXJuInNlY29uZGUiKyhlPj0yPyJzIjoiIil9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiJtaWxsaXNlY29uZGUiKyhlPj0yPyJzIjoiIil9LGRlY2ltYWw6IiwifSxncjppLGhlOnt5OmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i16nXoNeUIjoi16nXoNeZ150ifSxtbzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IteX15XXk9epIjoi15fXldeT16nXmdedIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Itep15HXldeiIjoi16nXkdeV16LXldeqIn0sZDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IteZ15XXnSI6IteZ157XmdedIn0saDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Itep16LXlCI6Itep16LXldeqIn0sbTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IteT16fXlCI6IteT16fXldeqIn0sczpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Itep16DXmdeUIjoi16nXoNeZ15XXqiJ9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i157Xmdec15nXqdeg15nXmdeUIjoi157Xmdec15nXqdeg15nXldeqIn0sZGVjaW1hbDoiLiJ9LGhyOnt5OmZ1bmN0aW9uKGUpe3JldHVybiBlJTEwPT09Mnx8ZSUxMD09PTN8fGUlMTA9PT00PyJnb2RpbmUiOiJnb2RpbmEifSxtbzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Im1qZXNlYyI6Mj09PWV8fDM9PT1lfHw0PT09ZT8ibWplc2VjYSI6Im1qZXNlY2kifSx3OmZ1bmN0aW9uKGUpe3JldHVybiBlJTEwPT09MSYmMTEhPT1lPyJ0amVkYW4iOiJ0amVkbmEifSxkOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8iZGFuIjoiZGFuYSJ9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJzYXQiOjI9PT1lfHwzPT09ZXx8ND09PWU/InNhdGEiOiJzYXRpIn0sbTpmdW5jdGlvbihlKXt2YXIgdD1lJTEwO3JldHVybiAyIT09dCYmMyE9PXQmJjQhPT10fHwhKGU8MTB8fGU+MTQpPyJtaW51dGEiOiJtaW51dGUifSxzOmZ1bmN0aW9uKGUpe3ZhciB0PWUlMTA7cmV0dXJuIDU9PT10fHxNYXRoLmZsb29yKGUpPT09ZSYmZT49MTAmJmU8PTE5PyJzZWt1bmRpIjoxPT09dD8ic2VrdW5kYSI6Mj09PXR8fDM9PT10fHw0PT09dD8ic2VrdW5kZSI6InNla3VuZGkifSxtczpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Im1pbGlzZWt1bmRhIjplJTEwPT09Mnx8ZSUxMD09PTN8fGUlMTA9PT00PyJtaWxpc2VrdW5kZSI6Im1pbGlzZWt1bmRpIn0sZGVjaW1hbDoiLCJ9LGhpOnt5OiLgpLjgpL7gpLIiLG1vOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i4KSu4KS54KWA4KSo4KS+Ijoi4KSu4KS54KWA4KSo4KWHIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCkueClnuCljeCkpOCkviI6IuCkueCkq+CljeCkpOClhyJ9LGQ6IuCkpuCkv+CkqCIsaDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCkmOCkguCkn+CkviI6IuCkmOCkguCkn+ClhyJ9LG06IuCkruCkv+CkqOCknyIsczoi4KS44KWH4KSV4KSC4KShIixtczoi4KSu4KS/4KSy4KWA4KS44KWH4KSV4KSC4KShIixkZWNpbWFsOiIuIn0saHU6e3k6IsOpdiIsbW86ImjDs25hcCIsdzoiaMOpdCIsZDoibmFwIixoOiLDs3JhIixtOiJwZXJjIixzOiJtw6Fzb2RwZXJjIixtczoiZXpyZWRtw6Fzb2RwZXJjIixkZWNpbWFsOiIsIn0saWQ6e3k6InRhaHVuIixtbzoiYnVsYW4iLHc6Im1pbmdndSIsZDoiaGFyaSIsaDoiamFtIixtOiJtZW5pdCIsczoiZGV0aWsiLG1zOiJtaWxpZGV0aWsiLGRlY2ltYWw6Ii4ifSxpczp7eToiw6FyIixtbzpmdW5jdGlvbihlKXtyZXR1cm4ibcOhbnXDsCIrKDE9PT1lPyJ1ciI6ImlyIil9LHc6ZnVuY3Rpb24oZSl7cmV0dXJuInZpayIrKDE9PT1lPyJhIjoidXIiKX0sZDpmdW5jdGlvbihlKXtyZXR1cm4iZGFnIisoMT09PWU/InVyIjoiYXIiKX0saDpmdW5jdGlvbihlKXtyZXR1cm4ia2x1a2t1dMOtbSIrKDE9PT1lPyJpIjoiYXIiKX0sbTpmdW5jdGlvbihlKXtyZXR1cm4ibcOtbsO6dCIrKDE9PT1lPyJhIjoidXIiKX0sczpmdW5jdGlvbihlKXtyZXR1cm4ic2Vrw7puZCIrKDE9PT1lPyJhIjoidXIiKX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIm1pbGxpc2Vrw7puZCIrKDE9PT1lPyJhIjoidXIiKX0sZGVjaW1hbDoiLiJ9LGl0Ont5OmZ1bmN0aW9uKGUpe3JldHVybiJhbm4iKygxPT09ZT8ibyI6ImkiKX0sbW86ZnVuY3Rpb24oZSl7cmV0dXJuIm1lcyIrKDE9PT1lPyJlIjoiaSIpfSx3OmZ1bmN0aW9uKGUpe3JldHVybiJzZXR0aW1hbiIrKDE9PT1lPyJhIjoiZSIpfSxkOmZ1bmN0aW9uKGUpe3JldHVybiJnaW9ybiIrKDE9PT1lPyJvIjoiaSIpfSxoOmZ1bmN0aW9uKGUpe3JldHVybiJvciIrKDE9PT1lPyJhIjoiZSIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJtaW51dCIrKDE9PT1lPyJvIjoiaSIpfSxzOmZ1bmN0aW9uKGUpe3JldHVybiJzZWNvbmQiKygxPT09ZT8ibyI6ImkiKX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIm1pbGxpc2Vjb25kIisoMT09PWU/Im8iOiJpIil9LGRlY2ltYWw6IiwifSxqYTp7eToi5bm0Iixtbzoi5pyIIix3OiLpgLEiLGQ6IuaXpSIsaDoi5pmC6ZaTIixtOiLliIYiLHM6IuenkiIsbXM6IuODn+ODquenkiIsZGVjaW1hbDoiLiJ9LGttOnt5OiLhnobhn5LhnpPhnrbhn4YiLG1vOiLhnoHhn4IiLHc6IuGen+GelOGfkuGej+GetuGeoOGfjSIsZDoi4Z6Q4Z+S4Z6E4Z+DIixoOiLhnpjhn4nhn4ThnoQiLG06IuGek+GetuGekeGeuCIsczoi4Z6c4Z634Z6T4Z624Z6R4Z64Iixtczoi4Z6Y4Z634Z6b4Z+S4Z6b4Z644Z6c4Z634Z6T4Z624Z6R4Z64In0sa246e3k6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLgsrXgsrDgs43gsrciOiLgsrXgsrDgs43gsrfgspfgsrPgs4EifSxtbzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCypOCyv+CyguCyl+Cys+CzgSI6IuCypOCyv+CyguCyl+Cys+CzgeCyl+Cys+CzgSJ9LHc6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLgsrXgsr7gsrAiOiLgsrXgsr7gsrDgspfgsrPgs4EifSxkOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i4LKm4LK/4LKoIjoi4LKm4LK/4LKo4LKX4LKz4LOBIn0saDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCyl+CyguCyn+CzhiI6IuCyl+CyguCyn+CzhuCyl+Cys+CzgSJ9LG06ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLgsqjgsr/gsq7gsr/gsrciOiLgsqjgsr/gsq7gsr/gsrfgspfgsrPgs4EifSxzOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i4LK44LOG4LKV4LOG4LKC4LKh4LONIjoi4LK44LOG4LKV4LOG4LKC4LKh4LOB4LKX4LKz4LOBIn0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLgsq7gsr/gsrLgsr/gsrjgs4bgspXgs4bgsoLgsqHgs40iOiLgsq7gsr/gsrLgsr/gsrjgs4bgspXgs4bgsoLgsqHgs4HgspfgsrPgs4EifX0sa286e3k6IuuFhCIsbW86IuqwnOyblCIsdzoi7KO87J28IixkOiLsnbwiLGg6IuyLnOqwhCIsbToi67aEIixzOiLstIgiLG1zOiLrsIDrpqwg7LSIIixkZWNpbWFsOiIuIn0sa3U6e3k6InNhbCIsbW86Im1laCIsdzoiaGVmdGUiLGQ6InJvaiIsaDoic2VldCIsbToiZGVxZSIsczoic2FuaXllIixtczoibcOubMOuw6dpcmsiLGRlY2ltYWw6IiwifSxsbzp7eToi4Lqb4Lq1Iixtbzoi4LuA4LqU4Lq34Lqt4LqZIix3OiLguq3gurLgupfgurTgupQiLGQ6IuC6oeC6t+C7iSIsaDoi4LqK4Lq74LuI4Lqn4LuC4Lqh4LqHIixtOiLgupngurLgupfgurUiLHM6IuC6p+C6tOC6meC6suC6l+C6tSIsbXM6IuC6oeC6tOC6meC6peC6tOC6p+C6tOC6meC6suC6l+C6tSIsZGVjaW1hbDoiLCJ9LGx0Ont5OmZ1bmN0aW9uKGUpe3JldHVybiBlJTEwPT09MHx8ZSUxMDA+PTEwJiZlJTEwMDw9MjA/Im1ldMWzIjoibWV0YWkifSxtbzpmdW5jdGlvbihlKXtyZXR1cm5bIm3El251byIsIm3El25lc2lhaSIsIm3El25lc2nFsyJdW3koZSldfSx3OmZ1bmN0aW9uKGUpe3JldHVyblsic2F2YWl0xJciLCJzYXZhaXTEl3MiLCJzYXZhacSNacWzIl1beShlKV19LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuWyJkaWVuYSIsImRpZW5vcyIsImRpZW7FsyJdW3koZSldfSxoOmZ1bmN0aW9uKGUpe3JldHVyblsidmFsYW5kYSIsInZhbGFuZG9zIiwidmFsYW5kxbMiXVt5KGUpXX0sbTpmdW5jdGlvbihlKXtyZXR1cm5bIm1pbnV0xJciLCJtaW51dMSXcyIsIm1pbnXEjWnFsyJdW3koZSldfSxzOmZ1bmN0aW9uKGUpe3JldHVyblsic2VrdW5kxJciLCJzZWt1bmTEl3MiLCJzZWt1bmTFvmnFsyJdW3koZSldfSxtczpmdW5jdGlvbihlKXtyZXR1cm5bIm1pbGlzZWt1bmTElyIsIm1pbGlzZWt1bmTEl3MiLCJtaWxpc2VrdW5kxb5pxbMiXVt5KGUpXX0sZGVjaW1hbDoiLCJ9LGx2Ont5OmZ1bmN0aW9uKGUpe3JldHVybiBnKGUpPyJnYWRzIjoiZ2FkaSJ9LG1vOmZ1bmN0aW9uKGUpe3JldHVybiBnKGUpPyJtxJNuZXNpcyI6Im3Ek25lxaFpIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gZyhlKT8ibmVkxJPEvGEiOiJuZWTEk8S8YXMifSxkOmZ1bmN0aW9uKGUpe3JldHVybiBnKGUpPyJkaWVuYSI6ImRpZW5hcyJ9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuIGcoZSk/InN0dW5kYSI6InN0dW5kYXMifSxtOmZ1bmN0aW9uKGUpe3JldHVybiBnKGUpPyJtaW7Fq3RlIjoibWluxat0ZXMifSxzOmZ1bmN0aW9uKGUpe3JldHVybiBnKGUpPyJzZWt1bmRlIjoic2VrdW5kZXMifSxtczpmdW5jdGlvbihlKXtyZXR1cm4gZyhlKT8ibWlsaXNla3VuZGUiOiJtaWxpc2VrdW5kZXMifSxkZWNpbWFsOiIsIn0sbWs6e3k6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLQs9C+0LTQuNC90LAiOiLQs9C+0LTQuNC90LgifSxtbzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/ItC80LXRgdC10YYiOiLQvNC10YHQtdGG0LgifSx3OmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i0L3QtdC00LXQu9CwIjoi0L3QtdC00LXQu9C4In0sZDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/ItC00LXQvSI6ItC00LXQvdCwIn0saDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/ItGH0LDRgSI6ItGH0LDRgdCwIn0sbTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/ItC80LjQvdGD0YLQsCI6ItC80LjQvdGD0YLQuCJ9LHM6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLRgdC10LrRg9C90LTQsCI6ItGB0LXQutGD0L3QtNC4In0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLQvNC40LvQuNGB0LXQutGD0L3QtNCwIjoi0LzQuNC70LjRgdC10LrRg9C90LTQuCJ9LGRlY2ltYWw6IiwifSxtcjp7eTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCkteCksOCljeCktyI6IuCkteCksOCljeCkt+ClhyJ9LG1vOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i4KSu4KS54KS/4KSo4KS+Ijoi4KSu4KS54KS/4KSo4KWHIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCkhuCkoOCkteCkoeCkviI6IuCkhuCkoOCkteCkoeClhyJ9LGQ6IuCkpuCkv+CkteCkuCIsaDoi4KSk4KS+4KS4IixtOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i4KSu4KS/4KSo4KS/4KSfIjoi4KSu4KS/4KSo4KS/4KSf4KWHIn0sczoi4KS44KWH4KSV4KSC4KSmIixtczoi4KSu4KS/4KSy4KS/4KS44KWH4KSV4KSC4KSmIn0sbXM6e3k6InRhaHVuIixtbzoiYnVsYW4iLHc6Im1pbmdndSIsZDoiaGFyaSIsaDoiamFtIixtOiJtaW5pdCIsczoic2FhdCIsbXM6Im1pbGlzYWF0IixkZWNpbWFsOiIuIn0sbmw6e3k6ImphYXIiLG1vOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8ibWFhbmQiOiJtYWFuZGVuIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IndlZWsiOiJ3ZWtlbiJ9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJkYWciOiJkYWdlbiJ9LGg6InV1ciIsbTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Im1pbnV1dCI6Im1pbnV0ZW4ifSxzOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8ic2Vjb25kZSI6InNlY29uZGVuIn0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJtaWxsaXNlY29uZGUiOiJtaWxsaXNlY29uZGVuIn0sZGVjaW1hbDoiLCJ9LG5vOnt5OiLDpXIiLG1vOmZ1bmN0aW9uKGUpe3JldHVybiJtw6VuZWQiKygxPT09ZT8iIjoiZXIiKX0sdzpmdW5jdGlvbihlKXtyZXR1cm4idWtlIisoMT09PWU/IiI6InIiKX0sZDpmdW5jdGlvbihlKXtyZXR1cm4iZGFnIisoMT09PWU/IiI6ImVyIil9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuInRpbWUiKygxPT09ZT8iIjoiciIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJtaW51dHQiKygxPT09ZT8iIjoiZXIiKX0sczpmdW5jdGlvbihlKXtyZXR1cm4ic2VrdW5kIisoMT09PWU/IiI6ImVyIil9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiJtaWxsaXNla3VuZCIrKDE9PT1lPyIiOiJlciIpfSxkZWNpbWFsOiIsIn0scGw6e3k6ZnVuY3Rpb24oZSl7cmV0dXJuWyJyb2siLCJyb2t1IiwibGF0YSIsImxhdCJdW2goZSldfSxtbzpmdW5jdGlvbihlKXtyZXR1cm5bIm1pZXNpxIVjIiwibWllc2nEhWNhIiwibWllc2nEhWNlIiwibWllc2nEmWN5Il1baChlKV19LHc6ZnVuY3Rpb24oZSl7cmV0dXJuWyJ0eWR6aWXFhCIsInR5Z29kbmlhIiwidHlnb2RuaWUiLCJ0eWdvZG5pIl1baChlKV19LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuWyJkemllxYQiLCJkbmlhIiwiZG5pIiwiZG5pIl1baChlKV19LGg6ZnVuY3Rpb24oZSl7cmV0dXJuWyJnb2R6aW5hIiwiZ29kemlueSIsImdvZHppbnkiLCJnb2R6aW4iXVtoKGUpXX0sbTpmdW5jdGlvbihlKXtyZXR1cm5bIm1pbnV0YSIsIm1pbnV0eSIsIm1pbnV0eSIsIm1pbnV0Il1baChlKV19LHM6ZnVuY3Rpb24oZSl7cmV0dXJuWyJzZWt1bmRhIiwic2VrdW5keSIsInNla3VuZHkiLCJzZWt1bmQiXVtoKGUpXX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuWyJtaWxpc2VrdW5kYSIsIm1pbGlzZWt1bmR5IiwibWlsaXNla3VuZHkiLCJtaWxpc2VrdW5kIl1baChlKV19LGRlY2ltYWw6IiwifSxwdDp7eTpmdW5jdGlvbihlKXtyZXR1cm4iYW5vIisoMT09PWU/IiI6InMiKX0sbW86ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJtw6pzIjoibWVzZXMifSx3OmZ1bmN0aW9uKGUpe3JldHVybiJzZW1hbmEiKygxPT09ZT8iIjoicyIpfSxkOmZ1bmN0aW9uKGUpe3JldHVybiJkaWEiKygxPT09ZT8iIjoicyIpfSxoOmZ1bmN0aW9uKGUpe3JldHVybiJob3JhIisoMT09PWU/IiI6InMiKX0sbTpmdW5jdGlvbihlKXtyZXR1cm4ibWludXRvIisoMT09PWU/IiI6InMiKX0sczpmdW5jdGlvbihlKXtyZXR1cm4ic2VndW5kbyIrKDE9PT1lPyIiOiJzIil9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiJtaWxpc3NlZ3VuZG8iKygxPT09ZT8iIjoicyIpfSxkZWNpbWFsOiIsIn0scm86e3k6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJhbiI6ImFuaSJ9LG1vOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8ibHVuxIMiOiJsdW5pIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/InPEg3B0xINtw6JuxIMiOiJzxINwdMSDbcOibmkifSxkOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8iemkiOiJ6aWxlIn0saDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Im9yxIMiOiJvcmUifSxtOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8ibWludXQiOiJtaW51dGUifSxzOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8ic2VjdW5kxIMiOiJzZWN1bmRlIn0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJtaWxpc2VjdW5kxIMiOiJtaWxpc2VjdW5kZSJ9LGRlY2ltYWw6IiwifSxydTp7eTpmdW5jdGlvbihlKXtyZXR1cm5bItC70LXRgiIsItCz0L7QtCIsItCz0L7QtNCwIl1bdihlKV19LG1vOmZ1bmN0aW9uKGUpe3JldHVyblsi0LzQtdGB0Y/RhtC10LIiLCLQvNC10YHRj9GGIiwi0LzQtdGB0Y/RhtCwIl1bdihlKV19LHc6ZnVuY3Rpb24oZSl7cmV0dXJuWyLQvdC10LTQtdC70YwiLCLQvdC10LTQtdC70Y8iLCLQvdC10LTQtdC70LgiXVt2KGUpXX0sZDpmdW5jdGlvbihlKXtyZXR1cm5bItC00L3QtdC5Iiwi0LTQtdC90YwiLCLQtNC90Y8iXVt2KGUpXX0saDpmdW5jdGlvbihlKXtyZXR1cm5bItGH0LDRgdC+0LIiLCLRh9Cw0YEiLCLRh9Cw0YHQsCJdW3YoZSldfSxtOmZ1bmN0aW9uKGUpe3JldHVyblsi0LzQuNC90YPRgiIsItC80LjQvdGD0YLQsCIsItC80LjQvdGD0YLRiyJdW3YoZSldfSxzOmZ1bmN0aW9uKGUpe3JldHVyblsi0YHQtdC60YPQvdC0Iiwi0YHQtdC60YPQvdC00LAiLCLRgdC10LrRg9C90LTRiyJdW3YoZSldfSxtczpmdW5jdGlvbihlKXtyZXR1cm5bItC80LjQu9C70LjRgdC10LrRg9C90LQiLCLQvNC40LvQu9C40YHQtdC60YPQvdC00LAiLCLQvNC40LvQu9C40YHQtdC60YPQvdC00YsiXVt2KGUpXX0sZGVjaW1hbDoiLCJ9LHNxOnt5OmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8idml0IjoidmpldCJ9LG1vOiJtdWFqIix3OiJqYXbDqyIsZDoiZGl0w6siLGg6Im9yw6siLG06ZnVuY3Rpb24oZSl7cmV0dXJuIm1pbnV0IisoMT09PWU/IsOrIjoiYSIpfSxzOmZ1bmN0aW9uKGUpe3JldHVybiJzZWtvbmQiKygxPT09ZT8iw6siOiJhIil9LG1zOmZ1bmN0aW9uKGUpe3JldHVybiJtaWxpc2Vrb25kIisoMT09PWU/IsOrIjoiYSIpfSxkZWNpbWFsOiIsIn0sc3I6e3k6ZnVuY3Rpb24oZSl7cmV0dXJuWyLQs9C+0LTQuNC90LgiLCLQs9C+0LTQuNC90LAiLCLQs9C+0LTQuNC90LUiXVt2KGUpXX0sbW86ZnVuY3Rpb24oZSl7cmV0dXJuWyLQvNC10YHQtdGG0LgiLCLQvNC10YHQtdGGIiwi0LzQtdGB0LXRhtCwIl1bdihlKV19LHc6ZnVuY3Rpb24oZSl7cmV0dXJuWyLQvdC10LTQtdGZ0LgiLCLQvdC10LTQtdGZ0LAiLCLQvdC10LTQtdGZ0LUiXVt2KGUpXX0sZDpmdW5jdGlvbihlKXtyZXR1cm5bItC00LDQvdC4Iiwi0LTQsNC9Iiwi0LTQsNC90LAiXVt2KGUpXX0saDpmdW5jdGlvbihlKXtyZXR1cm5bItGB0LDRgtC4Iiwi0YHQsNGCIiwi0YHQsNGC0LAiXVt2KGUpXX0sbTpmdW5jdGlvbihlKXtyZXR1cm5bItC80LjQvdGD0YLQsCIsItC80LjQvdGD0YIiLCLQvNC40L3Rg9GC0LAiXVt2KGUpXX0sczpmdW5jdGlvbihlKXtyZXR1cm5bItGB0LXQutGD0L3QtNC4Iiwi0YHQtdC60YPQvdC00LAiLCLRgdC10LrRg9C90LTQtSJdW3YoZSldfSxtczpmdW5jdGlvbihlKXtyZXR1cm5bItC80LjQu9C40YHQtdC60YPQvdC00LgiLCLQvNC40LvQuNGB0LXQutGD0L3QtNCwIiwi0LzQuNC70LjRgdC10LrRg9C90LTQtSJdW3YoZSldfSxkZWNpbWFsOiIsIn0sdGE6e3k6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLgrrXgrrDgr4Hgrp/grq7gr40iOiLgrobgrqPgr43grp/gr4HgrpXgrrPgr40ifSxtbzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCuruCuvuCupOCuruCvjSI6IuCuruCuvuCupOCumeCvjeCuleCus+CvjSJ9LHc6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLgrrXgrr7grrDgrq7gr40iOiLgrrXgrr7grrDgrpngr43grpXgrrPgr40ifSxkOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i4K6o4K6+4K6z4K+NIjoi4K6o4K6+4K6f4K+N4K6V4K6z4K+NIn0saDpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCuruCuo+CuvyI6IuCuruCuo+Cuv+CuqOCvh+CusOCuruCvjSJ9LG06ZnVuY3Rpb24oZSl7cmV0dXJuIuCuqOCuv+CuruCuv+CunyIrKDE9PT1lPyLgrq7gr40iOiLgrpngr43grpXgrrPgr40iKX0sczpmdW5jdGlvbihlKXtyZXR1cm4i4K614K6/4K6p4K6+4K6f4K6/IisoMT09PWU/IiI6IuCuleCus+CvjSIpfSxtczpmdW5jdGlvbihlKXtyZXR1cm4i4K6u4K6/4K6y4K+N4K6y4K6/IOCuteCuv+CuqOCuvuCun+CuvyIrKDE9PT1lPyIiOiLgrpXgrrPgr40iKX19LHRlOnt5OmZ1bmN0aW9uKGUpe3JldHVybiLgsLjgsILgsLXgsKTgsY3gsLgiKygxPT09ZT8i4LCw4LCCIjoi4LCw4LC+4LCyIil9LG1vOmZ1bmN0aW9uKGUpe3JldHVybiLgsKjgsYbgsLIiKygxPT09ZT8iIjoi4LCyIil9LHc6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLgsLXgsL7gsLDgsIIiOiLgsLXgsL7gsLDgsL7gsLLgsYEifSxkOmZ1bmN0aW9uKGUpe3JldHVybiLgsLDgsYvgsJzgsYEiKygxPT09ZT8iIjoi4LCy4LGBIil9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuIuCwl+CwguCwnyIrKDE9PT1lPyIiOiLgsLLgsYEiKX0sbTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCwqOCwv+CwruCwv+Cwt+CwgiI6IuCwqOCwv+CwruCwv+Cwt+CwvuCwsuCxgSJ9LHM6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyLgsLjgsYbgsJXgsKjgsYEiOiLgsLjgsYbgsJXgsKjgsY3gsLLgsYEifSxtczpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/IuCwruCwv+CwsuCxjeCwsuCxgOCwuOCxhuCwleCwqOCxjSI6IuCwruCwv+CwsuCxjeCwsuCxgOCwuOCxhuCwleCwqOCxjeCwsuCxgSJ9fSx1azp7eTpmdW5jdGlvbihlKXtyZXR1cm5bItGA0L7QutGW0LIiLCLRgNGW0LoiLCLRgNC+0LrQuCJdW3YoZSldfSxtbzpmdW5jdGlvbihlKXtyZXR1cm5bItC80ZbRgdGP0YbRltCyIiwi0LzRltGB0Y/RhtGMIiwi0LzRltGB0Y/RhtGWIl1bdihlKV19LHc6ZnVuY3Rpb24oZSl7cmV0dXJuWyLRgtC40LbQvdGW0LIiLCLRgtC40LbQtNC10L3RjCIsItGC0LjQttC90ZYiXVt2KGUpXX0sZDpmdW5jdGlvbihlKXtyZXR1cm5bItC00L3RltCyIiwi0LTQtdC90YwiLCLQtNC90ZYiXVt2KGUpXX0saDpmdW5jdGlvbihlKXtyZXR1cm5bItCz0L7QtNC40L0iLCLQs9C+0LTQuNC90LAiLCLQs9C+0LTQuNC90LgiXVt2KGUpXX0sbTpmdW5jdGlvbihlKXtyZXR1cm5bItGF0LLQuNC70LjQvSIsItGF0LLQuNC70LjQvdCwIiwi0YXQstC40LvQuNC90LgiXVt2KGUpXX0sczpmdW5jdGlvbihlKXtyZXR1cm5bItGB0LXQutGD0L3QtCIsItGB0LXQutGD0L3QtNCwIiwi0YHQtdC60YPQvdC00LgiXVt2KGUpXX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuWyLQvNGW0LvRltGB0LXQutGD0L3QtCIsItC80ZbQu9GW0YHQtdC60YPQvdC00LAiLCLQvNGW0LvRltGB0LXQutGD0L3QtNC4Il1bdihlKV19LGRlY2ltYWw6IiwifSx1cjp7eToi2LPYp9mEIixtbzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/ItmF24HbjNmG24EiOiLZhduB24zZhtuSIn0sdzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/ItuB2YHYqtuBIjoi24HZgdiq25IifSxkOiLYr9mGIixoOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8i2q/avtmG2bnbgSI6Itqv2r7Zhtm525IifSxtOiLZhdmG2bkiLHM6Itiz24zaqdmG2ogiLG1zOiLZhdmE24wg2LPbjNqp2YbaiCIsZGVjaW1hbDoiLiJ9LHNrOnt5OmZ1bmN0aW9uKGUpe3JldHVyblsicm9rIiwicm9reSIsInJva3kiLCJyb2tvdiJdW20oZSldfSxtbzpmdW5jdGlvbihlKXtyZXR1cm5bIm1lc2lhYyIsIm1lc2lhY2UiLCJtZXNpYWNlIiwibWVzaWFjb3YiXVttKGUpXX0sdzpmdW5jdGlvbihlKXtyZXR1cm5bInTDvcW+ZGXFiCIsInTDvcW+ZG5lIiwidMO9xb5kbmUiLCJ0w73FvmTFiG92Il1bbShlKV19LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuWyJkZcWIIiwiZG5pIiwiZG5pIiwiZG7DrSJdW20oZSldfSxoOmZ1bmN0aW9uKGUpe3JldHVyblsiaG9kaW5hIiwiaG9kaW55IiwiaG9kaW55IiwiaG9kw61uIl1bbShlKV19LG06ZnVuY3Rpb24oZSl7cmV0dXJuWyJtaW7DunRhIiwibWluw7p0eSIsIm1pbsO6dHkiLCJtaW7DunQiXVttKGUpXX0sczpmdW5jdGlvbihlKXtyZXR1cm5bInNla3VuZGEiLCJzZWt1bmR5Iiwic2VrdW5keSIsInNla8O6bmQiXVttKGUpXX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuWyJtaWxpc2VrdW5kYSIsIm1pbGlzZWt1bmR5IiwibWlsaXNla3VuZHkiLCJtaWxpc2Vrw7puZCJdW20oZSldfSxkZWNpbWFsOiIsIn0sc2w6e3k6ZnVuY3Rpb24oZSl7cmV0dXJuIGUlMTA9PT0xPyJsZXRvIjplJTEwMD09PTI/ImxldGkiOmUlMTAwPT09M3x8ZSUxMDA9PT00fHxNYXRoLmZsb29yKGUpIT09ZSYmZSUxMDA8PTU/ImxldGEiOiJsZXQifSxtbzpmdW5jdGlvbihlKXtyZXR1cm4gZSUxMD09PTE/Im1lc2VjIjplJTEwMD09PTJ8fE1hdGguZmxvb3IoZSkhPT1lJiZlJTEwMDw9NT8ibWVzZWNhIjplJTEwPT09M3x8ZSUxMD09PTQ/Im1lc2VjZSI6Im1lc2VjZXYifSx3OmZ1bmN0aW9uKGUpe3JldHVybiBlJTEwPT09MT8idGVkZW4iOmUlMTA9PT0yfHxNYXRoLmZsb29yKGUpIT09ZSYmZSUxMDA8PTQ/InRlZG5hIjplJTEwPT09M3x8ZSUxMD09PTQ/InRlZG5lIjoidGVkbm92In0sZDpmdW5jdGlvbihlKXtyZXR1cm4gZSUxMDA9PT0xPyJkYW4iOiJkbmkifSxoOmZ1bmN0aW9uKGUpe3JldHVybiBlJTEwPT09MT8idXJhIjplJTEwMD09PTI/InVyaSI6ZSUxMD09PTN8fGUlMTA9PT00fHxNYXRoLmZsb29yKGUpIT09ZT8idXJlIjoidXIifSxtOmZ1bmN0aW9uKGUpe3JldHVybiBlJTEwPT09MT8ibWludXRhIjplJTEwPT09Mj8ibWludXRpIjplJTEwPT09M3x8ZSUxMD09PTR8fE1hdGguZmxvb3IoZSkhPT1lJiZlJTEwMDw9ND8ibWludXRlIjoibWludXQifSxzOmZ1bmN0aW9uKGUpe3JldHVybiBlJTEwPT09MT8ic2VrdW5kYSI6ZSUxMDA9PT0yPyJzZWt1bmRpIjplJTEwMD09PTN8fGUlMTAwPT09NHx8TWF0aC5mbG9vcihlKSE9PWU/InNla3VuZGUiOiJzZWt1bmQifSxtczpmdW5jdGlvbihlKXtyZXR1cm4gZSUxMD09PTE/Im1pbGlzZWt1bmRhIjplJTEwMD09PTI/Im1pbGlzZWt1bmRpIjplJTEwMD09PTN8fGUlMTAwPT09NHx8TWF0aC5mbG9vcihlKSE9PWU/Im1pbGlzZWt1bmRlIjoibWlsaXNla3VuZCJ9LGRlY2ltYWw6IiwifSxzdjp7eToiw6VyIixtbzpmdW5jdGlvbihlKXtyZXR1cm4ibcOlbmFkIisoMT09PWU/IiI6ImVyIil9LHc6ZnVuY3Rpb24oZSl7cmV0dXJuInZlY2siKygxPT09ZT8iYSI6Im9yIil9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuImRhZyIrKDE9PT1lPyIiOiJhciIpfSxoOmZ1bmN0aW9uKGUpe3JldHVybiJ0aW1tIisoMT09PWU/ImUiOiJhciIpfSxtOmZ1bmN0aW9uKGUpe3JldHVybiJtaW51dCIrKDE9PT1lPyIiOiJlciIpfSxzOmZ1bmN0aW9uKGUpe3JldHVybiJzZWt1bmQiKygxPT09ZT8iIjoiZXIiKX0sbXM6ZnVuY3Rpb24oZSl7cmV0dXJuIm1pbGxpc2VrdW5kIisoMT09PWU/IiI6ImVyIil9LGRlY2ltYWw6IiwifSxzdzp7eTpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Im13YWthIjoibWlha2EifSxtbzpmdW5jdGlvbihlKXtyZXR1cm4gMT09PWU/Im13ZXppIjoibWllemkifSx3OiJ3aWtpIixkOmZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZT8ic2lrdSI6Im1hc2lrdSJ9LGg6ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lPyJzYWEiOiJtYXNhYSJ9LG06ImRha2lrYSIsczoic2VrdW5kZSIsbXM6Im1pbGlzZWt1bmRlIixkZWNpbWFsOiIuIn0sdHI6e3k6InnEsWwiLG1vOiJheSIsdzoiaGFmdGEiLGQ6ImfDvG4iLGg6InNhYXQiLG06ImRha2lrYSIsczoic2FuaXllIixtczoibWlsaXNhbml5ZSIsZGVjaW1hbDoiLCJ9LHRoOnt5OiLguJvguLUiLG1vOiLguYDguJTguLfguK3guJkiLHc6IuC4quC4seC4m+C4lOC4suC4q+C5jCIsZDoi4Lin4Lix4LiZIixoOiLguIrguLHguYjguKfguYLguKHguIciLG06IuC4meC4suC4l+C4tSIsczoi4Lin4Li04LiZ4Liy4LiX4Li1Iixtczoi4Lih4Li04Lil4Lil4Li04Lin4Li04LiZ4Liy4LiX4Li1IixkZWNpbWFsOiIuIn0sdmk6e3k6Im7Eg20iLG1vOiJ0aMOhbmciLHc6InR14bqnbiIsZDoibmfDoHkiLGg6Imdp4budIixtOiJwaMO6dCIsczoiZ2nDonkiLG1zOiJtaWxpIGdpw6J5IixkZWNpbWFsOiIsIn0semhfQ046e3k6IuW5tCIsbW86IuS4quaciCIsdzoi5ZGoIixkOiLlpKkiLGg6IuWwj+aXtiIsbToi5YiG6ZKfIixzOiLnp5IiLG1zOiLmr6vnp5IiLGRlY2ltYWw6Ii4ifSx6aF9UVzp7eToi5bm0Iixtbzoi5YCL5pyIIix3OiLlkagiLGQ6IuWkqSIsaDoi5bCP5pmCIixtOiLliIbpkJgiLHM6IuenkiIsbXM6Iuavq+enkiIsZGVjaW1hbDoiLiJ9fTtmdW5jdGlvbiBzKGUpe3ZhciB0PWZ1bmN0aW9uKGUsbil7dmFyIHI9ZCh7fSx0LG58fHt9KTtyZXR1cm4gbChlLHIpfTtyZXR1cm4gZCh0LHtsYW5ndWFnZToiZW4iLHNwYWNlcjoiICIsY29uanVuY3Rpb246IiIsc2VyaWFsQ29tbWE6ITAsdW5pdHM6WyJ5IiwibW8iLCJ3IiwiZCIsImgiLCJtIiwicyJdLGxhbmd1YWdlczp7fSxyb3VuZDohMSx1bml0TWVhc3VyZXM6e3k6MzE1NTc2ZTUsbW86MjYyOThlNSx3OjYwNDhlNSxkOjg2NGU1LGg6MzZlNSxtOjZlNCxzOjFlMyxtczoxfX0sZSl9dmFyIHU9cyh7fSk7ZnVuY3Rpb24gYyhlKXt2YXIgdD1bZS5sYW5ndWFnZV07aWYoYihlLCJmYWxsYmFja3MiKSl7aWYoIXcoZS5mYWxsYmFja3MpfHwhZS5mYWxsYmFja3MubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiZmFsbGJhY2tzIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCIpO3Q9dC5jb25jYXQoZS5mYWxsYmFja3MpfWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO2lmKGIoZS5sYW5ndWFnZXMscikpcmV0dXJuIGUubGFuZ3VhZ2VzW3JdO2lmKGIoYSxyKSlyZXR1cm4gYVtyXX10aHJvdyBuZXcgRXJyb3IoIk5vIGxhbmd1YWdlIGZvdW5kLiIpfWZ1bmN0aW9uIGwoZSx0KXt2YXIgbixyLGk7ZT1NYXRoLmFicyhlKTt2YXIgbyxhLHMsdT1jKHQpLGw9W107Zm9yKG49MCxyPXQudW5pdHMubGVuZ3RoO248cjtuKyspe2lmKG89dC51bml0c1tuXSxhPXQudW5pdE1lYXN1cmVzW29dLG4rMT09PXIpaWYoYih0LCJtYXhEZWNpbWFsUG9pbnRzIikpe3ZhciBkPU1hdGgucG93KDEwLHQubWF4RGVjaW1hbFBvaW50cykscD1lL2E7cz1wYXJzZUZsb2F0KChNYXRoLmZsb29yKGQqcCkvZCkudG9GaXhlZCh0Lm1heERlY2ltYWxQb2ludHMpKX1lbHNlIHM9ZS9hO2Vsc2Ugcz1NYXRoLmZsb29yKGUvYSk7bC5wdXNoKHt1bml0Q291bnQ6cyx1bml0TmFtZTpvfSksZS09cyphfXZhciBoLHYsbT0wO2ZvcihuPTA7bjxsLmxlbmd0aDtuKyspaWYobFtuXS51bml0Q291bnQpe209bjticmVha31pZih0LnJvdW5kKWZvcihuPWwubGVuZ3RoLTE7bj49MDtuLS0pe2lmKGk9bFtuXSxpLnVuaXRDb3VudD1NYXRoLnJvdW5kKGkudW5pdENvdW50KSwwPT09bilicmVhazt2PWxbbi0xXSxoPXQudW5pdE1lYXN1cmVzW3YudW5pdE5hbWVdL3QudW5pdE1lYXN1cmVzW2kudW5pdE5hbWVdLChpLnVuaXRDb3VudCVoPT09MHx8dC5sYXJnZXN0JiZ0Lmxhcmdlc3QtMTxuLW0pJiYodi51bml0Q291bnQrPWkudW5pdENvdW50L2gsaS51bml0Q291bnQ9MCl9dmFyIHksZz1bXTtmb3Iobj0wLGwubGVuZ3RoO248cjtuKyspaWYoaT1sW25dLGkudW5pdENvdW50JiZnLnB1c2goZihpLnVuaXRDb3VudCxpLnVuaXROYW1lLHUsdCkpLGcubGVuZ3RoPT09dC5sYXJnZXN0KWJyZWFrO3JldHVybiBnLmxlbmd0aD8oeT1iKHQsImRlbGltaXRlciIpP3QuZGVsaW1pdGVyOmIodSwiZGVsaW1pdGVyIik/dS5kZWxpbWl0ZXI6IiwgIix0LmNvbmp1bmN0aW9uJiYxIT09Zy5sZW5ndGg/Mj09PWcubGVuZ3RoP2cuam9pbih0LmNvbmp1bmN0aW9uKTpnLmxlbmd0aD4yP2cuc2xpY2UoMCwtMSkuam9pbih5KSsodC5zZXJpYWxDb21tYT8iLCI6IiIpK3QuY29uanVuY3Rpb24rZy5zbGljZSgtMSk6dm9pZCAwOmcuam9pbih5KSk6ZigwLHQudW5pdHNbdC51bml0cy5sZW5ndGgtMV0sdSx0KX1mdW5jdGlvbiBmKGUsdCxuLHIpe3ZhciBpLG87aT1iKHIsImRlY2ltYWwiKT9yLmRlY2ltYWw6YihuLCJkZWNpbWFsIik/bi5kZWNpbWFsOiIuIixvPSJmdW5jdGlvbiI9PT10eXBlb2Ygbi5fZm9ybWF0Q291bnQ/bi5fZm9ybWF0Q291bnQoZSxpKTplLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsaSk7dmFyIGEscz1uW3RdO3JldHVybiBhPSJmdW5jdGlvbiI9PT10eXBlb2Ygcz9zKGUpOnMsbytyLnNwYWNlcithfWZ1bmN0aW9uIGQoZSl7Zm9yKHZhciB0LG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWZvcih2YXIgciBpbiB0PWFyZ3VtZW50c1tuXSx0KWIodCxyKSYmKGVbcl09dFtyXSk7cmV0dXJuIGV9ZnVuY3Rpb24gcChlKXtyZXR1cm4gMT09PWU/MDoyPT09ZT8xOmU+MiYmZTwxMT8yOjB9ZnVuY3Rpb24gaChlKXtyZXR1cm4gMT09PWU/MDpNYXRoLmZsb29yKGUpIT09ZT8xOmUlMTA+PTImJmUlMTA8PTQmJiEoZSUxMDA+MTAmJmUlMTAwPDIwKT8yOjN9ZnVuY3Rpb24gdihlKXtyZXR1cm4gTWF0aC5mbG9vcihlKSE9PWU/MjplJTEwMD49NSYmZSUxMDA8PTIwfHxlJTEwPj01JiZlJTEwPD05fHxlJTEwPT09MD8wOmUlMTA9PT0xPzE6ZT4xPzI6MH1mdW5jdGlvbiBtKGUpe3JldHVybiAxPT09ZT8wOk1hdGguZmxvb3IoZSkhPT1lPzE6ZSUxMD49MiYmZSUxMDw9NCYmZSUxMDA8MTA/MjozfWZ1bmN0aW9uIHkoZSl7cmV0dXJuIDE9PT1lfHxlJTEwPT09MSYmZSUxMDA+MjA/MDpNYXRoLmZsb29yKGUpIT09ZXx8ZSUxMD49MiYmZSUxMDA+MjB8fGUlMTA+PTImJmUlMTAwPDEwPzE6Mn1mdW5jdGlvbiBnKGUpe3JldHVybiBlJTEwPT09MSYmZSUxMDAhPT0xMX12YXIgdz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfTtmdW5jdGlvbiBiKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfXUuZ2V0U3VwcG9ydGVkTGFuZ3VhZ2VzPWZ1bmN0aW9uKCl7dmFyIGU9W107Zm9yKHZhciB0IGluIGEpYihhLHQpJiYiZ3IiIT09dCYmZS5wdXNoKHQpO3JldHVybiBlfSx1Lmh1bWFuaXplcj1zLHI9ZnVuY3Rpb24oKXtyZXR1cm4gdX0uY2FsbCh0LG4sdCxlKSx2b2lkIDA9PT1yfHwoZS5leHBvcnRzPXIpfSkoKX0sOTA5NTpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciB0PTA7dDxhLmxlbmd0aDt0KyspYVt0XT0wO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspYVt0JTRdPShhW3QlNF08PDUpLWFbdCU0XStlLmNoYXJDb2RlQXQodCl9ZnVuY3Rpb24gdCgpe3ZhciBlPWFbMF1eYVswXTw8MTE7cmV0dXJuIGFbMF09YVsxXSxhWzFdPWFbMl0sYVsyXT1hWzNdLGFbM109YVszXV5hWzNdPj4xOV5lXmU+PjgsKGFbM10+Pj4wKS8oMTw8MzE+Pj4wKX1mdW5jdGlvbiBuKCl7dmFyIGU9TWF0aC5mbG9vcigzNjAqdCgpKSxuPTYwKnQoKSs0MCsiJSIscj0yNSoodCgpK3QoKSt0KCkrdCgpKSsiJSIsaT0iaHNsKCIrZSsiLCIrbisiLCIrcisiKSI7cmV0dXJuIGl9ZnVuY3Rpb24gcihlKXtmb3IodmFyIG49ZSxyPWUsaT1NYXRoLmNlaWwobi8yKSxvPW4taSxhPVtdLHM9MDtyPnM7cysrKXtmb3IodmFyIHU9W10sYz0wO2k+YztjKyspdVtjXT1NYXRoLmZsb29yKDIuMyp0KCkpO3ZhciBsPXUuc2xpY2UoMCxvKTtsLnJldmVyc2UoKSx1PXUuY29uY2F0KGwpO2Zvcih2YXIgZj0wO2Y8dS5sZW5ndGg7ZisrKWEucHVzaCh1W2ZdKX1yZXR1cm4gYX1mdW5jdGlvbiBpKGUsdCxuLHIsaSl7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksYT1NYXRoLnNxcnQoZS5sZW5ndGgpO28ud2lkdGg9by5oZWlnaHQ9YSpuO3ZhciBzPW8uZ2V0Q29udGV4dCgiMmQiKTtzLmZpbGxTdHlsZT1yLHMuZmlsbFJlY3QoMCwwLG8ud2lkdGgsby5oZWlnaHQpLHMuZmlsbFN0eWxlPXQ7Zm9yKHZhciB1PTA7dTxlLmxlbmd0aDt1Kyspe3ZhciBjPU1hdGguZmxvb3IodS9hKSxsPXUlYTtzLmZpbGxTdHlsZT0xPT1lW3VdP3Q6aSxlW3VdJiZzLmZpbGxSZWN0KGwqbixjKm4sbixuKX1yZXR1cm4gb31mdW5jdGlvbiBvKHQpe3Q9dHx8e307dmFyIG89dC5zaXplfHw4LGE9dC5zY2FsZXx8NCxzPXQuc2VlZHx8TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk1hdGgucG93KDEwLDE2KSkudG9TdHJpbmcoMTYpO2Uocyk7dmFyIHU9dC5jb2xvcnx8bigpLGM9dC5iZ2NvbG9yfHxuKCksbD10LnNwb3Rjb2xvcnx8bigpLGY9cihvKSxkPWkoZix1LGEsYyxsKTtyZXR1cm4gZH12YXIgYT1BcnJheSg0KTtyZXR1cm4gb30oKX0sOTE1MjpmdW5jdGlvbihlLHQpewovKiEgaWVlZTc1NC4gQlNELTMtQ2xhdXNlIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqLwp0LnJlYWQ9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHM9OCppLXItMSx1PSgxPDxzKS0xLGM9dT4+MSxsPS03LGY9bj9pLTE6MCxkPW4/LTE6MSxwPWVbdCtmXTtmb3IoZis9ZCxvPXAmKDE8PC1sKS0xLHA+Pj0tbCxsKz1zO2w+MDtvPTI1NipvK2VbdCtmXSxmKz1kLGwtPTgpO2ZvcihhPW8mKDE8PC1sKS0xLG8+Pj0tbCxsKz1yO2w+MDthPTI1NiphK2VbdCtmXSxmKz1kLGwtPTgpO2lmKDA9PT1vKW89MS1jO2Vsc2V7aWYobz09PXUpcmV0dXJuIGE/TmFOOjEvMCoocD8tMToxKTthKz1NYXRoLnBvdygyLHIpLG8tPWN9cmV0dXJuKHA/LTE6MSkqYSpNYXRoLnBvdygyLG8tcil9LHQud3JpdGU9ZnVuY3Rpb24oZSx0LG4scixpLG8pe3ZhciBhLHMsdSxjPTgqby1pLTEsbD0oMTw8YyktMSxmPWw+PjEsZD0yMz09PWk/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLHA9cj8wOm8tMSxoPXI/MTotMSx2PXQ8MHx8MD09PXQmJjEvdDwwPzE6MDtmb3IodD1NYXRoLmFicyh0KSxpc05hTih0KXx8dD09PTEvMD8ocz1pc05hTih0KT8xOjAsYT1sKTooYT1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSx0Kih1PU1hdGgucG93KDIsLWEpKTwxJiYoYS0tLHUqPTIpLHQrPWErZj49MT9kL3U6ZCpNYXRoLnBvdygyLDEtZiksdCp1Pj0yJiYoYSsrLHUvPTIpLGErZj49bD8ocz0wLGE9bCk6YStmPj0xPyhzPSh0KnUtMSkqTWF0aC5wb3coMixpKSxhKz1mKToocz10Kk1hdGgucG93KDIsZi0xKSpNYXRoLnBvdygyLGkpLGE9MCkpO2k+PTg7ZVtuK3BdPTI1NSZzLHArPWgscy89MjU2LGktPTgpO2ZvcihhPWE8PGl8cyxjKz1pO2M+MDtlW24rcF09MjU1JmEscCs9aCxhLz0yNTYsYy09OCk7ZVtuK3AtaF18PTEyOCp2fX0sOTQ4MzpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO24uZCh0LCJhIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKTt2YXIgcixpPWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oImxvY2FsaG9zdCI9PT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWV8fCJbOjoxXSI9PT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWV8fHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5tYXRjaCgvXjEyNyg/OlwuKD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KSl7M30kLykpfTtmdW5jdGlvbiBvKGUsdCl7dm9pZCAwPT09dCYmKHQ9e30pO3ZhciBuPXQucmVnaXN0cmF0aW9uT3B0aW9uczt2b2lkIDA9PT1uJiYobj17fSksZGVsZXRlIHQucmVnaXN0cmF0aW9uT3B0aW9uczt2YXIgbz1mdW5jdGlvbihlKXt2YXIgbj1bXSxyPWFyZ3VtZW50cy5sZW5ndGgtMTt3aGlsZShyLS0gPjApbltyXT1hcmd1bWVudHNbcisxXTt0JiZ0W2VdJiZ0W2VdLmFwcGx5KHQsbil9OyJzZXJ2aWNlV29ya2VyImluIG5hdmlnYXRvciYmci50aGVuKChmdW5jdGlvbigpe2koKT8odShlLG8sbiksbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVhZHkudGhlbigoZnVuY3Rpb24oZSl7bygicmVhZHkiLGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gYShvLGUpfSkpKToocyhlLG8sbiksbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVhZHkudGhlbigoZnVuY3Rpb24oZSl7bygicmVhZHkiLGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gYShvLGUpfSkpKX0pKX1mdW5jdGlvbiBhKGUsdCl7bmF2aWdhdG9yLm9uTGluZXx8ZSgib2ZmbGluZSIpLGUoImVycm9yIix0KX1mdW5jdGlvbiBzKGUsdCxuKXtuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcihlLG4pLnRoZW4oKGZ1bmN0aW9uKGUpe3QoInJlZ2lzdGVyZWQiLGUpLGUud2FpdGluZz90KCJ1cGRhdGVkIixlKTplLm9udXBkYXRlZm91bmQ9ZnVuY3Rpb24oKXt0KCJ1cGRhdGVmb3VuZCIsZSk7dmFyIG49ZS5pbnN0YWxsaW5nO24ub25zdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJpbnN0YWxsZWQiPT09bi5zdGF0ZSYmKG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmNvbnRyb2xsZXI/dCgidXBkYXRlZCIsZSk6dCgiY2FjaGVkIixlKSl9fX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGEodCxlKX0pKX1mdW5jdGlvbiB1KGUsdCxuKXtmZXRjaChlKS50aGVuKChmdW5jdGlvbihyKXs0MDQ9PT1yLnN0YXR1cz8odCgiZXJyb3IiLG5ldyBFcnJvcigiU2VydmljZSB3b3JrZXIgbm90IGZvdW5kIGF0ICIrZSkpLGMoKSk6LTE9PT1yLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKS5pbmRleE9mKCJqYXZhc2NyaXB0Iik/KHQoImVycm9yIixuZXcgRXJyb3IoIkV4cGVjdGVkICIrZSsiIHRvIGhhdmUgamF2YXNjcmlwdCBjb250ZW50LXR5cGUsIGJ1dCByZWNlaXZlZCAiK3IuaGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpKSksYygpKTpzKGUsdCxuKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGEodCxlKX0pKX1mdW5jdGlvbiBjKCl7InNlcnZpY2VXb3JrZXIiaW4gbmF2aWdhdG9yJiZuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeS50aGVuKChmdW5jdGlvbihlKXtlLnVucmVnaXN0ZXIoKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGEoZW1pdCxlKX0pKX0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cmJihyPSJ1bmRlZmluZWQiIT09dHlwZW9mIFByb21pc2U/bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZSl9KSk6e3RoZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixlKX19KX0sIjk0ZjgiOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyKXtlLmV4cG9ydHM9cihuKCIyMWJmIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWUscj1uLmxpYixpPXIuV29yZEFycmF5LG89ci5IYXNoZXIsYT1uLmFsZ28scz1bXSx1PVtdOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7Zm9yKHZhciBuPXQuc3FydChlKSxyPTI7cjw9bjtyKyspaWYoIShlJXIpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIDQyOTQ5NjcyOTYqKGUtKDB8ZSkpfDB9dmFyIHI9MixpPTA7d2hpbGUoaTw2NCllKHIpJiYoaTw4JiYoc1tpXT1uKHQucG93KHIsLjUpKSksdVtpXT1uKHQucG93KHIsMS8zKSksaSsrKSxyKyt9KSgpO3ZhciBjPVtdLGw9YS5TSEEyNTY9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KHMuc2xpY2UoMCkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5faGFzaC53b3JkcyxyPW5bMF0saT1uWzFdLG89blsyXSxhPW5bM10scz1uWzRdLGw9bls1XSxmPW5bNl0sZD1uWzddLHA9MDtwPDY0O3ArKyl7aWYocDwxNiljW3BdPTB8ZVt0K3BdO2Vsc2V7dmFyIGg9Y1twLTE1XSx2PShoPDwyNXxoPj4+NyleKGg8PDE0fGg+Pj4xOCleaD4+PjMsbT1jW3AtMl0seT0obTw8MTV8bT4+PjE3KV4obTw8MTN8bT4+PjE5KV5tPj4+MTA7Y1twXT12K2NbcC03XSt5K2NbcC0xNl19dmFyIGc9cyZsXn5zJmYsdz1yJmleciZvXmkmbyxiPShyPDwzMHxyPj4+MileKHI8PDE5fHI+Pj4xMyleKHI8PDEwfHI+Pj4yMiksXz0oczw8MjZ8cz4+PjYpXihzPDwyMXxzPj4+MTEpXihzPDw3fHM+Pj4yNSkseD1kK18rZyt1W3BdK2NbcF0saz1iK3c7ZD1mLGY9bCxsPXMscz1hK3h8MCxhPW8sbz1pLGk9cixyPXgra3wwfW5bMF09blswXStyfDAsblsxXT1uWzFdK2l8MCxuWzJdPW5bMl0rb3wwLG5bM109blszXSthfDAsbls0XT1uWzRdK3N8MCxuWzVdPW5bNV0rbHwwLG5bNl09bls2XStmfDAsbls3XT1uWzddK2R8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9kYXRhLG49ZS53b3JkcyxyPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqZS5zaWdCeXRlcztyZXR1cm4gbltpPj4+NV18PTEyODw8MjQtaSUzMixuWzE0KyhpKzY0Pj4+OTw8NCldPXQuZmxvb3Ioci80Mjk0OTY3Mjk2KSxuWzE1KyhpKzY0Pj4+OTw8NCldPXIsZS5zaWdCeXRlcz00Km4ubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciBlPW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gZS5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksZX19KTtuLlNIQTI1Nj1vLl9jcmVhdGVIZWxwZXIobCksbi5IbWFjU0hBMjU2PW8uX2NyZWF0ZUhtYWNIZWxwZXIobCl9KE1hdGgpLGUuU0hBMjU2fSkpfSxhMTFiOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIzOGJhIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFkLklzbzEwMTI2PXtwYWQ6ZnVuY3Rpb24odCxuKXt2YXIgcj00Km4saT1yLXQuc2lnQnl0ZXMlcjt0LmNvbmNhdChlLmxpYi5Xb3JkQXJyYXkucmFuZG9tKGktMSkpLmNvbmNhdChlLmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFtpPDwyNF0sMSkpfSx1bnBhZDpmdW5jdGlvbihlKXt2YXIgdD0yNTUmZS53b3Jkc1tlLnNpZ0J5dGVzLTE+Pj4yXTtlLnNpZ0J5dGVzLT10fX0sZS5wYWQuSXNvMTAxMjZ9KSl9LGE0MGU6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjExMzIiKSxuKCI3MmZlIiksbigiMmI3OSIpLG4oIjM4YmEiKSl9KSgwLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lLG49dC5saWIscj1uLldvcmRBcnJheSxpPW4uQmxvY2tDaXBoZXIsbz10LmFsZ28sYT1bNTcsNDksNDEsMzMsMjUsMTcsOSwxLDU4LDUwLDQyLDM0LDI2LDE4LDEwLDIsNTksNTEsNDMsMzUsMjcsMTksMTEsMyw2MCw1Miw0NCwzNiw2Myw1NSw0NywzOSwzMSwyMywxNSw3LDYyLDU0LDQ2LDM4LDMwLDIyLDE0LDYsNjEsNTMsNDUsMzcsMjksMjEsMTMsNSwyOCwyMCwxMiw0XSxzPVsxNCwxNywxMSwyNCwxLDUsMywyOCwxNSw2LDIxLDEwLDIzLDE5LDEyLDQsMjYsOCwxNiw3LDI3LDIwLDEzLDIsNDEsNTIsMzEsMzcsNDcsNTUsMzAsNDAsNTEsNDUsMzMsNDgsNDQsNDksMzksNTYsMzQsNTMsNDYsNDIsNTAsMzYsMjksMzJdLHU9WzEsMiw0LDYsOCwxMCwxMiwxNCwxNSwxNywxOSwyMSwyMywyNSwyNywyOF0sYz1bezA6ODQyMTg4OCwyNjg0MzU0NTY6MzI3NjgsNTM2ODcwOTEyOjg0MjEzNzgsODA1MzA2MzY4OjIsMTA3Mzc0MTgyNDo1MTIsMTM0MjE3NzI4MDo4NDIxODkwLDE2MTA2MTI3MzY6ODM4OTEyMiwxODc5MDQ4MTkyOjgzODg2MDgsMjE0NzQ4MzY0ODo1MTQsMjQxNTkxOTEwNDo4Mzg5MTIwLDI2ODQzNTQ1NjA6MzMyODAsMjk1Mjc5MDAxNjo4NDIxMzc2LDMyMjEyMjU0NzI6MzI3NzAsMzQ4OTY2MDkyODo4Mzg4NjEwLDM3NTgwOTYzODQ6MCw0MDI2NTMxODQwOjMzMjgyLDEzNDIxNzcyODowLDQwMjY1MzE4NDo4NDIxODkwLDY3MTA4ODY0MDozMzI4Miw5Mzk1MjQwOTY6MzI3NjgsMTIwNzk1OTU1Mjo4NDIxODg4LDE0NzYzOTUwMDg6NTEyLDE3NDQ4MzA0NjQ6ODQyMTM3OCwyMDEzMjY1OTIwOjIsMjI4MTcwMTM3Njo4Mzg5MTIwLDI1NTAxMzY4MzI6MzMyODAsMjgxODU3MjI4ODo4NDIxMzc2LDMwODcwMDc3NDQ6ODM4OTEyMiwzMzU1NDQzMjAwOjgzODg2MTAsMzYyMzg3ODY1NjozMjc3MCwzODkyMzE0MTEyOjUxNCw0MTYwNzQ5NTY4OjgzODg2MDgsMTozMjc2OCwyNjg0MzU0NTc6Miw1MzY4NzA5MTM6ODQyMTg4OCw4MDUzMDYzNjk6ODM4ODYwOCwxMDczNzQxODI1Ojg0MjEzNzgsMTM0MjE3NzI4MTozMzI4MCwxNjEwNjEyNzM3OjUxMiwxODc5MDQ4MTkzOjgzODkxMjIsMjE0NzQ4MzY0OTo4NDIxODkwLDI0MTU5MTkxMDU6ODQyMTM3NiwyNjg0MzU0NTYxOjgzODg2MTAsMjk1Mjc5MDAxNzozMzI4MiwzMjIxMjI1NDczOjUxNCwzNDg5NjYwOTI5OjgzODkxMjAsMzc1ODA5NjM4NTozMjc3MCw0MDI2NTMxODQxOjAsMTM0MjE3NzI5Ojg0MjE4OTAsNDAyNjUzMTg1Ojg0MjEzNzYsNjcxMDg4NjQxOjgzODg2MDgsOTM5NTI0MDk3OjUxMiwxMjA3OTU5NTUzOjMyNzY4LDE0NzYzOTUwMDk6ODM4ODYxMCwxNzQ0ODMwNDY1OjIsMjAxMzI2NTkyMTozMzI4MiwyMjgxNzAxMzc3OjMyNzcwLDI1NTAxMzY4MzM6ODM4OTEyMiwyODE4NTcyMjg5OjUxNCwzMDg3MDA3NzQ1Ojg0MjE4ODgsMzM1NTQ0MzIwMTo4Mzg5MTIwLDM2MjM4Nzg2NTc6MCwzODkyMzE0MTEzOjMzMjgwLDQxNjA3NDk1Njk6ODQyMTM3OH0sezA6MTA3NDI4MjUxMiwxNjc3NzIxNjoxNjM4NCwzMzU1NDQzMjo1MjQyODgsNTAzMzE2NDg6MTA3NDI2NjEyOCw2NzEwODg2NDoxMDczNzQxODQwLDgzODg2MDgwOjEwNzQyODI0OTYsMTAwNjYzMjk2OjEwNzM3NTgyMDgsMTE3NDQwNTEyOjE2LDEzNDIxNzcyODo1NDA2NzIsMTUwOTk0OTQ0OjEwNzM3NTgyMjQsMTY3NzcyMTYwOjEwNzM3NDE4MjQsMTg0NTQ5Mzc2OjU0MDY4OCwyMDEzMjY1OTI6NTI0MzA0LDIxODEwMzgwODowLDIzNDg4MTAyNDoxNjQwMCwyNTE2NTgyNDA6MTA3NDI2NjExMiw4Mzg4NjA4OjEwNzM3NTgyMDgsMjUxNjU4MjQ6NTQwNjg4LDQxOTQzMDQwOjE2LDU4NzIwMjU2OjEwNzM3NTgyMjQsNzU0OTc0NzI6MTA3NDI4MjUxMiw5MjI3NDY4ODoxMDczNzQxODI0LDEwOTA1MTkwNDo1MjQyODgsMTI1ODI5MTIwOjEwNzQyNjYxMjgsMTQyNjA2MzM2OjUyNDMwNCwxNTkzODM1NTI6MCwxNzYxNjA3Njg6MTYzODQsMTkyOTM3OTg0OjEwNzQyNjYxMTIsMjA5NzE1MjAwOjEwNzM3NDE4NDAsMjI2NDkyNDE2OjU0MDY3MiwyNDMyNjk2MzI6MTA3NDI4MjQ5NiwyNjAwNDY4NDg6MTY0MDAsMjY4NDM1NDU2OjAsMjg1MjEyNjcyOjEwNzQyNjYxMjgsMzAxOTg5ODg4OjEwNzM3NTgyMjQsMzE4NzY3MTA0OjEwNzQyODI0OTYsMzM1NTQ0MzIwOjEwNzQyNjYxMTIsMzUyMzIxNTM2OjE2LDM2OTA5ODc1Mjo1NDA2ODgsMzg1ODc1OTY4OjE2Mzg0LDQwMjY1MzE4NDoxNjQwMCw0MTk0MzA0MDA6NTI0Mjg4LDQzNjIwNzYxNjo1MjQzMDQsNDUyOTg0ODMyOjEwNzM3NDE4NDAsNDY5NzYyMDQ4OjU0MDY3Miw0ODY1MzkyNjQ6MTA3Mzc1ODIwOCw1MDMzMTY0ODA6MTA3Mzc0MTgyNCw1MjAwOTM2OTY6MTA3NDI4MjUxMiwyNzY4MjQwNjQ6NTQwNjg4LDI5MzYwMTI4MDo1MjQyODgsMzEwMzc4NDk2OjEwNzQyNjYxMTIsMzI3MTU1NzEyOjE2Mzg0LDM0MzkzMjkyODoxMDczNzU4MjA4LDM2MDcxMDE0NDoxMDc0MjgyNTEyLDM3NzQ4NzM2MDoxNiwzOTQyNjQ1NzY6MTA3Mzc0MTgyNCw0MTEwNDE3OTI6MTA3NDI4MjQ5Niw0Mjc4MTkwMDg6MTA3Mzc0MTg0MCw0NDQ1OTYyMjQ6MTA3Mzc1ODIyNCw0NjEzNzM0NDA6NTI0MzA0LDQ3ODE1MDY1NjowLDQ5NDkyNzg3MjoxNjQwMCw1MTE3MDUwODg6MTA3NDI2NjEyOCw1Mjg0ODIzMDQ6NTQwNjcyfSx7MDoyNjAsMTA0ODU3NjowLDIwOTcxNTI6NjcxMDkxMjAsMzE0NTcyODo2NTc5Niw0MTk0MzA0OjY1NTQwLDUyNDI4ODA6NjcxMDg4NjgsNjI5MTQ1Njo2NzE3NDY2MCw3MzQwMDMyOjY3MTc0NDAwLDgzODg2MDg6NjcxMDg4NjQsOTQzNzE4NDo2NzE3NDY1NiwxMDQ4NTc2MDo2NTc5MiwxMTUzNDMzNjo2NzE3NDQwNCwxMjU4MjkxMjo2NzEwOTEyNCwxMzYzMTQ4ODo2NTUzNiwxNDY4MDA2NDo0LDE1NzI4NjQwOjI1Niw1MjQyODg6NjcxNzQ2NTYsMTU3Mjg2NDo2NzE3NDQwNCwyNjIxNDQwOjAsMzY3MDAxNjo2NzEwOTEyMCw0NzE4NTkyOjY3MTA4ODY4LDU3NjcxNjg6NjU1MzYsNjgxNTc0NDo2NTU0MCw3ODY0MzIwOjI2MCw4OTEyODk2OjQsOTk2MTQ3MjoyNTYsMTEwMTAwNDg6NjcxNzQ0MDAsMTIwNTg2MjQ6NjU3OTYsMTMxMDcyMDA6NjU3OTIsMTQxNTU3NzY6NjcxMDkxMjQsMTUyMDQzNTI6NjcxNzQ2NjAsMTYyNTI5Mjg6NjcxMDg4NjQsMTY3NzcyMTY6NjcxNzQ2NTYsMTc4MjU3OTI6NjU1NDAsMTg4NzQzNjg6NjU1MzYsMTk5MjI5NDQ6NjcxMDkxMjAsMjA5NzE1MjA6MjU2LDIyMDIwMDk2OjY3MTc0NjYwLDIzMDY4NjcyOjY3MTA4ODY4LDI0MTE3MjQ4OjAsMjUxNjU4MjQ6NjcxMDkxMjQsMjYyMTQ0MDA6NjcxMDg4NjQsMjcyNjI5NzY6NCwyODMxMTU1Mjo2NTc5MiwyOTM2MDEyODo2NzE3NDQwMCwzMDQwODcwNDoyNjAsMzE0NTcyODA6NjU3OTYsMzI1MDU4NTY6NjcxNzQ0MDQsMTczMDE1MDQ6NjcxMDg4NjQsMTgzNTAwODA6MjYwLDE5Mzk4NjU2OjY3MTc0NjU2LDIwNDQ3MjMyOjAsMjE0OTU4MDg6NjU1NDAsMjI1NDQzODQ6NjcxMDkxMjAsMjM1OTI5NjA6MjU2LDI0NjQxNTM2OjY3MTc0NDA0LDI1NjkwMTEyOjY1NTM2LDI2NzM4Njg4OjY3MTc0NjYwLDI3Nzg3MjY0OjY1Nzk2LDI4ODM1ODQwOjY3MTA4ODY4LDI5ODg0NDE2OjY3MTA5MTI0LDMwOTMyOTkyOjY3MTc0NDAwLDMxOTgxNTY4OjQsMzMwMzAxNDQ6NjU3OTJ9LHswOjIxNTE2ODIwNDgsNjU1MzY6MjE0NzQ4NzgwOCwxMzEwNzI6NDE5ODQ2NCwxOTY2MDg6MjE1MTY3Nzk1MiwyNjIxNDQ6MCwzMjc2ODA6NDE5ODQwMCwzOTMyMTY6MjE0NzQ4MzcxMiw0NTg3NTI6NDE5NDM2OCw1MjQyODg6MjE0NzQ4MzY0OCw1ODk4MjQ6NDE5NDMwNCw2NTUzNjA6NjQsNzIwODk2OjIxNDc0ODc3NDQsNzg2NDMyOjIxNTE2NzgwMTYsODUxOTY4OjQxNjAsOTE3NTA0OjQwOTYsOTgzMDQwOjIxNTE2ODIxMTIsMzI3Njg6MjE0NzQ4NzgwOCw5ODMwNDo2NCwxNjM4NDA6MjE1MTY3ODAxNiwyMjkzNzY6MjE0NzQ4Nzc0NCwyOTQ5MTI6NDE5ODQwMCwzNjA0NDg6MjE1MTY4MjExMiw0MjU5ODQ6MCw0OTE1MjA6MjE1MTY3Nzk1Miw1NTcwNTY6NDA5Niw2MjI1OTI6MjE1MTY4MjA0OCw2ODgxMjg6NDE5NDMwNCw3NTM2NjQ6NDE2MCw4MTkyMDA6MjE0NzQ4MzY0OCw4ODQ3MzY6NDE5NDM2OCw5NTAyNzI6NDE5ODQ2NCwxMDE1ODA4OjIxNDc0ODM3MTIsMTA0ODU3Njo0MTk0MzY4LDExMTQxMTI6NDE5ODQwMCwxMTc5NjQ4OjIxNDc0ODM3MTIsMTI0NTE4NDowLDEzMTA3MjA6NDE2MCwxMzc2MjU2OjIxNTE2NzgwMTYsMTQ0MTc5MjoyMTUxNjgyMDQ4LDE1MDczMjg6MjE0NzQ4NzgwOCwxNTcyODY0OjIxNTE2ODIxMTIsMTYzODQwMDoyMTQ3NDgzNjQ4LDE3MDM5MzY6MjE1MTY3Nzk1MiwxNzY5NDcyOjQxOTg0NjQsMTgzNTAwODoyMTQ3NDg3NzQ0LDE5MDA1NDQ6NDE5NDMwNCwxOTY2MDgwOjY0LDIwMzE2MTY6NDA5NiwxMDgxMzQ0OjIxNTE2Nzc5NTIsMTE0Njg4MDoyMTUxNjgyMTEyLDEyMTI0MTY6MCwxMjc3OTUyOjQxOTg0MDAsMTM0MzQ4ODo0MTk0MzY4LDE0MDkwMjQ6MjE0NzQ4MzY0OCwxNDc0NTYwOjIxNDc0ODc4MDgsMTU0MDA5Njo2NCwxNjA1NjMyOjIxNDc0ODM3MTIsMTY3MTE2ODo0MDk2LDE3MzY3MDQ6MjE0NzQ4Nzc0NCwxODAyMjQwOjIxNTE2NzgwMTYsMTg2Nzc3Njo0MTYwLDE5MzMzMTI6MjE1MTY4MjA0OCwxOTk4ODQ4OjQxOTQzMDQsMjA2NDM4NDo0MTk4NDY0fSx7MDoxMjgsNDA5NjoxNzAzOTM2MCw4MTkyOjI2MjE0NCwxMjI4ODo1MzY4NzA5MTIsMTYzODQ6NTM3MTMzMTg0LDIwNDgwOjE2Nzc3MzQ0LDI0NTc2OjU1MzY0ODI1NiwyODY3MjoyNjIyNzIsMzI3Njg6MTY3NzcyMTYsMzY4NjQ6NTM3MTMzMDU2LDQwOTYwOjUzNjg3MTA0MCw0NTA1Njo1NTM5MTA0MDAsNDkxNTI6NTUzOTEwMjcyLDUzMjQ4OjAsNTczNDQ6MTcwMzk0ODgsNjE0NDA6NTUzNjQ4MTI4LDIwNDg6MTcwMzk0ODgsNjE0NDo1NTM2NDgyNTYsMTAyNDA6MTI4LDE0MzM2OjE3MDM5MzYwLDE4NDMyOjI2MjE0NCwyMjUyODo1MzcxMzMxODQsMjY2MjQ6NTUzOTEwMjcyLDMwNzIwOjUzNjg3MDkxMiwzNDgxNjo1MzcxMzMwNTYsMzg5MTI6MCw0MzAwODo1NTM5MTA0MDAsNDcxMDQ6MTY3NzczNDQsNTEyMDA6NTM2ODcxMDQwLDU1Mjk2OjU1MzY0ODEyOCw1OTM5MjoxNjc3NzIxNiw2MzQ4ODoyNjIyNzIsNjU1MzY6MjYyMTQ0LDY5NjMyOjEyOCw3MzcyODo1MzY4NzA5MTIsNzc4MjQ6NTUzNjQ4MjU2LDgxOTIwOjE2Nzc3MzQ0LDg2MDE2OjU1MzkxMDI3Miw5MDExMjo1MzcxMzMxODQsOTQyMDg6MTY3NzcyMTYsOTgzMDQ6NTUzOTEwNDAwLDEwMjQwMDo1NTM2NDgxMjgsMTA2NDk2OjE3MDM5MzYwLDExMDU5Mjo1MzcxMzMwNTYsMTE0Njg4OjI2MjI3MiwxMTg3ODQ6NTM2ODcxMDQwLDEyMjg4MDowLDEyNjk3NjoxNzAzOTQ4OCw2NzU4NDo1NTM2NDgyNTYsNzE2ODA6MTY3NzcyMTYsNzU3NzY6MTcwMzkzNjAsNzk4NzI6NTM3MTMzMTg0LDgzOTY4OjUzNjg3MDkxMiw4ODA2NDoxNzAzOTQ4OCw5MjE2MDoxMjgsOTYyNTY6NTUzOTEwMjcyLDEwMDM1MjoyNjIyNzIsMTA0NDQ4OjU1MzkxMDQwMCwxMDg1NDQ6MCwxMTI2NDA6NTUzNjQ4MTI4LDExNjczNjoxNjc3NzM0NCwxMjA4MzI6MjYyMTQ0LDEyNDkyODo1MzcxMzMwNTYsMTI5MDI0OjUzNjg3MTA0MH0sezA6MjY4NDM1NDY0LDI1Njo4MTkyLDUxMjoyNzA1MzI2MDgsNzY4OjI3MDU0MDgwOCwxMDI0OjI2ODQ0MzY0OCwxMjgwOjIwOTcxNTIsMTUzNjoyMDk3MTYwLDE3OTI6MjY4NDM1NDU2LDIwNDg6MCwyMzA0OjI2ODQ0MzY1NiwyNTYwOjIxMDUzNDQsMjgxNjo4LDMwNzI6MjcwNTMyNjE2LDMzMjg6MjEwNTM1MiwzNTg0OjgyMDAsMzg0MDoyNzA1NDA4MDAsMTI4OjI3MDUzMjYwOCwzODQ6MjcwNTQwODA4LDY0MDo4LDg5NjoyMDk3MTUyLDExNTI6MjEwNTM1MiwxNDA4OjI2ODQzNTQ2NCwxNjY0OjI2ODQ0MzY0OCwxOTIwOjgyMDAsMjE3NjoyMDk3MTYwLDI0MzI6ODE5MiwyNjg4OjI2ODQ0MzY1NiwyOTQ0OjI3MDUzMjYxNiwzMjAwOjAsMzQ1NjoyNzA1NDA4MDAsMzcxMjoyMTA1MzQ0LDM5Njg6MjY4NDM1NDU2LDQwOTY6MjY4NDQzNjQ4LDQzNTI6MjcwNTMyNjE2LDQ2MDg6MjcwNTQwODA4LDQ4NjQ6ODIwMCw1MTIwOjIwOTcxNTIsNTM3NjoyNjg0MzU0NTYsNTYzMjoyNjg0MzU0NjQsNTg4ODoyMTA1MzQ0LDYxNDQ6MjEwNTM1Miw2NDAwOjAsNjY1Njo4LDY5MTI6MjcwNTMyNjA4LDcxNjg6ODE5Miw3NDI0OjI2ODQ0MzY1Niw3NjgwOjI3MDU0MDgwMCw3OTM2OjIwOTcxNjAsNDIyNDo4LDQ0ODA6MjEwNTM0NCw0NzM2OjIwOTcxNTIsNDk5MjoyNjg0MzU0NjQsNTI0ODoyNjg0NDM2NDgsNTUwNDo4MjAwLDU3NjA6MjcwNTQwODA4LDYwMTY6MjcwNTMyNjA4LDYyNzI6MjcwNTQwODAwLDY1Mjg6MjcwNTMyNjE2LDY3ODQ6ODE5Miw3MDQwOjIxMDUzNTIsNzI5NjoyMDk3MTYwLDc1NTI6MCw3ODA4OjI2ODQzNTQ1Niw4MDY0OjI2ODQ0MzY1Nn0sezA6MTA0ODU3NiwxNjozMzU1NTQ1NywzMjoxMDI0LDQ4OjEwNDk2MDEsNjQ6MzQ2MDQwMzMsODA6MCw5NjoxLDExMjozNDYwMzAwOSwxMjg6MzM1NTU0NTYsMTQ0OjEwNDg1NzcsMTYwOjMzNTU0NDMzLDE3NjozNDYwNDAzMiwxOTI6MzQ2MDMwMDgsMjA4OjEwMjUsMjI0OjEwNDk2MDAsMjQwOjMzNTU0NDMyLDg6MzQ2MDMwMDksMjQ6MCw0MDozMzU1NTQ1Nyw1NjozNDYwNDAzMiw3MjoxMDQ4NTc2LDg4OjMzNTU0NDMzLDEwNDozMzU1NDQzMiwxMjA6MTAyNSwxMzY6MTA0OTYwMSwxNTI6MzM1NTU0NTYsMTY4OjM0NjAzMDA4LDE4NDoxMDQ4NTc3LDIwMDoxMDI0LDIxNjozNDYwNDAzMywyMzI6MSwyNDg6MTA0OTYwMCwyNTY6MzM1NTQ0MzIsMjcyOjEwNDg1NzYsMjg4OjMzNTU1NDU3LDMwNDozNDYwMzAwOSwzMjA6MTA0ODU3NywzMzY6MzM1NTU0NTYsMzUyOjM0NjA0MDMyLDM2ODoxMDQ5NjAxLDM4NDoxMDI1LDQwMDozNDYwNDAzMyw0MTY6MTA0OTYwMCw0MzI6MSw0NDg6MCw0NjQ6MzQ2MDMwMDgsNDgwOjMzNTU0NDMzLDQ5NjoxMDI0LDI2NDoxMDQ5NjAwLDI4MDozMzU1NTQ1NywyOTY6MzQ2MDMwMDksMzEyOjEsMzI4OjMzNTU0NDMyLDM0NDoxMDQ4NTc2LDM2MDoxMDI1LDM3NjozNDYwNDAzMiwzOTI6MzM1NTQ0MzMsNDA4OjM0NjAzMDA4LDQyNDowLDQ0MDozNDYwNDAzMyw0NTY6MTA0OTYwMSw0NzI6MTAyNCw0ODg6MzM1NTU0NTYsNTA0OjEwNDg1Nzd9LHswOjEzNDIxOTgwOCwxOjEzMTA3MiwyOjEzNDIxNzcyOCwzOjMyLDQ6MTMxMTA0LDU6MTM0MzUwODgwLDY6MTM0MzUwODQ4LDc6MjA0OCw4OjEzNDM0ODgwMCw5OjEzNDIxOTc3NiwxMDoxMzMxMjAsMTE6MTM0MzQ4ODMyLDEyOjIwODAsMTM6MCwxNDoxMzQyMTc3NjAsMTU6MTMzMTUyLDIxNDc0ODM2NDg6MjA0OCwyMTQ3NDgzNjQ5OjEzNDM1MDg4MCwyMTQ3NDgzNjUwOjEzNDIxOTgwOCwyMTQ3NDgzNjUxOjEzNDIxNzcyOCwyMTQ3NDgzNjUyOjEzNDM0ODgwMCwyMTQ3NDgzNjUzOjEzMzEyMCwyMTQ3NDgzNjU0OjEzMzE1MiwyMTQ3NDgzNjU1OjMyLDIxNDc0ODM2NTY6MTM0MjE3NzYwLDIxNDc0ODM2NTc6MjA4MCwyMTQ3NDgzNjU4OjEzMTEwNCwyMTQ3NDgzNjU5OjEzNDM1MDg0OCwyMTQ3NDgzNjYwOjAsMjE0NzQ4MzY2MToxMzQzNDg4MzIsMjE0NzQ4MzY2MjoxMzQyMTk3NzYsMjE0NzQ4MzY2MzoxMzEwNzIsMTY6MTMzMTUyLDE3OjEzNDM1MDg0OCwxODozMiwxOToyMDQ4LDIwOjEzNDIxOTc3NiwyMToxMzQyMTc3NjAsMjI6MTM0MzQ4ODMyLDIzOjEzMTA3MiwyNDowLDI1OjEzMTEwNCwyNjoxMzQzNDg4MDAsMjc6MTM0MjE5ODA4LDI4OjEzNDM1MDg4MCwyOToxMzMxMjAsMzA6MjA4MCwzMToxMzQyMTc3MjgsMjE0NzQ4MzY2NDoxMzEwNzIsMjE0NzQ4MzY2NToyMDQ4LDIxNDc0ODM2NjY6MTM0MzQ4ODMyLDIxNDc0ODM2Njc6MTMzMTUyLDIxNDc0ODM2Njg6MzIsMjE0NzQ4MzY2OToxMzQzNDg4MDAsMjE0NzQ4MzY3MDoxMzQyMTc3MjgsMjE0NzQ4MzY3MToxMzQyMTk4MDgsMjE0NzQ4MzY3MjoxMzQzNTA4ODAsMjE0NzQ4MzY3MzoxMzQyMTc3NjAsMjE0NzQ4MzY3NDoxMzQyMTk3NzYsMjE0NzQ4MzY3NTowLDIxNDc0ODM2NzY6MTMzMTIwLDIxNDc0ODM2Nzc6MjA4MCwyMTQ3NDgzNjc4OjEzMTEwNCwyMTQ3NDgzNjc5OjEzNDM1MDg0OH1dLGw9WzQxNjA3NDk1NjksNTI4NDgyMzA0LDMzMDMwMTQ0LDIwNjQzODQsMTI5MDI0LDgwNjQsNTA0LDIxNDc0ODM2NzldLGY9by5ERVM9aS5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuX2tleSx0PWUud29yZHMsbj1bXSxyPTA7cjw1NjtyKyspe3ZhciBpPWFbcl0tMTtuW3JdPXRbaT4+PjVdPj4+MzEtaSUzMiYxfWZvcih2YXIgbz10aGlzLl9zdWJLZXlzPVtdLGM9MDtjPDE2O2MrKyl7dmFyIGw9b1tjXT1bXSxmPXVbY107Zm9yKHI9MDtyPDI0O3IrKylsW3IvNnwwXXw9blsoc1tyXS0xK2YpJTI4XTw8MzEtciU2LGxbNCsoci82fDApXXw9blsyOCsoc1tyKzI0XS0xK2YpJTI4XTw8MzEtciU2O2xbMF09bFswXTw8MXxsWzBdPj4+MzE7Zm9yKHI9MTtyPDc7cisrKWxbcl09bFtyXT4+PjQqKHItMSkrMztsWzddPWxbN108PDV8bFs3XT4+PjI3fXZhciBkPXRoaXMuX2ludlN1YktleXM9W107Zm9yKHI9MDtyPDE2O3IrKylkW3JdPW9bMTUtcl19LGVuY3J5cHRCbG9jazpmdW5jdGlvbihlLHQpe3RoaXMuX2RvQ3J5cHRCbG9jayhlLHQsdGhpcy5fc3ViS2V5cyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbihlLHQpe3RoaXMuX2RvQ3J5cHRCbG9jayhlLHQsdGhpcy5faW52U3ViS2V5cyl9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24oZSx0LG4pe3RoaXMuX2xCbG9jaz1lW3RdLHRoaXMuX3JCbG9jaz1lW3QrMV0sZC5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLGQuY2FsbCh0aGlzLDE2LDY1NTM1KSxwLmNhbGwodGhpcywyLDg1ODk5MzQ1OSkscC5jYWxsKHRoaXMsOCwxNjcxMTkzNSksZC5jYWxsKHRoaXMsMSwxNDMxNjU1NzY1KTtmb3IodmFyIHI9MDtyPDE2O3IrKyl7Zm9yKHZhciBpPW5bcl0sbz10aGlzLl9sQmxvY2ssYT10aGlzLl9yQmxvY2sscz0wLHU9MDt1PDg7dSsrKXN8PWNbdV1bKChhXmlbdV0pJmxbdV0pPj4+MF07dGhpcy5fbEJsb2NrPWEsdGhpcy5fckJsb2NrPW9ec312YXIgZj10aGlzLl9sQmxvY2s7dGhpcy5fbEJsb2NrPXRoaXMuX3JCbG9jayx0aGlzLl9yQmxvY2s9ZixkLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpLHAuY2FsbCh0aGlzLDgsMTY3MTE5MzUpLHAuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxkLmNhbGwodGhpcywxNiw2NTUzNSksZC5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLGVbdF09dGhpcy5fbEJsb2NrLGVbdCsxXT10aGlzLl9yQmxvY2t9LGtleVNpemU6MixpdlNpemU6MixibG9ja1NpemU6Mn0pO2Z1bmN0aW9uIGQoZSx0KXt2YXIgbj0odGhpcy5fbEJsb2NrPj4+ZV50aGlzLl9yQmxvY2spJnQ7dGhpcy5fckJsb2NrXj1uLHRoaXMuX2xCbG9ja149bjw8ZX1mdW5jdGlvbiBwKGUsdCl7dmFyIG49KHRoaXMuX3JCbG9jaz4+PmVedGhpcy5fbEJsb2NrKSZ0O3RoaXMuX2xCbG9ja149bix0aGlzLl9yQmxvY2tePW48PGV9dC5ERVM9aS5fY3JlYXRlSGVscGVyKGYpO3ZhciBoPW8uVHJpcGxlREVTPWkuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2tleSx0PWUud29yZHM7dGhpcy5fZGVzMT1mLmNyZWF0ZUVuY3J5cHRvcihyLmNyZWF0ZSh0LnNsaWNlKDAsMikpKSx0aGlzLl9kZXMyPWYuY3JlYXRlRW5jcnlwdG9yKHIuY3JlYXRlKHQuc2xpY2UoMiw0KSkpLHRoaXMuX2RlczM9Zi5jcmVhdGVFbmNyeXB0b3Ioci5jcmVhdGUodC5zbGljZSg0LDYpKSl9LGVuY3J5cHRCbG9jazpmdW5jdGlvbihlLHQpe3RoaXMuX2RlczEuZW5jcnlwdEJsb2NrKGUsdCksdGhpcy5fZGVzMi5kZWNyeXB0QmxvY2soZSx0KSx0aGlzLl9kZXMzLmVuY3J5cHRCbG9jayhlLHQpfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24oZSx0KXt0aGlzLl9kZXMzLmRlY3J5cHRCbG9jayhlLHQpLHRoaXMuX2RlczIuZW5jcnlwdEJsb2NrKGUsdCksdGhpcy5fZGVzMS5kZWNyeXB0QmxvY2soZSx0KX0sa2V5U2l6ZTo2LGl2U2l6ZToyLGJsb2NrU2l6ZToyfSk7dC5UcmlwbGVERVM9aS5fY3JlYXRlSGVscGVyKGgpfSgpLGUuVHJpcGxlREVTfSkpfSxhODE3OmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIzOGJhIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFkLkFuc2lYOTIzPXtwYWQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNpZ0J5dGVzLHI9NCp0LGk9ci1uJXIsbz1uK2ktMTtlLmNsYW1wKCksZS53b3Jkc1tvPj4+Ml18PWk8PDI0LW8lNCo4LGUuc2lnQnl0ZXMrPWl9LHVucGFkOmZ1bmN0aW9uKGUpe3ZhciB0PTI1NSZlLndvcmRzW2Uuc2lnQnl0ZXMtMT4+PjJdO2Uuc2lnQnl0ZXMtPXR9fSxlLnBhZC5BbnNpeDkyM30pKX0sYThjZTpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQscil7ZS5leHBvcnRzPXIobigiMjFiZiIpKX0pKDAsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUsbj10LmxpYixyPW4uV29yZEFycmF5LGk9dC5lbmM7aS5VdGYxNj1pLlV0ZjE2QkU9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS53b3JkcyxuPWUuc2lnQnl0ZXMscj1bXSxpPTA7aTxuO2krPTIpe3ZhciBvPXRbaT4+PjJdPj4+MTYtaSU0KjgmNjU1MzU7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiByLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgsbj1bXSxpPTA7aTx0O2krKyluW2k+Pj4xXXw9ZS5jaGFyQ29kZUF0KGkpPDwxNi1pJTIqMTY7cmV0dXJuIHIuY3JlYXRlKG4sMip0KX19O2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGU8PDgmNDI3ODI1NTM2MHxlPj4+OCYxNjcxMTkzNX1pLlV0ZjE2TEU9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS53b3JkcyxuPWUuc2lnQnl0ZXMscj1bXSxpPTA7aTxuO2krPTIpe3ZhciBhPW8odFtpPj4+Ml0+Pj4xNi1pJTQqOCY2NTUzNSk7ci5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYSkpfXJldHVybiByLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgsbj1bXSxpPTA7aTx0O2krKyluW2k+Pj4xXXw9byhlLmNoYXJDb2RlQXQoaSk8PDE2LWklMioxNik7cmV0dXJuIHIuY3JlYXRlKG4sMip0KX19fSgpLGUuZW5jLlV0ZjE2fSkpfSxhYWVmOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIzOGJhIikpfSkoMCwoZnVuY3Rpb24oZSl7Ci8qKiBAcHJlc2VydmUKCSAqIENvdW50ZXIgYmxvY2sgbW9kZSBjb21wYXRpYmxlIHdpdGggIERyIEJyaWFuIEdsYWRtYW4gZmlsZWVuYy5jCgkgKiBkZXJpdmVkIGZyb20gQ3J5cHRvSlMubW9kZS5DVFIKCSAqIEphbiBIcnVieSBqaHJ1Ynkud2ViQGdtYWlsLmNvbQoJICovCnJldHVybiBlLm1vZGUuQ1RSR2xhZG1hbj1mdW5jdGlvbigpe3ZhciB0PWUubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtmdW5jdGlvbiBuKGUpe2lmKDI1NT09PShlPj4yNCYyNTUpKXt2YXIgdD1lPj4xNiYyNTUsbj1lPj44JjI1NSxyPTI1NSZlOzI1NT09PXQ/KHQ9MCwyNTU9PT1uPyhuPTAsMjU1PT09cj9yPTA6KytyKTorK24pOisrdCxlPTAsZSs9dDw8MTYsZSs9bjw8OCxlKz1yfWVsc2UgZSs9MTw8MjQ7cmV0dXJuIGV9ZnVuY3Rpb24gcihlKXtyZXR1cm4gMD09PShlWzBdPW4oZVswXSkpJiYoZVsxXT1uKGVbMV0pKSxlfXZhciBpPXQuRW5jcnlwdG9yPXQuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9jaXBoZXIsaT1uLmJsb2NrU2l6ZSxvPXRoaXMuX2l2LGE9dGhpcy5fY291bnRlcjtvJiYoYT10aGlzLl9jb3VudGVyPW8uc2xpY2UoMCksdGhpcy5faXY9dm9pZCAwKSxyKGEpO3ZhciBzPWEuc2xpY2UoMCk7bi5lbmNyeXB0QmxvY2socywwKTtmb3IodmFyIHU9MDt1PGk7dSsrKWVbdCt1XV49c1t1XX19KTtyZXR1cm4gdC5EZWNyeXB0b3I9aSx0fSgpLGUubW9kZS5DVFJHbGFkbWFufSkpfSxhZWIxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG87KGZ1bmN0aW9uKG4sYSl7aT1bXSxyPWEsbz0iZnVuY3Rpb24iPT09dHlwZW9mIHI/ci5hcHBseSh0LGkpOnIsdm9pZCAwPT09b3x8KGUuZXhwb3J0cz1vKX0pKDAsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxuLHIpe3ZhciBpLG8sYT13aW5kb3cscz0iYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIix1PXJ8fHMsYz10LGw9IW4mJiFyJiZjLGY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpLGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKX0scD1hLkJsb2J8fGEuTW96QmxvYnx8YS5XZWJLaXRCbG9ifHxkLGg9bnx8ImRvd25sb2FkIjtpZihwPXAuY2FsbD9wLmJpbmQoYSk6QmxvYiwidHJ1ZSI9PT1TdHJpbmcodGhpcykmJihjPVtjLHVdLHU9Y1swXSxjPWNbMV0pLGwmJmwubGVuZ3RoPDIwNDgmJihoPWwuc3BsaXQoIi8iKS5wb3AoKS5zcGxpdCgiPyIpWzBdLGYuaHJlZj1sLC0xIT09Zi5ocmVmLmluZGV4T2YobCkpKXt2YXIgdj1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHYub3BlbigiR0VUIixsLCEwKSx2LnJlc3BvbnNlVHlwZT0iYmxvYiIsdi5vbmxvYWQ9ZnVuY3Rpb24odCl7ZSh0LnRhcmdldC5yZXNwb25zZSxoLHMpfSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3Yuc2VuZCgpfSksMCksdn1pZigvXmRhdGE6KFtcdystXStcL1tcdysuLV0rKT9bLDtdLy50ZXN0KGMpKXtpZighKGMubGVuZ3RoPjIwOTYxMDMuNDI0JiZwIT09ZCkpcmV0dXJuIG5hdmlnYXRvci5tc1NhdmVCbG9iP25hdmlnYXRvci5tc1NhdmVCbG9iKHcoYyksaCk6YihjKTtjPXcoYyksdT1jLnR5cGV8fHN9ZWxzZSBpZigvKFtceDgwLVx4ZmZdKS8udGVzdChjKSl7dmFyIG09MCx5PW5ldyBVaW50OEFycmF5KGMubGVuZ3RoKSxnPXkubGVuZ3RoO2ZvcihtO208ZzsrK20peVttXT1jLmNoYXJDb2RlQXQobSk7Yz1uZXcgcChbeV0se3R5cGU6dX0pfWZ1bmN0aW9uIHcoZSl7dmFyIHQ9ZS5zcGxpdCgvWzo7LF0vKSxuPXRbMV0scj0iYmFzZTY0Ij09dFsyXT9hdG9iOmRlY29kZVVSSUNvbXBvbmVudCxpPXIodC5wb3AoKSksbz1pLmxlbmd0aCxhPTAscz1uZXcgVWludDhBcnJheShvKTtmb3IoYTthPG87KythKXNbYV09aS5jaGFyQ29kZUF0KGEpO3JldHVybiBuZXcgcChbc10se3R5cGU6bn0pfWZ1bmN0aW9uIGIoZSx0KXtpZigiZG93bmxvYWQiaW4gZilyZXR1cm4gZi5ocmVmPWUsZi5zZXRBdHRyaWJ1dGUoImRvd25sb2FkIixoKSxmLmNsYXNzTmFtZT0iZG93bmxvYWQtanMtbGluayIsZi5pbm5lckhUTUw9ImRvd25sb2FkaW5nLi4uIixmLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZiksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtmLmNsaWNrKCksZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChmKSwhMD09PXQmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7YS5VUkwucmV2b2tlT2JqZWN0VVJMKGYuaHJlZil9KSwyNTApfSksNjYpLCEwO2lmKC8oVmVyc2lvbilcLyhcZCspXC4oXGQrKSg/OlwuKFxkKykpPy4qU2FmYXJpXC8vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpcmV0dXJuL15kYXRhOi8udGVzdChlKSYmKGU9ImRhdGE6IitlLnJlcGxhY2UoL15kYXRhOihbXHdcL1wtXCtdKykvLHMpKSx3aW5kb3cub3BlbihlKXx8Y29uZmlybSgiRGlzcGxheWluZyBOZXcgRG9jdW1lbnRcblxuVXNlIFNhdmUgQXMuLi4gdG8gZG93bmxvYWQsIHRoZW4gY2xpY2sgYmFjayB0byByZXR1cm4gdG8gdGhpcyBwYWdlLiIpJiYobG9jYXRpb24uaHJlZj1lKSwhMDt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pLCF0JiYvXmRhdGE6Ly50ZXN0KGUpJiYoZT0iZGF0YToiK2UucmVwbGFjZSgvXmRhdGE6KFtcd1wvXC1cK10rKS8scykpLG4uc3JjPWUsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG4pfSksMzMzKX1pZihpPWMgaW5zdGFuY2VvZiBwP2M6bmV3IHAoW2NdLHt0eXBlOnV9KSxuYXZpZ2F0b3IubXNTYXZlQmxvYilyZXR1cm4gbmF2aWdhdG9yLm1zU2F2ZUJsb2IoaSxoKTtpZihhLlVSTCliKGEuVVJMLmNyZWF0ZU9iamVjdFVSTChpKSwhMCk7ZWxzZXtpZigic3RyaW5nIj09PXR5cGVvZiBpfHxpLmNvbnN0cnVjdG9yPT09ZCl0cnl7cmV0dXJuIGIoImRhdGE6Iit1KyI7YmFzZTY0LCIrYS5idG9hKGkpKX1jYXRjaChfKXtyZXR1cm4gYigiZGF0YToiK3UrIiwiK2VuY29kZVVSSUNvbXBvbmVudChpKSl9bz1uZXcgRmlsZVJlYWRlcixvLm9ubG9hZD1mdW5jdGlvbihlKXtiKHRoaXMucmVzdWx0KX0sby5yZWFkQXNEYXRhVVJMKGkpfXJldHVybiEwfX0pKX0sYjYzOTpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXsKLyohCiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLgogKgogKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cDovL2Zlcm9zcy5vcmc+CiAqIEBsaWNlbnNlICBNSVQKICovCnZhciByPW4oIjFmYjUiKSxpPW4oIjkxNTIiKSxvPW4oImUzZGIiKTtmdW5jdGlvbiBhKCl7dHJ5e3ZhciBlPW5ldyBVaW50OEFycmF5KDEpO3JldHVybiBlLl9fcHJvdG9fXz17X19wcm90b19fOlVpbnQ4QXJyYXkucHJvdG90eXBlLGZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19LDQyPT09ZS5mb28oKSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLnN1YmFycmF5JiYwPT09ZS5zdWJhcnJheSgxLDEpLmJ5dGVMZW5ndGh9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIHMoKXtyZXR1cm4gYy5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiB1KGUsdCl7aWYocygpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIGMuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSxlLl9fcHJvdG9fXz1jLnByb3RvdHlwZSk6KG51bGw9PT1lJiYoZT1uZXcgYyh0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBjKGUsdCxuKXtpZighYy5UWVBFRF9BUlJBWV9TVVBQT1JUJiYhKHRoaXMgaW5zdGFuY2VvZiBjKSlyZXR1cm4gbmV3IGMoZSx0LG4pO2lmKCJudW1iZXIiPT09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBwKHRoaXMsZSl9cmV0dXJuIGwodGhpcyxlLHQsbil9ZnVuY3Rpb24gbChlLHQsbixyKXtpZigibnVtYmVyIj09PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP20oZSx0LG4scik6InN0cmluZyI9PT10eXBlb2YgdD9oKGUsdCxuKTp5KGUsdCl9ZnVuY3Rpb24gZihlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiBkKGUsdCxuLHIpe3JldHVybiBmKHQpLHQ8PTA/dShlLHQpOnZvaWQgMCE9PW4/InN0cmluZyI9PT10eXBlb2Ygcj91KGUsdCkuZmlsbChuLHIpOnUoZSx0KS5maWxsKG4pOnUoZSx0KX1mdW5jdGlvbiBwKGUsdCl7aWYoZih0KSxlPXUoZSx0PDA/MDowfGcodCkpLCFjLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKHZhciBuPTA7bjx0OysrbillW25dPTA7cmV0dXJuIGV9ZnVuY3Rpb24gaChlLHQsbil7aWYoInN0cmluZyI9PT10eXBlb2YgbiYmIiIhPT1ufHwobj0idXRmOCIpLCFjLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIHI9MHxiKHQsbik7ZT11KGUscik7dmFyIGk9ZS53cml0ZSh0LG4pO3JldHVybiBpIT09ciYmKGU9ZS5zbGljZSgwLGkpKSxlfWZ1bmN0aW9uIHYoZSx0KXt2YXIgbj10Lmxlbmd0aDwwPzA6MHxnKHQubGVuZ3RoKTtlPXUoZSxuKTtmb3IodmFyIHI9MDtyPG47cis9MSllW3JdPTI1NSZ0W3JdO3JldHVybiBlfWZ1bmN0aW9uIG0oZSx0LG4scil7aWYodC5ieXRlTGVuZ3RoLG48MHx8dC5ieXRlTGVuZ3RoPG4pdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8bisocnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTtyZXR1cm4gdD12b2lkIDA9PT1uJiZ2b2lkIDA9PT1yP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PXI/bmV3IFVpbnQ4QXJyYXkodCxuKTpuZXcgVWludDhBcnJheSh0LG4sciksYy5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQsZS5fX3Byb3RvX189Yy5wcm90b3R5cGUpOmU9dihlLHQpLGV9ZnVuY3Rpb24geShlLHQpe2lmKGMuaXNCdWZmZXIodCkpe3ZhciBuPTB8Zyh0Lmxlbmd0aCk7cmV0dXJuIGU9dShlLG4pLDA9PT1lLmxlbmd0aD9lOih0LmNvcHkoZSwwLDAsbiksZSl9aWYodCl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgQXJyYXlCdWZmZXImJnQuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fCJsZW5ndGgiaW4gdClyZXR1cm4ibnVtYmVyIiE9PXR5cGVvZiB0Lmxlbmd0aHx8dGUodC5sZW5ndGgpP3UoZSwwKTp2KGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJm8odC5kYXRhKSlyZXR1cm4gdihlLHQuZGF0YSl9dGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LiIpfWZ1bmN0aW9uIGcoZSl7aWYoZT49cygpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitzKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIHcoZSl7cmV0dXJuK2UhPWUmJihlPTApLGMuYWxsb2MoK2UpfWZ1bmN0aW9uIGIoZSx0KXtpZihjLmlzQnVmZmVyKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09PXR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcmJihBcnJheUJ1ZmZlci5pc1ZpZXcoZSl8fGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpcmV0dXJuIGUuYnl0ZUxlbmd0aDsic3RyaW5nIiE9PXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgbj1lLmxlbmd0aDtpZigwPT09bilyZXR1cm4gMDtmb3IodmFyIHI9ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gbjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBLKGUpLmxlbmd0aDtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIDIqbjtjYXNlImhleCI6cmV0dXJuIG4+Pj4xO2Nhc2UiYmFzZTY0IjpyZXR1cm4gWihlKS5sZW5ndGg7ZGVmYXVsdDppZihyKXJldHVybiBLKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLHI9ITB9fWZ1bmN0aW9uIF8oZSx0LG4pe3ZhciByPSExO2lmKCh2b2lkIDA9PT10fHx0PDApJiYodD0wKSx0PnRoaXMubGVuZ3RoKXJldHVybiIiO2lmKCh2b2lkIDA9PT1ufHxuPnRoaXMubGVuZ3RoKSYmKG49dGhpcy5sZW5ndGgpLG48PTApcmV0dXJuIiI7aWYobj4+Pj0wLHQ+Pj49MCxuPD10KXJldHVybiIiO2V8fChlPSJ1dGY4Iik7d2hpbGUoMSlzd2l0Y2goZSl7Y2FzZSJoZXgiOnJldHVybiBQKHRoaXMsdCxuKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBqKHRoaXMsdCxuKTtjYXNlImFzY2lpIjpyZXR1cm4gUih0aGlzLHQsbik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gTCh0aGlzLHQsbik7Y2FzZSJiYXNlNjQiOnJldHVybiBEKHRoaXMsdCxuKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIE0odGhpcyx0LG4pO2RlZmF1bHQ6aWYocil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO2U9KGUrIiIpLnRvTG93ZXJDYXNlKCkscj0hMH19ZnVuY3Rpb24geChlLHQsbil7dmFyIHI9ZVt0XTtlW3RdPWVbbl0sZVtuXT1yfWZ1bmN0aW9uIGsoZSx0LG4scixpKXtpZigwPT09ZS5sZW5ndGgpcmV0dXJuLTE7aWYoInN0cmluZyI9PT10eXBlb2Ygbj8ocj1uLG49MCk6bj4yMTQ3NDgzNjQ3P249MjE0NzQ4MzY0NzpuPC0yMTQ3NDgzNjQ4JiYobj0tMjE0NzQ4MzY0OCksbj0rbixpc05hTihuKSYmKG49aT8wOmUubGVuZ3RoLTEpLG48MCYmKG49ZS5sZW5ndGgrbiksbj49ZS5sZW5ndGgpe2lmKGkpcmV0dXJuLTE7bj1lLmxlbmd0aC0xfWVsc2UgaWYobjwwKXtpZighaSlyZXR1cm4tMTtuPTB9aWYoInN0cmluZyI9PT10eXBlb2YgdCYmKHQ9Yy5mcm9tKHQscikpLGMuaXNCdWZmZXIodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTpDKGUsdCxuLHIsaSk7aWYoIm51bWJlciI9PT10eXBlb2YgdClyZXR1cm4gdCY9MjU1LGMuVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2k/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGUsdCxuKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGUsdCxuKTpDKGUsW3RdLG4scixpKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBDKGUsdCxuLHIsaSl7dmFyIG8sYT0xLHM9ZS5sZW5ndGgsdT10Lmxlbmd0aDtpZih2b2lkIDAhPT1yJiYocj1TdHJpbmcocikudG9Mb3dlckNhc2UoKSwidWNzMiI9PT1yfHwidWNzLTIiPT09cnx8InV0ZjE2bGUiPT09cnx8InV0Zi0xNmxlIj09PXIpKXtpZihlLmxlbmd0aDwyfHx0Lmxlbmd0aDwyKXJldHVybi0xO2E9MixzLz0yLHUvPTIsbi89Mn1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIDE9PT1hP2VbdF06ZS5yZWFkVUludDE2QkUodCphKX1pZihpKXt2YXIgbD0tMTtmb3Iobz1uO288cztvKyspaWYoYyhlLG8pPT09Yyh0LC0xPT09bD8wOm8tbCkpe2lmKC0xPT09bCYmKGw9byksby1sKzE9PT11KXJldHVybiBsKmF9ZWxzZS0xIT09bCYmKG8tPW8tbCksbD0tMX1lbHNlIGZvcihuK3U+cyYmKG49cy11KSxvPW47bz49MDtvLS0pe2Zvcih2YXIgZj0hMCxkPTA7ZDx1O2QrKylpZihjKGUsbytkKSE9PWModCxkKSl7Zj0hMTticmVha31pZihmKXJldHVybiBvfXJldHVybi0xfWZ1bmN0aW9uIEEoZSx0LG4scil7bj1OdW1iZXIobil8fDA7dmFyIGk9ZS5sZW5ndGgtbjtyPyhyPU51bWJlcihyKSxyPmkmJihyPWkpKTpyPWk7dmFyIG89dC5sZW5ndGg7aWYobyUyIT09MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmciKTtyPm8vMiYmKHI9by8yKTtmb3IodmFyIGE9MDthPHI7KythKXt2YXIgcz1wYXJzZUludCh0LnN1YnN0cigyKmEsMiksMTYpO2lmKGlzTmFOKHMpKXJldHVybiBhO2VbbithXT1zfXJldHVybiBhfWZ1bmN0aW9uIFMoZSx0LG4scil7cmV0dXJuIGVlKEsodCxlLmxlbmd0aC1uKSxlLG4scil9ZnVuY3Rpb24gRShlLHQsbixyKXtyZXR1cm4gZWUoSih0KSxlLG4scil9ZnVuY3Rpb24gVChlLHQsbixyKXtyZXR1cm4gRShlLHQsbixyKX1mdW5jdGlvbiBPKGUsdCxuLHIpe3JldHVybiBlZShaKHQpLGUsbixyKX1mdW5jdGlvbiBCKGUsdCxuLHIpe3JldHVybiBlZShRKHQsZS5sZW5ndGgtbiksZSxuLHIpfWZ1bmN0aW9uIEQoZSx0LG4pe3JldHVybiAwPT09dCYmbj09PWUubGVuZ3RoP3IuZnJvbUJ5dGVBcnJheShlKTpyLmZyb21CeXRlQXJyYXkoZS5zbGljZSh0LG4pKX1mdW5jdGlvbiBqKGUsdCxuKXtuPU1hdGgubWluKGUubGVuZ3RoLG4pO3ZhciByPVtdLGk9dDt3aGlsZShpPG4pe3ZhciBvLGEscyx1LGM9ZVtpXSxsPW51bGwsZj1jPjIzOT80OmM+MjIzPzM6Yz4xOTE/MjoxO2lmKGkrZjw9bilzd2l0Y2goZil7Y2FzZSAxOmM8MTI4JiYobD1jKTticmVhaztjYXNlIDI6bz1lW2krMV0sMTI4PT09KDE5MiZvKSYmKHU9KDMxJmMpPDw2fDYzJm8sdT4xMjcmJihsPXUpKTticmVhaztjYXNlIDM6bz1lW2krMV0sYT1lW2krMl0sMTI4PT09KDE5MiZvKSYmMTI4PT09KDE5MiZhKSYmKHU9KDE1JmMpPDwxMnwoNjMmbyk8PDZ8NjMmYSx1PjIwNDcmJih1PDU1Mjk2fHx1PjU3MzQzKSYmKGw9dSkpO2JyZWFrO2Nhc2UgNDpvPWVbaSsxXSxhPWVbaSsyXSxzPWVbaSszXSwxMjg9PT0oMTkyJm8pJiYxMjg9PT0oMTkyJmEpJiYxMjg9PT0oMTkyJnMpJiYodT0oMTUmYyk8PDE4fCg2MyZvKTw8MTJ8KDYzJmEpPDw2fDYzJnMsdT42NTUzNSYmdTwxMTE0MTEyJiYobD11KSl9bnVsbD09PWw/KGw9NjU1MzMsZj0xKTpsPjY1NTM1JiYobC09NjU1MzYsci5wdXNoKGw+Pj4xMCYxMDIzfDU1Mjk2KSxsPTU2MzIwfDEwMjMmbCksci5wdXNoKGwpLGkrPWZ9cmV0dXJuICQocil9dC5CdWZmZXI9Yyx0LlNsb3dCdWZmZXI9dyx0LklOU1BFQ1RfTUFYX0JZVEVTPTUwLGMuVFlQRURfQVJSQVlfU1VQUE9SVD12b2lkIDAhPT1lLlRZUEVEX0FSUkFZX1NVUFBPUlQ/ZS5UWVBFRF9BUlJBWV9TVVBQT1JUOmEoKSx0LmtNYXhMZW5ndGg9cygpLGMucG9vbFNpemU9ODE5MixjLl9hdWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz1jLnByb3RvdHlwZSxlfSxjLmZyb209ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsKG51bGwsZSx0LG4pfSxjLlRZUEVEX0FSUkFZX1NVUFBPUlQmJihjLnByb3RvdHlwZS5fX3Byb3RvX189VWludDhBcnJheS5wcm90b3R5cGUsYy5fX3Byb3RvX189VWludDhBcnJheSwidW5kZWZpbmVkIiE9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5zcGVjaWVzJiZjW1N5bWJvbC5zcGVjaWVzXT09PWMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLFN5bWJvbC5zcGVjaWVzLHt2YWx1ZTpudWxsLGNvbmZpZ3VyYWJsZTohMH0pKSxjLmFsbG9jPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZChudWxsLGUsdCxuKX0sYy5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gcChudWxsLGUpfSxjLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gcChudWxsLGUpfSxjLmlzQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX0sYy5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIWMuaXNCdWZmZXIoZSl8fCFjLmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMiKTtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIG49ZS5sZW5ndGgscj10Lmxlbmd0aCxpPTAsbz1NYXRoLm1pbihuLHIpO2k8bzsrK2kpaWYoZVtpXSE9PXRbaV0pe249ZVtpXSxyPXRbaV07YnJlYWt9cmV0dXJuIG48cj8tMTpyPG4/MTowfSxjLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LGMuY29uY2F0PWZ1bmN0aW9uKGUsdCl7aWYoIW8oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gYy5hbGxvYygwKTt2YXIgbjtpZih2b2lkIDA9PT10KWZvcih0PTAsbj0wO248ZS5sZW5ndGg7KytuKXQrPWVbbl0ubGVuZ3RoO3ZhciByPWMuYWxsb2NVbnNhZmUodCksaT0wO2ZvcihuPTA7bjxlLmxlbmd0aDsrK24pe3ZhciBhPWVbbl07aWYoIWMuaXNCdWZmZXIoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2EuY29weShyLGkpLGkrPWEubGVuZ3RofXJldHVybiByfSxjLmJ5dGVMZW5ndGg9YixjLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsYy5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSUyIT09MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9Mil4KHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxjLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTQhPT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KXgodGhpcyx0LHQrMykseCh0aGlzLHQrMSx0KzIpO3JldHVybiB0aGlzfSxjLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTghPT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz04KXgodGhpcyx0LHQrNykseCh0aGlzLHQrMSx0KzYpLHgodGhpcyx0KzIsdCs1KSx4KHRoaXMsdCszLHQrNCk7cmV0dXJuIHRoaXN9LGMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9MHx0aGlzLmxlbmd0aDtyZXR1cm4gMD09PWU/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/aih0aGlzLDAsZSk6Xy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGMucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihlKXtpZighYy5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09Yy5jb21wYXJlKHRoaXMsZSl9LGMucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgZT0iIixuPXQuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJihlPXRoaXMudG9TdHJpbmcoImhleCIsMCxuKS5tYXRjaCgvLnsyfS9nKS5qb2luKCIgIiksdGhpcy5sZW5ndGg+biYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxjLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxuLHIsaSl7aWYoIWMuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO2lmKHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PW4mJihuPWU/ZS5sZW5ndGg6MCksdm9pZCAwPT09ciYmKHI9MCksdm9pZCAwPT09aSYmKGk9dGhpcy5sZW5ndGgpLHQ8MHx8bj5lLmxlbmd0aHx8cjwwfHxpPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihyPj1pJiZ0Pj1uKXJldHVybiAwO2lmKHI+PWkpcmV0dXJuLTE7aWYodD49bilyZXR1cm4gMTtpZih0Pj4+PTAsbj4+Pj0wLHI+Pj49MCxpPj4+PTAsdGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBvPWktcixhPW4tdCxzPU1hdGgubWluKG8sYSksdT10aGlzLnNsaWNlKHIsaSksbD1lLnNsaWNlKHQsbiksZj0wO2Y8czsrK2YpaWYodVtmXSE9PWxbZl0pe289dVtmXSxhPWxbZl07YnJlYWt9cmV0dXJuIG88YT8tMTphPG8/MTowfSxjLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihlLHQsbil7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoZSx0LG4pfSxjLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gayh0aGlzLGUsdCxuLCEwKX0sYy5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBrKHRoaXMsZSx0LG4sITEpfSxjLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQsbixyKXtpZih2b2lkIDA9PT10KXI9InV0ZjgiLG49dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09biYmInN0cmluZyI9PT10eXBlb2YgdClyPXQsbj10aGlzLmxlbmd0aCx0PTA7ZWxzZXtpZighaXNGaW5pdGUodCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3R8PTAsaXNGaW5pdGUobik/KG58PTAsdm9pZCAwPT09ciYmKHI9InV0ZjgiKSk6KHI9bixuPXZvaWQgMCl9dmFyIGk9dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09bnx8bj5pKSYmKG49aSksZS5sZW5ndGg+MCYmKG48MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtyfHwocj0idXRmOCIpO2Zvcih2YXIgbz0hMTs7KXN3aXRjaChyKXtjYXNlImhleCI6cmV0dXJuIEEodGhpcyxlLHQsbik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gUyh0aGlzLGUsdCxuKTtjYXNlImFzY2lpIjpyZXR1cm4gRSh0aGlzLGUsdCxuKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBUKHRoaXMsZSx0LG4pO2Nhc2UiYmFzZTY0IjpyZXR1cm4gTyh0aGlzLGUsdCxuKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIEIodGhpcyxlLHQsbik7ZGVmYXVsdDppZihvKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrcik7cj0oIiIrcikudG9Mb3dlckNhc2UoKSxvPSEwfX0sYy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTt2YXIgTj00MDk2O2Z1bmN0aW9uICQoZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9TilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZSk7dmFyIG49IiIscj0wO3doaWxlKHI8dCluKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlLnNsaWNlKHIscis9TikpO3JldHVybiBufWZ1bmN0aW9uIFIoZSx0LG4pe3ZhciByPSIiO249TWF0aC5taW4oZS5sZW5ndGgsbik7Zm9yKHZhciBpPXQ7aTxuOysraSlyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2ldKTtyZXR1cm4gcn1mdW5jdGlvbiBMKGUsdCxuKXt2YXIgcj0iIjtuPU1hdGgubWluKGUubGVuZ3RoLG4pO2Zvcih2YXIgaT10O2k8bjsrK2kpcis9U3RyaW5nLmZyb21DaGFyQ29kZShlW2ldKTtyZXR1cm4gcn1mdW5jdGlvbiBQKGUsdCxuKXt2YXIgcj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghbnx8bjwwfHxuPnIpJiYobj1yKTtmb3IodmFyIGk9IiIsbz10O288bjsrK28paSs9RyhlW29dKTtyZXR1cm4gaX1mdW5jdGlvbiBNKGUsdCxuKXtmb3IodmFyIHI9ZS5zbGljZSh0LG4pLGk9IiIsbz0wO288ci5sZW5ndGg7bys9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHJbb10rMjU2KnJbbysxXSk7cmV0dXJuIGl9ZnVuY3Rpb24gSShlLHQsbil7aWYoZSUxIT09MHx8ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihlK3Q+bil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIEgoZSx0LG4scixpLG8pe2lmKCFjLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0Pml8fHQ8byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYobityPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiB6KGUsdCxuLHIpe3Q8MCYmKHQ9NjU1MzUrdCsxKTtmb3IodmFyIGk9MCxvPU1hdGgubWluKGUubGVuZ3RoLW4sMik7aTxvOysraSllW24raV09KHQmMjU1PDw4KihyP2k6MS1pKSk+Pj44KihyP2k6MS1pKX1mdW5jdGlvbiBGKGUsdCxuLHIpe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgaT0wLG89TWF0aC5taW4oZS5sZW5ndGgtbiw0KTtpPG87KytpKWVbbitpXT10Pj4+OCoocj9pOjMtaSkmMjU1fWZ1bmN0aW9uIFUoZSx0LG4scixpLG8pe2lmKG4rcj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBxKGUsdCxuLHIsbyl7cmV0dXJuIG98fFUoZSx0LG4sNCwzNDAyODIzNDY2Mzg1Mjg4NmUyMiwtMzQwMjgyMzQ2NjM4NTI4ODZlMjIpLGkud3JpdGUoZSx0LG4sciwyMyw0KSxuKzR9ZnVuY3Rpb24gVyhlLHQsbixyLG8pe3JldHVybiBvfHxVKGUsdCxuLDgsMTc5NzY5MzEzNDg2MjMxNTdlMjkyLC0xNzk3NjkzMTM0ODYyMzE1N2UyOTIpLGkud3JpdGUoZSx0LG4sciw1Miw4KSxuKzh9Yy5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXRoaXMubGVuZ3RoO2lmKGU9fn5lLHQ9dm9pZCAwPT09dD9yOn5+dCxlPDA/KGUrPXIsZTwwJiYoZT0wKSk6ZT5yJiYoZT1yKSx0PDA/KHQrPXIsdDwwJiYodD0wKSk6dD5yJiYodD1yKSx0PGUmJih0PWUpLGMuVFlQRURfQVJSQVlfU1VQUE9SVCluPXRoaXMuc3ViYXJyYXkoZSx0KSxuLl9fcHJvdG9fXz1jLnByb3RvdHlwZTtlbHNle3ZhciBpPXQtZTtuPW5ldyBjKGksdm9pZCAwKTtmb3IodmFyIG89MDtvPGk7KytvKW5bb109dGhpc1tvK2VdfXJldHVybiBufSxjLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxuKXtlfD0wLHR8PTAsbnx8SShlLHQsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZV0saT0xLG89MDt3aGlsZSgrK288dCYmKGkqPTI1Nikpcis9dGhpc1tlK29dKmk7cmV0dXJuIHJ9LGMucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LG4pe2V8PTAsdHw9MCxufHxJKGUsdCx0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKy0tdF0saT0xO3doaWxlKHQ+MCYmKGkqPTI1Nikpcis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gcn0sYy5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEkoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxjLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8SShlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxjLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8SShlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxjLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8SShlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LGMucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxJKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sYy5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxuKXtlfD0wLHR8PTAsbnx8SShlLHQsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZV0saT0xLG89MDt3aGlsZSgrK288dCYmKGkqPTI1Nikpcis9dGhpc1tlK29dKmk7cmV0dXJuIGkqPTEyOCxyPj1pJiYoci09TWF0aC5wb3coMiw4KnQpKSxyfSxjLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oZSx0LG4pe2V8PTAsdHw9MCxufHxJKGUsdCx0aGlzLmxlbmd0aCk7dmFyIHI9dCxpPTEsbz10aGlzW2UrLS1yXTt3aGlsZShyPjAmJihpKj0yNTYpKW8rPXRoaXNbZSstLXJdKmk7cmV0dXJuIGkqPTEyOCxvPj1pJiYoby09TWF0aC5wb3coMiw4KnQpKSxvfSxjLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxJKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LGMucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8SShlLDIsdGhpcy5sZW5ndGgpO3ZhciBuPXRoaXNbZV18dGhpc1tlKzFdPDw4O3JldHVybiAzMjc2OCZuPzQyOTQ5MDE3NjB8bjpufSxjLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fEkoZSwyLHRoaXMubGVuZ3RoKTt2YXIgbj10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gMzI3Njgmbj80Mjk0OTAxNzYwfG46bn0sYy5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8SShlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sYy5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8SShlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDI0fHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXX0sYy5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8SShlLDQsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITAsMjMsNCl9LGMucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEkoZSw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCExLDIzLDQpfSxjLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8SShlLDgsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITAsNTIsOCl9LGMucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxJKGUsOCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsZSwhMSw1Miw4KX0sYy5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT0rZSx0fD0wLG58PTAsIXIpe3ZhciBpPU1hdGgucG93KDIsOCpuKS0xO0godGhpcyxlLHQsbixpLDApfXZhciBvPTEsYT0wO3RoaXNbdF09MjU1JmU7d2hpbGUoKythPG4mJihvKj0yNTYpKXRoaXNbdCthXT1lL28mMjU1O3JldHVybiB0K259LGMucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9K2UsdHw9MCxufD0wLCFyKXt2YXIgaT1NYXRoLnBvdygyLDgqbiktMTtIKHRoaXMsZSx0LG4saSwwKX12YXIgbz1uLTEsYT0xO3RoaXNbdCtvXT0yNTUmZTt3aGlsZSgtLW8+PTAmJihhKj0yNTYpKXRoaXNbdCtvXT1lL2EmMjU1O3JldHVybiB0K259LGMucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHR8PTAsbnx8SCh0aGlzLGUsdCwxLDI1NSwwKSxjLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxjLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0fD0wLG58fEgodGhpcyxlLHQsMiw2NTUzNSwwKSxjLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTp6KHRoaXMsZSx0LCEwKSx0KzJ9LGMucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHR8PTAsbnx8SCh0aGlzLGUsdCwyLDY1NTM1LDApLGMuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOnoodGhpcyxlLHQsITEpLHQrMn0sYy5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdHw9MCxufHxIKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxjLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6Rih0aGlzLGUsdCwhMCksdCs0fSxjLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0fD0wLG58fEgodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLGMuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpGKHRoaXMsZSx0LCExKSx0KzR9LGMucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LG4scil7aWYoZT0rZSx0fD0wLCFyKXt2YXIgaT1NYXRoLnBvdygyLDgqbi0xKTtIKHRoaXMsZSx0LG4saS0xLC1pKX12YXIgbz0wLGE9MSxzPTA7dGhpc1t0XT0yNTUmZTt3aGlsZSgrK288biYmKGEqPTI1NikpZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtvLTFdJiYocz0xKSx0aGlzW3Qrb109KGUvYT4+MCktcyYyNTU7cmV0dXJuIHQrbn0sYy5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQsbixyKXtpZihlPStlLHR8PTAsIXIpe3ZhciBpPU1hdGgucG93KDIsOCpuLTEpO0godGhpcyxlLHQsbixpLTEsLWkpfXZhciBvPW4tMSxhPTEscz0wO3RoaXNbdCtvXT0yNTUmZTt3aGlsZSgtLW8+PTAmJihhKj0yNTYpKWU8MCYmMD09PXMmJjAhPT10aGlzW3QrbysxXSYmKHM9MSksdGhpc1t0K29dPShlL2E+PjApLXMmMjU1O3JldHVybiB0K259LGMucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9K2UsdHw9MCxufHxIKHRoaXMsZSx0LDEsMTI3LC0xMjgpLGMuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0sYy5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0fD0wLG58fEgodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGMuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOnoodGhpcyxlLHQsITApLHQrMn0sYy5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0fD0wLG58fEgodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGMuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOnoodGhpcyxlLHQsITEpLHQrMn0sYy5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0rZSx0fD0wLG58fEgodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxjLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzNdPWU+Pj4yNCk6Rih0aGlzLGUsdCwhMCksdCs0fSxjLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPStlLHR8PTAsbnx8SCh0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLGMuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpGKHRoaXMsZSx0LCExKSx0KzR9LGMucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHEodGhpcyxlLHQsITAsbil9LGMucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHEodGhpcyxlLHQsITEsbil9LGMucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBXKHRoaXMsZSx0LCEwLG4pfSxjLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gVyh0aGlzLGUsdCwhMSxuKX0sYy5wcm90b3R5cGUuY29weT1mdW5jdGlvbihlLHQsbixyKXtpZihufHwobj0wKSxyfHwwPT09cnx8KHI9dGhpcy5sZW5ndGgpLHQ+PWUubGVuZ3RoJiYodD1lLmxlbmd0aCksdHx8KHQ9MCkscj4wJiZyPG4mJihyPW4pLHI9PT1uKXJldHVybiAwO2lmKDA9PT1lLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MHx8bj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7cj50aGlzLmxlbmd0aCYmKHI9dGhpcy5sZW5ndGgpLGUubGVuZ3RoLXQ8ci1uJiYocj1lLmxlbmd0aC10K24pO3ZhciBpLG89ci1uO2lmKHRoaXM9PT1lJiZuPHQmJnQ8cilmb3IoaT1vLTE7aT49MDstLWkpZVtpK3RdPXRoaXNbaStuXTtlbHNlIGlmKG88MWUzfHwhYy5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihpPTA7aTxvOysraSllW2krdF09dGhpc1tpK25dO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KG4sbitvKSx0KTtyZXR1cm4gb30sYy5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQsbixyKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXtpZigic3RyaW5nIj09PXR5cGVvZiB0PyhyPXQsdD0wLG49dGhpcy5sZW5ndGgpOiJzdHJpbmciPT09dHlwZW9mIG4mJihyPW4sbj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgaT1lLmNoYXJDb2RlQXQoMCk7aTwyNTYmJihlPWkpfWlmKHZvaWQgMCE9PXImJiJzdHJpbmciIT09dHlwZW9mIHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT09dHlwZW9mIHImJiFjLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIityKX1lbHNlIm51bWJlciI9PT10eXBlb2YgZSYmKGUmPTI1NSk7aWYodDwwfHx0aGlzLmxlbmd0aDx0fHx0aGlzLmxlbmd0aDxuKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihuPD10KXJldHVybiB0aGlzO3ZhciBvO2lmKHQ+Pj49MCxuPXZvaWQgMD09PW4/dGhpcy5sZW5ndGg6bj4+PjAsZXx8KGU9MCksIm51bWJlciI9PT10eXBlb2YgZSlmb3Iobz10O288bjsrK28pdGhpc1tvXT1lO2Vsc2V7dmFyIGE9Yy5pc0J1ZmZlcihlKT9lOksobmV3IGMoZSxyKS50b1N0cmluZygpKSxzPWEubGVuZ3RoO2ZvcihvPTA7bzxuLXQ7KytvKXRoaXNbbyt0XT1hW28lc119cmV0dXJuIHRoaXN9O3ZhciBZPS9bXitcLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIFYoZSl7aWYoZT1YKGUpLnJlcGxhY2UoWSwiIiksZS5sZW5ndGg8MilyZXR1cm4iIjt3aGlsZShlLmxlbmd0aCU0IT09MCllKz0iPSI7cmV0dXJuIGV9ZnVuY3Rpb24gWChlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfWZ1bmN0aW9uIEcoZSl7cmV0dXJuIGU8MTY/IjAiK2UudG9TdHJpbmcoMTYpOmUudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIEsoZSx0KXt2YXIgbjt0PXR8fDEvMDtmb3IodmFyIHI9ZS5sZW5ndGgsaT1udWxsLG89W10sYT0wO2E8cjsrK2Epe2lmKG49ZS5jaGFyQ29kZUF0KGEpLG4+NTUyOTUmJm48NTczNDQpe2lmKCFpKXtpZihuPjU2MzE5KXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoYSsxPT09cil7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWk9bjtjb250aW51ZX1pZihuPDU2MzIwKXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSksaT1uO2NvbnRpbnVlfW49NjU1MzYrKGktNTUyOTY8PDEwfG4tNTYzMjApfWVsc2UgaSYmKHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2lmKGk9bnVsbCxuPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7by5wdXNoKG4pfWVsc2UgaWYobjwyMDQ4KXtpZigodC09Mik8MClicmVhaztvLnB1c2gobj4+NnwxOTIsNjMmbnwxMjgpfWVsc2UgaWYobjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7by5wdXNoKG4+PjEyfDIyNCxuPj42JjYzfDEyOCw2MyZufDEyOCl9ZWxzZXtpZighKG48MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztvLnB1c2gobj4+MTh8MjQwLG4+PjEyJjYzfDEyOCxuPj42JjYzfDEyOCw2MyZufDEyOCl9fXJldHVybiBvfWZ1bmN0aW9uIEooZSl7Zm9yKHZhciB0PVtdLG49MDtuPGUubGVuZ3RoOysrbil0LnB1c2goMjU1JmUuY2hhckNvZGVBdChuKSk7cmV0dXJuIHR9ZnVuY3Rpb24gUShlLHQpe2Zvcih2YXIgbixyLGksbz1bXSxhPTA7YTxlLmxlbmd0aDsrK2Epe2lmKCh0LT0yKTwwKWJyZWFrO249ZS5jaGFyQ29kZUF0KGEpLHI9bj4+OCxpPW4lMjU2LG8ucHVzaChpKSxvLnB1c2gocil9cmV0dXJuIG99ZnVuY3Rpb24gWihlKXtyZXR1cm4gci50b0J5dGVBcnJheShWKGUpKX1mdW5jdGlvbiBlZShlLHQsbixyKXtmb3IodmFyIGk9MDtpPHI7KytpKXtpZihpK24+PXQubGVuZ3RofHxpPj1lLmxlbmd0aClicmVhazt0W2krbl09ZVtpXX1yZXR1cm4gaX1mdW5jdGlvbiB0ZShlKXtyZXR1cm4gZSE9PWV9fSkuY2FsbCh0aGlzLG4oImM4YmEiKSl9LGI4NmI6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjMyNTIiKSxuKCJkNmU2IikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZSxuPXQueDY0LHI9bi5Xb3JkLGk9bi5Xb3JkQXJyYXksbz10LmFsZ28sYT1vLlNIQTUxMixzPW8uU0hBMzg0PWEuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGkuaW5pdChbbmV3IHIuaW5pdCgzNDE4MDcwMzY1LDMyMzgzNzEwMzIpLG5ldyByLmluaXQoMTY1NDI3MDI1MCw5MTQxNTA2NjMpLG5ldyByLmluaXQoMjQzODUyOTM3MCw4MTI3MDI5OTkpLG5ldyByLmluaXQoMzU1NDYyMzYwLDQxNDQ5MTI2OTcpLG5ldyByLmluaXQoMTczMTQwNTQxNSw0MjkwNzc1ODU3KSxuZXcgci5pbml0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSksbmV3IHIuaW5pdCgzNjc1MDA4NTI1LDE2OTQwNzY4MzkpLG5ldyByLmluaXQoMTIwMzA2MjgxMywzMjA0MDc1NDI4KV0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBlPWEuX2RvRmluYWxpemUuY2FsbCh0aGlzKTtyZXR1cm4gZS5zaWdCeXRlcy09MTYsZX19KTt0LlNIQTM4ND1hLl9jcmVhdGVIZWxwZXIocyksdC5IbWFjU0hBMzg0PWEuX2NyZWF0ZUhtYWNIZWxwZXIocyl9KCksZS5TSEEzODR9KSl9LGI4NmM6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjM4YmEiKSl9KSgwLChmdW5jdGlvbihlKXtyZXR1cm4gZS5wYWQuTm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sZS5wYWQuTm9QYWRkaW5nfSkpfSxjMTk4OmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIxMTMyIiksbigiNzJmZSIpLG4oIjJiNzkiKSxuKCIzOGJhIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZSxuPXQubGliLHI9bi5CbG9ja0NpcGhlcixpPXQuYWxnbyxvPVtdLGE9W10scz1bXSx1PVtdLGM9W10sbD1bXSxmPVtdLGQ9W10scD1bXSxoPVtdOyhmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDwyNTY7dCsrKWVbdF09dDwxMjg/dDw8MTp0PDwxXjI4Mzt2YXIgbj0wLHI9MDtmb3IodD0wO3Q8MjU2O3QrKyl7dmFyIGk9cl5yPDwxXnI8PDJecjw8M15yPDw0O2k9aT4+PjheMjU1JmleOTksb1tuXT1pLGFbaV09bjt2YXIgdj1lW25dLG09ZVt2XSx5PWVbbV0sZz0yNTcqZVtpXV4xNjg0MzAwOCppO3Nbbl09Zzw8MjR8Zz4+PjgsdVtuXT1nPDwxNnxnPj4+MTYsY1tuXT1nPDw4fGc+Pj4yNCxsW25dPWc7Zz0xNjg0MzAwOSp5XjY1NTM3Km1eMjU3KnZeMTY4NDMwMDgqbjtmW2ldPWc8PDI0fGc+Pj44LGRbaV09Zzw8MTZ8Zz4+PjE2LHBbaV09Zzw8OHxnPj4+MjQsaFtpXT1nLG4/KG49dl5lW2VbZVt5XnZdXV0scl49ZVtlW3JdXSk6bj1yPTF9fSkoKTt2YXIgdj1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sbT1pLkFFUz1yLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7Zm9yKHZhciBlPXRoaXMuX2tleVByaW9yUmVzZXQ9dGhpcy5fa2V5LHQ9ZS53b3JkcyxuPWUuc2lnQnl0ZXMvNCxyPXRoaXMuX25Sb3VuZHM9bis2LGk9NCoocisxKSxhPXRoaXMuX2tleVNjaGVkdWxlPVtdLHM9MDtzPGk7cysrKWlmKHM8bilhW3NdPXRbc107ZWxzZXt2YXIgdT1hW3MtMV07cyVuP24+NiYmcyVuPT00JiYodT1vW3U+Pj4yNF08PDI0fG9bdT4+PjE2JjI1NV08PDE2fG9bdT4+PjgmMjU1XTw8OHxvWzI1NSZ1XSk6KHU9dTw8OHx1Pj4+MjQsdT1vW3U+Pj4yNF08PDI0fG9bdT4+PjE2JjI1NV08PDE2fG9bdT4+PjgmMjU1XTw8OHxvWzI1NSZ1XSx1Xj12W3MvbnwwXTw8MjQpLGFbc109YVtzLW5dXnV9Zm9yKHZhciBjPXRoaXMuX2ludktleVNjaGVkdWxlPVtdLGw9MDtsPGk7bCsrKXtzPWktbDtpZihsJTQpdT1hW3NdO2Vsc2UgdT1hW3MtNF07Y1tsXT1sPDR8fHM8PTQ/dTpmW29bdT4+PjI0XV1eZFtvW3U+Pj4xNiYyNTVdXV5wW29bdT4+PjgmMjU1XV1eaFtvWzI1NSZ1XV19fX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZG9DcnlwdEJsb2NrKGUsdCx0aGlzLl9rZXlTY2hlZHVsZSxzLHUsYyxsLG8pfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj1lW3QrMV07ZVt0KzFdPWVbdCszXSxlW3QrM109bix0aGlzLl9kb0NyeXB0QmxvY2soZSx0LHRoaXMuX2ludktleVNjaGVkdWxlLGYsZCxwLGgsYSk7bj1lW3QrMV07ZVt0KzFdPWVbdCszXSxlW3QrM109bn0sX2RvQ3J5cHRCbG9jazpmdW5jdGlvbihlLHQsbixyLGksbyxhLHMpe2Zvcih2YXIgdT10aGlzLl9uUm91bmRzLGM9ZVt0XV5uWzBdLGw9ZVt0KzFdXm5bMV0sZj1lW3QrMl1eblsyXSxkPWVbdCszXV5uWzNdLHA9NCxoPTE7aDx1O2grKyl7dmFyIHY9cltjPj4+MjRdXmlbbD4+PjE2JjI1NV1eb1tmPj4+OCYyNTVdXmFbMjU1JmRdXm5bcCsrXSxtPXJbbD4+PjI0XV5pW2Y+Pj4xNiYyNTVdXm9bZD4+PjgmMjU1XV5hWzI1NSZjXV5uW3ArK10seT1yW2Y+Pj4yNF1eaVtkPj4+MTYmMjU1XV5vW2M+Pj44JjI1NV1eYVsyNTUmbF1ebltwKytdLGc9cltkPj4+MjRdXmlbYz4+PjE2JjI1NV1eb1tsPj4+OCYyNTVdXmFbMjU1JmZdXm5bcCsrXTtjPXYsbD1tLGY9eSxkPWd9dj0oc1tjPj4+MjRdPDwyNHxzW2w+Pj4xNiYyNTVdPDwxNnxzW2Y+Pj44JjI1NV08PDh8c1syNTUmZF0pXm5bcCsrXSxtPShzW2w+Pj4yNF08PDI0fHNbZj4+PjE2JjI1NV08PDE2fHNbZD4+PjgmMjU1XTw8OHxzWzI1NSZjXSlebltwKytdLHk9KHNbZj4+PjI0XTw8MjR8c1tkPj4+MTYmMjU1XTw8MTZ8c1tjPj4+OCYyNTVdPDw4fHNbMjU1JmxdKV5uW3ArK10sZz0oc1tkPj4+MjRdPDwyNHxzW2M+Pj4xNiYyNTVdPDwxNnxzW2w+Pj44JjI1NV08PDh8c1syNTUmZl0pXm5bcCsrXTtlW3RdPXYsZVt0KzFdPW0sZVt0KzJdPXksZVt0KzNdPWd9LGtleVNpemU6OH0pO3QuQUVTPXIuX2NyZWF0ZUhlbHBlcihtKX0oKSxlLkFFU30pKX0sYzFlZTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaTshZnVuY3Rpb24obyxhKXtyPVtuKCIxMTU3IildLGk9ZnVuY3Rpb24oZSl7cmV0dXJuIGEobyxlKX0uYXBwbHkodCxyKSx2b2lkIDA9PT1pfHwoZS5leHBvcnRzPWkpfSh0aGlzLChmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbixyLGk9InJlbW9kYWwiLG89ZS5SRU1PREFMX0dMT0JBTFMmJmUuUkVNT0RBTF9HTE9CQUxTLk5BTUVTUEFDRXx8aSxhPXQubWFwKFsiYW5pbWF0aW9uc3RhcnQiLCJ3ZWJraXRBbmltYXRpb25TdGFydCIsIk1TQW5pbWF0aW9uU3RhcnQiLCJvQW5pbWF0aW9uU3RhcnQiXSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUrIi4iK299KSkuam9pbigiICIpLHM9dC5tYXAoWyJhbmltYXRpb25lbmQiLCJ3ZWJraXRBbmltYXRpb25FbmQiLCJNU0FuaW1hdGlvbkVuZCIsIm9BbmltYXRpb25FbmQiXSwoZnVuY3Rpb24oZSl7cmV0dXJuIGUrIi4iK299KSkuam9pbigiICIpLHU9dC5leHRlbmQoe2hhc2hUcmFja2luZzohMCxjbG9zZU9uQ29uZmlybTohMCxjbG9zZU9uQ2FuY2VsOiEwLGNsb3NlT25Fc2NhcGU6ITAsY2xvc2VPbk91dHNpZGVDbGljazohMCxtb2RpZmllcjoiIixhcHBlbmRUbzpudWxsfSxlLlJFTU9EQUxfR0xPQkFMUyYmZS5SRU1PREFMX0dMT0JBTFMuREVGQVVMVFMpLGM9e0NMT1NJTkc6ImNsb3NpbmciLENMT1NFRDoiY2xvc2VkIixPUEVOSU5HOiJvcGVuaW5nIixPUEVORUQ6Im9wZW5lZCJ9LGw9e0NPTkZJUk1BVElPTjoiY29uZmlybWF0aW9uIixDQU5DRUxMQVRJT046ImNhbmNlbGxhdGlvbiJ9LGY9ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTtyZXR1cm4gdm9pZCAwIT09ZS5hbmltYXRpb25OYW1lfHx2b2lkIDAhPT1lLldlYmtpdEFuaW1hdGlvbk5hbWV8fHZvaWQgMCE9PWUuTW96QW5pbWF0aW9uTmFtZXx8dm9pZCAwIT09ZS5tc0FuaW1hdGlvbk5hbWV8fHZvaWQgMCE9PWUuT0FuaW1hdGlvbk5hbWV9KCksZD0vaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pO2Z1bmN0aW9uIHAoZSl7aWYoZiYmIm5vbmUiPT09ZS5jc3MoImFuaW1hdGlvbi1uYW1lIikmJiJub25lIj09PWUuY3NzKCItd2Via2l0LWFuaW1hdGlvbi1uYW1lIikmJiJub25lIj09PWUuY3NzKCItbW96LWFuaW1hdGlvbi1uYW1lIikmJiJub25lIj09PWUuY3NzKCItby1hbmltYXRpb24tbmFtZSIpJiYibm9uZSI9PT1lLmNzcygiLW1zLWFuaW1hdGlvbi1uYW1lIikpcmV0dXJuIDA7dmFyIHQsbixyLGksbz1lLmNzcygiYW5pbWF0aW9uLWR1cmF0aW9uIil8fGUuY3NzKCItd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbiIpfHxlLmNzcygiLW1vei1hbmltYXRpb24tZHVyYXRpb24iKXx8ZS5jc3MoIi1vLWFuaW1hdGlvbi1kdXJhdGlvbiIpfHxlLmNzcygiLW1zLWFuaW1hdGlvbi1kdXJhdGlvbiIpfHwiMHMiLGE9ZS5jc3MoImFuaW1hdGlvbi1kZWxheSIpfHxlLmNzcygiLXdlYmtpdC1hbmltYXRpb24tZGVsYXkiKXx8ZS5jc3MoIi1tb3otYW5pbWF0aW9uLWRlbGF5Iil8fGUuY3NzKCItby1hbmltYXRpb24tZGVsYXkiKXx8ZS5jc3MoIi1tcy1hbmltYXRpb24tZGVsYXkiKXx8IjBzIixzPWUuY3NzKCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50Iil8fGUuY3NzKCItd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiKXx8ZS5jc3MoIi1tb3otYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIpfHxlLmNzcygiLW8tYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIpfHxlLmNzcygiLW1zLWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQiKXx8IjEiO2ZvcihvPW8uc3BsaXQoIiwgIiksYT1hLnNwbGl0KCIsICIpLHM9cy5zcGxpdCgiLCAiKSxpPTAsbj1vLmxlbmd0aCx0PU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtpPG47aSsrKXI9cGFyc2VGbG9hdChvW2ldKSpwYXJzZUludChzW2ldLDEwKStwYXJzZUZsb2F0KGFbaV0pLHI+dCYmKHQ9cik7cmV0dXJuIHR9ZnVuY3Rpb24gaCgpe2lmKHQoZG9jdW1lbnQpLmhlaWdodCgpPD10KHdpbmRvdykuaGVpZ2h0KCkpcmV0dXJuIDA7dmFyIGUsbixyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIHIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixyLnN0eWxlLndpZHRoPSIxMDBweCIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyKSxlPXIub2Zmc2V0V2lkdGgsci5zdHlsZS5vdmVyZmxvdz0ic2Nyb2xsIixpLnN0eWxlLndpZHRoPSIxMDAlIixyLmFwcGVuZENoaWxkKGkpLG49aS5vZmZzZXRXaWR0aCxyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQociksZS1ufWZ1bmN0aW9uIHYoKXtpZighZCl7dmFyIGUsbixyPXQoImh0bWwiKSxpPV8oImlzLWxvY2tlZCIpO3IuaGFzQ2xhc3MoaSl8fChuPXQoZG9jdW1lbnQuYm9keSksZT1wYXJzZUludChuLmNzcygicGFkZGluZy1yaWdodCIpLDEwKStoKCksbi5jc3MoInBhZGRpbmctcmlnaHQiLGUrInB4Iiksci5hZGRDbGFzcyhpKSl9fWZ1bmN0aW9uIG0oKXtpZighZCl7dmFyIGUsbixyPXQoImh0bWwiKSxpPV8oImlzLWxvY2tlZCIpO3IuaGFzQ2xhc3MoaSkmJihuPXQoZG9jdW1lbnQuYm9keSksZT1wYXJzZUludChuLmNzcygicGFkZGluZy1yaWdodCIpLDEwKS1oKCksbi5jc3MoInBhZGRpbmctcmlnaHQiLGUrInB4Iiksci5yZW1vdmVDbGFzcyhpKSl9fWZ1bmN0aW9uIHkoZSx0LG4scil7dmFyIGk9XygiaXMiLHQpLG89W18oImlzIixjLkNMT1NJTkcpLF8oImlzIixjLk9QRU5JTkcpLF8oImlzIixjLkNMT1NFRCksXygiaXMiLGMuT1BFTkVEKV0uam9pbigiICIpO2UuJGJnLnJlbW92ZUNsYXNzKG8pLmFkZENsYXNzKGkpLGUuJG92ZXJsYXkucmVtb3ZlQ2xhc3MobykuYWRkQ2xhc3MoaSksZS4kd3JhcHBlci5yZW1vdmVDbGFzcyhvKS5hZGRDbGFzcyhpKSxlLiRtb2RhbC5yZW1vdmVDbGFzcyhvKS5hZGRDbGFzcyhpKSxlLnN0YXRlPXQsIW4mJmUuJG1vZGFsLnRyaWdnZXIoe3R5cGU6dCxyZWFzb246cn0sW3tyZWFzb246cn1dKX1mdW5jdGlvbiBnKGUsbixyKXt2YXIgaT0wLG89ZnVuY3Rpb24oZSl7ZS50YXJnZXQ9PT10aGlzJiZpKyt9LHU9ZnVuY3Rpb24oZSl7ZS50YXJnZXQ9PT10aGlzJiYwPT09LS1pJiYodC5lYWNoKFsiJGJnIiwiJG92ZXJsYXkiLCIkd3JhcHBlciIsIiRtb2RhbCJdLChmdW5jdGlvbihlLHQpe3JbdF0ub2ZmKGErIiAiK3MpfSkpLG4oKSl9O3QuZWFjaChbIiRiZyIsIiRvdmVybGF5IiwiJHdyYXBwZXIiLCIkbW9kYWwiXSwoZnVuY3Rpb24oZSx0KXtyW3RdLm9uKGEsbykub24ocyx1KX0pKSxlKCksMD09PXAoci4kYmcpJiYwPT09cChyLiRvdmVybGF5KSYmMD09PXAoci4kd3JhcHBlcikmJjA9PT1wKHIuJG1vZGFsKSYmKHQuZWFjaChbIiRiZyIsIiRvdmVybGF5IiwiJHdyYXBwZXIiLCIkbW9kYWwiXSwoZnVuY3Rpb24oZSx0KXtyW3RdLm9mZihhKyIgIitzKX0pKSxuKCkpfWZ1bmN0aW9uIHcoZSl7ZS5zdGF0ZSE9PWMuQ0xPU0VEJiYodC5lYWNoKFsiJGJnIiwiJG92ZXJsYXkiLCIkd3JhcHBlciIsIiRtb2RhbCJdLChmdW5jdGlvbih0LG4pe2Vbbl0ub2ZmKGErIiAiK3MpfSkpLGUuJGJnLnJlbW92ZUNsYXNzKGUuc2V0dGluZ3MubW9kaWZpZXIpLGUuJG92ZXJsYXkucmVtb3ZlQ2xhc3MoZS5zZXR0aW5ncy5tb2RpZmllcikuaGlkZSgpLGUuJHdyYXBwZXIuaGlkZSgpLG0oKSx5KGUsYy5DTE9TRUQsITApKX1mdW5jdGlvbiBiKGUpe3ZhciB0LG4scixpLG89e307Zm9yKGU9ZS5yZXBsYWNlKC9ccyo6XHMqL2csIjoiKS5yZXBsYWNlKC9ccyosXHMqL2csIiwiKSx0PWUuc3BsaXQoIiwiKSxpPTAsbj10Lmxlbmd0aDtpPG47aSsrKXRbaV09dFtpXS5zcGxpdCgiOiIpLHI9dFtpXVsxXSwoInN0cmluZyI9PT10eXBlb2Ygcnx8ciBpbnN0YW5jZW9mIFN0cmluZykmJihyPSJ0cnVlIj09PXJ8fCJmYWxzZSIhPT1yJiZyKSwoInN0cmluZyI9PT10eXBlb2Ygcnx8ciBpbnN0YW5jZW9mIFN0cmluZykmJihyPWlzTmFOKHIpP3I6K3IpLG9bdFtpXVswXV09cjtyZXR1cm4gb31mdW5jdGlvbiBfKCl7Zm9yKHZhciBlPW8sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDsrK3QpZSs9Ii0iK2FyZ3VtZW50c1t0XTtyZXR1cm4gZX1mdW5jdGlvbiB4KCl7dmFyIGUscixvPWxvY2F0aW9uLmhhc2gucmVwbGFjZSgiIyIsIiIpO2lmKG8pe3RyeXtyPXQoIltkYXRhLSIraSsnLWlkPSInK28rJyJdJyl9Y2F0Y2goYSl7fXImJnIubGVuZ3RoJiYoZT10W2ldLmxvb2t1cFtyLmRhdGEoaSldLGUmJmUuc2V0dGluZ3MuaGFzaFRyYWNraW5nJiZlLm9wZW4oKSl9ZWxzZSBuJiZuLnN0YXRlPT09Yy5PUEVORUQmJm4uc2V0dGluZ3MuaGFzaFRyYWNraW5nJiZuLmNsb3NlKCl9ZnVuY3Rpb24gayhlLG4pe3ZhciByPXQoZG9jdW1lbnQuYm9keSksYT1yLHM9dGhpcztzLnNldHRpbmdzPXQuZXh0ZW5kKHt9LHUsbikscy5pbmRleD10W2ldLmxvb2t1cC5wdXNoKHMpLTEscy5zdGF0ZT1jLkNMT1NFRCxzLiRvdmVybGF5PXQoIi4iK18oIm92ZXJsYXkiKSksbnVsbCE9PXMuc2V0dGluZ3MuYXBwZW5kVG8mJnMuc2V0dGluZ3MuYXBwZW5kVG8ubGVuZ3RoJiYoYT10KHMuc2V0dGluZ3MuYXBwZW5kVG8pKSxzLiRvdmVybGF5Lmxlbmd0aHx8KHMuJG92ZXJsYXk9dCgiPGRpdj4iKS5hZGRDbGFzcyhfKCJvdmVybGF5IikrIiAiK18oImlzIixjLkNMT1NFRCkpLmhpZGUoKSxhLmFwcGVuZChzLiRvdmVybGF5KSkscy4kYmc9dCgiLiIrXygiYmciKSkuYWRkQ2xhc3MoXygiaXMiLGMuQ0xPU0VEKSkscy4kbW9kYWw9ZS5hZGRDbGFzcyhvKyIgIitfKCJpcy1pbml0aWFsaXplZCIpKyIgIitzLnNldHRpbmdzLm1vZGlmaWVyKyIgIitfKCJpcyIsYy5DTE9TRUQpKS5hdHRyKCJ0YWJpbmRleCIsIi0xIikscy4kd3JhcHBlcj10KCI8ZGl2PiIpLmFkZENsYXNzKF8oIndyYXBwZXIiKSsiICIrcy5zZXR0aW5ncy5tb2RpZmllcisiICIrXygiaXMiLGMuQ0xPU0VEKSkuaGlkZSgpLmFwcGVuZChzLiRtb2RhbCksYS5hcHBlbmQocy4kd3JhcHBlcikscy4kd3JhcHBlci5vbigiY2xpY2suIitvLCJbZGF0YS0iK2krJy1hY3Rpb249ImNsb3NlIl0nLChmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCkscy5jbG9zZSgpfSkpLHMuJHdyYXBwZXIub24oImNsaWNrLiIrbywiW2RhdGEtIitpKyctYWN0aW9uPSJjYW5jZWwiXScsKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxzLiRtb2RhbC50cmlnZ2VyKGwuQ0FOQ0VMTEFUSU9OKSxzLnNldHRpbmdzLmNsb3NlT25DYW5jZWwmJnMuY2xvc2UobC5DQU5DRUxMQVRJT04pfSkpLHMuJHdyYXBwZXIub24oImNsaWNrLiIrbywiW2RhdGEtIitpKyctYWN0aW9uPSJjb25maXJtIl0nLChmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCkscy4kbW9kYWwudHJpZ2dlcihsLkNPTkZJUk1BVElPTikscy5zZXR0aW5ncy5jbG9zZU9uQ29uZmlybSYmcy5jbG9zZShsLkNPTkZJUk1BVElPTil9KSkscy4kd3JhcHBlci5vbigiY2xpY2suIitvLChmdW5jdGlvbihlKXt2YXIgbj10KGUudGFyZ2V0KTtuLmhhc0NsYXNzKF8oIndyYXBwZXIiKSkmJnMuc2V0dGluZ3MuY2xvc2VPbk91dHNpZGVDbGljayYmcy5jbG9zZSgpfSkpfWsucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oKXt2YXIgZSxvPXRoaXM7by5zdGF0ZSE9PWMuT1BFTklORyYmby5zdGF0ZSE9PWMuQ0xPU0lORyYmKGU9by4kbW9kYWwuYXR0cigiZGF0YS0iK2krIi1pZCIpLGUmJm8uc2V0dGluZ3MuaGFzaFRyYWNraW5nJiYocj10KHdpbmRvdykuc2Nyb2xsVG9wKCksbG9jYXRpb24uaGFzaD1lKSxuJiZuIT09byYmdyhuKSxuPW8sdigpLG8uJGJnLmFkZENsYXNzKG8uc2V0dGluZ3MubW9kaWZpZXIpLG8uJG92ZXJsYXkuYWRkQ2xhc3Moby5zZXR0aW5ncy5tb2RpZmllcikuc2hvdygpLG8uJHdyYXBwZXIuc2hvdygpLnNjcm9sbFRvcCgwKSxvLiRtb2RhbC5mb2N1cygpLGcoKGZ1bmN0aW9uKCl7eShvLGMuT1BFTklORyl9KSwoZnVuY3Rpb24oKXt5KG8sYy5PUEVORUQpfSksbykpfSxrLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzO24uc3RhdGUhPT1jLk9QRU5JTkcmJm4uc3RhdGUhPT1jLkNMT1NJTkcmJm4uc3RhdGUhPT1jLkNMT1NFRCYmKG4uc2V0dGluZ3MuaGFzaFRyYWNraW5nJiZuLiRtb2RhbC5hdHRyKCJkYXRhLSIraSsiLWlkIik9PT1sb2NhdGlvbi5oYXNoLnN1YnN0cigxKSYmKGxvY2F0aW9uLmhhc2g9IiIsdCh3aW5kb3cpLnNjcm9sbFRvcChyKSksZygoZnVuY3Rpb24oKXt5KG4sYy5DTE9TSU5HLCExLGUpfSksKGZ1bmN0aW9uKCl7bi4kYmcucmVtb3ZlQ2xhc3Mobi5zZXR0aW5ncy5tb2RpZmllciksbi4kb3ZlcmxheS5yZW1vdmVDbGFzcyhuLnNldHRpbmdzLm1vZGlmaWVyKS5oaWRlKCksbi4kd3JhcHBlci5oaWRlKCksbSgpLHkobixjLkNMT1NFRCwhMSxlKX0pLG4pKX0say5wcm90b3R5cGUuZ2V0U3RhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZX0say5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlLG49dFtpXS5sb29rdXA7dyh0aGlzKSx0aGlzLiR3cmFwcGVyLnJlbW92ZSgpLGRlbGV0ZSBuW3RoaXMuaW5kZXhdLGU9dC5ncmVwKG4sKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pKS5sZW5ndGgsMD09PWUmJih0aGlzLiRvdmVybGF5LnJlbW92ZSgpLHRoaXMuJGJnLnJlbW92ZUNsYXNzKF8oImlzIixjLkNMT1NJTkcpKyIgIitfKCJpcyIsYy5PUEVOSU5HKSsiICIrXygiaXMiLGMuQ0xPU0VEKSsiICIrXygiaXMiLGMuT1BFTkVEKSkpfSx0W2ldPXtsb29rdXA6W119LHQuZm5baV09ZnVuY3Rpb24oZSl7dmFyIG4scjtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbihvLGEpe3I9dChhKSxudWxsPT1yLmRhdGEoaSk/KG49bmV3IGsocixlKSxyLmRhdGEoaSxuLmluZGV4KSxuLnNldHRpbmdzLmhhc2hUcmFja2luZyYmci5hdHRyKCJkYXRhLSIraSsiLWlkIik9PT1sb2NhdGlvbi5oYXNoLnN1YnN0cigxKSYmbi5vcGVuKCkpOm49dFtpXS5sb29rdXBbci5kYXRhKGkpXX0pKSxufSx0KGRvY3VtZW50KS5yZWFkeSgoZnVuY3Rpb24oKXt0KGRvY3VtZW50KS5vbigiY2xpY2siLCJbZGF0YS0iK2krIi10YXJnZXRdIiwoZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPWUuY3VycmVudFRhcmdldCxyPW4uZ2V0QXR0cmlidXRlKCJkYXRhLSIraSsiLXRhcmdldCIpLG89dCgiW2RhdGEtIitpKyctaWQ9IicrcisnIl0nKTt0W2ldLmxvb2t1cFtvLmRhdGEoaSldLm9wZW4oKX0pKSx0KGRvY3VtZW50KS5maW5kKCIuIitvKS5lYWNoKChmdW5jdGlvbihlLG4pe3ZhciByPXQobiksbz1yLmRhdGEoaSsiLW9wdGlvbnMiKTtvPygic3RyaW5nIj09PXR5cGVvZiBvfHxvIGluc3RhbmNlb2YgU3RyaW5nKSYmKG89YihvKSk6bz17fSxyW2ldKG8pfSkpLHQoZG9jdW1lbnQpLm9uKCJrZXlkb3duLiIrbywoZnVuY3Rpb24oZSl7biYmbi5zZXR0aW5ncy5jbG9zZU9uRXNjYXBlJiZuLnN0YXRlPT09Yy5PUEVORUQmJjI3PT09ZS5rZXlDb2RlJiZuLmNsb3NlKCl9KSksdCh3aW5kb3cpLm9uKCJoYXNoY2hhbmdlLiIrbyx4KX0pKX0pKX0sYzNiNjpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQscixpKXtlLmV4cG9ydHM9cihuKCIyMWJmIiksbigiMTEzMiIpLG4oIjcyZmUiKSxuKCIyYjc5IiksbigiMzhiYSIpKX0pKDAsKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PWUsbj10LmxpYixyPW4uU3RyZWFtQ2lwaGVyLGk9dC5hbGdvLG89aS5SQzQ9ci5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuX2tleSx0PWUud29yZHMsbj1lLnNpZ0J5dGVzLHI9dGhpcy5fUz1bXSxpPTA7aTwyNTY7aSsrKXJbaV09aTtpPTA7Zm9yKHZhciBvPTA7aTwyNTY7aSsrKXt2YXIgYT1pJW4scz10W2E+Pj4yXT4+PjI0LWElNCo4JjI1NTtvPShvK3JbaV0rcyklMjU2O3ZhciB1PXJbaV07cltpXT1yW29dLHJbb109dX10aGlzLl9pPXRoaXMuX2o9MH0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKGUsdCl7ZVt0XV49YS5jYWxsKHRoaXMpfSxrZXlTaXplOjgsaXZTaXplOjB9KTtmdW5jdGlvbiBhKCl7Zm9yKHZhciBlPXRoaXMuX1MsdD10aGlzLl9pLG49dGhpcy5faixyPTAsaT0wO2k8NDtpKyspe3Q9KHQrMSklMjU2LG49KG4rZVt0XSklMjU2O3ZhciBvPWVbdF07ZVt0XT1lW25dLGVbbl09byxyfD1lWyhlW3RdK2Vbbl0pJTI1Nl08PDI0LTgqaX1yZXR1cm4gdGhpcy5faT10LHRoaXMuX2o9bixyfXQuUkM0PXIuX2NyZWF0ZUhlbHBlcihvKTt2YXIgcz1pLlJDNERyb3A9by5leHRlbmQoe2NmZzpvLmNmZy5leHRlbmQoe2Ryb3A6MTkyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtvLl9kb1Jlc2V0LmNhbGwodGhpcyk7Zm9yKHZhciBlPXRoaXMuY2ZnLmRyb3A7ZT4wO2UtLSlhLmNhbGwodGhpcyl9fSk7dC5SQzREcm9wPXIuX2NyZWF0ZUhlbHBlcihzKX0oKSxlLlJDNH0pKX0sYzQzNzpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPW4oImUxZjQiKSxhPW4oIjIzNjYiKSxzPTAsdT0wO2Z1bmN0aW9uIGMoZSx0LG4pe3ZhciBjPXQmJm58fDAsbD10fHxbXTtlPWV8fHt9O3ZhciBmPWUubm9kZXx8cixkPXZvaWQgMCE9PWUuY2xvY2tzZXE/ZS5jbG9ja3NlcTppO2lmKG51bGw9PWZ8fG51bGw9PWQpe3ZhciBwPW8oKTtudWxsPT1mJiYoZj1yPVsxfHBbMF0scFsxXSxwWzJdLHBbM10scFs0XSxwWzVdXSksbnVsbD09ZCYmKGQ9aT0xNjM4MyYocFs2XTw8OHxwWzddKSl9dmFyIGg9dm9pZCAwIT09ZS5tc2Vjcz9lLm1zZWNzOihuZXcgRGF0ZSkuZ2V0VGltZSgpLHY9dm9pZCAwIT09ZS5uc2Vjcz9lLm5zZWNzOnUrMSxtPWgtcysodi11KS8xZTQ7aWYobTwwJiZ2b2lkIDA9PT1lLmNsb2Nrc2VxJiYoZD1kKzEmMTYzODMpLChtPDB8fGg+cykmJnZvaWQgMD09PWUubnNlY3MmJih2PTApLHY+PTFlNCl0aHJvdyBuZXcgRXJyb3IoInV1aWQudjEoKTogQ2FuJ3QgY3JlYXRlIG1vcmUgdGhhbiAxME0gdXVpZHMvc2VjIik7cz1oLHU9dixpPWQsaCs9MTIyMTkyOTI4ZTU7dmFyIHk9KDFlNCooMjY4NDM1NDU1JmgpK3YpJTQyOTQ5NjcyOTY7bFtjKytdPXk+Pj4yNCYyNTUsbFtjKytdPXk+Pj4xNiYyNTUsbFtjKytdPXk+Pj44JjI1NSxsW2MrK109MjU1Jnk7dmFyIGc9aC80Mjk0OTY3Mjk2KjFlNCYyNjg0MzU0NTU7bFtjKytdPWc+Pj44JjI1NSxsW2MrK109MjU1JmcsbFtjKytdPWc+Pj4yNCYxNXwxNixsW2MrK109Zz4+PjE2JjI1NSxsW2MrK109ZD4+Pjh8MTI4LGxbYysrXT0yNTUmZDtmb3IodmFyIHc9MDt3PDY7Kyt3KWxbYyt3XT1mW3ddO3JldHVybiB0fHxhKGwpfWUuZXhwb3J0cz1jfSxjNjRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKCJlMWY0IiksaT1uKCIyMzY2Iik7ZnVuY3Rpb24gbyhlLHQsbil7dmFyIG89dCYmbnx8MDsic3RyaW5nIj09dHlwZW9mIGUmJih0PSJiaW5hcnkiPT09ZT9uZXcgQXJyYXkoMTYpOm51bGwsZT1udWxsKSxlPWV8fHt9O3ZhciBhPWUucmFuZG9tfHwoZS5ybmd8fHIpKCk7aWYoYVs2XT0xNSZhWzZdfDY0LGFbOF09NjMmYVs4XXwxMjgsdClmb3IodmFyIHM9MDtzPDE2Oysrcyl0W28rc109YVtzXTtyZXR1cm4gdHx8aShhKX1lLmV4cG9ydHM9b30sYzhiYTpmdW5jdGlvbihlLHQpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7bj1ufHxuZXcgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaChyKXsib2JqZWN0Ij09PXR5cGVvZiB3aW5kb3cmJihuPXdpbmRvdyl9ZS5leHBvcnRzPW59LGQ2ZTY6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjMyNTIiKSl9KSgwLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1lLG49dC5saWIscj1uLkhhc2hlcixpPXQueDY0LG89aS5Xb3JkLGE9aS5Xb3JkQXJyYXkscz10LmFsZ287ZnVuY3Rpb24gdSgpe3JldHVybiBvLmNyZWF0ZS5hcHBseShvLGFyZ3VtZW50cyl9dmFyIGM9W3UoMTExNjM1MjQwOCwzNjA5NzY3NDU4KSx1KDE4OTk0NDc0NDEsNjAyODkxNzI1KSx1KDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSksdSgzOTIxMDA5NTczLDIxNzMyOTU1NDgpLHUoOTYxOTg3MTYzLDQwODE2Mjg0NzIpLHUoMTUwODk3MDk5MywzMDUzODM0MjY1KSx1KDI0NTM2MzU3NDgsMjkzNzY3MTU3OSksdSgyODcwNzYzMjIxLDM2NjQ2MDk1NjApLHUoMzYyNDM4MTA4MCwyNzM0ODgzMzk0KSx1KDMxMDU5ODQwMSwxMTY0OTk2NTQyKSx1KDYwNzIyNTI3OCwxMzIzNjEwNzY0KSx1KDE0MjY4ODE5ODcsMzU5MDMwNDk5NCksdSgxOTI1MDc4Mzg4LDQwNjgxODIzODMpLHUoMjE2MjA3ODIwNiw5OTEzMzYxMTMpLHUoMjYxNDg4ODEwMyw2MzM4MDMzMTcpLHUoMzI0ODIyMjU4MCwzNDc5Nzc0ODY4KSx1KDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCksdSg0MDIyMjI0Nzc0LDk0NDcxMTEzOSksdSgyNjQzNDcwNzgsMjM0MTI2Mjc3MyksdSg2MDQ4MDc2MjgsMjAwNzgwMDkzMyksdSg3NzAyNTU5ODMsMTQ5NTk5MDkwMSksdSgxMjQ5MTUwMTIyLDE4NTY0MzEyMzUpLHUoMTU1NTA4MTY5MiwzMTc1MjE4MTMyKSx1KDE5OTYwNjQ5ODYsMjE5ODk1MDgzNyksdSgyNTU0MjIwODgyLDM5OTk3MTkzMzkpLHUoMjgyMTgzNDM0OSw3NjY3ODQwMTYpLHUoMjk1Mjk5NjgwOCwyNTY2NTk0ODc5KSx1KDMyMTAzMTM2NzEsMzIwMzMzNzk1NiksdSgzMzM2NTcxODkxLDEwMzQ0NTcwMjYpLHUoMzU4NDUyODcxMSwyNDY2OTQ4OTAxKSx1KDExMzkyNjk5MywzNzU4MzI2MzgzKSx1KDMzODI0MTg5NSwxNjg3MTc5MzYpLHUoNjY2MzA3MjA1LDExODgxNzk5NjQpLHUoNzczNTI5OTEyLDE1NDYwNDU3MzQpLHUoMTI5NDc1NzM3MiwxNTIyODA1NDg1KSx1KDEzOTYxODIyOTEsMjY0MzgzMzgyMyksdSgxNjk1MTgzNzAwLDIzNDM1MjczOTApLHUoMTk4NjY2MTA1MSwxMDE0NDc3NDgwKSx1KDIxNzcwMjYzNTAsMTIwNjc1OTE0MiksdSgyNDU2OTU2MDM3LDM0NDA3NzYyNyksdSgyNzMwNDg1OTIxLDEyOTA4NjM0NjApLHUoMjgyMDMwMjQxMSwzMTU4NDU0MjczKSx1KDMyNTk3MzA4MDAsMzUwNTk1MjY1NyksdSgzMzQ1NzY0NzcxLDEwNjIxNzAwOCksdSgzNTE2MDY1ODE3LDM2MDYwMDgzNDQpLHUoMzYwMDM1MjgwNCwxNDMyNzI1Nzc2KSx1KDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCksdSgyNzU0MjMzNDQsODUxMTY5NzIwKSx1KDQzMDIyNzczNCwzMTAwODIzNzUyKSx1KDUwNjk0ODYxNiwxMzYzMjU4MTk1KSx1KDY1OTA2MDU1NiwzNzUwNjg1NTkzKSx1KDg4Mzk5Nzg3NywzNzg1MDUwMjgwKSx1KDk1ODEzOTU3MSwzMzE4MzA3NDI3KSx1KDEzMjI4MjIyMTgsMzgxMjcyMzQwMyksdSgxNTM3MDAyMDYzLDIwMDMwMzQ5OTUpLHUoMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5KSx1KDE5NTU1NjIyMjIsMTU3NTk5MDAxMiksdSgyMDI0MTA0ODE1LDExMjU1OTI5MjgpLHUoMjIyNzczMDQ1MiwyNzE2OTA0MzA2KSx1KDIzNjE4NTI0MjQsNDQyNzc2MDQ0KSx1KDI0Mjg0MzY0NzQsNTkzNjk4MzQ0KSx1KDI3NTY3MzQxODcsMzczMzExMDI0OSksdSgzMjA0MDMxNDc5LDI5OTkzNTE1NzMpLHUoMzMyOTMyNTI5OCwzODE1OTIwNDI3KSx1KDMzOTE1Njk2MTQsMzkyODM4MzkwMCksdSgzNTE1MjY3MjcxLDU2NjI4MDcxMSksdSgzOTQwMTg3NjA2LDM0NTQwNjk1MzQpLHUoNDExODYzMDI3MSw0MDAwMjM5OTkyKSx1KDExNjQxODQ3NCwxOTE0MTM4NTU0KSx1KDE3NDI5MjQyMSwyNzMxMDU1MjcwKSx1KDI4OTM4MDM1NiwzMjAzOTkzMDA2KSx1KDQ2MDM5MzI2OSwzMjA2MjAzMTUpLHUoNjg1NDcxNzMzLDU4NzQ5NjgzNiksdSg4NTIxNDI5NzEsMTA4Njc5Mjg1MSksdSgxMDE3MDM2Mjk4LDM2NTU0MzEwMCksdSgxMTI2MDAwNTgwLDI2MTgyOTc2NzYpLHUoMTI4ODAzMzQ3MCwzNDA5ODU1MTU4KSx1KDE1MDE1MDU5NDgsNDIzNDUwOTg2NiksdSgxNjA3MTY3OTE1LDk4NzE2NzQ2OCksdSgxODE2NDAyMzE2LDEyNDYxODk1OTEpXSxsPVtdOyhmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8ODA7ZSsrKWxbZV09dSgpfSkoKTt2YXIgZj1zLlNIQTUxMj1yLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBhLmluaXQoW25ldyBvLmluaXQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKSxuZXcgby5pbml0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSksbmV3IG8uaW5pdCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpLG5ldyBvLmluaXQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KSxuZXcgby5pbml0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyksbmV3IG8uaW5pdCgyNjAwODIyOTI0LDcyNTUxMTE5OSksbmV3IG8uaW5pdCg1Mjg3MzQ2MzUsNDIxNTM4OTU0NyksbmV3IG8uaW5pdCgxNTQxNDU5MjI1LDMyNzAzMzIwOSldKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMuX2hhc2gud29yZHMscj1uWzBdLGk9blsxXSxvPW5bMl0sYT1uWzNdLHM9bls0XSx1PW5bNV0sZj1uWzZdLGQ9bls3XSxwPXIuaGlnaCxoPXIubG93LHY9aS5oaWdoLG09aS5sb3cseT1vLmhpZ2gsZz1vLmxvdyx3PWEuaGlnaCxiPWEubG93LF89cy5oaWdoLHg9cy5sb3csaz11LmhpZ2gsQz11LmxvdyxBPWYuaGlnaCxTPWYubG93LEU9ZC5oaWdoLFQ9ZC5sb3csTz1wLEI9aCxEPXYsaj1tLE49eSwkPWcsUj13LEw9YixQPV8sTT14LEk9ayxIPUMsej1BLEY9UyxVPUUscT1ULFc9MDtXPDgwO1crKyl7dmFyIFk9bFtXXTtpZihXPDE2KXZhciBWPVkuaGlnaD0wfGVbdCsyKlddLFg9WS5sb3c9MHxlW3QrMipXKzFdO2Vsc2V7dmFyIEc9bFtXLTE1XSxLPUcuaGlnaCxKPUcubG93LFE9KEs+Pj4xfEo8PDMxKV4oSz4+Pjh8Sjw8MjQpXks+Pj43LFo9KEo+Pj4xfEs8PDMxKV4oSj4+Pjh8Szw8MjQpXihKPj4+N3xLPDwyNSksZWU9bFtXLTJdLHRlPWVlLmhpZ2gsbmU9ZWUubG93LHJlPSh0ZT4+PjE5fG5lPDwxMyleKHRlPDwzfG5lPj4+MjkpXnRlPj4+NixpZT0obmU+Pj4xOXx0ZTw8MTMpXihuZTw8M3x0ZT4+PjI5KV4obmU+Pj42fHRlPDwyNiksb2U9bFtXLTddLGFlPW9lLmhpZ2gsc2U9b2UubG93LHVlPWxbVy0xNl0sY2U9dWUuaGlnaCxsZT11ZS5sb3c7WD1aK3NlLFY9USthZSsoWD4+PjA8Wj4+PjA/MTowKSxYPVgraWUsVj1WK3JlKyhYPj4+MDxpZT4+PjA/MTowKSxYPVgrbGUsVj1WK2NlKyhYPj4+MDxsZT4+PjA/MTowKTtZLmhpZ2g9VixZLmxvdz1YfXZhciBmZT1QJkleflAmeixkZT1NJkhefk0mRixwZT1PJkReTyZOXkQmTixoZT1CJmpeQiYkXmomJCx2ZT0oTz4+PjI4fEI8PDQpXihPPDwzMHxCPj4+MileKE88PDI1fEI+Pj43KSxtZT0oQj4+PjI4fE88PDQpXihCPDwzMHxPPj4+MileKEI8PDI1fE8+Pj43KSx5ZT0oUD4+PjE0fE08PDE4KV4oUD4+PjE4fE08PDE0KV4oUDw8MjN8TT4+PjkpLGdlPShNPj4+MTR8UDw8MTgpXihNPj4+MTh8UDw8MTQpXihNPDwyM3xQPj4+OSksd2U9Y1tXXSxiZT13ZS5oaWdoLF9lPXdlLmxvdyx4ZT1xK2dlLGtlPVUreWUrKHhlPj4+MDxxPj4+MD8xOjApLENlPSh4ZT14ZStkZSxrZT1rZStmZSsoeGU+Pj4wPGRlPj4+MD8xOjApLHhlPXhlK19lLGtlPWtlK2JlKyh4ZT4+PjA8X2U+Pj4wPzE6MCkseGU9eGUrWCxrZT1rZStWKyh4ZT4+PjA8WD4+PjA/MTowKSxtZStoZSksQWU9dmUrcGUrKENlPj4+MDxtZT4+PjA/MTowKTtVPXoscT1GLHo9SSxGPUgsST1QLEg9TSxNPUwreGV8MCxQPVIra2UrKE0+Pj4wPEw+Pj4wPzE6MCl8MCxSPU4sTD0kLE49RCwkPWosRD1PLGo9QixCPXhlK0NlfDAsTz1rZStBZSsoQj4+PjA8eGU+Pj4wPzE6MCl8MH1oPXIubG93PWgrQixyLmhpZ2g9cCtPKyhoPj4+MDxCPj4+MD8xOjApLG09aS5sb3c9bStqLGkuaGlnaD12K0QrKG0+Pj4wPGo+Pj4wPzE6MCksZz1vLmxvdz1nKyQsby5oaWdoPXkrTisoZz4+PjA8JD4+PjA/MTowKSxiPWEubG93PWIrTCxhLmhpZ2g9dytSKyhiPj4+MDxMPj4+MD8xOjApLHg9cy5sb3c9eCtNLHMuaGlnaD1fK1ArKHg+Pj4wPE0+Pj4wPzE6MCksQz11Lmxvdz1DK0gsdS5oaWdoPWsrSSsoQz4+PjA8SD4+PjA/MTowKSxTPWYubG93PVMrRixmLmhpZ2g9QSt6KyhTPj4+MDxGPj4+MD8xOjApLFQ9ZC5sb3c9VCtxLGQuaGlnaD1FK1UrKFQ+Pj4wPHE+Pj4wPzE6MCl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fZGF0YSx0PWUud29yZHMsbj04KnRoaXMuX25EYXRhQnl0ZXMscj04KmUuc2lnQnl0ZXM7dFtyPj4+NV18PTEyODw8MjQtciUzMix0WzMwKyhyKzEyOD4+PjEwPDw1KV09TWF0aC5mbG9vcihuLzQyOTQ5NjcyOTYpLHRbMzErKHIrMTI4Pj4+MTA8PDUpXT1uLGUuc2lnQnl0ZXM9NCp0Lmxlbmd0aCx0aGlzLl9wcm9jZXNzKCk7dmFyIGk9dGhpcy5faGFzaC50b1gzMigpO3JldHVybiBpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciBlPXIuY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gZS5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksZX0sYmxvY2tTaXplOjMyfSk7dC5TSEE1MTI9ci5fY3JlYXRlSGVscGVyKGYpLHQuSG1hY1NIQTUxMj1yLl9jcmVhdGVIbWFjSGVscGVyKGYpfSgpLGUuU0hBNTEyfSkpfSxkZjJmOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyKXtlLmV4cG9ydHM9cihuKCIyMWJmIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZSxuPXQubGliLHI9bi5Xb3JkQXJyYXksaT1uLkhhc2hlcixvPXQuYWxnbyxhPVtdLHM9by5TSEExPWkuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IHIuaW5pdChbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXRoaXMuX2hhc2gud29yZHMscj1uWzBdLGk9blsxXSxvPW5bMl0scz1uWzNdLHU9bls0XSxjPTA7Yzw4MDtjKyspe2lmKGM8MTYpYVtjXT0wfGVbdCtjXTtlbHNle3ZhciBsPWFbYy0zXV5hW2MtOF1eYVtjLTE0XV5hW2MtMTZdO2FbY109bDw8MXxsPj4+MzF9dmFyIGY9KHI8PDV8cj4+PjI3KSt1K2FbY107Zis9YzwyMD8xNTE4NTAwMjQ5KyhpJm98fmkmcyk6Yzw0MD8xODU5Nzc1MzkzKyhpXm9ecyk6Yzw2MD8oaSZvfGkmc3xvJnMpLTE4OTQwMDc1ODg6KGleb15zKS04OTk0OTc1MTQsdT1zLHM9byxvPWk8PDMwfGk+Pj4yLGk9cixyPWZ9blswXT1uWzBdK3J8MCxuWzFdPW5bMV0raXwwLG5bMl09blsyXStvfDAsblszXT1uWzNdK3N8MCxuWzRdPW5bNF0rdXwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2RhdGEsdD1lLndvcmRzLG49OCp0aGlzLl9uRGF0YUJ5dGVzLHI9OCplLnNpZ0J5dGVzO3JldHVybiB0W3I+Pj41XXw9MTI4PDwyNC1yJTMyLHRbMTQrKHIrNjQ+Pj45PDw0KV09TWF0aC5mbG9vcihuLzQyOTQ5NjcyOTYpLHRbMTUrKHIrNjQ+Pj45PDw0KV09bixlLnNpZ0J5dGVzPTQqdC5sZW5ndGgsdGhpcy5fcHJvY2VzcygpLHRoaXMuX2hhc2h9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGU9aS5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBlLl9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSxlfX0pO3QuU0hBMT1pLl9jcmVhdGVIZWxwZXIocyksdC5IbWFjU0hBMT1pLl9jcmVhdGVIbWFjSGVscGVyKHMpfSgpLGUuU0hBMX0pKX0sZGY3YzpmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoLTE7cj49MDtyLS0pe3ZhciBpPWVbcl07Ii4iPT09aT9lLnNwbGljZShyLDEpOiIuLiI9PT1pPyhlLnNwbGljZShyLDEpLG4rKyk6biYmKGUuc3BsaWNlKHIsMSksbi0tKX1pZih0KWZvcig7bi0tO24pZS51bnNoaWZ0KCIuLiIpO3JldHVybiBlfWZ1bmN0aW9uIHIoZSl7InN0cmluZyIhPT10eXBlb2YgZSYmKGUrPSIiKTt2YXIgdCxuPTAscj0tMSxpPSEwO2Zvcih0PWUubGVuZ3RoLTE7dD49MDstLXQpaWYoNDc9PT1lLmNoYXJDb2RlQXQodCkpe2lmKCFpKXtuPXQrMTticmVha319ZWxzZS0xPT09ciYmKGk9ITEscj10KzEpO3JldHVybi0xPT09cj8iIjplLnNsaWNlKG4scil9ZnVuY3Rpb24gaShlLHQpe2lmKGUuZmlsdGVyKXJldHVybiBlLmZpbHRlcih0KTtmb3IodmFyIG49W10scj0wO3I8ZS5sZW5ndGg7cisrKXQoZVtyXSxyLGUpJiZuLnB1c2goZVtyXSk7cmV0dXJuIG59dC5yZXNvbHZlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PSIiLHI9ITEsbz1hcmd1bWVudHMubGVuZ3RoLTE7bz49LTEmJiFyO28tLSl7dmFyIGE9bz49MD9hcmd1bWVudHNbb106ZS5jd2QoKTtpZigic3RyaW5nIiE9PXR5cGVvZiBhKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7YSYmKHQ9YSsiLyIrdCxyPSIvIj09PWEuY2hhckF0KDApKX1yZXR1cm4gdD1uKGkodC5zcGxpdCgiLyIpLChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSksIXIpLmpvaW4oIi8iKSwocj8iLyI6IiIpK3R8fCIuIn0sdC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7dmFyIHI9dC5pc0Fic29sdXRlKGUpLGE9Ii8iPT09byhlLC0xKTtyZXR1cm4gZT1uKGkoZS5zcGxpdCgiLyIpLChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSksIXIpLmpvaW4oIi8iKSxlfHxyfHwoZT0iLiIpLGUmJmEmJihlKz0iLyIpLChyPyIvIjoiIikrZX0sdC5pc0Fic29sdXRlPWZ1bmN0aW9uKGUpe3JldHVybiIvIj09PWUuY2hhckF0KDApfSx0LmpvaW49ZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQubm9ybWFsaXplKGkoZSwoZnVuY3Rpb24oZSx0KXtpZigic3RyaW5nIiE9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzIik7cmV0dXJuIGV9KSkuam9pbigiLyIpKX0sdC5yZWxhdGl2ZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYoIiIhPT1lW3RdKWJyZWFrO2Zvcih2YXIgbj1lLmxlbmd0aC0xO24+PTA7bi0tKWlmKCIiIT09ZVtuXSlicmVhaztyZXR1cm4gdD5uP1tdOmUuc2xpY2UodCxuLXQrMSl9ZT10LnJlc29sdmUoZSkuc3Vic3RyKDEpLG49dC5yZXNvbHZlKG4pLnN1YnN0cigxKTtmb3IodmFyIGk9cihlLnNwbGl0KCIvIikpLG89cihuLnNwbGl0KCIvIikpLGE9TWF0aC5taW4oaS5sZW5ndGgsby5sZW5ndGgpLHM9YSx1PTA7dTxhO3UrKylpZihpW3VdIT09b1t1XSl7cz11O2JyZWFrfXZhciBjPVtdO2Zvcih1PXM7dTxpLmxlbmd0aDt1KyspYy5wdXNoKCIuLiIpO3JldHVybiBjPWMuY29uY2F0KG8uc2xpY2UocykpLGMuam9pbigiLyIpfSx0LnNlcD0iLyIsdC5kZWxpbWl0ZXI9IjoiLHQuZGlybmFtZT1mdW5jdGlvbihlKXtpZigic3RyaW5nIiE9PXR5cGVvZiBlJiYoZSs9IiIpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7Zm9yKHZhciB0PWUuY2hhckNvZGVBdCgwKSxuPTQ3PT09dCxyPS0xLGk9ITAsbz1lLmxlbmd0aC0xO28+PTE7LS1vKWlmKHQ9ZS5jaGFyQ29kZUF0KG8pLDQ3PT09dCl7aWYoIWkpe3I9bzticmVha319ZWxzZSBpPSExO3JldHVybi0xPT09cj9uPyIvIjoiLiI6biYmMT09PXI/Ii8iOmUuc2xpY2UoMCxyKX0sdC5iYXNlbmFtZT1mdW5jdGlvbihlLHQpe3ZhciBuPXIoZSk7cmV0dXJuIHQmJm4uc3Vic3RyKC0xKnQubGVuZ3RoKT09PXQmJihuPW4uc3Vic3RyKDAsbi5sZW5ndGgtdC5sZW5ndGgpKSxufSx0LmV4dG5hbWU9ZnVuY3Rpb24oZSl7InN0cmluZyIhPT10eXBlb2YgZSYmKGUrPSIiKTtmb3IodmFyIHQ9LTEsbj0wLHI9LTEsaT0hMCxvPTAsYT1lLmxlbmd0aC0xO2E+PTA7LS1hKXt2YXIgcz1lLmNoYXJDb2RlQXQoYSk7aWYoNDchPT1zKS0xPT09ciYmKGk9ITEscj1hKzEpLDQ2PT09cz8tMT09PXQ/dD1hOjEhPT1vJiYobz0xKTotMSE9PXQmJihvPS0xKTtlbHNlIGlmKCFpKXtuPWErMTticmVha319cmV0dXJuLTE9PT10fHwtMT09PXJ8fDA9PT1vfHwxPT09byYmdD09PXItMSYmdD09PW4rMT8iIjplLnNsaWNlKHQscil9O3ZhciBvPSJiIj09PSJhYiIuc3Vic3RyKC0xKT9mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuc3Vic3RyKHQsbil9OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdDwwJiYodD1lLmxlbmd0aCt0KSxlLnN1YnN0cih0LG4pfX0pLmNhbGwodGhpcyxuKCI0MzYyIikpfSxlMWY0OmZ1bmN0aW9uKGUsdCl7dmFyIG49InVuZGVmaW5lZCIhPXR5cGVvZiBjcnlwdG8mJmNyeXB0by5nZXRSYW5kb21WYWx1ZXMmJmNyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChjcnlwdG8pfHwidW5kZWZpbmVkIiE9dHlwZW9mIG1zQ3J5cHRvJiYiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93Lm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyYmbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQobXNDcnlwdG8pO2lmKG4pe3ZhciByPW5ldyBVaW50OEFycmF5KDE2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm4gbihyKSxyfX1lbHNle3ZhciBpPW5ldyBBcnJheSgxNik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9MDt0PDE2O3QrKykwPT09KDMmdCkmJihlPTQyOTQ5NjcyOTYqTWF0aC5yYW5kb20oKSksaVt0XT1lPj4+KCgzJnQpPDwzKSYyNTU7cmV0dXJuIGl9fX0sZTNkYjpmdW5jdGlvbihlLHQpe3ZhciBuPXt9LnRvU3RyaW5nO2UuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1uLmNhbGwoZSl9fSxlNjFiOmZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCxyLGkpe2UuZXhwb3J0cz1yKG4oIjIxYmYiKSxuKCIzMjUyIikpfSkoMCwoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPWUscj1uLmxpYixpPXIuV29yZEFycmF5LG89ci5IYXNoZXIsYT1uLng2NCxzPWEuV29yZCx1PW4uYWxnbyxjPVtdLGw9W10sZj1bXTsoZnVuY3Rpb24oKXtmb3IodmFyIGU9MSx0PTAsbj0wO248MjQ7bisrKXtjW2UrNSp0XT0obisxKSoobisyKS8yJTY0O3ZhciByPXQlNSxpPSgyKmUrMyp0KSU1O2U9cix0PWl9Zm9yKGU9MDtlPDU7ZSsrKWZvcih0PTA7dDw1O3QrKylsW2UrNSp0XT10KygyKmUrMyp0KSU1KjU7Zm9yKHZhciBvPTEsYT0wO2E8MjQ7YSsrKXtmb3IodmFyIHU9MCxkPTAscD0wO3A8NztwKyspe2lmKDEmbyl7dmFyIGg9KDE8PHApLTE7aDwzMj9kXj0xPDxoOnVePTE8PGgtMzJ9MTI4Jm8/bz1vPDwxXjExMzpvPDw9MX1mW2FdPXMuY3JlYXRlKHUsZCl9fSkoKTt2YXIgZD1bXTsoZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPDI1O2UrKylkW2VdPXMuY3JlYXRlKCl9KSgpO3ZhciBwPXUuU0hBMz1vLmV4dGVuZCh7Y2ZnOm8uY2ZnLmV4dGVuZCh7b3V0cHV0TGVuZ3RoOjUxMn0pLF9kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuX3N0YXRlPVtdLHQ9MDt0PDI1O3QrKyllW3RdPW5ldyBzLmluaXQ7dGhpcy5ibG9ja1NpemU9KDE2MDAtMip0aGlzLmNmZy5vdXRwdXRMZW5ndGgpLzMyfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5fc3RhdGUscj10aGlzLmJsb2NrU2l6ZS8yLGk9MDtpPHI7aSsrKXt2YXIgbz1lW3QrMippXSxhPWVbdCsyKmkrMV07bz0xNjcxMTkzNSYobzw8OHxvPj4+MjQpfDQyNzgyNTUzNjAmKG88PDI0fG8+Pj44KSxhPTE2NzExOTM1JihhPDw4fGE+Pj4yNCl8NDI3ODI1NTM2MCYoYTw8MjR8YT4+PjgpO3ZhciBzPW5baV07cy5oaWdoXj1hLHMubG93Xj1vfWZvcih2YXIgdT0wO3U8MjQ7dSsrKXtmb3IodmFyIHA9MDtwPDU7cCsrKXtmb3IodmFyIGg9MCx2PTAsbT0wO208NTttKyspe3M9bltwKzUqbV07aF49cy5oaWdoLHZePXMubG93fXZhciB5PWRbcF07eS5oaWdoPWgseS5sb3c9dn1mb3IocD0wO3A8NTtwKyspe3ZhciBnPWRbKHArNCklNV0sdz1kWyhwKzEpJTVdLGI9dy5oaWdoLF89dy5sb3c7Zm9yKGg9Zy5oaWdoXihiPDwxfF8+Pj4zMSksdj1nLmxvd14oXzw8MXxiPj4+MzEpLG09MDttPDU7bSsrKXtzPW5bcCs1Km1dO3MuaGlnaF49aCxzLmxvd149dn19Zm9yKHZhciB4PTE7eDwyNTt4Kyspe3M9blt4XTt2YXIgaz1zLmhpZ2gsQz1zLmxvdyxBPWNbeF07aWYoQTwzMiloPWs8PEF8Qz4+PjMyLUEsdj1DPDxBfGs+Pj4zMi1BO2Vsc2UgaD1DPDxBLTMyfGs+Pj42NC1BLHY9azw8QS0zMnxDPj4+NjQtQTt2YXIgUz1kW2xbeF1dO1MuaGlnaD1oLFMubG93PXZ9dmFyIEU9ZFswXSxUPW5bMF07RS5oaWdoPVQuaGlnaCxFLmxvdz1ULmxvdztmb3IocD0wO3A8NTtwKyspZm9yKG09MDttPDU7bSsrKXt4PXArNSptLHM9blt4XTt2YXIgTz1kW3hdLEI9ZFsocCsxKSU1KzUqbV0sRD1kWyhwKzIpJTUrNSptXTtzLmhpZ2g9Ty5oaWdoXn5CLmhpZ2gmRC5oaWdoLHMubG93PU8ubG93Xn5CLmxvdyZELmxvd31zPW5bMF07dmFyIGo9Zlt1XTtzLmhpZ2hePWouaGlnaCxzLmxvd149ai5sb3d9fSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2RhdGEsbj1lLndvcmRzLHI9KHRoaXMuX25EYXRhQnl0ZXMsOCplLnNpZ0J5dGVzKSxvPTMyKnRoaXMuYmxvY2tTaXplO25bcj4+PjVdfD0xPDwyNC1yJTMyLG5bKHQuY2VpbCgocisxKS9vKSpvPj4+NSktMV18PTEyOCxlLnNpZ0J5dGVzPTQqbi5sZW5ndGgsdGhpcy5fcHJvY2VzcygpO2Zvcih2YXIgYT10aGlzLl9zdGF0ZSxzPXRoaXMuY2ZnLm91dHB1dExlbmd0aC84LHU9cy84LGM9W10sbD0wO2w8dTtsKyspe3ZhciBmPWFbbF0sZD1mLmhpZ2gscD1mLmxvdztkPTE2NzExOTM1JihkPDw4fGQ+Pj4yNCl8NDI3ODI1NTM2MCYoZDw8MjR8ZD4+PjgpLHA9MTY3MTE5MzUmKHA8PDh8cD4+PjI0KXw0Mjc4MjU1MzYwJihwPDwyNHxwPj4+OCksYy5wdXNoKHApLGMucHVzaChkKX1yZXR1cm4gbmV3IGkuaW5pdChjLHMpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgZT1vLmNsb25lLmNhbGwodGhpcyksdD1lLl9zdGF0ZT10aGlzLl9zdGF0ZS5zbGljZSgwKSxuPTA7bjwyNTtuKyspdFtuXT10W25dLmNsb25lKCk7cmV0dXJuIGV9fSk7bi5TSEEzPW8uX2NyZWF0ZUhlbHBlcihwKSxuLkhtYWNTSEEzPW8uX2NyZWF0ZUhtYWNIZWxwZXIocCl9KE1hdGgpLGUuU0hBM30pKX0sZWNkNjpmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1zZWxmfHx3aW5kb3c7dHJ5e3RyeXt2YXIgbzt0cnl7bz1uZXcgaS5CbG9iKFtlXSl9Y2F0Y2gobCl7dmFyIGE9aS5CbG9iQnVpbGRlcnx8aS5XZWJLaXRCbG9iQnVpbGRlcnx8aS5Nb3pCbG9iQnVpbGRlcnx8aS5NU0Jsb2JCdWlsZGVyO289bmV3IGEsby5hcHBlbmQoZSksbz1vLmdldEJsb2IoKX12YXIgcz1pLlVSTHx8aS53ZWJraXRVUkwsdT1zLmNyZWF0ZU9iamVjdFVSTChvKSxjPW5ldyBpW3RdKHUsbik7cmV0dXJuIHMucmV2b2tlT2JqZWN0VVJMKHUpLGN9Y2F0Y2gobCl7cmV0dXJuIG5ldyBpW3RdKCJkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIi5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KGUpKSxuKX19Y2F0Y2gobCl7aWYoIXIpdGhyb3cgRXJyb3IoIklubGluZSB3b3JrZXIgaXMgbm90IHN1cHBvcnRlZCIpO3JldHVybiBuZXcgaVt0XShyLG4pfX19LGY0ZWE6ZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0LHIsaSl7ZS5leHBvcnRzPXIobigiMjFiZiIpLG4oIjM4YmEiKSl9KSgwLChmdW5jdGlvbihlKXtyZXR1cm4gZS5tb2RlLkNUUj1mdW5jdGlvbigpe3ZhciB0PWUubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKSxuPXQuRW5jcnlwdG9yPXQuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9jaXBoZXIscj1uLmJsb2NrU2l6ZSxpPXRoaXMuX2l2LG89dGhpcy5fY291bnRlcjtpJiYobz10aGlzLl9jb3VudGVyPWkuc2xpY2UoMCksdGhpcy5faXY9dm9pZCAwKTt2YXIgYT1vLnNsaWNlKDApO24uZW5jcnlwdEJsb2NrKGEsMCksb1tyLTFdPW9bci0xXSsxfDA7Zm9yKHZhciBzPTA7czxyO3MrKyllW3Qrc11ePWFbc119fSk7cmV0dXJuIHQuRGVjcnlwdG9yPW4sdH0oKSxlLm1vZGUuQ1RSfSkpfX1dKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2h1bmstdmVuZG9ycy42NTMzZDY1Zi5qcy5tYXA="></script>
<script src="data:application/javascript;charset=utf-8;base64,KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCl7Zm9yKHZhciBuLHMsbz10WzBdLGY9dFsxXSxkPXRbMl0sdT0wLGg9W107dTxvLmxlbmd0aDt1Kyspcz1vW3VdLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpLHMpJiZpW3NdJiZoLnB1c2goaVtzXVswXSksaVtzXT0wO2ZvcihuIGluIGYpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGYsbikmJihlW25dPWZbbl0pO2MmJmModCk7d2hpbGUoaC5sZW5ndGgpaC5zaGlmdCgpKCk7cmV0dXJuIGEucHVzaC5hcHBseShhLGR8fFtdKSxyKCl9ZnVuY3Rpb24gcigpe2Zvcih2YXIgZSx0PTA7dDxhLmxlbmd0aDt0Kyspe2Zvcih2YXIgcj1hW3RdLG49ITAsbz0xO288ci5sZW5ndGg7bysrKXt2YXIgZj1yW29dOzAhPT1pW2ZdJiYobj0hMSl9biYmKGEuc3BsaWNlKHQtLSwxKSxlPXMocy5zPXJbMF0pKX1yZXR1cm4gZX12YXIgbj17fSxpPXthcHA6MH0sYT1bXTtmdW5jdGlvbiBzKHQpe2lmKG5bdF0pcmV0dXJuIG5bdF0uZXhwb3J0czt2YXIgcj1uW3RdPXtpOnQsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVt0XS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyxzKSxyLmw9ITAsci5leHBvcnRzfXMubT1lLHMuYz1uLHMuZD1mdW5jdGlvbihlLHQscil7cy5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0OnJ9KX0scy5yPWZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxzLnQ9ZnVuY3Rpb24oZSx0KXtpZigxJnQmJihlPXMoZSkpLDgmdClyZXR1cm4gZTtpZig0JnQmJiJvYmplY3QiPT09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgcj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHMucihyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkociwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmInN0cmluZyIhPXR5cGVvZiBlKWZvcih2YXIgbiBpbiBlKXMuZChyLG4sZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxuKSk7cmV0dXJuIHJ9LHMubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZVsiZGVmYXVsdCJdfTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gcy5kKHQsImEiLHQpLHR9LHMubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0scy5wPSIiO3ZhciBvPXdpbmRvd1sid2VicGFja0pzb25wIl09d2luZG93WyJ3ZWJwYWNrSnNvbnAiXXx8W10sZj1vLnB1c2guYmluZChvKTtvLnB1c2g9dCxvPW8uc2xpY2UoKTtmb3IodmFyIGQ9MDtkPG8ubGVuZ3RoO2QrKyl0KG9bZF0pO3ZhciBjPWY7YS5wdXNoKFswLCJjaHVuay12ZW5kb3JzIl0pLHIoKX0pKHswOmZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9cigiNTZkNyIpfSwiMDFhMSI6ZnVuY3Rpb24oZSx0LHIpe30sIjA1YzAiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7cigiMDFhMSIpfSwiMWYwMCI6ZnVuY3Rpb24oZSx0LHIpe30sIjJlYmYiOmZ1bmN0aW9uKGUsdCxyKXt9LDMwNDI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKCJmY2Y0Iil9LDM2Mjg6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKCJhZjYwIil9LCI0OTBiIjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3IoImRhMzgiKX0sIjU2ZDciOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ci5yKHQpO3ZhciBuPXIoIjJiMGUiKSxpPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQscj1lLl9zZWxmLl9jfHx0O3JldHVybiByKCJkaXYiLHtzdGF0aWNDbGFzczoicmVtb2RhbC1iZyByZW5kZXIiLGF0dHJzOntpZDoiYXBwIn19LFtyKCJkaXYiLHtzdGF0aWNDbGFzczoiY29udGFpbmVyIixhdHRyczp7aWQ6ImNvbnRlbnQifX0sW3IoImhlYWRsaW5lIikscigiZGl2Iix7c3RhdGljQ2xhc3M6InJvdyJ9LFtyKCJkaXYiLHtzdGF0aWNDbGFzczoiY29sLW1kLTEyIn0sW3IoImRlc2NyaXB0aW9uIildLDEpXSksZS5lcnJvcj9yKCJkaXYiLHtzdGF0aWNDbGFzczoicm93In0sW3IoImRpdiIse3N0YXRpY0NsYXNzOiJjb2wtbWQtMTIifSxbcigiZXJyIix7YXR0cnM6e2Vycm9yOmUuZXJyb3J9fSldLDEpXSk6ZS5fZSgpLHIoImRpdiIse3N0YXRpY0NsYXNzOiJyb3cifSxbcigiZGl2Iix7c3RhdGljQ2xhc3M6ImNvbC1tZC02In0sW3IoInVzZXJJbnB1dCIse2F0dHJzOntydW5uaW5nOmUucnVubmluZyxjb3JlczplLmNvcmVzfSxvbjp7c3RhcnQ6ZS5zdGFydEdlbixzdG9wOmUuc3RvcEdlbiwiaW5wdXQtY2hhbmdlIjplLnNldElucHV0fX0pXSwxKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoiY29sLW1kLTYifSxbcigic3RhdGlzdGljcyIse2F0dHJzOntwcmVmaXg6ZS5pbnB1dC5wcmVmaXgsc3VmZml4OmUuaW5wdXQuc3VmZml4LGNoZWNrc3VtOmUuaW5wdXQuY2hlY2tzdW0sc3RhdHVzOmUuc3RhdHVzLCJmaXJzdC10aWNrIjplLmZpcnN0VGlja319KV0sMSldKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoicm93In0sW3IoImRpdiIse3N0YXRpY0NsYXNzOiJjb2wtbWQtMTIifSxbcigicmVzdWx0Iix7YXR0cnM6e2FkZHJlc3M6ZS5yZXN1bHQuYWRkcmVzcywicHJpdmF0ZS1rZXkiOmUucmVzdWx0LnByaXZhdGVLZXl9fSldLDEpXSldLDEpLHIoInNhdmUiLHthdHRyczp7YWRkcmVzczplLnJlc3VsdC5hZGRyZXNzLnRvTG93ZXJDYXNlKCksInByaXZhdGUta2V5IjplLnJlc3VsdC5wcml2YXRlS2V5fX0pLHIoImZvb3QiKSxyKCJjb3JuZXIiKV0sMSl9LGE9W10scz1yKCJlY2Q2Iiksbz1yLm4ocyk7ZnVuY3Rpb24gZigpe3JldHVybiBvKCkoJyhmdW5jdGlvbihlKXt2YXIgdD17fTtmdW5jdGlvbiByKG4pe2lmKHRbbl0pcmV0dXJuIHRbbl0uZXhwb3J0czt2YXIgaT10W25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtuXS5jYWxsKGkuZXhwb3J0cyxpLGkuZXhwb3J0cyxyKSxpLmw9ITAsaS5leHBvcnRzfXIubT1lLHIuYz10LHIuZD1mdW5jdGlvbihlLHQsbil7ci5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0Om59KX0sci5yPWZ1bmN0aW9uKGUpeyJ1bmRlZmluZWQiIT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pfSxyLnQ9ZnVuY3Rpb24oZSx0KXtpZigxJnQmJihlPXIoZSkpLDgmdClyZXR1cm4gZTtpZig0JnQmJiJvYmplY3QiPT09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHIucihuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmInN0cmluZyIhPXR5cGVvZiBlKWZvcih2YXIgaSBpbiBlKXIuZChuLGksZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxpKSk7cmV0dXJuIG59LHIubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZVsiZGVmYXVsdCJdfTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sci5wPSIiLHIoci5zPSI5ODYyIil9KSh7MDpmdW5jdGlvbihlLHQpe30sIjAxOGEiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG47ZnVuY3Rpb24gaShlKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19dmFyIGE9cigiOTA1NCIpLmNvZGVzLGY9YS5FUlJfTUlTU0lOR19BUkdTLG89YS5FUlJfU1RSRUFNX0RFU1RST1lFRDtmdW5jdGlvbiBzKGUpe2lmKGUpdGhyb3cgZX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLnNldEhlYWRlciYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmFib3J0fWZ1bmN0aW9uIGMoZSx0LGEsZil7Zj1pKGYpO3ZhciBzPSExO2Uub24oImNsb3NlIiwoZnVuY3Rpb24oKXtzPSEwfSkpLHZvaWQgMD09PW4mJihuPXIoIjY1YWIiKSksbihlLHtyZWFkYWJsZTp0LHdyaXRhYmxlOmF9LChmdW5jdGlvbihlKXtpZihlKXJldHVybiBmKGUpO3M9ITAsZigpfSkpO3ZhciBjPSExO3JldHVybiBmdW5jdGlvbih0KXtpZighcyYmIWMpcmV0dXJuIGM9ITAsZChlKT9lLmFib3J0KCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLmRlc3Ryb3k/ZS5kZXN0cm95KCk6dm9pZCBmKHR8fG5ldyBvKCJwaXBlIikpfX1mdW5jdGlvbiB1KGUpe2UoKX1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGUucGlwZSh0KX1mdW5jdGlvbiBsKGUpe3JldHVybiBlLmxlbmd0aD8iZnVuY3Rpb24iIT09dHlwZW9mIGVbZS5sZW5ndGgtMV0/czplLnBvcCgpOnN9ZnVuY3Rpb24gYigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBuLGk9bCh0KTtpZihBcnJheS5pc0FycmF5KHRbMF0pJiYodD10WzBdKSx0Lmxlbmd0aDwyKXRocm93IG5ldyBmKCJzdHJlYW1zIik7dmFyIGE9dC5tYXAoKGZ1bmN0aW9uKGUscil7dmFyIGY9cjx0Lmxlbmd0aC0xLG89cj4wO3JldHVybiBjKGUsZixvLChmdW5jdGlvbihlKXtufHwobj1lKSxlJiZhLmZvckVhY2godSksZnx8KGEuZm9yRWFjaCh1KSxpKG4pKX0pKX0pKTtyZXR1cm4gdC5yZWR1Y2UoaCl9ZS5leHBvcnRzPWJ9LCIwMjdkIjpmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPXIoImZhYTEiKS5FdmVudEVtaXR0ZXJ9LCIwN2YyIjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoImMzYzAiKSxpPXIoIjZlZWQiKTtmdW5jdGlvbiBhKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgYSkpcmV0dXJuIG5ldyBhO2kuY2FsbCh0aGlzKSx0aGlzLmg9WzMyMzgzNzEwMzIsOTE0MTUwNjYzLDgxMjcwMjk5OSw0MTQ0OTEyNjk3LDQyOTA3NzU4NTcsMTc1MDYwMzAyNSwxNjk0MDc2ODM5LDMyMDQwNzU0MjhdfW4uaW5oZXJpdHMoYSxpKSxlLmV4cG9ydHM9YSxhLmJsb2NrU2l6ZT01MTIsYS5vdXRTaXplPTIyNCxhLmhtYWNTdHJlbmd0aD0xOTIsYS5wYWRMZW5ndGg9NjQsYS5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihlKXtyZXR1cm4iaGV4Ij09PWU/bi50b0hleDMyKHRoaXMuaC5zbGljZSgwLDcpLCJiaWciKTpuLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsNyksImJpZyIpfX0sIjBjYmIiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG4saT10LGE9cigiN2Q5MiIpLGY9cigiNDEzNiIpLG89cigiZjNhMyIpLHM9by5hc3NlcnQ7ZnVuY3Rpb24gZChlKXsic2hvcnQiPT09ZS50eXBlP3RoaXMuY3VydmU9bmV3IGYuc2hvcnQoZSk6ImVkd2FyZHMiPT09ZS50eXBlP3RoaXMuY3VydmU9bmV3IGYuZWR3YXJkcyhlKTp0aGlzLmN1cnZlPW5ldyBmLm1vbnQoZSksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLm49dGhpcy5jdXJ2ZS5uLHRoaXMuaGFzaD1lLmhhc2gscyh0aGlzLmcudmFsaWRhdGUoKSwiSW52YWxpZCBjdXJ2ZSIpLHModGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwiSW52YWxpZCBjdXJ2ZSwgRypOICE9IE8iKX1mdW5jdGlvbiBjKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGksZSx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHI9bmV3IGQodCk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpLGUse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnJ9KSxyfX0pfWkuUHJlc2V0Q3VydmU9ZCxjKCJwMTkyIix7dHlwZToic2hvcnQiLHByaW1lOiJwMTkyIixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjY0MjEwNTE5IGU1OWM4MGU3IDBmYTdlOWFiIDcyMjQzMDQ5IGZlYjhkZWVjIGMxNDZiOWIxIixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMSIsaGFzaDphLnNoYTI1NixnUmVkOiExLGc6WyIxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMiIsIjA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExIl19KSxjKCJwMjI0Iix7dHlwZToic2hvcnQiLHByaW1lOiJwMjI0IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMSIsYToiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUiLGI6ImI0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0IixuOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCIsaGFzaDphLnNoYTI1NixnUmVkOiExLGc6WyJiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMSIsImJkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0Il19KSxjKCJwMjU2Iix7dHlwZToic2hvcnQiLHByaW1lOm51bGwscDoiZmZmZmZmZmYgMDAwMDAwMDEgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYiLGE6ImZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjIixiOiI1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAyN2QyNjA0YiIsbjoiZmZmZmZmZmYgMDAwMDAwMDAgZmZmZmZmZmYgZmZmZmZmZmYgYmNlNmZhYWQgYTcxNzllODQgZjNiOWNhYzIgZmM2MzI1NTEiLGhhc2g6YS5zaGEyNTYsZ1JlZDohMSxnOlsiNmIxN2QxZjIgZTEyYzQyNDcgZjhiY2U2ZTUgNjNhNDQwZjIgNzcwMzdkODEgMmRlYjMzYTAgZjRhMTM5NDUgZDg5OGMyOTYiLCI0ZmUzNDJlMiBmZTFhN2Y5YiA4ZWU3ZWI0YSA3YzBmOWUxNiAyYmNlMzM1NyA2YjMxNWVjZSBjYmI2NDA2OCAzN2JmNTFmNSJdfSksYygicDM4NCIse3R5cGU6InNob3J0IixwcmltZTpudWxsLHA6ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIixhOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYyIsYjoiYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgNTAxMzg3NWEgYzY1NjM5OGQgOGEyZWQxOWQgMmE4NWM4ZWQgZDNlYzJhZWYiLG46ImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxIGY0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczIixoYXNoOmEuc2hhMzg0LGdSZWQ6ITEsZzpbImFhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4IDU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3IiwiMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgMGE2MGIxY2UgMWQ3ZTgxOWQgN2E0MzFkN2MgOTBlYTBlNWYiXX0pLGMoInA1MjEiLHt0eXBlOiJzaG9ydCIscHJpbWU6bnVsbCxwOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiIsYToiMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmMiLGI6IjAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViIDk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkIDNiYjFiZjA3IDM1NzNkZjg4IDNkMmMzNGYxIGVmNDUxZmQ0IDZiNTAzZjAwIixuOiIwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCBmNzA5YTVkMCAzYmI1YzliOCA4OTljNDdhZSBiYjZmYjcxZSA5MTM4NjQwOSIsaGFzaDphLnNoYTUxMixnUmVkOiExLGc6WyIwMDAwMDBjNiA4NThlMDZiNyAwNDA0ZTljZCA5ZTNlY2I2NiAyMzk1YjQ0MiA5YzY0ODEzOSAwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyBhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NiIsIjAwMDAwMTE4IDM5Mjk2YTc4IDlhM2JjMDA0IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5IDU3OWI0NDY4IDE3YWZiZDE3IDI3M2U2NjJjIDk3ZWU3Mjk5IDVlZjQyNjQwIGM1NTBiOTAxIDNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwIl19KSxjKCJjdXJ2ZTI1NTE5Iix7dHlwZToibW9udCIscHJpbWU6InAyNTUxOSIscDoiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIsYToiNzZkMDYiLGI6IjEiLG46IjEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQiLGhhc2g6YS5zaGEyNTYsZ1JlZDohMSxnOlsiOSJdfSksYygiZWQyNTUxOSIse3R5cGU6ImVkd2FyZHMiLHByaW1lOiJwMjU1MTkiLHA6IjdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQiLGE6Ii0xIixjOiIxIixkOiI1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzIixuOiIxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkIixoYXNoOmEuc2hhMjU2LGdSZWQ6ITEsZzpbIjIxNjkzNmQzY2Q2ZTUzZmVjMGE0ZTIzMWZkZDZkYzVjNjkyY2M3NjA5NTI1YTdiMmM5NTYyZDYwOGYyNWQ1MWEiLCI2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4Il19KTt0cnl7bj1yKCI0MDliIil9Y2F0Y2godSl7bj12b2lkIDB9Yygic2VjcDI1NmsxIix7dHlwZToic2hvcnQiLHByaW1lOiJrMjU2IixwOiJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIsYToiMCIsYjoiNyIsbjoiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgYmFhZWRjZTYgYWY0OGEwM2IgYmZkMjVlOGMgZDAzNjQxNDEiLGg6IjEiLGhhc2g6YS5zaGEyNTYsYmV0YToiN2FlOTZhMmI2NTdjMDcxMDZlNjQ0NzllYWMzNDM0ZTk5Y2YwNDk3NTEyZjU4OTk1YzEzOTZjMjg3MTk1MDFlZSIsbGFtYmRhOiI1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyIixiYXNpczpbe2E6IjMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1IixiOiItZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMifSx7YToiMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4IixiOiIzMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNSJ9XSxnUmVkOiExLGc6WyI3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4IiwiNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCIsbl19KX0sMTpmdW5jdGlvbihlLHQpe30sIjExZGMiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQsbil7dmFyIGk9NjU1MzYsYT00Mjk0OTY3Mjk1O2Z1bmN0aW9uIGYoKXt0aHJvdyBuZXcgRXJyb3IoIlNlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIuXFxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfXZhciBvPXIoIjg3MDciKS5CdWZmZXIscz10LmNyeXB0b3x8dC5tc0NyeXB0bztmdW5jdGlvbiBkKGUsdCl7aWYoZT5hKXRocm93IG5ldyBSYW5nZUVycm9yKCJyZXF1ZXN0ZWQgdG9vIG1hbnkgcmFuZG9tIGJ5dGVzIik7dmFyIHI9by5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT5pKWZvcih2YXIgZj0wO2Y8ZTtmKz1pKXMuZ2V0UmFuZG9tVmFsdWVzKHIuc2xpY2UoZixmK2kpKTtlbHNlIHMuZ2V0UmFuZG9tVmFsdWVzKHIpO3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgdD9uLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxyKX0pKTpyfXMmJnMuZ2V0UmFuZG9tVmFsdWVzP2UuZXhwb3J0cz1kOmUuZXhwb3J0cz1mfSkuY2FsbCh0aGlzLHIoImM4YmEiKSxyKCI0MzYyIikpfSwiMTNlMiI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCJjM2MwIiksaT1yKCJlZGM5IiksYT1yKCJhYTU2IiksZj1uLnJvdGwzMixvPW4uc3VtMzIscz1uLnN1bTMyXzUsZD1hLmZ0XzEsYz1pLkJsb2NrSGFzaCx1PVsxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwzMzk1NDY5NzgyXTtmdW5jdGlvbiBoKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgaCkpcmV0dXJuIG5ldyBoO2MuY2FsbCh0aGlzKSx0aGlzLmg9WzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSx0aGlzLlc9bmV3IEFycmF5KDgwKX1uLmluaGVyaXRzKGgsYyksZS5leHBvcnRzPWgsaC5ibG9ja1NpemU9NTEyLGgub3V0U2l6ZT0xNjAsaC5obWFjU3RyZW5ndGg9ODAsaC5wYWRMZW5ndGg9NjQsaC5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj10aGlzLlcsbj0wO248MTY7bisrKXJbbl09ZVt0K25dO2Zvcig7bjxyLmxlbmd0aDtuKyspcltuXT1mKHJbbi0zXV5yW24tOF1ecltuLTE0XV5yW24tMTZdLDEpO3ZhciBpPXRoaXMuaFswXSxhPXRoaXMuaFsxXSxjPXRoaXMuaFsyXSxoPXRoaXMuaFszXSxsPXRoaXMuaFs0XTtmb3Iobj0wO248ci5sZW5ndGg7bisrKXt2YXIgYj1+fihuLzIwKSxwPXMoZihpLDUpLGQoYixhLGMsaCksbCxyW25dLHVbYl0pO2w9aCxoPWMsYz1mKGEsMzApLGE9aSxpPXB9dGhpcy5oWzBdPW8odGhpcy5oWzBdLGkpLHRoaXMuaFsxXT1vKHRoaXMuaFsxXSxhKSx0aGlzLmhbMl09byh0aGlzLmhbMl0sYyksdGhpcy5oWzNdPW8odGhpcy5oWzNdLGgpLHRoaXMuaFs0XT1vKHRoaXMuaFs0XSxsKX0saC5wcm90b3R5cGUuX2RpZ2VzdD1mdW5jdGlvbihlKXtyZXR1cm4iaGV4Ij09PWU/bi50b0hleDMyKHRoaXMuaCwiYmlnIik6bi5zcGxpdDMyKHRoaXMuaCwiYmlnIil9fSwiMWZiNSI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt0LmJ5dGVMZW5ndGg9Yyx0LnRvQnl0ZUFycmF5PWgsdC5mcm9tQnl0ZUFycmF5PXA7Zm9yKHZhciBuPVtdLGk9W10sYT0idW5kZWZpbmVkIiE9PXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksZj0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsbz0wLHM9Zi5sZW5ndGg7bzxzOysrbyluW29dPWZbb10saVtmLmNoYXJDb2RlQXQobyldPW87ZnVuY3Rpb24gZChlKXt2YXIgdD1lLmxlbmd0aDtpZih0JTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTt2YXIgcj1lLmluZGV4T2YoIj0iKTstMT09PXImJihyPXQpO3ZhciBuPXI9PT10PzA6NC1yJTQ7cmV0dXJuW3Isbl19ZnVuY3Rpb24gYyhlKXt2YXIgdD1kKGUpLHI9dFswXSxuPXRbMV07cmV0dXJuIDMqKHIrbikvNC1ufWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiAzKih0K3IpLzQtcn1mdW5jdGlvbiBoKGUpe3ZhciB0LHIsbj1kKGUpLGY9blswXSxvPW5bMV0scz1uZXcgYSh1KGUsZixvKSksYz0wLGg9bz4wP2YtNDpmO2ZvcihyPTA7cjxoO3IrPTQpdD1pW2UuY2hhckNvZGVBdChyKV08PDE4fGlbZS5jaGFyQ29kZUF0KHIrMSldPDwxMnxpW2UuY2hhckNvZGVBdChyKzIpXTw8NnxpW2UuY2hhckNvZGVBdChyKzMpXSxzW2MrK109dD4+MTYmMjU1LHNbYysrXT10Pj44JjI1NSxzW2MrK109MjU1JnQ7cmV0dXJuIDI9PT1vJiYodD1pW2UuY2hhckNvZGVBdChyKV08PDJ8aVtlLmNoYXJDb2RlQXQocisxKV0+PjQsc1tjKytdPTI1NSZ0KSwxPT09byYmKHQ9aVtlLmNoYXJDb2RlQXQocildPDwxMHxpW2UuY2hhckNvZGVBdChyKzEpXTw8NHxpW2UuY2hhckNvZGVBdChyKzIpXT4+MixzW2MrK109dD4+OCYyNTUsc1tjKytdPTI1NSZ0KSxzfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIG5bZT4+MTgmNjNdK25bZT4+MTImNjNdK25bZT4+NiY2M10rbls2MyZlXX1mdW5jdGlvbiBiKGUsdCxyKXtmb3IodmFyIG4saT1bXSxhPXQ7YTxyO2ErPTMpbj0oZVthXTw8MTYmMTY3MTE2ODApKyhlW2ErMV08PDgmNjUyODApKygyNTUmZVthKzJdKSxpLnB1c2gobChuKSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gcChlKXtmb3IodmFyIHQscj1lLmxlbmd0aCxpPXIlMyxhPVtdLGY9MTYzODMsbz0wLHM9ci1pO288cztvKz1mKWEucHVzaChiKGUsbyxvK2Y+cz9zOm8rZikpO3JldHVybiAxPT09aT8odD1lW3ItMV0sYS5wdXNoKG5bdD4+Ml0rblt0PDw0JjYzXSsiPT0iKSk6Mj09PWkmJih0PShlW3ItMl08PDgpK2Vbci0xXSxhLnB1c2goblt0Pj4xMF0rblt0Pj40JjYzXStuW3Q8PDImNjNdKyI9IikpLGEuam9pbigiIil9aVsiLSIuY2hhckNvZGVBdCgwKV09NjIsaVsiXyIuY2hhckNvZGVBdCgwKV09NjN9LDI6ZnVuY3Rpb24oZSx0KXt9LDIxMzc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCJjM2MwIiksaT1yKCJkYTNlIik7ZnVuY3Rpb24gYShlLHQscil7aWYoISh0aGlzIGluc3RhbmNlb2YgYSkpcmV0dXJuIG5ldyBhKGUsdCxyKTt0aGlzLkhhc2g9ZSx0aGlzLmJsb2NrU2l6ZT1lLmJsb2NrU2l6ZS84LHRoaXMub3V0U2l6ZT1lLm91dFNpemUvOCx0aGlzLmlubmVyPW51bGwsdGhpcy5vdXRlcj1udWxsLHRoaXMuX2luaXQobi50b0FycmF5KHQscikpfWUuZXhwb3J0cz1hLGEucHJvdG90eXBlLl9pbml0PWZ1bmN0aW9uKGUpe2UubGVuZ3RoPnRoaXMuYmxvY2tTaXplJiYoZT0obmV3IHRoaXMuSGFzaCkudXBkYXRlKGUpLmRpZ2VzdCgpKSxpKGUubGVuZ3RoPD10aGlzLmJsb2NrU2l6ZSk7Zm9yKHZhciB0PWUubGVuZ3RoO3Q8dGhpcy5ibG9ja1NpemU7dCsrKWUucHVzaCgwKTtmb3IodD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF1ePTU0O2Zvcih0aGlzLmlubmVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoZSksdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF1ePTEwNjt0aGlzLm91dGVyPShuZXcgdGhpcy5IYXNoKS51cGRhdGUoZSl9LGEucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLmlubmVyLnVwZGF0ZShlLHQpLHRoaXN9LGEucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vdXRlci51cGRhdGUodGhpcy5pbm5lci5kaWdlc3QoKSksdGhpcy5vdXRlci5kaWdlc3QoZSl9fSwyMzMwOmZ1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9cigiM2E4OSIpKHIoIjQ2NzMiKSl9LDI0MTY6ZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbih0KXtjb25zdCBuPXIoIjZmZGUiKTtmdW5jdGlvbiBpKCl7dGhpcy5zdGF0ZT1bMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF0sdGhpcy5ibG9ja1NpemU9bnVsbCx0aGlzLmNvdW50PTAsdGhpcy5zcXVlZXppbmc9ITF9aS5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbihlLHQpe2ZvcihsZXQgcj0wO3I8NTA7KytyKXRoaXMuc3RhdGVbcl09MDt0aGlzLmJsb2NrU2l6ZT1lLzgsdGhpcy5jb3VudD0wLHRoaXMuc3F1ZWV6aW5nPSExfSxpLnByb3RvdHlwZS5hYnNvcmI9ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDsrK3QpdGhpcy5zdGF0ZVt+fih0aGlzLmNvdW50LzQpXV49ZVt0XTw8dGhpcy5jb3VudCU0KjgsdGhpcy5jb3VudCs9MSx0aGlzLmNvdW50PT09dGhpcy5ibG9ja1NpemUmJihuLnAxNjAwKHRoaXMuc3RhdGUpLHRoaXMuY291bnQ9MCl9LGkucHJvdG90eXBlLmFic29yYkxhc3RGZXdCaXRzPWZ1bmN0aW9uKGUpe3RoaXMuc3RhdGVbfn4odGhpcy5jb3VudC80KV1ePWU8PHRoaXMuY291bnQlNCo4LDAhPT0oMTI4JmUpJiZ0aGlzLmNvdW50PT09dGhpcy5ibG9ja1NpemUtMSYmbi5wMTYwMCh0aGlzLnN0YXRlKSx0aGlzLnN0YXRlW35+KCh0aGlzLmJsb2NrU2l6ZS0xKS80KV1ePTEyODw8KHRoaXMuYmxvY2tTaXplLTEpJTQqOCxuLnAxNjAwKHRoaXMuc3RhdGUpLHRoaXMuY291bnQ9MCx0aGlzLnNxdWVlemluZz0hMH0saS5wcm90b3R5cGUuc3F1ZWV6ZT1mdW5jdGlvbihlKXt0aGlzLnNxdWVlemluZ3x8dGhpcy5hYnNvcmJMYXN0RmV3Qml0cygxKTtjb25zdCByPXQuYWxsb2MoZSk7Zm9yKGxldCB0PTA7dDxlOysrdClyW3RdPXRoaXMuc3RhdGVbfn4odGhpcy5jb3VudC80KV0+Pj50aGlzLmNvdW50JTQqOCYyNTUsdGhpcy5jb3VudCs9MSx0aGlzLmNvdW50PT09dGhpcy5ibG9ja1NpemUmJihuLnAxNjAwKHRoaXMuc3RhdGUpLHRoaXMuY291bnQ9MCk7cmV0dXJuIHJ9LGkucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTA7dDw1MDsrK3QpZS5zdGF0ZVt0XT10aGlzLnN0YXRlW3RdO2UuYmxvY2tTaXplPXRoaXMuYmxvY2tTaXplLGUuY291bnQ9dGhpcy5jb3VudCxlLnNxdWVlemluZz10aGlzLnNxdWVlemluZ30sZS5leHBvcnRzPWl9KS5jYWxsKHRoaXMscigiYjYzOSIpLkJ1ZmZlcil9LDI4MDE6ZnVuY3Rpb24oZSl7ZS5leHBvcnRzPUpTT04ucGFyc2UoXCd7Im5hbWUiOiJlbGxpcHRpYyIsInZlcnNpb24iOiI2LjUuNCIsImRlc2NyaXB0aW9uIjoiRUMgY3J5cHRvZ3JhcGh5IiwibWFpbiI6ImxpYi9lbGxpcHRpYy5qcyIsImZpbGVzIjpbImxpYiJdLCJzY3JpcHRzIjp7ImxpbnQiOiJlc2xpbnQgbGliIHRlc3QiLCJsaW50OmZpeCI6Im5wbSBydW4gbGludCAtLSAtLWZpeCIsInVuaXQiOiJpc3RhbmJ1bCB0ZXN0IF9tb2NoYSAtLXJlcG9ydGVyPXNwZWMgdGVzdC9pbmRleC5qcyIsInRlc3QiOiJucG0gcnVuIGxpbnQgJiYgbnBtIHJ1biB1bml0IiwidmVyc2lvbiI6ImdydW50IGRpc3QgJiYgZ2l0IGFkZCBkaXN0LyJ9LCJyZXBvc2l0b3J5Ijp7InR5cGUiOiJnaXQiLCJ1cmwiOiJnaXRAZ2l0aHViLmNvbTppbmR1dG55L2VsbGlwdGljIn0sImtleXdvcmRzIjpbIkVDIiwiRWxsaXB0aWMiLCJjdXJ2ZSIsIkNyeXB0b2dyYXBoeSJdLCJhdXRob3IiOiJGZWRvciBJbmR1dG55IDxmZWRvckBpbmR1dG55LmNvbT4iLCJsaWNlbnNlIjoiTUlUIiwiYnVncyI6eyJ1cmwiOiJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYy9pc3N1ZXMifSwiaG9tZXBhZ2UiOiJodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9lbGxpcHRpYyIsImRldkRlcGVuZGVuY2llcyI6eyJicmZzIjoiXjIuMC4yIiwiY292ZXJhbGxzIjoiXjMuMS4wIiwiZXNsaW50IjoiXjcuNi4wIiwiZ3J1bnQiOiJeMS4yLjEiLCJncnVudC1icm93c2VyaWZ5IjoiXjUuMy4wIiwiZ3J1bnQtY2xpIjoiXjEuMy4yIiwiZ3J1bnQtY29udHJpYi1jb25uZWN0IjoiXjMuMC4wIiwiZ3J1bnQtY29udHJpYi1jb3B5IjoiXjEuMC4wIiwiZ3J1bnQtY29udHJpYi11Z2xpZnkiOiJeNS4wLjAiLCJncnVudC1tb2NoYS1pc3RhbmJ1bCI6Il41LjAuMiIsImdydW50LXNhdWNlbGFicyI6Il45LjAuMSIsImlzdGFuYnVsIjoiXjAuNC41IiwibW9jaGEiOiJeOC4wLjEifSwiZGVwZW5kZW5jaWVzIjp7ImJuLmpzIjoiXjQuMTEuOSIsImJyb3JhbmQiOiJeMS4xLjAiLCJoYXNoLmpzIjoiXjEuMC4wIiwiaG1hYy1kcmJnIjoiXjEuMC4xIiwiaW5oZXJpdHMiOiJeMi4wLjQiLCJtaW5pbWFsaXN0aWMtYXNzZXJ0IjoiXjEuMC4xIiwibWluaW1hbGlzdGljLWNyeXB0by11dGlscyI6Il4xLjAuMSJ9fVwnKX0sMzpmdW5jdGlvbihlLHQpe30sMzMwMDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoImYzYTMiKSxpPXIoIjgwYWYiKSxhPXIoIjNmYjUiKSxmPXIoImVhNTMiKSxvPW4uYXNzZXJ0O2Z1bmN0aW9uIHMoZSl7Zi5jYWxsKHRoaXMsInNob3J0IixlKSx0aGlzLmE9bmV3IGkoZS5hLDE2KS50b1JlZCh0aGlzLnJlZCksdGhpcy5iPW5ldyBpKGUuYiwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMudGludj10aGlzLnR3by5yZWRJbnZtKCksdGhpcy56ZXJvQT0wPT09dGhpcy5hLmZyb21SZWQoKS5jbXBuKDApLHRoaXMudGhyZWVBPTA9PT10aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpLHRoaXMuZW5kbz10aGlzLl9nZXRFbmRvbW9ycGhpc20oZSksdGhpcy5fZW5kb1duYWZUMT1uZXcgQXJyYXkoNCksdGhpcy5fZW5kb1duYWZUMj1uZXcgQXJyYXkoNCl9ZnVuY3Rpb24gZChlLHQscixuKXtmLkJhc2VQb2ludC5jYWxsKHRoaXMsZSwiYWZmaW5lIiksbnVsbD09PXQmJm51bGw9PT1yPyh0aGlzLng9bnVsbCx0aGlzLnk9bnVsbCx0aGlzLmluZj0hMCk6KHRoaXMueD1uZXcgaSh0LDE2KSx0aGlzLnk9bmV3IGkociwxNiksbiYmKHRoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCksdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy54LnJlZHx8KHRoaXMueD10aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnkucmVkfHwodGhpcy55PXRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuaW5mPSExKX1mdW5jdGlvbiBjKGUsdCxyLG4pe2YuQmFzZVBvaW50LmNhbGwodGhpcyxlLCJqYWNvYmlhbiIpLG51bGw9PT10JiZudWxsPT09ciYmbnVsbD09PW4/KHRoaXMueD10aGlzLmN1cnZlLm9uZSx0aGlzLnk9dGhpcy5jdXJ2ZS5vbmUsdGhpcy56PW5ldyBpKDApKToodGhpcy54PW5ldyBpKHQsMTYpLHRoaXMueT1uZXcgaShyLDE2KSx0aGlzLno9bmV3IGkobiwxNikpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy55LnJlZHx8KHRoaXMueT10aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnoucmVkfHwodGhpcy56PXRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZX1hKHMsZiksZS5leHBvcnRzPXMscy5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbT1mdW5jdGlvbihlKXtpZih0aGlzLnplcm9BJiZ0aGlzLmcmJnRoaXMubiYmMT09PXRoaXMucC5tb2RuKDMpKXt2YXIgdCxyLG47aWYoZS5iZXRhKXQ9bmV3IGkoZS5iZXRhLDE2KS50b1JlZCh0aGlzLnJlZCk7ZWxzZXt2YXIgYT10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTt0PWFbMF0uY21wKGFbMV0pPDA/YVswXTphWzFdLHQ9dC50b1JlZCh0aGlzLnJlZCl9aWYoZS5sYW1iZGEpcj1uZXcgaShlLmxhbWJkYSwxNik7ZWxzZXt2YXIgZj10aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTswPT09dGhpcy5nLm11bChmWzBdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwodCkpP3I9ZlswXToocj1mWzFdLG8oMD09PXRoaXMuZy5tdWwocikueC5jbXAodGhpcy5nLngucmVkTXVsKHQpKSkpfXJldHVybiBuPWUuYmFzaXM/ZS5iYXNpcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybnthOm5ldyBpKGUuYSwxNiksYjpuZXcgaShlLmIsMTYpfX0pKTp0aGlzLl9nZXRFbmRvQmFzaXMocikse2JldGE6dCxsYW1iZGE6cixiYXNpczpufX19LHMucHJvdG90eXBlLl9nZXRFbmRvUm9vdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZT09PXRoaXMucD90aGlzLnJlZDppLm1vbnQoZSkscj1uZXcgaSgyKS50b1JlZCh0KS5yZWRJbnZtKCksbj1yLnJlZE5lZygpLGE9bmV3IGkoMykudG9SZWQodCkucmVkTmVnKCkucmVkU3FydCgpLnJlZE11bChyKSxmPW4ucmVkQWRkKGEpLmZyb21SZWQoKSxvPW4ucmVkU3ViKGEpLmZyb21SZWQoKTtyZXR1cm5bZixvXX0scy5wcm90b3R5cGUuX2dldEVuZG9CYXNpcz1mdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxmLG8scyxkLGMsdT10aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkvMikpLGg9ZSxsPXRoaXMubi5jbG9uZSgpLGI9bmV3IGkoMSkscD1uZXcgaSgwKSxtPW5ldyBpKDApLGc9bmV3IGkoMSkseT0wO3doaWxlKDAhPT1oLmNtcG4oMCkpe3ZhciB2PWwuZGl2KGgpO2Q9bC5zdWIodi5tdWwoaCkpLGM9bS5zdWIodi5tdWwoYikpO3ZhciB3PWcuc3ViKHYubXVsKHApKTtpZighbiYmZC5jbXAodSk8MCl0PXMubmVnKCkscj1iLG49ZC5uZWcoKSxhPWM7ZWxzZSBpZihuJiYyPT09Kyt5KWJyZWFrO3M9ZCxsPWgsaD1kLG09YixiPWMsZz1wLHA9d31mPWQubmVnKCksbz1jO3ZhciBfPW4uc3FyKCkuYWRkKGEuc3FyKCkpLE09Zi5zcXIoKS5hZGQoby5zcXIoKSk7cmV0dXJuIE0uY21wKF8pPj0wJiYoZj10LG89ciksbi5uZWdhdGl2ZSYmKG49bi5uZWcoKSxhPWEubmVnKCkpLGYubmVnYXRpdmUmJihmPWYubmVnKCksbz1vLm5lZygpKSxbe2E6bixiOmF9LHthOmYsYjpvfV19LHMucHJvdG90eXBlLl9lbmRvU3BsaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5lbmRvLmJhc2lzLHI9dFswXSxuPXRbMV0saT1uLmIubXVsKGUpLmRpdlJvdW5kKHRoaXMubiksYT1yLmIubmVnKCkubXVsKGUpLmRpdlJvdW5kKHRoaXMubiksZj1pLm11bChyLmEpLG89YS5tdWwobi5hKSxzPWkubXVsKHIuYiksZD1hLm11bChuLmIpLGM9ZS5zdWIoZikuc3ViKG8pLHU9cy5hZGQoZCkubmVnKCk7cmV0dXJue2sxOmMsazI6dX19LHMucHJvdG90eXBlLnBvaW50RnJvbVg9ZnVuY3Rpb24oZSx0KXtlPW5ldyBpKGUsMTYpLGUucmVkfHwoZT1lLnRvUmVkKHRoaXMucmVkKSk7dmFyIHI9ZS5yZWRTcXIoKS5yZWRNdWwoZSkucmVkSUFkZChlLnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYiksbj1yLnJlZFNxcnQoKTtpZigwIT09bi5yZWRTcXIoKS5yZWRTdWIocikuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7dmFyIGE9bi5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4odCYmIWF8fCF0JiZhKSYmKG49bi5yZWROZWcoKSksdGhpcy5wb2ludChlLG4pfSxzLnByb3RvdHlwZS52YWxpZGF0ZT1mdW5jdGlvbihlKXtpZihlLmluZilyZXR1cm4hMDt2YXIgdD1lLngscj1lLnksbj10aGlzLmEucmVkTXVsKHQpLGk9dC5yZWRTcXIoKS5yZWRNdWwodCkucmVkSUFkZChuKS5yZWRJQWRkKHRoaXMuYik7cmV0dXJuIDA9PT1yLnJlZFNxcigpLnJlZElTdWIoaSkuY21wbigwKX0scy5wcm90b3R5cGUuX2VuZG9XbmFmTXVsQWRkPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG49dGhpcy5fZW5kb1duYWZUMSxpPXRoaXMuX2VuZG9XbmFmVDIsYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgZj10aGlzLl9lbmRvU3BsaXQodFthXSksbz1lW2FdLHM9by5fZ2V0QmV0YSgpO2YuazEubmVnYXRpdmUmJihmLmsxLmluZWcoKSxvPW8ubmVnKCEwKSksZi5rMi5uZWdhdGl2ZSYmKGYuazIuaW5lZygpLHM9cy5uZWcoITApKSxuWzIqYV09byxuWzIqYSsxXT1zLGlbMiphXT1mLmsxLGlbMiphKzFdPWYuazJ9Zm9yKHZhciBkPXRoaXMuX3duYWZNdWxBZGQoMSxuLGksMiphLHIpLGM9MDtjPDIqYTtjKyspbltjXT1udWxsLGlbY109bnVsbDtyZXR1cm4gZH0sYShkLGYuQmFzZVBvaW50KSxzLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihlLHQscil7cmV0dXJuIG5ldyBkKHRoaXMsZSx0LHIpfSxzLnByb3RvdHlwZS5wb2ludEZyb21KU09OPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGQuZnJvbUpTT04odGhpcyxlLHQpfSxkLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe2lmKHRoaXMuY3VydmUuZW5kbyl7dmFyIGU9dGhpcy5wcmVjb21wdXRlZDtpZihlJiZlLmJldGEpcmV0dXJuIGUuYmV0YTt2YXIgdD10aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLHRoaXMueSk7aWYoZSl7dmFyIHI9dGhpcy5jdXJ2ZSxuPWZ1bmN0aW9uKGUpe3JldHVybiByLnBvaW50KGUueC5yZWRNdWwoci5lbmRvLmJldGEpLGUueSl9O2UuYmV0YT10LHQucHJlY29tcHV0ZWQ9e2JldGE6bnVsbCxuYWY6ZS5uYWYmJnt3bmQ6ZS5uYWYud25kLHBvaW50czplLm5hZi5wb2ludHMubWFwKG4pfSxkb3VibGVzOmUuZG91YmxlcyYme3N0ZXA6ZS5kb3VibGVzLnN0ZXAscG9pbnRzOmUuZG91Ymxlcy5wb2ludHMubWFwKG4pfX19cmV0dXJuIHR9fSxkLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmVjb21wdXRlZD9bdGhpcy54LHRoaXMueSx0aGlzLnByZWNvbXB1dGVkJiZ7ZG91Ymxlczp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMmJntzdGVwOnRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpfSxuYWY6dGhpcy5wcmVjb21wdXRlZC5uYWYmJnt3bmQ6dGhpcy5wcmVjb21wdXRlZC5uYWYud25kLHBvaW50czp0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSl9fV06W3RoaXMueCx0aGlzLnldfSxkLmZyb21KU09OPWZ1bmN0aW9uKGUsdCxyKXsic3RyaW5nIj09PXR5cGVvZiB0JiYodD1KU09OLnBhcnNlKHQpKTt2YXIgbj1lLnBvaW50KHRbMF0sdFsxXSxyKTtpZighdFsyXSlyZXR1cm4gbjtmdW5jdGlvbiBpKHQpe3JldHVybiBlLnBvaW50KHRbMF0sdFsxXSxyKX12YXIgYT10WzJdO3JldHVybiBuLnByZWNvbXB1dGVkPXtiZXRhOm51bGwsZG91YmxlczphLmRvdWJsZXMmJntzdGVwOmEuZG91Ymxlcy5zdGVwLHBvaW50czpbbl0uY29uY2F0KGEuZG91Ymxlcy5wb2ludHMubWFwKGkpKX0sbmFmOmEubmFmJiZ7d25kOmEubmFmLnduZCxwb2ludHM6W25dLmNvbmNhdChhLm5hZi5wb2ludHMubWFwKGkpKX19LG59LGQucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sZC5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluZn0sZC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe2lmKHRoaXMuaW5mKXJldHVybiBlO2lmKGUuaW5mKXJldHVybiB0aGlzO2lmKHRoaXMuZXEoZSkpcmV0dXJuIHRoaXMuZGJsKCk7aWYodGhpcy5uZWcoKS5lcShlKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO2lmKDA9PT10aGlzLnguY21wKGUueCkpcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCxudWxsKTt2YXIgdD10aGlzLnkucmVkU3ViKGUueSk7MCE9PXQuY21wbigwKSYmKHQ9dC5yZWRNdWwodGhpcy54LnJlZFN1YihlLngpLnJlZEludm0oKSkpO3ZhciByPXQucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIoZS54KSxuPXQucmVkTXVsKHRoaXMueC5yZWRTdWIocikpLnJlZElTdWIodGhpcy55KTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChyLG4pfSxkLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgZT10aGlzLnkucmVkQWRkKHRoaXMueSk7aWYoMD09PWUuY21wbigwKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciB0PXRoaXMuY3VydmUuYSxyPXRoaXMueC5yZWRTcXIoKSxuPWUucmVkSW52bSgpLGk9ci5yZWRBZGQocikucmVkSUFkZChyKS5yZWRJQWRkKHQpLnJlZE11bChuKSxhPWkucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpLGY9aS5yZWRNdWwodGhpcy54LnJlZFN1YihhKSkucmVkSVN1Yih0aGlzLnkpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KGEsZil9LGQucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54LmZyb21SZWQoKX0sZC5wcm90b3R5cGUuZ2V0WT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnkuZnJvbVJlZCgpfSxkLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9bmV3IGkoZSwxNiksdGhpcy5pc0luZmluaXR5KCk/dGhpczp0aGlzLl9oYXNEb3VibGVzKGUpP3RoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsZSk6dGhpcy5jdXJ2ZS5lbmRvP3RoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFt0aGlzXSxbZV0pOnRoaXMuY3VydmUuX3duYWZNdWwodGhpcyxlKX0sZC5wcm90b3R5cGUubXVsQWRkPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bdGhpcyx0XSxpPVtlLHJdO3JldHVybiB0aGlzLmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQobixpKTp0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsbixpLDIpfSxkLnByb3RvdHlwZS5qbXVsQWRkPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bdGhpcyx0XSxpPVtlLHJdO3JldHVybiB0aGlzLmN1cnZlLmVuZG8/dGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQobixpLCEwKTp0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsbixpLDIsITApfSxkLnByb3RvdHlwZS5lcT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcz09PWV8fHRoaXMuaW5mPT09ZS5pbmYmJih0aGlzLmluZnx8MD09PXRoaXMueC5jbXAoZS54KSYmMD09PXRoaXMueS5jbXAoZS55KSl9LGQucHJvdG90eXBlLm5lZz1mdW5jdGlvbihlKXtpZih0aGlzLmluZilyZXR1cm4gdGhpczt2YXIgdD10aGlzLmN1cnZlLnBvaW50KHRoaXMueCx0aGlzLnkucmVkTmVnKCkpO2lmKGUmJnRoaXMucHJlY29tcHV0ZWQpe3ZhciByPXRoaXMucHJlY29tcHV0ZWQsbj1mdW5jdGlvbihlKXtyZXR1cm4gZS5uZWcoKX07dC5wcmVjb21wdXRlZD17bmFmOnIubmFmJiZ7d25kOnIubmFmLnduZCxwb2ludHM6ci5uYWYucG9pbnRzLm1hcChuKX0sZG91YmxlczpyLmRvdWJsZXMmJntzdGVwOnIuZG91Ymxlcy5zdGVwLHBvaW50czpyLmRvdWJsZXMucG9pbnRzLm1hcChuKX19fXJldHVybiB0fSxkLnByb3RvdHlwZS50b0o9ZnVuY3Rpb24oKXtpZih0aGlzLmluZilyZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCxudWxsLG51bGwpO3ZhciBlPXRoaXMuY3VydmUuanBvaW50KHRoaXMueCx0aGlzLnksdGhpcy5jdXJ2ZS5vbmUpO3JldHVybiBlfSxhKGMsZi5CYXNlUG9pbnQpLHMucHJvdG90eXBlLmpwb2ludD1mdW5jdGlvbihlLHQscil7cmV0dXJuIG5ldyBjKHRoaXMsZSx0LHIpfSxjLnByb3RvdHlwZS50b1A9ZnVuY3Rpb24oKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLG51bGwpO3ZhciBlPXRoaXMuei5yZWRJbnZtKCksdD1lLnJlZFNxcigpLHI9dGhpcy54LnJlZE11bCh0KSxuPXRoaXMueS5yZWRNdWwodCkucmVkTXVsKGUpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KHIsbil9LGMucHJvdG90eXBlLm5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsdGhpcy55LnJlZE5lZygpLHRoaXMueil9LGMucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXtpZih0aGlzLmlzSW5maW5pdHkoKSlyZXR1cm4gZTtpZihlLmlzSW5maW5pdHkoKSlyZXR1cm4gdGhpczt2YXIgdD1lLnoucmVkU3FyKCkscj10aGlzLnoucmVkU3FyKCksbj10aGlzLngucmVkTXVsKHQpLGk9ZS54LnJlZE11bChyKSxhPXRoaXMueS5yZWRNdWwodC5yZWRNdWwoZS56KSksZj1lLnkucmVkTXVsKHIucmVkTXVsKHRoaXMueikpLG89bi5yZWRTdWIoaSkscz1hLnJlZFN1YihmKTtpZigwPT09by5jbXBuKDApKXJldHVybiAwIT09cy5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBkPW8ucmVkU3FyKCksYz1kLnJlZE11bChvKSx1PW4ucmVkTXVsKGQpLGg9cy5yZWRTcXIoKS5yZWRJQWRkKGMpLnJlZElTdWIodSkucmVkSVN1Yih1KSxsPXMucmVkTXVsKHUucmVkSVN1YihoKSkucmVkSVN1YihhLnJlZE11bChjKSksYj10aGlzLnoucmVkTXVsKGUueikucmVkTXVsKG8pO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChoLGwsYil9LGMucHJvdG90eXBlLm1peGVkQWRkPWZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNJbmZpbml0eSgpKXJldHVybiBlLnRvSigpO2lmKGUuaXNJbmZpbml0eSgpKXJldHVybiB0aGlzO3ZhciB0PXRoaXMuei5yZWRTcXIoKSxyPXRoaXMueCxuPWUueC5yZWRNdWwodCksaT10aGlzLnksYT1lLnkucmVkTXVsKHQpLnJlZE11bCh0aGlzLnopLGY9ci5yZWRTdWIobiksbz1pLnJlZFN1YihhKTtpZigwPT09Zi5jbXBuKDApKXJldHVybiAwIT09by5jbXBuKDApP3RoaXMuY3VydmUuanBvaW50KG51bGwsbnVsbCxudWxsKTp0aGlzLmRibCgpO3ZhciBzPWYucmVkU3FyKCksZD1zLnJlZE11bChmKSxjPXIucmVkTXVsKHMpLHU9by5yZWRTcXIoKS5yZWRJQWRkKGQpLnJlZElTdWIoYykucmVkSVN1YihjKSxoPW8ucmVkTXVsKGMucmVkSVN1Yih1KSkucmVkSVN1YihpLnJlZE11bChkKSksbD10aGlzLnoucmVkTXVsKGYpO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludCh1LGgsbCl9LGMucHJvdG90eXBlLmRibHA9ZnVuY3Rpb24oZSl7aWYoMD09PWUpcmV0dXJuIHRoaXM7aWYodGhpcy5pc0luZmluaXR5KCkpcmV0dXJuIHRoaXM7aWYoIWUpcmV0dXJuIHRoaXMuZGJsKCk7dmFyIHQ7aWYodGhpcy5jdXJ2ZS56ZXJvQXx8dGhpcy5jdXJ2ZS50aHJlZUEpe3ZhciByPXRoaXM7Zm9yKHQ9MDt0PGU7dCsrKXI9ci5kYmwoKTtyZXR1cm4gcn12YXIgbj10aGlzLmN1cnZlLmEsaT10aGlzLmN1cnZlLnRpbnYsYT10aGlzLngsZj10aGlzLnksbz10aGlzLnoscz1vLnJlZFNxcigpLnJlZFNxcigpLGQ9Zi5yZWRBZGQoZik7Zm9yKHQ9MDt0PGU7dCsrKXt2YXIgYz1hLnJlZFNxcigpLHU9ZC5yZWRTcXIoKSxoPXUucmVkU3FyKCksbD1jLnJlZEFkZChjKS5yZWRJQWRkKGMpLnJlZElBZGQobi5yZWRNdWwocykpLGI9YS5yZWRNdWwodSkscD1sLnJlZFNxcigpLnJlZElTdWIoYi5yZWRBZGQoYikpLG09Yi5yZWRJU3ViKHApLGc9bC5yZWRNdWwobSk7Zz1nLnJlZElBZGQoZykucmVkSVN1YihoKTt2YXIgeT1kLnJlZE11bChvKTt0KzE8ZSYmKHM9cy5yZWRNdWwoaCkpLGE9cCxvPXksZD1nfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChhLGQucmVkTXVsKGkpLG8pfSxjLnByb3RvdHlwZS5kYmw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/dGhpczp0aGlzLmN1cnZlLnplcm9BP3RoaXMuX3plcm9EYmwoKTp0aGlzLmN1cnZlLnRocmVlQT90aGlzLl90aHJlZURibCgpOnRoaXMuX2RibCgpfSxjLnByb3RvdHlwZS5femVyb0RibD1mdW5jdGlvbigpe3ZhciBlLHQscjtpZih0aGlzLnpPbmUpe3ZhciBuPXRoaXMueC5yZWRTcXIoKSxpPXRoaXMueS5yZWRTcXIoKSxhPWkucmVkU3FyKCksZj10aGlzLngucmVkQWRkKGkpLnJlZFNxcigpLnJlZElTdWIobikucmVkSVN1YihhKTtmPWYucmVkSUFkZChmKTt2YXIgbz1uLnJlZEFkZChuKS5yZWRJQWRkKG4pLHM9by5yZWRTcXIoKS5yZWRJU3ViKGYpLnJlZElTdWIoZiksZD1hLnJlZElBZGQoYSk7ZD1kLnJlZElBZGQoZCksZD1kLnJlZElBZGQoZCksZT1zLHQ9by5yZWRNdWwoZi5yZWRJU3ViKHMpKS5yZWRJU3ViKGQpLHI9dGhpcy55LnJlZEFkZCh0aGlzLnkpfWVsc2V7dmFyIGM9dGhpcy54LnJlZFNxcigpLHU9dGhpcy55LnJlZFNxcigpLGg9dS5yZWRTcXIoKSxsPXRoaXMueC5yZWRBZGQodSkucmVkU3FyKCkucmVkSVN1YihjKS5yZWRJU3ViKGgpO2w9bC5yZWRJQWRkKGwpO3ZhciBiPWMucmVkQWRkKGMpLnJlZElBZGQoYykscD1iLnJlZFNxcigpLG09aC5yZWRJQWRkKGgpO209bS5yZWRJQWRkKG0pLG09bS5yZWRJQWRkKG0pLGU9cC5yZWRJU3ViKGwpLnJlZElTdWIobCksdD1iLnJlZE11bChsLnJlZElTdWIoZSkpLnJlZElTdWIobSkscj10aGlzLnkucmVkTXVsKHRoaXMueikscj1yLnJlZElBZGQocil9cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGUsdCxyKX0sYy5wcm90b3R5cGUuX3RocmVlRGJsPWZ1bmN0aW9uKCl7dmFyIGUsdCxyO2lmKHRoaXMuek9uZSl7dmFyIG49dGhpcy54LnJlZFNxcigpLGk9dGhpcy55LnJlZFNxcigpLGE9aS5yZWRTcXIoKSxmPXRoaXMueC5yZWRBZGQoaSkucmVkU3FyKCkucmVkSVN1YihuKS5yZWRJU3ViKGEpO2Y9Zi5yZWRJQWRkKGYpO3ZhciBvPW4ucmVkQWRkKG4pLnJlZElBZGQobikucmVkSUFkZCh0aGlzLmN1cnZlLmEpLHM9by5yZWRTcXIoKS5yZWRJU3ViKGYpLnJlZElTdWIoZik7ZT1zO3ZhciBkPWEucmVkSUFkZChhKTtkPWQucmVkSUFkZChkKSxkPWQucmVkSUFkZChkKSx0PW8ucmVkTXVsKGYucmVkSVN1YihzKSkucmVkSVN1YihkKSxyPXRoaXMueS5yZWRBZGQodGhpcy55KX1lbHNle3ZhciBjPXRoaXMuei5yZWRTcXIoKSx1PXRoaXMueS5yZWRTcXIoKSxoPXRoaXMueC5yZWRNdWwodSksbD10aGlzLngucmVkU3ViKGMpLnJlZE11bCh0aGlzLngucmVkQWRkKGMpKTtsPWwucmVkQWRkKGwpLnJlZElBZGQobCk7dmFyIGI9aC5yZWRJQWRkKGgpO2I9Yi5yZWRJQWRkKGIpO3ZhciBwPWIucmVkQWRkKGIpO2U9bC5yZWRTcXIoKS5yZWRJU3ViKHApLHI9dGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIodSkucmVkSVN1YihjKTt2YXIgbT11LnJlZFNxcigpO209bS5yZWRJQWRkKG0pLG09bS5yZWRJQWRkKG0pLG09bS5yZWRJQWRkKG0pLHQ9bC5yZWRNdWwoYi5yZWRJU3ViKGUpKS5yZWRJU3ViKG0pfXJldHVybiB0aGlzLmN1cnZlLmpwb2ludChlLHQscil9LGMucHJvdG90eXBlLl9kYmw9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmN1cnZlLmEsdD10aGlzLngscj10aGlzLnksbj10aGlzLnosaT1uLnJlZFNxcigpLnJlZFNxcigpLGE9dC5yZWRTcXIoKSxmPXIucmVkU3FyKCksbz1hLnJlZEFkZChhKS5yZWRJQWRkKGEpLnJlZElBZGQoZS5yZWRNdWwoaSkpLHM9dC5yZWRBZGQodCk7cz1zLnJlZElBZGQocyk7dmFyIGQ9cy5yZWRNdWwoZiksYz1vLnJlZFNxcigpLnJlZElTdWIoZC5yZWRBZGQoZCkpLHU9ZC5yZWRJU3ViKGMpLGg9Zi5yZWRTcXIoKTtoPWgucmVkSUFkZChoKSxoPWgucmVkSUFkZChoKSxoPWgucmVkSUFkZChoKTt2YXIgbD1vLnJlZE11bCh1KS5yZWRJU3ViKGgpLGI9ci5yZWRBZGQocikucmVkTXVsKG4pO3JldHVybiB0aGlzLmN1cnZlLmpwb2ludChjLGwsYil9LGMucHJvdG90eXBlLnRycGw9ZnVuY3Rpb24oKXtpZighdGhpcy5jdXJ2ZS56ZXJvQSlyZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7dmFyIGU9dGhpcy54LnJlZFNxcigpLHQ9dGhpcy55LnJlZFNxcigpLHI9dGhpcy56LnJlZFNxcigpLG49dC5yZWRTcXIoKSxpPWUucmVkQWRkKGUpLnJlZElBZGQoZSksYT1pLnJlZFNxcigpLGY9dGhpcy54LnJlZEFkZCh0KS5yZWRTcXIoKS5yZWRJU3ViKGUpLnJlZElTdWIobik7Zj1mLnJlZElBZGQoZiksZj1mLnJlZEFkZChmKS5yZWRJQWRkKGYpLGY9Zi5yZWRJU3ViKGEpO3ZhciBvPWYucmVkU3FyKCkscz1uLnJlZElBZGQobik7cz1zLnJlZElBZGQocykscz1zLnJlZElBZGQocykscz1zLnJlZElBZGQocyk7dmFyIGQ9aS5yZWRJQWRkKGYpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihvKS5yZWRJU3ViKHMpLGM9dC5yZWRNdWwoZCk7Yz1jLnJlZElBZGQoYyksYz1jLnJlZElBZGQoYyk7dmFyIHU9dGhpcy54LnJlZE11bChvKS5yZWRJU3ViKGMpO3U9dS5yZWRJQWRkKHUpLHU9dS5yZWRJQWRkKHUpO3ZhciBoPXRoaXMueS5yZWRNdWwoZC5yZWRNdWwocy5yZWRJU3ViKGQpKS5yZWRJU3ViKGYucmVkTXVsKG8pKSk7aD1oLnJlZElBZGQoaCksaD1oLnJlZElBZGQoaCksaD1oLnJlZElBZGQoaCk7dmFyIGw9dGhpcy56LnJlZEFkZChmKS5yZWRTcXIoKS5yZWRJU3ViKHIpLnJlZElTdWIobyk7cmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHUsaCxsKX0sYy5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9bmV3IGkoZSx0KSx0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsZSl9LGMucHJvdG90eXBlLmVxPWZ1bmN0aW9uKGUpe2lmKCJhZmZpbmUiPT09ZS50eXBlKXJldHVybiB0aGlzLmVxKGUudG9KKCkpO2lmKHRoaXM9PT1lKXJldHVybiEwO3ZhciB0PXRoaXMuei5yZWRTcXIoKSxyPWUuei5yZWRTcXIoKTtpZigwIT09dGhpcy54LnJlZE11bChyKS5yZWRJU3ViKGUueC5yZWRNdWwodCkpLmNtcG4oMCkpcmV0dXJuITE7dmFyIG49dC5yZWRNdWwodGhpcy56KSxpPXIucmVkTXVsKGUueik7cmV0dXJuIDA9PT10aGlzLnkucmVkTXVsKGkpLnJlZElTdWIoZS55LnJlZE11bChuKSkuY21wbigwKX0sYy5wcm90b3R5cGUuZXFYVG9QPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuei5yZWRTcXIoKSxyPWUudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0KTtpZigwPT09dGhpcy54LmNtcChyKSlyZXR1cm4hMDtmb3IodmFyIG49ZS5jbG9uZSgpLGk9dGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0KTs7KXtpZihuLmlhZGQodGhpcy5jdXJ2ZS5uKSxuLmNtcCh0aGlzLmN1cnZlLnApPj0wKXJldHVybiExO2lmKHIucmVkSUFkZChpKSwwPT09dGhpcy54LmNtcChyKSlyZXR1cm4hMH19LGMucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBKUG9pbnQgSW5maW5pdHk+IjoiPEVDIEpQb2ludCB4OiAiK3RoaXMueC50b1N0cmluZygxNiwyKSsiIHk6ICIrdGhpcy55LnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnoudG9TdHJpbmcoMTYsMikrIj4ifSxjLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX19LDMzMzc6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10O24udmVyc2lvbj1yKCIyODAxIikudmVyc2lvbixuLnV0aWxzPXIoImYzYTMiKSxuLnJhbmQ9cigiZmRhYyIpLG4uY3VydmU9cigiNDEzNiIpLG4uY3VydmVzPXIoIjBjYmIiKSxuLmVjPXIoImI5YTgiKSxuLmVkZHNhPXIoIjk0NWQiKX0sIjM4MGYiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigiZjNhMyIpLGk9bi5hc3NlcnQsYT1uLnBhcnNlQnl0ZXMsZj1uLmNhY2hlZFByb3BlcnR5O2Z1bmN0aW9uIG8oZSx0KXt0aGlzLmVkZHNhPWUsdGhpcy5fc2VjcmV0PWEodC5zZWNyZXQpLGUuaXNQb2ludCh0LnB1Yik/dGhpcy5fcHViPXQucHViOnRoaXMuX3B1YkJ5dGVzPWEodC5wdWIpfW8uZnJvbVB1YmxpYz1mdW5jdGlvbihlLHQpe3JldHVybiB0IGluc3RhbmNlb2Ygbz90Om5ldyBvKGUse3B1Yjp0fSl9LG8uZnJvbVNlY3JldD1mdW5jdGlvbihlLHQpe3JldHVybiB0IGluc3RhbmNlb2Ygbz90Om5ldyBvKGUse3NlY3JldDp0fSl9LG8ucHJvdG90eXBlLnNlY3JldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZWNyZXR9LGYobywicHViQnl0ZXMiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpfSkpLGYobywicHViIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHViQnl0ZXM/dGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk6dGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSl9KSksZihvLCJwcml2Qnl0ZXMiLChmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWRkc2EsdD10aGlzLmhhc2goKSxyPWUuZW5jb2RpbmdMZW5ndGgtMSxuPXQuc2xpY2UoMCxlLmVuY29kaW5nTGVuZ3RoKTtyZXR1cm4gblswXSY9MjQ4LG5bcl0mPTEyNyxuW3JdfD02NCxufSkpLGYobywicHJpdiIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVzKCkpfSkpLGYobywiaGFzaCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuaGFzaCgpLnVwZGF0ZSh0aGlzLnNlY3JldCgpKS5kaWdlc3QoKX0pKSxmKG8sIm1lc3NhZ2VQcmVmaXgiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKX0pKSxvLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKGUpe3JldHVybiBpKHRoaXMuX3NlY3JldCwiS2V5UGFpciBjYW4gb25seSB2ZXJpZnkiKSx0aGlzLmVkZHNhLnNpZ24oZSx0aGlzKX0sby5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWRkc2EudmVyaWZ5KGUsdCx0aGlzKX0sby5wcm90b3R5cGUuZ2V0U2VjcmV0PWZ1bmN0aW9uKGUpe3JldHVybiBpKHRoaXMuX3NlY3JldCwiS2V5UGFpciBpcyBwdWJsaWMgb25seSIpLG4uZW5jb2RlKHRoaXMuc2VjcmV0KCksZSl9LG8ucHJvdG90eXBlLmdldFB1YmxpYz1mdW5jdGlvbihlKXtyZXR1cm4gbi5lbmNvZGUodGhpcy5wdWJCeXRlcygpLGUpfSxlLmV4cG9ydHM9b30sIjNhODkiOmZ1bmN0aW9uKGUsdCl7Y29uc3Qgcj17SU1QT1NTSUJMRV9DQVNFOiJJbXBvc3NpYmxlIGNhc2UuIFBsZWFzZSBjcmVhdGUgaXNzdWUuIixUV0VBS19BREQ6IlRoZSB0d2VhayB3YXMgb3V0IG9mIHJhbmdlIG9yIHRoZSByZXN1bHRlZCBwcml2YXRlIGtleSBpcyBpbnZhbGlkIixUV0VBS19NVUw6IlRoZSB0d2VhayB3YXMgb3V0IG9mIHJhbmdlIG9yIGVxdWFsIHRvIHplcm8iLENPTlRFWFRfUkFORE9NSVpFX1VOS05PVzoiVW5rbm93IGVycm9yIG9uIGNvbnRleHQgcmFuZG9taXphdGlvbiIsU0VDS0VZX0lOVkFMSUQ6IlByaXZhdGUgS2V5IGlzIGludmFsaWQiLFBVQktFWV9QQVJTRToiUHVibGljIEtleSBjb3VsZCBub3QgYmUgcGFyc2VkIixQVUJLRVlfU0VSSUFMSVpFOiJQdWJsaWMgS2V5IHNlcmlhbGl6YXRpb24gZXJyb3IiLFBVQktFWV9DT01CSU5FOiJUaGUgc3VtIG9mIHRoZSBwdWJsaWMga2V5cyBpcyBub3QgdmFsaWQiLFNJR19QQVJTRToiU2lnbmF0dXJlIGNvdWxkIG5vdCBiZSBwYXJzZWQiLFNJR046IlRoZSBub25jZSBnZW5lcmF0aW9uIGZ1bmN0aW9uIGZhaWxlZCwgb3IgdGhlIHByaXZhdGUga2V5IHdhcyBpbnZhbGlkIixSRUNPVkVSOiJQdWJsaWMga2V5IGNvdWxkIG5vdCBiZSByZWNvdmVyIixFQ0RIOiJTY2FsYXIgd2FzIGludmFsaWQgKHplcm8gb3Igb3ZlcmZsb3cpIn07ZnVuY3Rpb24gbihlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0KX1mdW5jdGlvbiBpKGUsdCxyKXtpZihuKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5LGBFeHBlY3RlZCAke2V9IHRvIGJlIGFuIFVpbnQ4QXJyYXlgKSx2b2lkIDAhPT1yKWlmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGk9ci5qb2luKCIsICIpLGE9YEV4cGVjdGVkICR7ZX0gdG8gYmUgYW4gVWludDhBcnJheSB3aXRoIGxlbmd0aCBbJHtpfV1gO24oci5pbmNsdWRlcyh0Lmxlbmd0aCksYSl9ZWxzZXtjb25zdCBpPWBFeHBlY3RlZCAke2V9IHRvIGJlIGFuIFVpbnQ4QXJyYXkgd2l0aCBsZW5ndGggJHtyfWA7bih0Lmxlbmd0aD09PXIsaSl9fWZ1bmN0aW9uIGEoZSl7bigiQm9vbGVhbiI9PT1vKGUpLCJFeHBlY3RlZCBjb21wcmVzc2VkIHRvIGJlIGEgQm9vbGVhbiIpfWZ1bmN0aW9uIGYoZT0oZT0+bmV3IFVpbnQ4QXJyYXkoZSkpLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZSYmKGU9ZSh0KSksaSgib3V0cHV0IixlLHQpLGV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpfWUuZXhwb3J0cz1lPT4oe2NvbnRleHRSYW5kb21pemUodCl7c3dpdGNoKG4obnVsbD09PXR8fHQgaW5zdGFuY2VvZiBVaW50OEFycmF5LCJFeHBlY3RlZCBzZWVkIHRvIGJlIGFuIFVpbnQ4QXJyYXkgb3IgbnVsbCIpLG51bGwhPT10JiZpKCJzZWVkIix0LDMyKSxlLmNvbnRleHRSYW5kb21pemUodCkpe2Nhc2UgMTp0aHJvdyBuZXcgRXJyb3Ioci5DT05URVhUX1JBTkRPTUlaRV9VTktOT1cpfX0scHJpdmF0ZUtleVZlcmlmeSh0KXtyZXR1cm4gaSgicHJpdmF0ZSBrZXkiLHQsMzIpLDA9PT1lLnByaXZhdGVLZXlWZXJpZnkodCl9LHByaXZhdGVLZXlOZWdhdGUodCl7c3dpdGNoKGkoInByaXZhdGUga2V5Iix0LDMyKSxlLnByaXZhdGVLZXlOZWdhdGUodCkpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuSU1QT1NTSUJMRV9DQVNFKX19LHByaXZhdGVLZXlUd2Vha0FkZCh0LG4pe3N3aXRjaChpKCJwcml2YXRlIGtleSIsdCwzMiksaSgidHdlYWsiLG4sMzIpLGUucHJpdmF0ZUtleVR3ZWFrQWRkKHQsbikpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuVFdFQUtfQUREKX19LHByaXZhdGVLZXlUd2Vha011bCh0LG4pe3N3aXRjaChpKCJwcml2YXRlIGtleSIsdCwzMiksaSgidHdlYWsiLG4sMzIpLGUucHJpdmF0ZUtleVR3ZWFrTXVsKHQsbikpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuVFdFQUtfTVVMKX19LHB1YmxpY0tleVZlcmlmeSh0KXtyZXR1cm4gaSgicHVibGljIGtleSIsdCxbMzMsNjVdKSwwPT09ZS5wdWJsaWNLZXlWZXJpZnkodCl9LHB1YmxpY0tleUNyZWF0ZSh0LG49ITAsbyl7c3dpdGNoKGkoInByaXZhdGUga2V5Iix0LDMyKSxhKG4pLG89ZihvLG4/MzM6NjUpLGUucHVibGljS2V5Q3JlYXRlKG8sdCkpe2Nhc2UgMDpyZXR1cm4gbztjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuU0VDS0VZX0lOVkFMSUQpO2Nhc2UgMjp0aHJvdyBuZXcgRXJyb3Ioci5QVUJLRVlfU0VSSUFMSVpFKX19LHB1YmxpY0tleUNvbnZlcnQodCxuPSEwLG8pe3N3aXRjaChpKCJwdWJsaWMga2V5Iix0LFszMyw2NV0pLGEobiksbz1mKG8sbj8zMzo2NSksZS5wdWJsaWNLZXlDb252ZXJ0KG8sdCkpe2Nhc2UgMDpyZXR1cm4gbztjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuUFVCS0VZX1BBUlNFKTtjYXNlIDI6dGhyb3cgbmV3IEVycm9yKHIuUFVCS0VZX1NFUklBTElaRSl9fSxwdWJsaWNLZXlOZWdhdGUodCxuPSEwLG8pe3N3aXRjaChpKCJwdWJsaWMga2V5Iix0LFszMyw2NV0pLGEobiksbz1mKG8sbj8zMzo2NSksZS5wdWJsaWNLZXlOZWdhdGUobyx0KSl7Y2FzZSAwOnJldHVybiBvO2Nhc2UgMTp0aHJvdyBuZXcgRXJyb3Ioci5QVUJLRVlfUEFSU0UpO2Nhc2UgMjp0aHJvdyBuZXcgRXJyb3Ioci5JTVBPU1NJQkxFX0NBU0UpO2Nhc2UgMzp0aHJvdyBuZXcgRXJyb3Ioci5QVUJLRVlfU0VSSUFMSVpFKX19LHB1YmxpY0tleUNvbWJpbmUodCxvPSEwLHMpe24oQXJyYXkuaXNBcnJheSh0KSwiRXhwZWN0ZWQgcHVibGljIGtleXMgdG8gYmUgYW4gQXJyYXkiKSxuKHQubGVuZ3RoPjAsIkV4cGVjdGVkIHB1YmxpYyBrZXlzIGFycmF5IHdpbGwgaGF2ZSBtb3JlIHRoYW4gemVybyBpdGVtcyIpO2Zvcihjb25zdCBlIG9mIHQpaSgicHVibGljIGtleSIsZSxbMzMsNjVdKTtzd2l0Y2goYShvKSxzPWYocyxvPzMzOjY1KSxlLnB1YmxpY0tleUNvbWJpbmUocyx0KSl7Y2FzZSAwOnJldHVybiBzO2Nhc2UgMTp0aHJvdyBuZXcgRXJyb3Ioci5QVUJLRVlfUEFSU0UpO2Nhc2UgMjp0aHJvdyBuZXcgRXJyb3Ioci5QVUJLRVlfQ09NQklORSk7Y2FzZSAzOnRocm93IG5ldyBFcnJvcihyLlBVQktFWV9TRVJJQUxJWkUpfX0scHVibGljS2V5VHdlYWtBZGQodCxuLG89ITAscyl7c3dpdGNoKGkoInB1YmxpYyBrZXkiLHQsWzMzLDY1XSksaSgidHdlYWsiLG4sMzIpLGEobykscz1mKHMsbz8zMzo2NSksZS5wdWJsaWNLZXlUd2Vha0FkZChzLHQsbikpe2Nhc2UgMDpyZXR1cm4gcztjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuUFVCS0VZX1BBUlNFKTtjYXNlIDI6dGhyb3cgbmV3IEVycm9yKHIuVFdFQUtfQUREKX19LHB1YmxpY0tleVR3ZWFrTXVsKHQsbixvPSEwLHMpe3N3aXRjaChpKCJwdWJsaWMga2V5Iix0LFszMyw2NV0pLGkoInR3ZWFrIixuLDMyKSxhKG8pLHM9ZihzLG8/MzM6NjUpLGUucHVibGljS2V5VHdlYWtNdWwocyx0LG4pKXtjYXNlIDA6cmV0dXJuIHM7Y2FzZSAxOnRocm93IG5ldyBFcnJvcihyLlBVQktFWV9QQVJTRSk7Y2FzZSAyOnRocm93IG5ldyBFcnJvcihyLlRXRUFLX01VTCl9fSxzaWduYXR1cmVOb3JtYWxpemUodCl7c3dpdGNoKGkoInNpZ25hdHVyZSIsdCw2NCksZS5zaWduYXR1cmVOb3JtYWxpemUodCkpe2Nhc2UgMDpyZXR1cm4gdDtjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuU0lHX1BBUlNFKX19LHNpZ25hdHVyZUV4cG9ydCh0LG4pe2koInNpZ25hdHVyZSIsdCw2NCksbj1mKG4sNzIpO2NvbnN0IGE9e291dHB1dDpuLG91dHB1dGxlbjo3Mn07c3dpdGNoKGUuc2lnbmF0dXJlRXhwb3J0KGEsdCkpe2Nhc2UgMDpyZXR1cm4gbi5zbGljZSgwLGEub3V0cHV0bGVuKTtjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuU0lHX1BBUlNFKTtjYXNlIDI6dGhyb3cgbmV3IEVycm9yKHIuSU1QT1NTSUJMRV9DQVNFKX19LHNpZ25hdHVyZUltcG9ydCh0LG4pe3N3aXRjaChpKCJzaWduYXR1cmUiLHQpLG49ZihuLDY0KSxlLnNpZ25hdHVyZUltcG9ydChuLHQpKXtjYXNlIDA6cmV0dXJuIG47Y2FzZSAxOnRocm93IG5ldyBFcnJvcihyLlNJR19QQVJTRSk7Y2FzZSAyOnRocm93IG5ldyBFcnJvcihyLklNUE9TU0lCTEVfQ0FTRSl9fSxlY2RzYVNpZ24odCxhLHM9e30sZCl7aSgibWVzc2FnZSIsdCwzMiksaSgicHJpdmF0ZSBrZXkiLGEsMzIpLG4oIk9iamVjdCI9PT1vKHMpLCJFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIE9iamVjdCIpLHZvaWQgMCE9PXMuZGF0YSYmaSgib3B0aW9ucy5kYXRhIixzLmRhdGEpLHZvaWQgMCE9PXMubm9uY2VmbiYmbigiRnVuY3Rpb24iPT09byhzLm5vbmNlZm4pLCJFeHBlY3RlZCBvcHRpb25zLm5vbmNlZm4gdG8gYmUgYSBGdW5jdGlvbiIpLGQ9ZihkLDY0KTtjb25zdCBjPXtzaWduYXR1cmU6ZCxyZWNpZDpudWxsfTtzd2l0Y2goZS5lY2RzYVNpZ24oYyx0LGEscy5kYXRhLHMubm9uY2Vmbikpe2Nhc2UgMDpyZXR1cm4gYztjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuU0lHTik7Y2FzZSAyOnRocm93IG5ldyBFcnJvcihyLklNUE9TU0lCTEVfQ0FTRSl9fSxlY2RzYVZlcmlmeSh0LG4sYSl7c3dpdGNoKGkoInNpZ25hdHVyZSIsdCw2NCksaSgibWVzc2FnZSIsbiwzMiksaSgicHVibGljIGtleSIsYSxbMzMsNjVdKSxlLmVjZHNhVmVyaWZ5KHQsbixhKSl7Y2FzZSAwOnJldHVybiEwO2Nhc2UgMzpyZXR1cm4hMTtjYXNlIDE6dGhyb3cgbmV3IEVycm9yKHIuU0lHX1BBUlNFKTtjYXNlIDI6dGhyb3cgbmV3IEVycm9yKHIuUFVCS0VZX1BBUlNFKX19LGVjZHNhUmVjb3Zlcih0LHMsZCxjPSEwLHUpe3N3aXRjaChpKCJzaWduYXR1cmUiLHQsNjQpLG4oIk51bWJlciI9PT1vKHMpJiZzPj0wJiZzPD0zLCJFeHBlY3RlZCByZWNvdmVyeSBpZCB0byBiZSBhIE51bWJlciB3aXRoaW4gaW50ZXJ2YWwgWzAsIDNdIiksaSgibWVzc2FnZSIsZCwzMiksYShjKSx1PWYodSxjPzMzOjY1KSxlLmVjZHNhUmVjb3Zlcih1LHQscyxkKSl7Y2FzZSAwOnJldHVybiB1O2Nhc2UgMTp0aHJvdyBuZXcgRXJyb3Ioci5TSUdfUEFSU0UpO2Nhc2UgMjp0aHJvdyBuZXcgRXJyb3Ioci5SRUNPVkVSKTtjYXNlIDM6dGhyb3cgbmV3IEVycm9yKHIuSU1QT1NTSUJMRV9DQVNFKX19LGVjZGgodCxhLHM9e30sZCl7c3dpdGNoKGkoInB1YmxpYyBrZXkiLHQsWzMzLDY1XSksaSgicHJpdmF0ZSBrZXkiLGEsMzIpLG4oIk9iamVjdCI9PT1vKHMpLCJFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIE9iamVjdCIpLHZvaWQgMCE9PXMuZGF0YSYmaSgib3B0aW9ucy5kYXRhIixzLmRhdGEpLHZvaWQgMCE9PXMuaGFzaGZuPyhuKCJGdW5jdGlvbiI9PT1vKHMuaGFzaGZuKSwiRXhwZWN0ZWQgb3B0aW9ucy5oYXNoZm4gdG8gYmUgYSBGdW5jdGlvbiIpLHZvaWQgMCE9PXMueGJ1ZiYmaSgib3B0aW9ucy54YnVmIixzLnhidWYsMzIpLHZvaWQgMCE9PXMueWJ1ZiYmaSgib3B0aW9ucy55YnVmIixzLnlidWYsMzIpLGkoIm91dHB1dCIsZCkpOmQ9ZihkLDMyKSxlLmVjZGgoZCx0LGEscy5kYXRhLHMuaGFzaGZuLHMueGJ1ZixzLnlidWYpKXtjYXNlIDA6cmV0dXJuIGQ7Y2FzZSAxOnRocm93IG5ldyBFcnJvcihyLlBVQktFWV9QQVJTRSk7Y2FzZSAyOnRocm93IG5ldyBFcnJvcihyLkVDREgpfX19KX0sIjNkYWYiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigiZjNhMyIpLGk9cigiODBhZiIpLGE9cigiM2ZiNSIpLGY9cigiZWE1MyIpLG89bi5hc3NlcnQ7ZnVuY3Rpb24gcyhlKXt0aGlzLnR3aXN0ZWQ9MSE9PSgwfGUuYSksdGhpcy5tT25lQT10aGlzLnR3aXN0ZWQmJi0xPT09KDB8ZS5hKSx0aGlzLmV4dGVuZGVkPXRoaXMubU9uZUEsZi5jYWxsKHRoaXMsImVkd2FyZHMiLGUpLHRoaXMuYT1uZXcgaShlLmEsMTYpLnVtb2QodGhpcy5yZWQubSksdGhpcy5hPXRoaXMuYS50b1JlZCh0aGlzLnJlZCksdGhpcy5jPW5ldyBpKGUuYywxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYzI9dGhpcy5jLnJlZFNxcigpLHRoaXMuZD1uZXcgaShlLmQsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmRkPXRoaXMuZC5yZWRBZGQodGhpcy5kKSxvKCF0aGlzLnR3aXN0ZWR8fDA9PT10aGlzLmMuZnJvbVJlZCgpLmNtcG4oMSkpLHRoaXMub25lQz0xPT09KDB8ZS5jKX1mdW5jdGlvbiBkKGUsdCxyLG4sYSl7Zi5CYXNlUG9pbnQuY2FsbCh0aGlzLGUsInByb2plY3RpdmUiKSxudWxsPT09dCYmbnVsbD09PXImJm51bGw9PT1uPyh0aGlzLng9dGhpcy5jdXJ2ZS56ZXJvLHRoaXMueT10aGlzLmN1cnZlLm9uZSx0aGlzLno9dGhpcy5jdXJ2ZS5vbmUsdGhpcy50PXRoaXMuY3VydmUuemVybyx0aGlzLnpPbmU9ITApOih0aGlzLng9bmV3IGkodCwxNiksdGhpcy55PW5ldyBpKHIsMTYpLHRoaXMuej1uP25ldyBpKG4sMTYpOnRoaXMuY3VydmUub25lLHRoaXMudD1hJiZuZXcgaShhLDE2KSx0aGlzLngucmVkfHwodGhpcy54PXRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMueS5yZWR8fCh0aGlzLnk9dGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSx0aGlzLnQmJiF0aGlzLnQucmVkJiYodGhpcy50PXRoaXMudC50b1JlZCh0aGlzLmN1cnZlLnJlZCkpLHRoaXMuek9uZT10aGlzLno9PT10aGlzLmN1cnZlLm9uZSx0aGlzLmN1cnZlLmV4dGVuZGVkJiYhdGhpcy50JiYodGhpcy50PXRoaXMueC5yZWRNdWwodGhpcy55KSx0aGlzLnpPbmV8fCh0aGlzLnQ9dGhpcy50LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKSkpKX1hKHMsZiksZS5leHBvcnRzPXMscy5wcm90b3R5cGUuX211bEE9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubU9uZUE/ZS5yZWROZWcoKTp0aGlzLmEucmVkTXVsKGUpfSxzLnByb3RvdHlwZS5fbXVsQz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vbmVDP2U6dGhpcy5jLnJlZE11bChlKX0scy5wcm90b3R5cGUuanBvaW50PWZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB0aGlzLnBvaW50KGUsdCxyLG4pfSxzLnByb3RvdHlwZS5wb2ludEZyb21YPWZ1bmN0aW9uKGUsdCl7ZT1uZXcgaShlLDE2KSxlLnJlZHx8KGU9ZS50b1JlZCh0aGlzLnJlZCkpO3ZhciByPWUucmVkU3FyKCksbj10aGlzLmMyLnJlZFN1Yih0aGlzLmEucmVkTXVsKHIpKSxhPXRoaXMub25lLnJlZFN1Yih0aGlzLmMyLnJlZE11bCh0aGlzLmQpLnJlZE11bChyKSksZj1uLnJlZE11bChhLnJlZEludm0oKSksbz1mLnJlZFNxcnQoKTtpZigwIT09by5yZWRTcXIoKS5yZWRTdWIoZikuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7dmFyIHM9by5mcm9tUmVkKCkuaXNPZGQoKTtyZXR1cm4odCYmIXN8fCF0JiZzKSYmKG89by5yZWROZWcoKSksdGhpcy5wb2ludChlLG8pfSxzLnByb3RvdHlwZS5wb2ludEZyb21ZPWZ1bmN0aW9uKGUsdCl7ZT1uZXcgaShlLDE2KSxlLnJlZHx8KGU9ZS50b1JlZCh0aGlzLnJlZCkpO3ZhciByPWUucmVkU3FyKCksbj1yLnJlZFN1Yih0aGlzLmMyKSxhPXIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHRoaXMuYzIpLnJlZFN1Yih0aGlzLmEpLGY9bi5yZWRNdWwoYS5yZWRJbnZtKCkpO2lmKDA9PT1mLmNtcCh0aGlzLnplcm8pKXtpZih0KXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBwb2ludCIpO3JldHVybiB0aGlzLnBvaW50KHRoaXMuemVybyxlKX12YXIgbz1mLnJlZFNxcnQoKTtpZigwIT09by5yZWRTcXIoKS5yZWRTdWIoZikuY21wKHRoaXMuemVybykpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHBvaW50Iik7cmV0dXJuIG8uZnJvbVJlZCgpLmlzT2RkKCkhPT10JiYobz1vLnJlZE5lZygpKSx0aGlzLnBvaW50KG8sZSl9LHMucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKGUpe2lmKGUuaXNJbmZpbml0eSgpKXJldHVybiEwO2Uubm9ybWFsaXplKCk7dmFyIHQ9ZS54LnJlZFNxcigpLHI9ZS55LnJlZFNxcigpLG49dC5yZWRNdWwodGhpcy5hKS5yZWRBZGQociksaT10aGlzLmMyLnJlZE11bCh0aGlzLm9uZS5yZWRBZGQodGhpcy5kLnJlZE11bCh0KS5yZWRNdWwocikpKTtyZXR1cm4gMD09PW4uY21wKGkpfSxhKGQsZi5CYXNlUG9pbnQpLHMucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oZSl7cmV0dXJuIGQuZnJvbUpTT04odGhpcyxlKX0scy5wcm90b3R5cGUucG9pbnQ9ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIG5ldyBkKHRoaXMsZSx0LHIsbil9LGQuZnJvbUpTT049ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IGQoZSx0WzBdLHRbMV0sdFsyXSl9LGQucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZmluaXR5KCk/IjxFQyBQb2ludCBJbmZpbml0eT4iOiI8RUMgUG9pbnQgeDogIit0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgeTogIit0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyIgejogIit0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LDIpKyI+In0sZC5wcm90b3R5cGUuaXNJbmZpbml0eT1mdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy54LmNtcG4oMCkmJigwPT09dGhpcy55LmNtcCh0aGlzLnopfHx0aGlzLnpPbmUmJjA9PT10aGlzLnkuY21wKHRoaXMuY3VydmUuYykpfSxkLnByb3RvdHlwZS5fZXh0RGJsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy54LnJlZFNxcigpLHQ9dGhpcy55LnJlZFNxcigpLHI9dGhpcy56LnJlZFNxcigpO3I9ci5yZWRJQWRkKHIpO3ZhciBuPXRoaXMuY3VydmUuX211bEEoZSksaT10aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihlKS5yZWRJU3ViKHQpLGE9bi5yZWRBZGQodCksZj1hLnJlZFN1YihyKSxvPW4ucmVkU3ViKHQpLHM9aS5yZWRNdWwoZiksZD1hLnJlZE11bChvKSxjPWkucmVkTXVsKG8pLHU9Zi5yZWRNdWwoYSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQocyxkLHUsYyl9LGQucHJvdG90eXBlLl9wcm9qRGJsPWZ1bmN0aW9uKCl7dmFyIGUsdCxyLG4saSxhLGY9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLG89dGhpcy54LnJlZFNxcigpLHM9dGhpcy55LnJlZFNxcigpO2lmKHRoaXMuY3VydmUudHdpc3RlZCl7bj10aGlzLmN1cnZlLl9tdWxBKG8pO3ZhciBkPW4ucmVkQWRkKHMpO3RoaXMuek9uZT8oZT1mLnJlZFN1YihvKS5yZWRTdWIocykucmVkTXVsKGQucmVkU3ViKHRoaXMuY3VydmUudHdvKSksdD1kLnJlZE11bChuLnJlZFN1YihzKSkscj1kLnJlZFNxcigpLnJlZFN1YihkKS5yZWRTdWIoZCkpOihpPXRoaXMuei5yZWRTcXIoKSxhPWQucmVkU3ViKGkpLnJlZElTdWIoaSksZT1mLnJlZFN1YihvKS5yZWRJU3ViKHMpLnJlZE11bChhKSx0PWQucmVkTXVsKG4ucmVkU3ViKHMpKSxyPWQucmVkTXVsKGEpKX1lbHNlIG49by5yZWRBZGQocyksaT10aGlzLmN1cnZlLl9tdWxDKHRoaXMueikucmVkU3FyKCksYT1uLnJlZFN1YihpKS5yZWRTdWIoaSksZT10aGlzLmN1cnZlLl9tdWxDKGYucmVkSVN1YihuKSkucmVkTXVsKGEpLHQ9dGhpcy5jdXJ2ZS5fbXVsQyhuKS5yZWRNdWwoby5yZWRJU3ViKHMpKSxyPW4ucmVkTXVsKGEpO3JldHVybiB0aGlzLmN1cnZlLnBvaW50KGUsdCxyKX0sZC5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHREYmwoKTp0aGlzLl9wcm9qRGJsKCl9LGQucHJvdG90eXBlLl9leHRBZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bChlLnkucmVkU3ViKGUueCkpLHI9dGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChlLnkucmVkQWRkKGUueCkpLG49dGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwoZS50KSxpPXRoaXMuei5yZWRNdWwoZS56LnJlZEFkZChlLnopKSxhPXIucmVkU3ViKHQpLGY9aS5yZWRTdWIobiksbz1pLnJlZEFkZChuKSxzPXIucmVkQWRkKHQpLGQ9YS5yZWRNdWwoZiksYz1vLnJlZE11bChzKSx1PWEucmVkTXVsKHMpLGg9Zi5yZWRNdWwobyk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoZCxjLGgsdSl9LGQucHJvdG90eXBlLl9wcm9qQWRkPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbj10aGlzLnoucmVkTXVsKGUueiksaT1uLnJlZFNxcigpLGE9dGhpcy54LnJlZE11bChlLngpLGY9dGhpcy55LnJlZE11bChlLnkpLG89dGhpcy5jdXJ2ZS5kLnJlZE11bChhKS5yZWRNdWwoZikscz1pLnJlZFN1YihvKSxkPWkucmVkQWRkKG8pLGM9dGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZE11bChlLngucmVkQWRkKGUueSkpLnJlZElTdWIoYSkucmVkSVN1YihmKSx1PW4ucmVkTXVsKHMpLnJlZE11bChjKTtyZXR1cm4gdGhpcy5jdXJ2ZS50d2lzdGVkPyh0PW4ucmVkTXVsKGQpLnJlZE11bChmLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKGEpKSkscj1zLnJlZE11bChkKSk6KHQ9bi5yZWRNdWwoZCkucmVkTXVsKGYucmVkU3ViKGEpKSxyPXRoaXMuY3VydmUuX211bEMocykucmVkTXVsKGQpKSx0aGlzLmN1cnZlLnBvaW50KHUsdCxyKX0sZC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT9lOmUuaXNJbmZpbml0eSgpP3RoaXM6dGhpcy5jdXJ2ZS5leHRlbmRlZD90aGlzLl9leHRBZGQoZSk6dGhpcy5fcHJvakFkZChlKX0sZC5wcm90b3R5cGUubXVsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9oYXNEb3VibGVzKGUpP3RoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsZSk6dGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLGUpfSxkLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsdF0sW2Uscl0sMiwhMSl9LGQucHJvdG90eXBlLmptdWxBZGQ9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsW3RoaXMsdF0sW2Uscl0sMiwhMCl9LGQucHJvdG90eXBlLm5vcm1hbGl6ZT1mdW5jdGlvbigpe2lmKHRoaXMuek9uZSlyZXR1cm4gdGhpczt2YXIgZT10aGlzLnoucmVkSW52bSgpO3JldHVybiB0aGlzLng9dGhpcy54LnJlZE11bChlKSx0aGlzLnk9dGhpcy55LnJlZE11bChlKSx0aGlzLnQmJih0aGlzLnQ9dGhpcy50LnJlZE11bChlKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXMuek9uZT0hMCx0aGlzfSxkLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTmVnKCksdGhpcy55LHRoaXMueix0aGlzLnQmJnRoaXMudC5yZWROZWcoKSl9LGQucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnguZnJvbVJlZCgpfSxkLnByb3RvdHlwZS5nZXRZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplKCksdGhpcy55LmZyb21SZWQoKX0sZC5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXM9PT1lfHwwPT09dGhpcy5nZXRYKCkuY21wKGUuZ2V0WCgpKSYmMD09PXRoaXMuZ2V0WSgpLmNtcChlLmdldFkoKSl9LGQucHJvdG90eXBlLmVxWFRvUD1mdW5jdGlvbihlKXt2YXIgdD1lLnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwodGhpcy56KTtpZigwPT09dGhpcy54LmNtcCh0KSlyZXR1cm4hMDtmb3IodmFyIHI9ZS5jbG9uZSgpLG49dGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh0aGlzLnopOzspe2lmKHIuaWFkZCh0aGlzLmN1cnZlLm4pLHIuY21wKHRoaXMuY3VydmUucCk+PTApcmV0dXJuITE7aWYodC5yZWRJQWRkKG4pLDA9PT10aGlzLnguY21wKHQpKXJldHVybiEwfX0sZC5wcm90b3R5cGUudG9QPWQucHJvdG90eXBlLm5vcm1hbGl6ZSxkLnByb3RvdHlwZS5taXhlZEFkZD1kLnByb3RvdHlwZS5hZGR9LCIzZmI1IjpmdW5jdGlvbihlLHQpeyJmdW5jdGlvbiI9PT10eXBlb2YgT2JqZWN0LmNyZWF0ZT9lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0JiYoZS5zdXBlcl89dCxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSl9OmUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKHQpe2Uuc3VwZXJfPXQ7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPXQucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyByLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWV9fX0sIjQwOWIiOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtkb3VibGVzOntzdGVwOjQscG9pbnRzOltbImU2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEiLCJmN2UzNTA3Mzk5ZTU5NTkyOWRiOTlmMzRmNTc5MzcxMDEyOTY4OTFlNDRkMjNmMGJlMWYzMmNjZTY5NjE2ODIxIl0sWyI4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4IiwiMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZiJdLFsiMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1YjczOSIsImQzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUiXSxbIjM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAiLCI0ZTI3M2FkZmM3MzIyMjE5NTNiNDQ1Mzk3ZjMzNjMxNDViOWE4OTAwODE5OWVjYjYyMDAzYzdmM2JlZTlkZTkiXSxbIjhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGMiLCI0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBjNjVmZDRmZDM2Il0sWyI3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhIiwiOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZiJdLFsiZWViZmE0ZDQ5M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYSIsIjVkOWE4Y2EzOTcwZWYwZjI2OWVlN2VkYWYxNzgwODlkOWFlNGNkYzNhNzExZjcxMmRkZmQ0ZmRhZTFkZTg5OTkiXSxbIjEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjAiLCJjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5Il0sWyJlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkIiwiOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCJdLFsiZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCIsImU1N2M2YjZjOTdkY2UxYmFiMDZlNGUxMmJmM2VjZDVjOTgxYzg5NTdjYzQxNDQyZDMxNTVkZWJmMTgwOTAwODgiXSxbImRhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjEiLCI5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFkIl0sWyI1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwIiwiNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCJdLFsiOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NyIsIjEwYjc3NzBiMmEzZGE0YjM5NDAzMTA0MjBjYTk1MTQ1NzllODhlMmU0N2ZkNjhiM2VhMTAwNDdlODQ2MDM3MmEiXSxbIjM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQxZTE1OTljNDM4NjIiLCIyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzIl0sWyI2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTciLCI3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwIl0sWyIzMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkIiwiNTZlNzA3OTdlOTY2NGVmNWJmYjAxOWJjNGRkYWY5YjcyODA1ZjYzZWEyODczYWY2MjRmM2EyZTk2YzI4YjJhMCJdLFsiODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4MyIsIjdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYiXSxbIjk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYSIsIjUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODkiXSxbIjYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgiLCJiYzJkYTgyYjZmYTViNTcxYTdmMDkwNDk3NzZhMWVmN2VjZDI5MjIzODA1MWMxOThjMWE4NGU5NWIyYjRhZTE3Il0sWyJlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJkIiwiNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYSJdLFsiZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNSIsIjdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQiXSxbIjIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQiLCI0YjZkYWQwYjVhZTQ2MjUwNzAxM2FkMDYyNDViYTE5MGJiNDg1MGY1ZjM2YTdlZWRkZmYyYzI3NTM0YjQ1OGYyIl0sWyI0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjIiwiMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNiJdLFsiZmVhNzRlM2RiZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNiIsIjZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYiXSxbIjc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzkiLCJjOTBkZGY4ZGVlNGU5NWNmNTc3MDY2ZDcwNjgxZjBkMzVlMmEzM2QyYjU2ZDIwMzJiNGIxNzUyZDE5MDFhYzAxIl0sWyJjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxIiwiODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMyJdLFsiZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YiIsImZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYiXSxbImI4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMiLCIyODA0ZGZhNDQ4MDVhMWU0ZDdjOTljYzk3NjI4MDhiMDkyY2M1ODRkOTVmZjNiNTExNDg4ZTRlNzRlZmRmNmU3Il0sWyJlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkIiwiZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCJdLFsiYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCIsIjczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEiXSxbIjkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2FjNjNlM2ZiMDRlZDQiLCJlNTA3YTM2MjBhMzgyNjFhZmZkY2JkOTQyNzIyMmI4MzlhZWZhYmUxNTgyODk0ZDk5MWQ0ZDQ4Y2I2ZWYxNTAiXSxbIjhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGEiLCI2NjJhOWYyZGJhMDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyIl0sWyJlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExIiwiMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYyJdLFsiOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZSIsImVmYTQ3MjY3ZmVhNTIxYTFhOWRjMzQzYTM3MzZjOTc0YzJmYWRhZmE4MWUzNmM1NGU3ZDJhNGM2NjcwMjQxNGIiXSxbImU3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDEiLCIyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxIl0sWyJiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmIiwiNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1Il0sWyJkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4IiwiZGI4YmE5ZmZmNGI1ODZkMDBjNGIxZjkxNzdiMGUyOGI1YjBlN2I4Zjc4NDUyOTVhMjk0Yzg0MjY2YjEzMzEyMCJdLFsiMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZCIsIjY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQiXSxbIjRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYiLCIzNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCJdLFsiOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCIsImRkYjg0ZjBmNGE0ZGRkNTc1ODRmMDQ0YmYyNjBlNjQxOTA1MzI2Zjc2YzY0YzhlNmJlN2U1ZTAzZDRmYzU5OWQiXSxbIjYwNTcxNzBiMWRkMTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTUiLCI5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4Il0sWyJhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2IiwiNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCJdLFsiNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MSIsIjM0NjI2ZDlhYjVhNWIyMmZmNzA5OGUxMmYyZmY1ODAwODdiMzg0MTFmZjI0YWM1NjNiNTEzZmMxZmQ5ZjQzYWMiXSxbIjkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhYyIsImMyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYiXSxbIjg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEiLCIxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyIl0sWyJmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlIiwiNDkzZDEzZmVmNTI0YmExODhhZjRjNGRjNTRkMDc5MzZjN2I3ZWQ2ZmI5MGUyY2ViMmM5NTFlMDFmMGMyOTkwNyJdLFsiODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MSIsImM2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMiXSxbImVhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZhMjEyMGUyYjMiLCJiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkIl0sWyJlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmIiwiNGQ5ZjkyZTcxNmQxYzczNTI2ZmM5OWNjZmI4YWQzNGNlODg2ZWVkZmE4ZDhlNGYxM2E3ZjcxMzFkZWJhOTQxNCJdLFsiMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOSIsImFlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQiXSxbIjE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUiLCJiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwIl0sWyJmYTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5IiwiNmI4NGM2OTIyMzk3ZWJhOWI3MmNkMjg3MjI4MWE2OGE1ZTY4MzI5M2E1N2EyMTNiMzhjZDhkN2QzZjRmMjgxMSJdLFsiZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMiIsIjgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEiXSxbImE4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTMiLCI3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjIl0sWyIxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjIiwiY2NjOWRjMzdhYmZjOWMxNjU3YjQxNTVmMmM0N2Y5ZTY2NDZiM2ExZDhjYjk4NTQzODNkYTEzYWMwNzlhZmE3MyJdLFsiOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYSIsIjJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4NzUyNGYyZmQiXSxbImQyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTEiLCJlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1Il0sWyI2NDU4N2UyMzM1NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczIiwiZDk5ZmNkZDViZjY5MDJlMmFlOTZkZDY0NDdjMjk5YTE4NWI5MGEzOTEzM2FlYWIzNTgyOTllNWU5ZmFmNjU4OSJdLFsiODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OCIsIjM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UiXSxbIjEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmIiLCI2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3Il0sWyJiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2IiwiZDNhODFjYTZlNzg1YzA2MzgzOTM3YWRmNGI3OThjYWE2ZThhOWZiZmE1NDdiMTZkNzU4ZDY2NjU4MWYzM2MxIl0sWyI4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhIiwiNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MiJdLFsiOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwIiwiNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NSJdLFsiZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NyIsIjdhMTg4ZmEzNTIwZTMwZDQ2MWRhMjUwMTA0NTczMWNhOTQxNDYxOTgyODgzMzk1OTM3ZjY4ZDAwYzY0NGE1NzMiXSxbImY3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1MjQwODIyMWUiLCJlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyIl1dfSxuYWY6e3duZDo3LHBvaW50czpbWyJmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5IiwiMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MiJdLFsiMmY4YmRlNGQxYTA3MjA5MzU1YjRhNzI1MGE1YzUxMjhlODhiODRiZGRjNjE5YWI3Y2JhOGQ1NjliMjQwZWZlNCIsImQ4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYiXSxbIjVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMiLCI2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYyODA4NzI2NGRhIl0sWyJhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlIiwiY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzNyJdLFsiNzc0YWU3Zjg1OGE5NDExZTVlZjQyNDZiNzBjNjVhYWM1NjQ5OTgwYmU1YzE3ODkxYmJlYzE3ODk1ZGEwMDhjYiIsImQ5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWIiXSxbImYyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgiLCJhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEiXSxbImQ3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUiLCI1ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4Il0sWyJkZWZkZWE0Y2RiNjc3NzUwYTQyMGZlZTgwN2VhY2YyMWViOTg5OGFlNzliOTc2ODc2NmU0ZmFhMDRhMmQ0YTM0IiwiNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NyJdLFsiMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YyIsIjg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2EiXSxbIjM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUiLCIzMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjIl0sWyIyZmEyMTA0ZDZiMzhkMTFiMDIzMDAxMDU1OTg3OTEyNGU0MmFiOGRmZWZmNWZmMjlkYzljZGFkZDRlY2FjYzNmIiwiMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3Il0sWyI5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0IiwiNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMiJdLFsiZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOSIsImE2OWRjZTRhN2Q2Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTUiXSxbImM0NGQxMmM3MDY1ZDgxMmU4YWNmMjhkN2NiYjE5ZjkwMTFlY2Q5ZTlmZGYyODFiMGU2YTNiNWU4N2QyMmU3ZGIiLCIyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyIl0sWyI2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0IiwiZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MiJdLFsiMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNSIsImI5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTYiXSxbIjYwNWJkYjAxOTk4MTcxOGI5ODZkMGYwN2U4MzRjYjBkOWRlYjgzNjBmZmI3ZjYxZGY5ODIzNDVlZjI3YTc0NzkiLCIyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDkiXSxbIjYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QiLCI4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmIl0sWyI4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmIiwiMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YSJdLFsiN2E5Mzc1YWQ2MTY3YWQ1NGFhNzRjNjM0OGNjNTRkMzQ0Y2M1ZGM5NDg3ZDg0NzA0OWQ1ZWFiYjBmYTAzYzhmYiIsImQwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMyMjRkYzdmNyJdLFsiZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOSIsImVlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMiXSxbIjQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MyIsIjc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWEiXSxbIjc3ZjIzMDkzNmVlODhjYmJkNzNkZjkzMGQ2NDcwMmVmODgxZDgxMWUwZTE0OThlMmYxYzEzZWIxZmMzNDVkNzQiLCI5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2Il0sWyJmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwIiwiZTBkZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNyJdLFsiNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YiIsIjVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2UiXSxbImYxNmY4MDQyNDRlNDZlMmEwOTIzMmQ0YWZmM2I1OTk3NmI5OGZhYzE0MzI4YTJkMWEzMjQ5NmI0OTk5OGYyNDciLCJjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2Il0sWyJjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxIiwiY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NiJdLFsiMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCIsIjQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDAiXSxbIjc2MzVjYTcyZDdlODQzMmMzMzhlYzUzY2QxMjIyMGJjMDFjNDg2ODVlMjRmN2RjOGM2MDJhNzc0Njk5OGU0MzUiLCI5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjEiXSxbIjc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgiLCI2NzNmYjg2ZTViZGEzMGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMiXSxbImUzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgiLCI1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2NzAwMmFmNDkyMGUzN2Y1Il0sWyIxODZiNDgzZDA1NmEwMzM4MjZhZTczZDg4ZjczMjk4NWM0Y2NiMWYzMmJhMzVmNGI0Y2M0N2ZkY2YwNGFhNmViIiwiM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YiJdLFsiZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZiIsIjU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTciXSxbIjVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMiLCJlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4Il0sWyIyOTA3OThjMmI2NDc2ODMwZGExMmZlMDIyODdlOWU3NzdhYTNmYmExYzM1NWIxN2E3MjJkMzYyZjg0NjE0ZmJhIiwiZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YSJdLFsiYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NSIsImY5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYiXSxbIjc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEiLCI3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2NiYWM1OTk2Il0sWyI1OWRiZjQ2ZjhjOTQ3NTliYTIxMjc3YzMzNzg0ZjQxNjQ1ZjdiNDRmNmM1OTZhNThjZTkyZTY2NjE5MWFiZTNlIiwiYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZSJdLFsiZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCIsImUxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QiXSxbIjc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMiLCIzMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyIl0sWyI5NDhkY2FkZjU5OTBlMDQ4YWEzODc0ZDQ2YWJlZjlkNzAxODU4Zjk1ZGU4MDQxZDJhNjgyOGM5OWUyMjYyNTE5IiwiZTQ5MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZSJdLFsiNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYiIsIjEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzciXSxbIjM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EiLCJlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExIl0sWyJkM2NjMzBhZDZiNDgzZTRiYzc5Y2UyYzlkZDhiYzU0OTkzZTk0N2ViOGRmNzg3YjQ0Mjk0M2QzZjdiNTI3ZWFmIiwiOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCJdLFsiMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCIsIjY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUiXSxbIjczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQiLCJmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkIl0sWyIxNWQ5NDQxMjU0OTQ1MDY0Y2YxYTFjMzNiYmQzYjQ5Zjg5NjZjNTA5MjE3MWU2OTllZjI1OGRmYWI4MWMwNDVjIiwiZDU2ZWIzMGI2OTQ2M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCJdLFsiYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCIsImVkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjkiXSxbImUyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAiLCJhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDYiXSxbIjMxMTA5MWRkOTg2MGU4ZTIwZWUxMzQ3M2MxMTU1ZjVmNjk2MzVlMzk0NzA0ZWFhNzQwMDk0NTIyNDZjZmE5YjMiLCI2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0Il0sWyIzNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmIiwiOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlIl0sWyJmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzIiwiNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMSJdLFsiZDdiODc0MGY3NGE4ZmJhYWIxZjY4M2RiOGY0NWRlMjY1NDNhNTQ5MGJjYTYyNzA4NzIzNjkxMjQ2OWEwYjQ0OCIsImZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2IiXSxbIjMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYiLCI1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2MmUxNjYxIl0sWyI3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1IiwiOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNiJdLFsiZWUwNzlhZGIxZGYxODYwMDc0MzU2YTI1YWEzODIwNmE2ZDcxNmIyYzNlNjc0NTNkMjg3Njk4YmFkN2IyYjJkNiIsIjhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUiXSxbIjE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUiLCI1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkIl0sWyJlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5IiwiZjY1ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkYyJdLFsiNzhjOTQwNzU0NGFjMTMyNjkyZWUxOTEwYTAyNDM5OTU4YWUwNDg3NzE1MTM0MmVhOTZjNGI2YjM1YTQ5ZjUxIiwiZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCJdLFsiNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNSIsIjQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMiXSxbImE1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUiLCIyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiIl0sWyJjNDE5MTYzNjVhYmIyYjVkMDkxOTJmNWYyZGJlYWZlYzIwOGYwMjBmMTI1NzBhMTg0ZGJhZGMzZTU4NTk1OTk3IiwiNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzIl0sWyI4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxIiwiNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0Il0sWyI1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1IiwiMzlmMjNmMzY2ODA5MDg1YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NSJdLFsiMzZlNDY0MWE1Mzk0OGZkNDc2YzM5ZjhhOTlmZDk3NGU1ZWMwNzU2NGI1MzE1ZDhiZjk5NDcxYmNhMGVmMmY2NiIsImQyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZmZDUxY2Y1Njk0Yzc4ZmMiXSxbIjMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNiIsImVhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQiXSxbIjhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUiLCI2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlIl0sWyIxZTMzZjFhNzQ2YzljNTc3ODEzMzM0NGQ5Mjk5ZmNhYTIwYjA5MzhlOGFjZmYyNTQ0YmI0MDI4NGI4YzVmYjk0IiwiNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2Il0sWyI4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxIiwiM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMSJdLFsiMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MSIsImI0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YiJdLFsiYTBiMWNhZTA2YjBhODQ3YTNmZWE2ZTY3MWFhZjhhZGZkZmU1OGNhMmY3NjgxMDVjODA4MmIyZTQ0OWZjZTI1MiIsImFlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZjZjIiXSxbIjRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNSIsImNmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MiXSxbImQyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2IiLCI2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzIl0sWyJlYTAxNjA2YTdhNmM5Y2RkMjQ5ZmRmY2ZhY2I5OTU4NDAwMWVkZDI4YWJiYWI3N2I1MTA0ZTk4ZThlM2IzNWQ0IiwiMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZCJdLFsiYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZiIsIjY3NDllNjdjMDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAiXSxbImUzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5IiwiMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNCJdLFsiNTkxZWUzNTUzMTNkOTk3MjFjZjY5OTNmZmVkMWUzZTMwMTk5M2ZmM2VkMjU4ODAyMDc1ZWE4Y2VkMzk3ZTI0NiIsImIwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYiXSxbIjExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQiLCI5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0Il0sWyIzYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhIiwiYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1NyJdLFsiY2M4NzA0YjhhNjBhMGRlZmEzYTk5YTcyOTlmMmU5YzNmYmMzOTVhZmIwNGFjMDc4NDI1ZWY4YTE3OTNjYzAzMCIsImJkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTMiXSxbImM1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTciLCI2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2Il0sWyJjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMiLCJjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5MTEzZGMzYTM4Il0sWyJhNmNiYzMwNDZiYzZhNDUwYmFjMjQ3ODlmYTE3MTE1YTRjOTczOWVkNzVmOGYyMWNlNDQxZjcyZTBiOTBlNmVmIiwiMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmIl0sWyIzNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4IiwiNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCJdLFsiZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YSIsIjQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGEiXSxbImM0MDc0N2NjOWQwMTJjYjFhMTNiODE0ODMwOWM2ZGU3ZWMyNWQ2OTQ1ZDY1NzE0NmI5ZDU5OTRiOGZlYjExMTEiLCI1Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0Il0sWyI0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyIiwiNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNyJdLFsiMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYSIsImJlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjciXSxbImNlZTMxY2JmN2UzNGVjMzc5ZDk0ZmI4MTRkM2Q3NzVhZDk1NDU5NWQxMzE0YmE4ODQ2OTU5ZTNlODJmNzRlMjYiLCI4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkIl0sWyJiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2IiwiMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYSJdLFsiZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZSIsIjYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTQiXSxbIjQ4NDU3NTI0ODIwZmE2NWE0ZjhkMzVlYjY5MzA4NTdjMDAzMmFjYzBhNGEyZGU0MjIyMzNlZWRhODk3NjEyYzQiLCIyNWE3NDhhYjM2Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3Il0sWyJkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhIiwiZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNyJdLFsiNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OSIsImNkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTAiXSxbImU3NTYwNWQ1OTEwMmE1YTI2ODQ1MDBkM2I5OTFmMmUzZjNjODhiOTMyMjU1NDcwMzVhZjI1YWY2NmUwNDU0MWYiLCJmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1Il0sWyJlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjIiwiNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZSJdLFsiMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MiIsImZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjEiXSxbImVlMTYzMDI2ZTlmZDZmZTAxN2MzOGYwNmE1YmU2ZmMxMjU0MjRiMzcxY2UyNzA4ZTdiZjQ0OTE2OTFlNTc2NGEiLCIxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyIl0sWyJiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwIiwiNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0NWExMjE2ZTQyMyJdLFsiZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCIsIjQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDgiXSxbIjhkOGI5ODU1YzdjMDUyYTM0MTQ2ZmQyMGZmYjY1OGJlYTRiOWY2OWUwZDgyNWViZWMxNmU4YzNjZTJiNTI2YTEiLCJjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4Il0sWyI1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzIiwiYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1Il0sWyJlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyIiwiNmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZCJdLFsiN2YzMGVhMjQ3NmIzOTliNDk1NzUwOWM4OGY3N2QwMTkxYWZhMmZmNWNiN2IxNGZkNmQ4ZTdkNjVhYWFiMTE5MyIsImNhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMiXSxbIjUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAiLCI5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAiXSxbIjMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgiLCJlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjIl0sWyJlMmNiNzRmZGRjOGU5ZmJjZDA3NmVlZjJhN2M3MmIwY2UzN2Q1MGYwODI2OWRmYzA3NGI1ODE1NTA1NDdhNGY3IiwiZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCJdLFsiODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCIsImM0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYiXSxbIjQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UiLCI2NzE2M2U5MDMyMzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5Il0sWyIzZmFkM2ZhODRjYWYwZjM0ZjBmODliZmQyZGNmNTRmYzE3NWQ3NjdhZWMzZTUwNjg0ZjNiYTRhNGJmNWY2ODNkIiwiY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2Il0sWyI2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiIiwiMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNSJdLFsiZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZiIsImY5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODciXSxbIjMwZTRlNjcwNDM1Mzg1NTU2ZTU5MzY1NzEzNTg0NWQzNmZiYjY5MzFmNzJiMDhjYjFlZDk1NGYxZTNjZTNmZjYiLCI0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiIl0sWyJiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3IiwiNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYyJdLFsiOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YSIsIjdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2MiXSxbImIwMTVmODA0NGY1ZmNiZGNmMjFjYTI2ZDZjMzRmYjgxOTc4MjkyMDVjN2I3ZDJhN2NiNjY0MThjMTU3YjExMmMiLCJhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0NTRlM2ExZDVmIl0sWyJkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyIiwiNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YSJdLFsiZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYiIsImJkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDYiXSxbIjQ2M2UyNzYzZDg4NWY5NThmYzY2Y2RkMjI4MDBmMGE0ODcxOTdkMGE4MmUzNzdiNDlmODBhZjg3Yzg5N2IwNjUiLCJiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmIl0sWyI3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3IiwiNjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMyJdLFsiNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOSIsImNjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDgiXSxbIjMwNjgyYTUwNzAzMzc1ZjYwMmQ0MTY2NjRiYTE5YjdmYzliYWI0MmM3Mjc0NzQ2M2E3MWQwODk2YjIyZjZkYTMiLCI1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4Il0sWyI5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3IiwiNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczIl0sWyIxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2IiwiZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjMyJdLFsiNzVkNDZlZmVhMzc3MWU2ZTY4YWJiODlhMTNhZDc0N2VjZjE4OTIzOTNkZmM0ZjFiNzAwNDc4OGM1MDM3NGRhOCIsIjk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDgiXSxbIjgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEiLCI5ZTk5NDk4MGQ5OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxIl0sWyIxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwIiwiNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOSJdXX19fSw0MTM2OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49dDtuLmJhc2U9cigiZWE1MyIpLG4uc2hvcnQ9cigiMzMwMCIpLG4ubW9udD1yKCI2NzZmIiksbi5lZHdhcmRzPXIoIjNkYWYiKX0sNDM2MjpmdW5jdGlvbihlLHQscil7dC5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO3Quc2hpZnQoKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UuYXBwbHkobnVsbCx0KX0pLDApfSx0LnBsYXRmb3JtPXQuYXJjaD10LmV4ZWNQYXRoPXQudGl0bGU9ImJyb3dzZXIiLHQucGlkPTEsdC5icm93c2VyPSEwLHQuZW52PXt9LHQuYXJndj1bXSx0LmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJObyBzdWNoIG1vZHVsZS4gKFBvc3NpYmx5IG5vdCB5ZXQgbG9hZGVkKSIpfSxmdW5jdGlvbigpe3ZhciBlLG49Ii8iO3QuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIG59LHQuY2hkaXI9ZnVuY3Rpb24odCl7ZXx8KGU9cigiZGY3YyIpKSxuPWUucmVzb2x2ZSh0LG4pfX0oKSx0LmV4aXQ9dC5raWxsPXQudW1hc2s9dC5kbG9wZW49dC51cHRpbWU9dC5tZW1vcnlVc2FnZT10LnV2Q291bnRlcnM9ZnVuY3Rpb24oKXt9LHQuZmVhdHVyZXM9e319LCI0NGEzIjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoIjgwYWYiKSxpPXIoImYzYTMiKSxhPWkuYXNzZXJ0LGY9aS5jYWNoZWRQcm9wZXJ0eSxvPWkucGFyc2VCeXRlcztmdW5jdGlvbiBzKGUsdCl7dGhpcy5lZGRzYT1lLCJvYmplY3QiIT09dHlwZW9mIHQmJih0PW8odCkpLEFycmF5LmlzQXJyYXkodCkmJih0PXtSOnQuc2xpY2UoMCxlLmVuY29kaW5nTGVuZ3RoKSxTOnQuc2xpY2UoZS5lbmNvZGluZ0xlbmd0aCl9KSxhKHQuUiYmdC5TLCJTaWduYXR1cmUgd2l0aG91dCBSIG9yIFMiKSxlLmlzUG9pbnQodC5SKSYmKHRoaXMuX1I9dC5SKSx0LlMgaW5zdGFuY2VvZiBuJiYodGhpcy5fUz10LlMpLHRoaXMuX1JlbmNvZGVkPUFycmF5LmlzQXJyYXkodC5SKT90LlI6dC5SZW5jb2RlZCx0aGlzLl9TZW5jb2RlZD1BcnJheS5pc0FycmF5KHQuUyk/dC5TOnQuU2VuY29kZWR9ZihzLCJTIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5TZW5jb2RlZCgpKX0pKSxmKHMsIlIiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSl9KSksZihzLCJSZW5jb2RlZCIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpfSkpLGYocywiU2VuY29kZWQiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSl9KSkscy5wcm90b3R5cGUudG9CeXRlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLlJlbmNvZGVkKCkuY29uY2F0KHRoaXMuU2VuY29kZWQoKSl9LHMucHJvdG90eXBlLnRvSGV4PWZ1bmN0aW9uKCl7cmV0dXJuIGkuZW5jb2RlKHRoaXMudG9CeXRlcygpLCJoZXgiKS50b1VwcGVyQ2FzZSgpfSxlLmV4cG9ydHM9c30sNDY3MzpmdW5jdGlvbihlLHQscil7Y29uc3Qgbj1yKCIzMzM3IikuZWMsaT1uZXcgbigic2VjcDI1NmsxIiksYT1pLmN1cnZlLGY9YS5uLmNvbnN0cnVjdG9yO2Z1bmN0aW9uIG8oZSx0KXtsZXQgcj1uZXcgZih0KTtpZihyLmNtcChhLnApPj0wKXJldHVybiBudWxsO3I9ci50b1JlZChhLnJlZCk7bGV0IG49ci5yZWRTcXIoKS5yZWRJTXVsKHIpLnJlZElBZGQoYS5iKS5yZWRTcXJ0KCk7cmV0dXJuIDM9PT1lIT09bi5pc09kZCgpJiYobj1uLnJlZE5lZygpKSxpLmtleVBhaXIoe3B1Yjp7eDpyLHk6bn19KX1mdW5jdGlvbiBzKGUsdCxyKXtsZXQgbj1uZXcgZih0KSxvPW5ldyBmKHIpO2lmKG4uY21wKGEucCk+PTB8fG8uY21wKGEucCk+PTApcmV0dXJuIG51bGw7aWYobj1uLnRvUmVkKGEucmVkKSxvPW8udG9SZWQoYS5yZWQpLCg2PT09ZXx8Nz09PWUpJiZvLmlzT2RkKCkhPT0oNz09PWUpKXJldHVybiBudWxsO2NvbnN0IHM9bi5yZWRTcXIoKS5yZWRJTXVsKG4pO3JldHVybiBvLnJlZFNxcigpLnJlZElTdWIocy5yZWRJQWRkKGEuYikpLmlzWmVybygpP2kua2V5UGFpcih7cHViOnt4Om4seTpvfX0pOm51bGx9ZnVuY3Rpb24gZChlKXtjb25zdCB0PWVbMF07c3dpdGNoKHQpe2Nhc2UgMjpjYXNlIDM6cmV0dXJuIDMzIT09ZS5sZW5ndGg/bnVsbDpvKHQsZS5zdWJhcnJheSgxLDMzKSk7Y2FzZSA0OmNhc2UgNjpjYXNlIDc6cmV0dXJuIDY1IT09ZS5sZW5ndGg/bnVsbDpzKHQsZS5zdWJhcnJheSgxLDMzKSxlLnN1YmFycmF5KDMzLDY1KSk7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gYyhlLHQpe2NvbnN0IHI9dC5lbmNvZGUobnVsbCwzMz09PWUubGVuZ3RoKTtmb3IobGV0IG49MDtuPGUubGVuZ3RoOysrbillW25dPXJbbl19ZS5leHBvcnRzPXtjb250ZXh0UmFuZG9taXplKCl7cmV0dXJuIDB9LHByaXZhdGVLZXlWZXJpZnkoZSl7Y29uc3QgdD1uZXcgZihlKTtyZXR1cm4gdC5jbXAoYS5uKTwwJiYhdC5pc1plcm8oKT8wOjF9LHByaXZhdGVLZXlOZWdhdGUoZSl7Y29uc3QgdD1uZXcgZihlKSxyPWEubi5zdWIodCkudW1vZChhLm4pLnRvQXJyYXlMaWtlKFVpbnQ4QXJyYXksImJlIiwzMik7cmV0dXJuIGUuc2V0KHIpLDB9LHByaXZhdGVLZXlUd2Vha0FkZChlLHQpe2NvbnN0IHI9bmV3IGYodCk7aWYoci5jbXAoYS5uKT49MClyZXR1cm4gMTtpZihyLmlhZGQobmV3IGYoZSkpLHIuY21wKGEubik+PTAmJnIuaXN1YihhLm4pLHIuaXNaZXJvKCkpcmV0dXJuIDE7Y29uc3Qgbj1yLnRvQXJyYXlMaWtlKFVpbnQ4QXJyYXksImJlIiwzMik7cmV0dXJuIGUuc2V0KG4pLDB9LHByaXZhdGVLZXlUd2Vha011bChlLHQpe2xldCByPW5ldyBmKHQpO2lmKHIuY21wKGEubik+PTB8fHIuaXNaZXJvKCkpcmV0dXJuIDE7ci5pbXVsKG5ldyBmKGUpKSxyLmNtcChhLm4pPj0wJiYocj1yLnVtb2QoYS5uKSk7Y29uc3Qgbj1yLnRvQXJyYXlMaWtlKFVpbnQ4QXJyYXksImJlIiwzMik7cmV0dXJuIGUuc2V0KG4pLDB9LHB1YmxpY0tleVZlcmlmeShlKXtjb25zdCB0PWQoZSk7cmV0dXJuIG51bGw9PT10PzE6MH0scHVibGljS2V5Q3JlYXRlKGUsdCl7Y29uc3Qgcj1uZXcgZih0KTtpZihyLmNtcChhLm4pPj0wfHxyLmlzWmVybygpKXJldHVybiAxO2NvbnN0IG49aS5rZXlGcm9tUHJpdmF0ZSh0KS5nZXRQdWJsaWMoKTtyZXR1cm4gYyhlLG4pLDB9LHB1YmxpY0tleUNvbnZlcnQoZSx0KXtjb25zdCByPWQodCk7aWYobnVsbD09PXIpcmV0dXJuIDE7Y29uc3Qgbj1yLmdldFB1YmxpYygpO3JldHVybiBjKGUsbiksMH0scHVibGljS2V5TmVnYXRlKGUsdCl7Y29uc3Qgcj1kKHQpO2lmKG51bGw9PT1yKXJldHVybiAxO2NvbnN0IG49ci5nZXRQdWJsaWMoKTtyZXR1cm4gbi55PW4ueS5yZWROZWcoKSxjKGUsbiksMH0scHVibGljS2V5Q29tYmluZShlLHQpe2NvbnN0IHI9bmV3IEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IGk9MDtpPHQubGVuZ3RoOysraSlpZihyW2ldPWQodFtpXSksbnVsbD09PXJbaV0pcmV0dXJuIDE7bGV0IG49clswXS5nZXRQdWJsaWMoKTtmb3IobGV0IGk9MTtpPHIubGVuZ3RoOysraSluPW4uYWRkKHJbaV0ucHViKTtyZXR1cm4gbi5pc0luZmluaXR5KCk/MjooYyhlLG4pLDApfSxwdWJsaWNLZXlUd2Vha0FkZChlLHQscil7Y29uc3Qgbj1kKHQpO2lmKG51bGw9PT1uKXJldHVybiAxO2lmKHI9bmV3IGYociksci5jbXAoYS5uKT49MClyZXR1cm4gMjtjb25zdCBpPW4uZ2V0UHVibGljKCkuYWRkKGEuZy5tdWwocikpO3JldHVybiBpLmlzSW5maW5pdHkoKT8yOihjKGUsaSksMCl9LHB1YmxpY0tleVR3ZWFrTXVsKGUsdCxyKXtjb25zdCBuPWQodCk7aWYobnVsbD09PW4pcmV0dXJuIDE7aWYocj1uZXcgZihyKSxyLmNtcChhLm4pPj0wfHxyLmlzWmVybygpKXJldHVybiAyO2NvbnN0IGk9bi5nZXRQdWJsaWMoKS5tdWwocik7cmV0dXJuIGMoZSxpKSwwfSxzaWduYXR1cmVOb3JtYWxpemUoZSl7Y29uc3QgdD1uZXcgZihlLnN1YmFycmF5KDAsMzIpKSxyPW5ldyBmKGUuc3ViYXJyYXkoMzIsNjQpKTtyZXR1cm4gdC5jbXAoYS5uKT49MHx8ci5jbXAoYS5uKT49MD8xOigxPT09ci5jbXAoaS5uaCkmJmUuc2V0KGEubi5zdWIocikudG9BcnJheUxpa2UoVWludDhBcnJheSwiYmUiLDMyKSwzMiksMCl9LHNpZ25hdHVyZUV4cG9ydChlLHQpe2NvbnN0IHI9dC5zdWJhcnJheSgwLDMyKSxuPXQuc3ViYXJyYXkoMzIsNjQpO2lmKG5ldyBmKHIpLmNtcChhLm4pPj0wKXJldHVybiAxO2lmKG5ldyBmKG4pLmNtcChhLm4pPj0wKXJldHVybiAxO2NvbnN0e291dHB1dDppfT1lO2xldCBvPWkuc3ViYXJyYXkoNCwzNyk7b1swXT0wLG8uc2V0KHIsMSk7bGV0IHM9MzMsZD0wO2Zvcig7cz4xJiYwPT09b1tkXSYmISgxMjgmb1tkKzFdKTstLXMsKytkKTtpZihvPW8uc3ViYXJyYXkoZCksMTI4Jm9bMF0pcmV0dXJuIDE7aWYocz4xJiYwPT09b1swXSYmISgxMjgmb1sxXSkpcmV0dXJuIDE7bGV0IGM9aS5zdWJhcnJheSgzOSw3Mik7Y1swXT0wLGMuc2V0KG4sMSk7bGV0IHU9MzMsaD0wO2Zvcig7dT4xJiYwPT09Y1toXSYmISgxMjgmY1toKzFdKTstLXUsKytoKTtyZXR1cm4gYz1jLnN1YmFycmF5KGgpLDEyOCZjWzBdfHx1PjEmJjA9PT1jWzBdJiYhKDEyOCZjWzFdKT8xOihlLm91dHB1dGxlbj02K3MrdSxpWzBdPTQ4LGlbMV09ZS5vdXRwdXRsZW4tMixpWzJdPTIsaVszXT1vLmxlbmd0aCxpLnNldChvLDQpLGlbNCtzXT0yLGlbNStzXT1jLmxlbmd0aCxpLnNldChjLDYrcyksMCl9LHNpZ25hdHVyZUltcG9ydChlLHQpe2lmKHQubGVuZ3RoPDgpcmV0dXJuIDE7aWYodC5sZW5ndGg+NzIpcmV0dXJuIDE7aWYoNDghPT10WzBdKXJldHVybiAxO2lmKHRbMV0hPT10Lmxlbmd0aC0yKXJldHVybiAxO2lmKDIhPT10WzJdKXJldHVybiAxO2NvbnN0IHI9dFszXTtpZigwPT09cilyZXR1cm4gMTtpZig1K3I+PXQubGVuZ3RoKXJldHVybiAxO2lmKDIhPT10WzQrcl0pcmV0dXJuIDE7Y29uc3Qgbj10WzUrcl07aWYoMD09PW4pcmV0dXJuIDE7aWYoNityK24hPT10Lmxlbmd0aClyZXR1cm4gMTtpZigxMjgmdFs0XSlyZXR1cm4gMTtpZihyPjEmJjA9PT10WzRdJiYhKDEyOCZ0WzVdKSlyZXR1cm4gMTtpZigxMjgmdFtyKzZdKXJldHVybiAxO2lmKG4+MSYmMD09PXRbcis2XSYmISgxMjgmdFtyKzddKSlyZXR1cm4gMTtsZXQgaT10LnN1YmFycmF5KDQsNCtyKTtpZigzMz09PWkubGVuZ3RoJiYwPT09aVswXSYmKGk9aS5zdWJhcnJheSgxKSksaS5sZW5ndGg+MzIpcmV0dXJuIDE7bGV0IG89dC5zdWJhcnJheSg2K3IpO2lmKDMzPT09by5sZW5ndGgmJjA9PT1vWzBdJiYobz1vLnNsaWNlKDEpKSxvLmxlbmd0aD4zMil0aHJvdyBuZXcgRXJyb3IoIlMgbGVuZ3RoIGlzIHRvbyBsb25nIik7bGV0IHM9bmV3IGYoaSk7cy5jbXAoYS5uKT49MCYmKHM9bmV3IGYoMCkpO2xldCBkPW5ldyBmKHQuc3ViYXJyYXkoNityKSk7cmV0dXJuIGQuY21wKGEubik+PTAmJihkPW5ldyBmKDApKSxlLnNldChzLnRvQXJyYXlMaWtlKFVpbnQ4QXJyYXksImJlIiwzMiksMCksZS5zZXQoZC50b0FycmF5TGlrZShVaW50OEFycmF5LCJiZSIsMzIpLDMyKSwwfSxlY2RzYVNpZ24oZSx0LHIsbixvKXtpZihvKXtjb25zdCBlPW87bz1pPT57Y29uc3QgYT1lKHQscixudWxsLG4saSksbz1hIGluc3RhbmNlb2YgVWludDhBcnJheSYmMzI9PT1hLmxlbmd0aDtpZighbyl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgaXMgdGhlIHdheSIpO3JldHVybiBuZXcgZihhKX19Y29uc3Qgcz1uZXcgZihyKTtpZihzLmNtcChhLm4pPj0wfHxzLmlzWmVybygpKXJldHVybiAxO2xldCBkO3RyeXtkPWkuc2lnbih0LHIse2Nhbm9uaWNhbDohMCxrOm8scGVyczpufSl9Y2F0Y2goYyl7cmV0dXJuIDF9cmV0dXJuIGUuc2lnbmF0dXJlLnNldChkLnIudG9BcnJheUxpa2UoVWludDhBcnJheSwiYmUiLDMyKSwwKSxlLnNpZ25hdHVyZS5zZXQoZC5zLnRvQXJyYXlMaWtlKFVpbnQ4QXJyYXksImJlIiwzMiksMzIpLGUucmVjaWQ9ZC5yZWNvdmVyeVBhcmFtLDB9LGVjZHNhVmVyaWZ5KGUsdCxyKXtjb25zdCBuPXtyOmUuc3ViYXJyYXkoMCwzMiksczplLnN1YmFycmF5KDMyLDY0KX0sbz1uZXcgZihuLnIpLHM9bmV3IGYobi5zKTtpZihvLmNtcChhLm4pPj0wfHxzLmNtcChhLm4pPj0wKXJldHVybiAxO2lmKDE9PT1zLmNtcChpLm5oKXx8by5pc1plcm8oKXx8cy5pc1plcm8oKSlyZXR1cm4gMztjb25zdCBjPWQocik7aWYobnVsbD09PWMpcmV0dXJuIDI7Y29uc3QgdT1jLmdldFB1YmxpYygpLGg9aS52ZXJpZnkodCxuLHUpO3JldHVybiBoPzA6M30sZWNkc2FSZWNvdmVyKGUsdCxyLG4pe2NvbnN0IG89e3I6dC5zbGljZSgwLDMyKSxzOnQuc2xpY2UoMzIsNjQpfSxzPW5ldyBmKG8uciksZD1uZXcgZihvLnMpO2lmKHMuY21wKGEubik+PTB8fGQuY21wKGEubik+PTApcmV0dXJuIDE7aWYocy5pc1plcm8oKXx8ZC5pc1plcm8oKSlyZXR1cm4gMjtsZXQgdTt0cnl7dT1pLnJlY292ZXJQdWJLZXkobixvLHIpfWNhdGNoKGgpe3JldHVybiAyfXJldHVybiBjKGUsdSksMH0sZWNkaChlLHQscixuLG8scyxjKXtjb25zdCB1PWQodCk7aWYobnVsbD09PXUpcmV0dXJuIDE7Y29uc3QgaD1uZXcgZihyKTtpZihoLmNtcChhLm4pPj0wfHxoLmlzWmVybygpKXJldHVybiAyO2NvbnN0IGw9dS5nZXRQdWJsaWMoKS5tdWwoaCk7aWYodm9pZCAwPT09byl7Y29uc3QgdD1sLmVuY29kZShudWxsLCEwKSxyPWkuaGFzaCgpLnVwZGF0ZSh0KS5kaWdlc3QoKTtmb3IobGV0IG49MDtuPDMyOysrbillW25dPXJbbl19ZWxzZXtzfHwocz1uZXcgVWludDhBcnJheSgzMikpO2NvbnN0IHQ9bC5nZXRYKCkudG9BcnJheSgiYmUiLDMyKTtmb3IobGV0IGU9MDtlPDMyOysrZSlzW2VdPXRbZV07Y3x8KGM9bmV3IFVpbnQ4QXJyYXkoMzIpKTtjb25zdCByPWwuZ2V0WSgpLnRvQXJyYXkoImJlIiwzMik7Zm9yKGxldCBlPTA7ZTwzMjsrK2UpY1tlXT1yW2VdO2NvbnN0IGk9byhzLGMsbiksYT1pIGluc3RhbmNlb2YgVWludDhBcnJheSYmaS5sZW5ndGg9PT1lLmxlbmd0aDtpZighYSlyZXR1cm4gMjtlLnNldChpKX1yZXR1cm4gMH19fSwiNGQyOCI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCI5MDU0IikuY29kZXMuRVJSX0lOVkFMSURfT1BUX1ZBTFVFO2Z1bmN0aW9uIGkoZSx0LHIpe3JldHVybiBudWxsIT1lLmhpZ2hXYXRlck1hcms/ZS5oaWdoV2F0ZXJNYXJrOnQ/ZVtyXTpudWxsfWZ1bmN0aW9uIGEoZSx0LHIsYSl7dmFyIGY9aSh0LGEscik7aWYobnVsbCE9Zil7aWYoIWlzRmluaXRlKGYpfHxNYXRoLmZsb29yKGYpIT09Znx8ZjwwKXt2YXIgbz1hP3I6ImhpZ2hXYXRlck1hcmsiO3Rocm93IG5ldyBuKG8sZil9cmV0dXJuIE1hdGguZmxvb3IoZil9cmV0dXJuIGUub2JqZWN0TW9kZT8xNjoxNjM4NH1lLmV4cG9ydHM9e2dldEhpZ2hXYXRlck1hcms6YX19LCI1M2UyIjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz1jO3ZhciBuPXIoIjkwNTQiKS5jb2RlcyxpPW4uRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsYT1uLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxmPW4uRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyxvPW4uRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wLHM9cigiODhhMiIpO2Z1bmN0aW9uIGQoZSx0KXt2YXIgcj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtyLnRyYW5zZm9ybWluZz0hMTt2YXIgbj1yLndyaXRlY2I7aWYobnVsbD09PW4pcmV0dXJuIHRoaXMuZW1pdCgiZXJyb3IiLG5ldyBhKTtyLndyaXRlY2h1bms9bnVsbCxyLndyaXRlY2I9bnVsbCxudWxsIT10JiZ0aGlzLnB1c2godCksbihlKTt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlO2kucmVhZGluZz0hMSwoaS5uZWVkUmVhZGFibGV8fGkubGVuZ3RoPGkuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoaS5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBjKGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyhlKTtzLmNhbGwodGhpcyxlKSx0aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06ZC5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsZSYmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09ZS50cmFuc2Zvcm0pLCJmdW5jdGlvbiI9PT10eXBlb2YgZS5mbHVzaCYmKHRoaXMuX2ZsdXNoPWUuZmx1c2gpKSx0aGlzLm9uKCJwcmVmaW5pc2giLHUpfWZ1bmN0aW9uIHUoKXt2YXIgZT10aGlzOyJmdW5jdGlvbiIhPT10eXBlb2YgdGhpcy5fZmx1c2h8fHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkP2godGhpcyxudWxsLG51bGwpOnRoaXMuX2ZsdXNoKChmdW5jdGlvbih0LHIpe2goZSx0LHIpfSkpfWZ1bmN0aW9uIGgoZSx0LHIpe2lmKHQpcmV0dXJuIGUuZW1pdCgiZXJyb3IiLHQpO2lmKG51bGwhPXImJmUucHVzaChyKSxlLl93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBuZXcgbztpZihlLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IGY7cmV0dXJuIGUucHVzaChudWxsKX1yKCIzZmI1IikoYyxzKSxjLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm09ITEscy5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsZSx0KX0sYy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbihlLHQscil7cihuZXcgaSgiX3RyYW5zZm9ybSgpIikpfSxjLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKG4ud3JpdGVjYj1yLG4ud3JpdGVjaHVuaz1lLG4ud3JpdGVlbmNvZGluZz10LCFuLnRyYW5zZm9ybWluZyl7dmFyIGk9dGhpcy5fcmVhZGFibGVTdGF0ZTsobi5uZWVkVHJhbnNmb3JtfHxpLm5lZWRSZWFkYWJsZXx8aS5sZW5ndGg8aS5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChpLmhpZ2hXYXRlck1hcmspfX0sYy5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbD09PXQud3JpdGVjaHVua3x8dC50cmFuc2Zvcm1pbmc/dC5uZWVkVHJhbnNmb3JtPSEwOih0LnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0odC53cml0ZWNodW5rLHQud3JpdGVlbmNvZGluZyx0LmFmdGVyVHJhbnNmb3JtKSl9LGMucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7cy5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLGUsKGZ1bmN0aW9uKGUpe3QoZSl9KSl9fSw1OTE5OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dC5zaGExPXIoIjEzZTIiKSx0LnNoYTIyND1yKCIwN2YyIiksdC5zaGEyNTY9cigiNmVlZCIpLHQuc2hhMzg0PXIoIjhiOTUiKSx0LnNoYTUxMj1yKCJiNTI1Iil9LCI2MDJjIjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0KXt2YXIgbjtmdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gdD1hKHQpLHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gYShlKXt2YXIgdD1mKGUsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09dHlwZW9mIHQ/dDpTdHJpbmcodCl9ZnVuY3Rpb24gZihlLHQpe2lmKCJvYmplY3QiIT09dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiBlO3ZhciByPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwoZSx0fHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09dHlwZW9mIG4pcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT10P1N0cmluZzpOdW1iZXIpKGUpfXZhciBvPXIoIjY1YWIiKSxzPVN5bWJvbCgibGFzdFJlc29sdmUiKSxkPVN5bWJvbCgibGFzdFJlamVjdCIpLGM9U3ltYm9sKCJlcnJvciIpLHU9U3ltYm9sKCJlbmRlZCIpLGg9U3ltYm9sKCJsYXN0UHJvbWlzZSIpLGw9U3ltYm9sKCJoYW5kbGVQcm9taXNlIiksYj1TeW1ib2woInN0cmVhbSIpO2Z1bmN0aW9uIHAoZSx0KXtyZXR1cm57dmFsdWU6ZSxkb25lOnR9fWZ1bmN0aW9uIG0oZSl7dmFyIHQ9ZVtzXTtpZihudWxsIT09dCl7dmFyIHI9ZVtiXS5yZWFkKCk7bnVsbCE9PXImJihlW2hdPW51bGwsZVtzXT1udWxsLGVbZF09bnVsbCx0KHAociwhMSkpKX19ZnVuY3Rpb24gZyhlKXt0Lm5leHRUaWNrKG0sZSl9ZnVuY3Rpb24geShlLHQpe3JldHVybiBmdW5jdGlvbihyLG4pe2UudGhlbigoZnVuY3Rpb24oKXt0W3VdP3IocCh2b2lkIDAsITApKTp0W2xdKHIsbil9KSxuKX19dmFyIHY9T2JqZWN0LmdldFByb3RvdHlwZU9mKChmdW5jdGlvbigpe30pKSx3PU9iamVjdC5zZXRQcm90b3R5cGVPZigobj17Z2V0IHN0cmVhbSgpe3JldHVybiB0aGlzW2JdfSxuZXh0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxyPXRoaXNbY107aWYobnVsbCE9PXIpcmV0dXJuIFByb21pc2UucmVqZWN0KHIpO2lmKHRoaXNbdV0pcmV0dXJuIFByb21pc2UucmVzb2x2ZShwKHZvaWQgMCwhMCkpO2lmKHRoaXNbYl0uZGVzdHJveWVkKXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixuKXt0Lm5leHRUaWNrKChmdW5jdGlvbigpe2VbY10/bihlW2NdKTpyKHAodm9pZCAwLCEwKSl9KSl9KSk7dmFyIG4saT10aGlzW2hdO2lmKGkpbj1uZXcgUHJvbWlzZSh5KGksdGhpcykpO2Vsc2V7dmFyIGE9dGhpc1tiXS5yZWFkKCk7aWYobnVsbCE9PWEpcmV0dXJuIFByb21pc2UucmVzb2x2ZShwKGEsITEpKTtuPW5ldyBQcm9taXNlKHRoaXNbbF0pfXJldHVybiB0aGlzW2hdPW4sbn19LGkobixTeW1ib2wuYXN5bmNJdGVyYXRvciwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxpKG4sInJldHVybiIsKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7ZVtiXS5kZXN0cm95KG51bGwsKGZ1bmN0aW9uKGUpe2U/cihlKTp0KHAodm9pZCAwLCEwKSl9KSl9KSl9KSksbiksdiksXz1mdW5jdGlvbihlKXt2YXIgdCxyPU9iamVjdC5jcmVhdGUodywodD17fSxpKHQsYix7dmFsdWU6ZSx3cml0YWJsZTohMH0pLGkodCxzLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksaSh0LGQse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxpKHQsYyx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLGkodCx1LHt2YWx1ZTplLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsd3JpdGFibGU6ITB9KSxpKHQsbCx7dmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1yW2JdLnJlYWQoKTtuPyhyW2hdPW51bGwscltzXT1udWxsLHJbZF09bnVsbCxlKHAobiwhMSkpKToocltzXT1lLHJbZF09dCl9LHdyaXRhYmxlOiEwfSksdCkpO3JldHVybiByW2hdPW51bGwsbyhlLChmdW5jdGlvbihlKXtpZihlJiYiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UiIT09ZS5jb2RlKXt2YXIgdD1yW2RdO3JldHVybiBudWxsIT09dCYmKHJbaF09bnVsbCxyW3NdPW51bGwscltkXT1udWxsLHQoZSkpLHZvaWQocltjXT1lKX12YXIgbj1yW3NdO251bGwhPT1uJiYocltoXT1udWxsLHJbc109bnVsbCxyW2RdPW51bGwsbihwKHZvaWQgMCwhMCkpKSxyW3VdPSEwfSkpLGUub24oInJlYWRhYmxlIixnLmJpbmQobnVsbCxyKSkscn07ZS5leHBvcnRzPV99KS5jYWxsKHRoaXMscigiNDM2MiIpKX0sIjYyZTQiOmZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLndlYnBhY2tQb2x5ZmlsbHx8KGUuZGVwcmVjYXRlPWZ1bmN0aW9uKCl7fSxlLnBhdGhzPVtdLGUuY2hpbGRyZW58fChlLmNoaWxkcmVuPVtdKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwibG9hZGVkIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5sfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJpZCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuaX19KSxlLndlYnBhY2tQb2x5ZmlsbD0xKSxlfX0sIjY1YWIiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigiOTA1NCIpLmNvZGVzLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXQpe3Q9ITA7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjtpKyspbltpXT1hcmd1bWVudHNbaV07ZS5hcHBseSh0aGlzLG4pfX19ZnVuY3Rpb24gYSgpe31mdW5jdGlvbiBmKGUpe3JldHVybiBlLnNldEhlYWRlciYmImZ1bmN0aW9uIj09PXR5cGVvZiBlLmFib3J0fWZ1bmN0aW9uIG8oZSx0LHIpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgdClyZXR1cm4gbyhlLG51bGwsdCk7dHx8KHQ9e30pLHI9aShyfHxhKTt2YXIgcz10LnJlYWRhYmxlfHwhMSE9PXQucmVhZGFibGUmJmUucmVhZGFibGUsZD10LndyaXRhYmxlfHwhMSE9PXQud3JpdGFibGUmJmUud3JpdGFibGUsYz1mdW5jdGlvbigpe2Uud3JpdGFibGV8fGgoKX0sdT1lLl93cml0YWJsZVN0YXRlJiZlLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkLGg9ZnVuY3Rpb24oKXtkPSExLHU9ITAsc3x8ci5jYWxsKGUpfSxsPWUuX3JlYWRhYmxlU3RhdGUmJmUuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCxiPWZ1bmN0aW9uKCl7cz0hMSxsPSEwLGR8fHIuY2FsbChlKX0scD1mdW5jdGlvbih0KXtyLmNhbGwoZSx0KX0sbT1mdW5jdGlvbigpe3ZhciB0O3JldHVybiBzJiYhbD8oZS5fcmVhZGFibGVTdGF0ZSYmZS5fcmVhZGFibGVTdGF0ZS5lbmRlZHx8KHQ9bmV3IG4pLHIuY2FsbChlLHQpKTpkJiYhdT8oZS5fd3JpdGFibGVTdGF0ZSYmZS5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8KHQ9bmV3IG4pLHIuY2FsbChlLHQpKTp2b2lkIDB9LGc9ZnVuY3Rpb24oKXtlLnJlcS5vbigiZmluaXNoIixoKX07cmV0dXJuIGYoZSk/KGUub24oImNvbXBsZXRlIixoKSxlLm9uKCJhYm9ydCIsbSksZS5yZXE/ZygpOmUub24oInJlcXVlc3QiLGcpKTpkJiYhZS5fd3JpdGFibGVTdGF0ZSYmKGUub24oImVuZCIsYyksZS5vbigiY2xvc2UiLGMpKSxlLm9uKCJlbmQiLGIpLGUub24oImZpbmlzaCIsaCksITEhPT10LmVycm9yJiZlLm9uKCJlcnJvciIscCksZS5vbigiY2xvc2UiLG0pLGZ1bmN0aW9uKCl7ZS5yZW1vdmVMaXN0ZW5lcigiY29tcGxldGUiLGgpLGUucmVtb3ZlTGlzdGVuZXIoImFib3J0IixtKSxlLnJlbW92ZUxpc3RlbmVyKCJyZXF1ZXN0IixnKSxlLnJlcSYmZS5yZXEucmVtb3ZlTGlzdGVuZXIoImZpbmlzaCIsaCksZS5yZW1vdmVMaXN0ZW5lcigiZW5kIixjKSxlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsYyksZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixoKSxlLnJlbW92ZUxpc3RlbmVyKCJlbmQiLGIpLGUucmVtb3ZlTGlzdGVuZXIoImVycm9yIixwKSxlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsbSl9fWUuZXhwb3J0cz1vfSwiNjc2ZiI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCI4MGFmIiksaT1yKCIzZmI1IiksYT1yKCJlYTUzIiksZj1yKCJmM2EzIik7ZnVuY3Rpb24gbyhlKXthLmNhbGwodGhpcywibW9udCIsZSksdGhpcy5hPW5ldyBuKGUuYSwxNikudG9SZWQodGhpcy5yZWQpLHRoaXMuYj1uZXcgbihlLmIsMTYpLnRvUmVkKHRoaXMucmVkKSx0aGlzLmk0PW5ldyBuKDQpLnRvUmVkKHRoaXMucmVkKS5yZWRJbnZtKCksdGhpcy50d289bmV3IG4oMikudG9SZWQodGhpcy5yZWQpLHRoaXMuYTI0PXRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKX1mdW5jdGlvbiBzKGUsdCxyKXthLkJhc2VQb2ludC5jYWxsKHRoaXMsZSwicHJvamVjdGl2ZSIpLG51bGw9PT10JiZudWxsPT09cj8odGhpcy54PXRoaXMuY3VydmUub25lLHRoaXMuej10aGlzLmN1cnZlLnplcm8pOih0aGlzLng9bmV3IG4odCwxNiksdGhpcy56PW5ldyBuKHIsMTYpLHRoaXMueC5yZWR8fCh0aGlzLng9dGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKSksdGhpcy56LnJlZHx8KHRoaXMuej10aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpKSl9aShvLGEpLGUuZXhwb3J0cz1vLG8ucHJvdG90eXBlLnZhbGlkYXRlPWZ1bmN0aW9uKGUpe3ZhciB0PWUubm9ybWFsaXplKCkueCxyPXQucmVkU3FyKCksbj1yLnJlZE11bCh0KS5yZWRBZGQoci5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHQpLGk9bi5yZWRTcXJ0KCk7cmV0dXJuIDA9PT1pLnJlZFNxcigpLmNtcChuKX0saShzLGEuQmFzZVBvaW50KSxvLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnBvaW50KGYudG9BcnJheShlLHQpLDEpfSxvLnByb3RvdHlwZS5wb2ludD1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgcyh0aGlzLGUsdCl9LG8ucHJvdG90eXBlLnBvaW50RnJvbUpTT049ZnVuY3Rpb24oZSl7cmV0dXJuIHMuZnJvbUpTT04odGhpcyxlKX0scy5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbigpe30scy5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFgoKS50b0FycmF5KCJiZSIsdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSl9LHMuZnJvbUpTT049ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IHMoZSx0WzBdLHRbMV18fGUub25lKX0scy5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzSW5maW5pdHkoKT8iPEVDIFBvaW50IEluZmluaXR5PiI6IjxFQyBQb2ludCB4OiAiK3RoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIiB6OiAiK3RoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsMikrIj4ifSxzLnByb3RvdHlwZS5pc0luZmluaXR5PWZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLnouY21wbigwKX0scy5wcm90b3R5cGUuZGJsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy54LnJlZEFkZCh0aGlzLnopLHQ9ZS5yZWRTcXIoKSxyPXRoaXMueC5yZWRTdWIodGhpcy56KSxuPXIucmVkU3FyKCksaT10LnJlZFN1YihuKSxhPXQucmVkTXVsKG4pLGY9aS5yZWRNdWwobi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGkpKSk7cmV0dXJuIHRoaXMuY3VydmUucG9pbnQoYSxmKX0scy5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0scy5wcm90b3R5cGUuZGlmZkFkZD1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMueC5yZWRBZGQodGhpcy56KSxuPXRoaXMueC5yZWRTdWIodGhpcy56KSxpPWUueC5yZWRBZGQoZS56KSxhPWUueC5yZWRTdWIoZS56KSxmPWEucmVkTXVsKHIpLG89aS5yZWRNdWwobikscz10LnoucmVkTXVsKGYucmVkQWRkKG8pLnJlZFNxcigpKSxkPXQueC5yZWRNdWwoZi5yZWRJU3ViKG8pLnJlZFNxcigpKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChzLGQpfSxzLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuY2xvbmUoKSxyPXRoaXMsbj10aGlzLmN1cnZlLnBvaW50KG51bGwsbnVsbCksaT10aGlzLGE9W107MCE9PXQuY21wbigwKTt0Lml1c2hybigxKSlhLnB1c2godC5hbmRsbigxKSk7Zm9yKHZhciBmPWEubGVuZ3RoLTE7Zj49MDtmLS0pMD09PWFbZl0/KHI9ci5kaWZmQWRkKG4saSksbj1uLmRibCgpKToobj1yLmRpZmZBZGQobixpKSxyPXIuZGJsKCkpO3JldHVybiBufSxzLnByb3RvdHlwZS5tdWxBZGQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZSIpfSxzLnByb3RvdHlwZS5qdW1sQWRkPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUiKX0scy5wcm90b3R5cGUuZXE9ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT10aGlzLmdldFgoKS5jbXAoZS5nZXRYKCkpfSxzLnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54PXRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSksdGhpcy56PXRoaXMuY3VydmUub25lLHRoaXN9LHMucHJvdG90eXBlLmdldFg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKSx0aGlzLnguZnJvbVJlZCgpfX0sIjY4YTAiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7KGZ1bmN0aW9uKHQsbil7dmFyIGk7ZS5leHBvcnRzPUksSS5SZWFkYWJsZVN0YXRlPWs7cigiZmFhMSIpLkV2ZW50RW1pdHRlcjt2YXIgYT1mdW5jdGlvbihlLHQpe3JldHVybiBlLmxpc3RlbmVycyh0KS5sZW5ndGh9LGY9cigiMDI3ZCIpLG89cigiYjYzOSIpLkJ1ZmZlcixzPSgidW5kZWZpbmVkIiE9PXR5cGVvZiB0P3Q6InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9PXR5cGVvZiBzZWxmP3NlbGY6e30pLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fTtmdW5jdGlvbiBkKGUpe3JldHVybiBvLmZyb20oZSl9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gby5pc0J1ZmZlcihlKXx8ZSBpbnN0YW5jZW9mIHN9dmFyIHUsaD1yKDIpO3U9aCYmaC5kZWJ1Z2xvZz9oLmRlYnVnbG9nKCJzdHJlYW0iKTpmdW5jdGlvbigpe307dmFyIGwsYixwLG09cigiYjcxYyIpLGc9cigiYWMwYyIpLHk9cigiNGQyOCIpLHY9eS5nZXRIaWdoV2F0ZXJNYXJrLHc9cigiOTA1NCIpLmNvZGVzLF89dy5FUlJfSU5WQUxJRF9BUkdfVFlQRSxNPXcuRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixTPXcuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsQT13LkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7cigiM2ZiNSIpKEksZik7dmFyIEU9Zy5lcnJvck9yRGVzdHJveSxSPVsiZXJyb3IiLCJjbG9zZSIsImRlc3Ryb3kiLCJwYXVzZSIsInJlc3VtZSJdO2Z1bmN0aW9uIHgoZSx0LHIpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS5wcmVwZW5kTGlzdGVuZXIpcmV0dXJuIGUucHJlcGVuZExpc3RlbmVyKHQscik7ZS5fZXZlbnRzJiZlLl9ldmVudHNbdF0/QXJyYXkuaXNBcnJheShlLl9ldmVudHNbdF0pP2UuX2V2ZW50c1t0XS51bnNoaWZ0KHIpOmUuX2V2ZW50c1t0XT1bcixlLl9ldmVudHNbdF1dOmUub24odCxyKX1mdW5jdGlvbiBrKGUsdCxuKXtpPWl8fHIoIjg4YTIiKSxlPWV8fHt9LCJib29sZWFuIiE9PXR5cGVvZiBuJiYobj10IGluc3RhbmNlb2YgaSksdGhpcy5vYmplY3RNb2RlPSEhZS5vYmplY3RNb2RlLG4mJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIWUucmVhZGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9dih0aGlzLGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIsbiksdGhpcy5idWZmZXI9bmV3IG0sdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhpcy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdENsb3NlPSExIT09ZS5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIWUuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9ZS5kZWZhdWx0RW5jb2Rpbmd8fCJ1dGY4Iix0aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCxlLmVuY29kaW5nJiYobHx8KGw9cigiN2Q3MiIpLlN0cmluZ0RlY29kZXIpLHRoaXMuZGVjb2Rlcj1uZXcgbChlLmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPWUuZW5jb2RpbmcpfWZ1bmN0aW9uIEkoZSl7aWYoaT1pfHxyKCI4OGEyIiksISh0aGlzIGluc3RhbmNlb2YgSSkpcmV0dXJuIG5ldyBJKGUpO3ZhciB0PXRoaXMgaW5zdGFuY2VvZiBpO3RoaXMuX3JlYWRhYmxlU3RhdGU9bmV3IGsoZSx0aGlzLHQpLHRoaXMucmVhZGFibGU9ITAsZSYmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS5yZWFkJiYodGhpcy5fcmVhZD1lLnJlYWQpLCJmdW5jdGlvbiI9PT10eXBlb2YgZS5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1lLmRlc3Ryb3kpKSxmLmNhbGwodGhpcyl9ZnVuY3Rpb24gUChlLHQscixuLGkpe3UoInJlYWRhYmxlQWRkQ2h1bmsiLHQpO3ZhciBhLGY9ZS5fcmVhZGFibGVTdGF0ZTtpZihudWxsPT09dClmLnJlYWRpbmc9ITEsTihlLGYpO2Vsc2UgaWYoaXx8KGE9TChmLHQpKSxhKUUoZSxhKTtlbHNlIGlmKGYub2JqZWN0TW9kZXx8dCYmdC5sZW5ndGg+MClpZigic3RyaW5nIj09PXR5cGVvZiB0fHxmLm9iamVjdE1vZGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KT09PW8ucHJvdG90eXBlfHwodD1kKHQpKSxuKWYuZW5kRW1pdHRlZD9FKGUsbmV3IEEpOlQoZSxmLHQsITApO2Vsc2UgaWYoZi5lbmRlZClFKGUsbmV3IE0pO2Vsc2V7aWYoZi5kZXN0cm95ZWQpcmV0dXJuITE7Zi5yZWFkaW5nPSExLGYuZGVjb2RlciYmIXI/KHQ9Zi5kZWNvZGVyLndyaXRlKHQpLGYub2JqZWN0TW9kZXx8MCE9PXQubGVuZ3RoP1QoZSxmLHQsITEpOmooZSxmKSk6VChlLGYsdCwhMSl9ZWxzZSBufHwoZi5yZWFkaW5nPSExLGooZSxmKSk7cmV0dXJuIWYuZW5kZWQmJihmLmxlbmd0aDxmLmhpZ2hXYXRlck1hcmt8fDA9PT1mLmxlbmd0aCl9ZnVuY3Rpb24gVChlLHQscixuKXt0LmZsb3dpbmcmJjA9PT10Lmxlbmd0aCYmIXQuc3luYz8odC5hd2FpdERyYWluPTAsZS5lbWl0KCJkYXRhIixyKSk6KHQubGVuZ3RoKz10Lm9iamVjdE1vZGU/MTpyLmxlbmd0aCxuP3QuYnVmZmVyLnVuc2hpZnQocik6dC5idWZmZXIucHVzaChyKSx0Lm5lZWRSZWFkYWJsZSYmQyhlKSksaihlLHQpfWZ1bmN0aW9uIEwoZSx0KXt2YXIgcjtyZXR1cm4gYyh0KXx8InN0cmluZyI9PT10eXBlb2YgdHx8dm9pZCAwPT09dHx8ZS5vYmplY3RNb2RlfHwocj1uZXcgXygiY2h1bmsiLFsic3RyaW5nIiwiQnVmZmVyIiwiVWludDhBcnJheSJdLHQpKSxyfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShJLnByb3RvdHlwZSwiZGVzdHJveWVkIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ZSl9fSksSS5wcm90b3R5cGUuZGVzdHJveT1nLmRlc3Ryb3ksSS5wcm90b3R5cGUuX3VuZGVzdHJveT1nLnVuZGVzdHJveSxJLnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbihlLHQpe3QoZSl9LEkucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIG4ub2JqZWN0TW9kZT9yPSEwOiJzdHJpbmciPT09dHlwZW9mIGUmJih0PXR8fG4uZGVmYXVsdEVuY29kaW5nLHQhPT1uLmVuY29kaW5nJiYoZT1vLmZyb20oZSx0KSx0PSIiKSxyPSEwKSxQKHRoaXMsZSx0LCExLHIpfSxJLnByb3RvdHlwZS51bnNoaWZ0PWZ1bmN0aW9uKGUpe3JldHVybiBQKHRoaXMsZSxudWxsLCEwLCExKX0sSS5wcm90b3R5cGUuaXNQYXVzZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZ30sSS5wcm90b3R5cGUuc2V0RW5jb2Rpbmc9ZnVuY3Rpb24oZSl7bHx8KGw9cigiN2Q3MiIpLlN0cmluZ0RlY29kZXIpO3ZhciB0PW5ldyBsKGUpO3RoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlcj10LHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2Rpbmc9dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyLmVuY29kaW5nO3ZhciBuPXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQsaT0iIjt3aGlsZShudWxsIT09bilpKz10LndyaXRlKG4uZGF0YSksbj1uLm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksIiIhPT1pJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5wdXNoKGkpLHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoPWkubGVuZ3RoLHRoaXN9O3ZhciBPPTEwNzM3NDE4MjQ7ZnVuY3Rpb24gQihlKXtyZXR1cm4gZT49Tz9lPU86KGUtLSxlfD1lPj4+MSxlfD1lPj4+MixlfD1lPj4+NCxlfD1lPj4+OCxlfD1lPj4+MTYsZSsrKSxlfWZ1bmN0aW9uIHooZSx0KXtyZXR1cm4gZTw9MHx8MD09PXQubGVuZ3RoJiZ0LmVuZGVkPzA6dC5vYmplY3RNb2RlPzE6ZSE9PWU/dC5mbG93aW5nJiZ0Lmxlbmd0aD90LmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOnQubGVuZ3RoOihlPnQuaGlnaFdhdGVyTWFyayYmKHQuaGlnaFdhdGVyTWFyaz1CKGUpKSxlPD10Lmxlbmd0aD9lOnQuZW5kZWQ/dC5sZW5ndGg6KHQubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiBOKGUsdCl7aWYodSgib25Fb2ZDaHVuayIpLCF0LmVuZGVkKXtpZih0LmRlY29kZXIpe3ZhciByPXQuZGVjb2Rlci5lbmQoKTtyJiZyLmxlbmd0aCYmKHQuYnVmZmVyLnB1c2gociksdC5sZW5ndGgrPXQub2JqZWN0TW9kZT8xOnIubGVuZ3RoKX10LmVuZGVkPSEwLHQuc3luYz9DKGUpOih0Lm5lZWRSZWFkYWJsZT0hMSx0LmVtaXR0ZWRSZWFkYWJsZXx8KHQuZW1pdHRlZFJlYWRhYmxlPSEwLHEoZSkpKX19ZnVuY3Rpb24gQyhlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO3UoImVtaXRSZWFkYWJsZSIsdC5uZWVkUmVhZGFibGUsdC5lbWl0dGVkUmVhZGFibGUpLHQubmVlZFJlYWRhYmxlPSExLHQuZW1pdHRlZFJlYWRhYmxlfHwodSgiZW1pdFJlYWRhYmxlIix0LmZsb3dpbmcpLHQuZW1pdHRlZFJlYWRhYmxlPSEwLG4ubmV4dFRpY2socSxlKSl9ZnVuY3Rpb24gcShlKXt2YXIgdD1lLl9yZWFkYWJsZVN0YXRlO3UoImVtaXRSZWFkYWJsZV8iLHQuZGVzdHJveWVkLHQubGVuZ3RoLHQuZW5kZWQpLHQuZGVzdHJveWVkfHwhdC5sZW5ndGgmJiF0LmVuZGVkfHwoZS5lbWl0KCJyZWFkYWJsZSIpLHQuZW1pdHRlZFJlYWRhYmxlPSExKSx0Lm5lZWRSZWFkYWJsZT0hdC5mbG93aW5nJiYhdC5lbmRlZCYmdC5sZW5ndGg8PXQuaGlnaFdhdGVyTWFyayxIKGUpfWZ1bmN0aW9uIGooZSx0KXt0LnJlYWRpbmdNb3JlfHwodC5yZWFkaW5nTW9yZT0hMCxuLm5leHRUaWNrKFUsZSx0KSl9ZnVuY3Rpb24gVShlLHQpe3doaWxlKCF0LnJlYWRpbmcmJiF0LmVuZGVkJiYodC5sZW5ndGg8dC5oaWdoV2F0ZXJNYXJrfHx0LmZsb3dpbmcmJjA9PT10Lmxlbmd0aCkpe3ZhciByPXQubGVuZ3RoO2lmKHUoIm1heWJlUmVhZE1vcmUgcmVhZCAwIiksZS5yZWFkKDApLHI9PT10Lmxlbmd0aClicmVha310LnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIEQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9ZS5fcmVhZGFibGVTdGF0ZTt1KCJwaXBlT25EcmFpbiIsdC5hd2FpdERyYWluKSx0LmF3YWl0RHJhaW4mJnQuYXdhaXREcmFpbi0tLDA9PT10LmF3YWl0RHJhaW4mJmEoZSwiZGF0YSIpJiYodC5mbG93aW5nPSEwLEgoZSkpfX1mdW5jdGlvbiBLKGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7dC5yZWFkYWJsZUxpc3RlbmluZz1lLmxpc3RlbmVyQ291bnQoInJlYWRhYmxlIik+MCx0LnJlc3VtZVNjaGVkdWxlZCYmIXQucGF1c2VkP3QuZmxvd2luZz0hMDplLmxpc3RlbmVyQ291bnQoImRhdGEiKT4wJiZlLnJlc3VtZSgpfWZ1bmN0aW9uIEYoZSl7dSgicmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwIiksZS5yZWFkKDApfWZ1bmN0aW9uIFkoZSx0KXt0LnJlc3VtZVNjaGVkdWxlZHx8KHQucmVzdW1lU2NoZWR1bGVkPSEwLG4ubmV4dFRpY2soVyxlLHQpKX1mdW5jdGlvbiBXKGUsdCl7dSgicmVzdW1lIix0LnJlYWRpbmcpLHQucmVhZGluZ3x8ZS5yZWFkKDApLHQucmVzdW1lU2NoZWR1bGVkPSExLGUuZW1pdCgicmVzdW1lIiksSChlKSx0LmZsb3dpbmcmJiF0LnJlYWRpbmcmJmUucmVhZCgwKX1mdW5jdGlvbiBIKGUpe3ZhciB0PWUuX3JlYWRhYmxlU3RhdGU7dSgiZmxvdyIsdC5mbG93aW5nKTt3aGlsZSh0LmZsb3dpbmcmJm51bGwhPT1lLnJlYWQoKSk7fWZ1bmN0aW9uIFYoZSx0KXtyZXR1cm4gMD09PXQubGVuZ3RoP251bGw6KHQub2JqZWN0TW9kZT9yPXQuYnVmZmVyLnNoaWZ0KCk6IWV8fGU+PXQubGVuZ3RoPyhyPXQuZGVjb2Rlcj90LmJ1ZmZlci5qb2luKCIiKToxPT09dC5idWZmZXIubGVuZ3RoP3QuYnVmZmVyLmZpcnN0KCk6dC5idWZmZXIuY29uY2F0KHQubGVuZ3RoKSx0LmJ1ZmZlci5jbGVhcigpKTpyPXQuYnVmZmVyLmNvbnN1bWUoZSx0LmRlY29kZXIpLHIpO3ZhciByfWZ1bmN0aW9uIFooZSl7dmFyIHQ9ZS5fcmVhZGFibGVTdGF0ZTt1KCJlbmRSZWFkYWJsZSIsdC5lbmRFbWl0dGVkKSx0LmVuZEVtaXR0ZWR8fCh0LmVuZGVkPSEwLG4ubmV4dFRpY2soSix0LGUpKX1mdW5jdGlvbiBKKGUsdCl7aWYodSgiZW5kUmVhZGFibGVOVCIsZS5lbmRFbWl0dGVkLGUubGVuZ3RoKSwhZS5lbmRFbWl0dGVkJiYwPT09ZS5sZW5ndGgmJihlLmVuZEVtaXR0ZWQ9ITAsdC5yZWFkYWJsZT0hMSx0LmVtaXQoImVuZCIpLGUuYXV0b0Rlc3Ryb3kpKXt2YXIgcj10Ll93cml0YWJsZVN0YXRlOyghcnx8ci5hdXRvRGVzdHJveSYmci5maW5pc2hlZCkmJnQuZGVzdHJveSgpfX1mdW5jdGlvbiBYKGUsdCl7Zm9yKHZhciByPTAsbj1lLmxlbmd0aDtyPG47cisrKWlmKGVbcl09PT10KXJldHVybiByO3JldHVybi0xfUkucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oZSl7dSgicmVhZCIsZSksZT1wYXJzZUludChlLDEwKTt2YXIgdD10aGlzLl9yZWFkYWJsZVN0YXRlLHI9ZTtpZigwIT09ZSYmKHQuZW1pdHRlZFJlYWRhYmxlPSExKSwwPT09ZSYmdC5uZWVkUmVhZGFibGUmJigoMCE9PXQuaGlnaFdhdGVyTWFyaz90Lmxlbmd0aD49dC5oaWdoV2F0ZXJNYXJrOnQubGVuZ3RoPjApfHx0LmVuZGVkKSlyZXR1cm4gdSgicmVhZDogZW1pdFJlYWRhYmxlIix0Lmxlbmd0aCx0LmVuZGVkKSwwPT09dC5sZW5ndGgmJnQuZW5kZWQ/Wih0aGlzKTpDKHRoaXMpLG51bGw7aWYoZT16KGUsdCksMD09PWUmJnQuZW5kZWQpcmV0dXJuIDA9PT10Lmxlbmd0aCYmWih0aGlzKSxudWxsO3ZhciBuLGk9dC5uZWVkUmVhZGFibGU7cmV0dXJuIHUoIm5lZWQgcmVhZGFibGUiLGkpLCgwPT09dC5sZW5ndGh8fHQubGVuZ3RoLWU8dC5oaWdoV2F0ZXJNYXJrKSYmKGk9ITAsdSgibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsiLGkpKSx0LmVuZGVkfHx0LnJlYWRpbmc/KGk9ITEsdSgicmVhZGluZyBvciBlbmRlZCIsaSkpOmkmJih1KCJkbyByZWFkIiksdC5yZWFkaW5nPSEwLHQuc3luYz0hMCwwPT09dC5sZW5ndGgmJih0Lm5lZWRSZWFkYWJsZT0hMCksdGhpcy5fcmVhZCh0LmhpZ2hXYXRlck1hcmspLHQuc3luYz0hMSx0LnJlYWRpbmd8fChlPXoocix0KSkpLG49ZT4wP1YoZSx0KTpudWxsLG51bGw9PT1uPyh0Lm5lZWRSZWFkYWJsZT10Lmxlbmd0aDw9dC5oaWdoV2F0ZXJNYXJrLGU9MCk6KHQubGVuZ3RoLT1lLHQuYXdhaXREcmFpbj0wKSwwPT09dC5sZW5ndGgmJih0LmVuZGVkfHwodC5uZWVkUmVhZGFibGU9ITApLHIhPT1lJiZ0LmVuZGVkJiZaKHRoaXMpKSxudWxsIT09biYmdGhpcy5lbWl0KCJkYXRhIixuKSxufSxJLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbihlKXtFKHRoaXMsbmV3IFMoIl9yZWFkKCkiKSl9LEkucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLGk9dGhpcy5fcmVhZGFibGVTdGF0ZTtzd2l0Y2goaS5waXBlc0NvdW50KXtjYXNlIDA6aS5waXBlcz1lO2JyZWFrO2Nhc2UgMTppLnBpcGVzPVtpLnBpcGVzLGVdO2JyZWFrO2RlZmF1bHQ6aS5waXBlcy5wdXNoKGUpO2JyZWFrfWkucGlwZXNDb3VudCs9MSx1KCJwaXBlIGNvdW50PSVkIG9wdHM9JWoiLGkucGlwZXNDb3VudCx0KTt2YXIgZj0oIXR8fCExIT09dC5lbmQpJiZlIT09bi5zdGRvdXQmJmUhPT1uLnN0ZGVycixvPWY/ZDp5O2Z1bmN0aW9uIHMoZSx0KXt1KCJvbnVucGlwZSIpLGU9PT1yJiZ0JiYhMT09PXQuaGFzVW5waXBlZCYmKHQuaGFzVW5waXBlZD0hMCxsKCkpfWZ1bmN0aW9uIGQoKXt1KCJvbmVuZCIpLGUuZW5kKCl9aS5lbmRFbWl0dGVkP24ubmV4dFRpY2sobyk6ci5vbmNlKCJlbmQiLG8pLGUub24oInVucGlwZSIscyk7dmFyIGM9RChyKTtlLm9uKCJkcmFpbiIsYyk7dmFyIGg9ITE7ZnVuY3Rpb24gbCgpe3UoImNsZWFudXAiKSxlLnJlbW92ZUxpc3RlbmVyKCJjbG9zZSIsbSksZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixnKSxlLnJlbW92ZUxpc3RlbmVyKCJkcmFpbiIsYyksZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLHApLGUucmVtb3ZlTGlzdGVuZXIoInVucGlwZSIscyksci5yZW1vdmVMaXN0ZW5lcigiZW5kIixkKSxyLnJlbW92ZUxpc3RlbmVyKCJlbmQiLHkpLHIucmVtb3ZlTGlzdGVuZXIoImRhdGEiLGIpLGg9ITAsIWkuYXdhaXREcmFpbnx8ZS5fd3JpdGFibGVTdGF0ZSYmIWUuX3dyaXRhYmxlU3RhdGUubmVlZERyYWlufHxjKCl9ZnVuY3Rpb24gYih0KXt1KCJvbmRhdGEiKTt2YXIgbj1lLndyaXRlKHQpO3UoImRlc3Qud3JpdGUiLG4pLCExPT09biYmKCgxPT09aS5waXBlc0NvdW50JiZpLnBpcGVzPT09ZXx8aS5waXBlc0NvdW50PjEmJi0xIT09WChpLnBpcGVzLGUpKSYmIWgmJih1KCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UiLGkuYXdhaXREcmFpbiksaS5hd2FpdERyYWluKyspLHIucGF1c2UoKSl9ZnVuY3Rpb24gcCh0KXt1KCJvbmVycm9yIix0KSx5KCksZS5yZW1vdmVMaXN0ZW5lcigiZXJyb3IiLHApLDA9PT1hKGUsImVycm9yIikmJkUoZSx0KX1mdW5jdGlvbiBtKCl7ZS5yZW1vdmVMaXN0ZW5lcigiZmluaXNoIixnKSx5KCl9ZnVuY3Rpb24gZygpe3UoIm9uZmluaXNoIiksZS5yZW1vdmVMaXN0ZW5lcigiY2xvc2UiLG0pLHkoKX1mdW5jdGlvbiB5KCl7dSgidW5waXBlIiksci51bnBpcGUoZSl9cmV0dXJuIHIub24oImRhdGEiLGIpLHgoZSwiZXJyb3IiLHApLGUub25jZSgiY2xvc2UiLG0pLGUub25jZSgiZmluaXNoIixnKSxlLmVtaXQoInBpcGUiLHIpLGkuZmxvd2luZ3x8KHUoInBpcGUgcmVzdW1lIiksci5yZXN1bWUoKSksZX0sSS5wcm90b3R5cGUudW5waXBlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlYWRhYmxlU3RhdGUscj17aGFzVW5waXBlZDohMX07aWYoMD09PXQucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigxPT09dC5waXBlc0NvdW50KXJldHVybiBlJiZlIT09dC5waXBlc3x8KGV8fChlPXQucGlwZXMpLHQucGlwZXM9bnVsbCx0LnBpcGVzQ291bnQ9MCx0LmZsb3dpbmc9ITEsZSYmZS5lbWl0KCJ1bnBpcGUiLHRoaXMscikpLHRoaXM7aWYoIWUpe3ZhciBuPXQucGlwZXMsaT10LnBpcGVzQ291bnQ7dC5waXBlcz1udWxsLHQucGlwZXNDb3VudD0wLHQuZmxvd2luZz0hMTtmb3IodmFyIGE9MDthPGk7YSsrKW5bYV0uZW1pdCgidW5waXBlIix0aGlzLHtoYXNVbnBpcGVkOiExfSk7cmV0dXJuIHRoaXN9dmFyIGY9WCh0LnBpcGVzLGUpO3JldHVybi0xPT09Znx8KHQucGlwZXMuc3BsaWNlKGYsMSksdC5waXBlc0NvdW50LT0xLDE9PT10LnBpcGVzQ291bnQmJih0LnBpcGVzPXQucGlwZXNbMF0pLGUuZW1pdCgidW5waXBlIix0aGlzLHIpKSx0aGlzfSxJLnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQpe3ZhciByPWYucHJvdG90eXBlLm9uLmNhbGwodGhpcyxlLHQpLGk9dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4iZGF0YSI9PT1lPyhpLnJlYWRhYmxlTGlzdGVuaW5nPXRoaXMubGlzdGVuZXJDb3VudCgicmVhZGFibGUiKT4wLCExIT09aS5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKToicmVhZGFibGUiPT09ZSYmKGkuZW5kRW1pdHRlZHx8aS5yZWFkYWJsZUxpc3RlbmluZ3x8KGkucmVhZGFibGVMaXN0ZW5pbmc9aS5uZWVkUmVhZGFibGU9ITAsaS5mbG93aW5nPSExLGkuZW1pdHRlZFJlYWRhYmxlPSExLHUoIm9uIHJlYWRhYmxlIixpLmxlbmd0aCxpLnJlYWRpbmcpLGkubGVuZ3RoP0ModGhpcyk6aS5yZWFkaW5nfHxuLm5leHRUaWNrKEYsdGhpcykpKSxyfSxJLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1JLnByb3RvdHlwZS5vbixJLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciByPWYucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcyxlLHQpO3JldHVybiJyZWFkYWJsZSI9PT1lJiZuLm5leHRUaWNrKEssdGhpcykscn0sSS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3ZhciB0PWYucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuInJlYWRhYmxlIiE9PWUmJnZvaWQgMCE9PWV8fG4ubmV4dFRpY2soSyx0aGlzKSx0fSxJLnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBlLmZsb3dpbmd8fCh1KCJyZXN1bWUiKSxlLmZsb3dpbmc9IWUucmVhZGFibGVMaXN0ZW5pbmcsWSh0aGlzLGUpKSxlLnBhdXNlZD0hMSx0aGlzfSxJLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiB1KCJjYWxsIHBhdXNlIGZsb3dpbmc9JWoiLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyksITEhPT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcmJih1KCJwYXVzZSIpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoInBhdXNlIikpLHRoaXMuX3JlYWRhYmxlU3RhdGUucGF1c2VkPSEwLHRoaXN9LEkucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPXRoaXMuX3JlYWRhYmxlU3RhdGUsbj0hMTtmb3IodmFyIGkgaW4gZS5vbigiZW5kIiwoZnVuY3Rpb24oKXtpZih1KCJ3cmFwcGVkIGVuZCIpLHIuZGVjb2RlciYmIXIuZW5kZWQpe3ZhciBlPXIuZGVjb2Rlci5lbmQoKTtlJiZlLmxlbmd0aCYmdC5wdXNoKGUpfXQucHVzaChudWxsKX0pKSxlLm9uKCJkYXRhIiwoZnVuY3Rpb24oaSl7aWYodSgid3JhcHBlZCBkYXRhIiksci5kZWNvZGVyJiYoaT1yLmRlY29kZXIud3JpdGUoaSkpLCghci5vYmplY3RNb2RlfHxudWxsIT09aSYmdm9pZCAwIT09aSkmJihyLm9iamVjdE1vZGV8fGkmJmkubGVuZ3RoKSl7dmFyIGE9dC5wdXNoKGkpO2F8fChuPSEwLGUucGF1c2UoKSl9fSkpLGUpdm9pZCAwPT09dGhpc1tpXSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlW2ldJiYodGhpc1tpXT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZVt0XS5hcHBseShlLGFyZ3VtZW50cyl9fShpKSk7Zm9yKHZhciBhPTA7YTxSLmxlbmd0aDthKyspZS5vbihSW2FdLHRoaXMuZW1pdC5iaW5kKHRoaXMsUlthXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKHQpe3UoIndyYXBwZWQgX3JlYWQiLHQpLG4mJihuPSExLGUucmVzdW1lKCkpfSx0aGlzfSwiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmKEkucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1iJiYoYj1yKCI2MDJjIikpLGIodGhpcyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSS5wcm90b3R5cGUsInJlYWRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoSS5wcm90b3R5cGUsInJlYWRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KEkucHJvdG90eXBlLCJyZWFkYWJsZUZsb3dpbmciLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPWUpfX0pLEkuX2Zyb21MaXN0PVYsT2JqZWN0LmRlZmluZVByb3BlcnR5KEkucHJvdG90eXBlLCJyZWFkYWJsZUxlbmd0aCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RofX0pLCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYoSS5mcm9tPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXAmJihwPXIoImQyYjIiKSkscChJLGUsdCl9KX0pLmNhbGwodGhpcyxyKCJjOGJhIikscigiNDM2MiIpKX0sNjk4MzpmdW5jdGlvbihlLHQscil7ZS5leHBvcnRzPXIoImM5OGMiKShyKCIyNDE2IikpfSwiNmFhMiI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCI3ZDkyIiksaT1yKCI3NjU4IiksYT1yKCJkYTNlIik7ZnVuY3Rpb24gZihlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBmKSlyZXR1cm4gbmV3IGYoZSk7dGhpcy5oYXNoPWUuaGFzaCx0aGlzLnByZWRSZXNpc3Q9ISFlLnByZWRSZXNpc3QsdGhpcy5vdXRMZW49dGhpcy5oYXNoLm91dFNpemUsdGhpcy5taW5FbnRyb3B5PWUubWluRW50cm9weXx8dGhpcy5oYXNoLmhtYWNTdHJlbmd0aCx0aGlzLl9yZXNlZWQ9bnVsbCx0aGlzLnJlc2VlZEludGVydmFsPW51bGwsdGhpcy5LPW51bGwsdGhpcy5WPW51bGw7dmFyIHQ9aS50b0FycmF5KGUuZW50cm9weSxlLmVudHJvcHlFbmN8fCJoZXgiKSxyPWkudG9BcnJheShlLm5vbmNlLGUubm9uY2VFbmN8fCJoZXgiKSxuPWkudG9BcnJheShlLnBlcnMsZS5wZXJzRW5jfHwiaGV4Iik7YSh0Lmxlbmd0aD49dGhpcy5taW5FbnRyb3B5LzgsIk5vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogIit0aGlzLm1pbkVudHJvcHkrIiBiaXRzIiksdGhpcy5faW5pdCh0LHIsbil9ZS5leHBvcnRzPWYsZi5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUuY29uY2F0KHQpLmNvbmNhdChyKTt0aGlzLks9bmV3IEFycmF5KHRoaXMub3V0TGVuLzgpLHRoaXMuVj1uZXcgQXJyYXkodGhpcy5vdXRMZW4vOCk7Zm9yKHZhciBpPTA7aTx0aGlzLlYubGVuZ3RoO2krKyl0aGlzLktbaV09MCx0aGlzLlZbaV09MTt0aGlzLl91cGRhdGUobiksdGhpcy5fcmVzZWVkPTEsdGhpcy5yZXNlZWRJbnRlcnZhbD0yODE0NzQ5NzY3MTA2NTZ9LGYucHJvdG90eXBlLl9obWFjPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuLmhtYWModGhpcy5oYXNoLHRoaXMuSyl9LGYucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMF0pO2UmJih0PXQudXBkYXRlKGUpKSx0aGlzLks9dC5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLGUmJih0aGlzLks9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLnVwZGF0ZShbMV0pLnVwZGF0ZShlKS5kaWdlc3QoKSx0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpKX0sZi5wcm90b3R5cGUucmVzZWVkPWZ1bmN0aW9uKGUsdCxyLG4peyJzdHJpbmciIT09dHlwZW9mIHQmJihuPXIscj10LHQ9bnVsbCksZT1pLnRvQXJyYXkoZSx0KSxyPWkudG9BcnJheShyLG4pLGEoZS5sZW5ndGg+PXRoaXMubWluRW50cm9weS84LCJOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICIrdGhpcy5taW5FbnRyb3B5KyIgYml0cyIpLHRoaXMuX3VwZGF0ZShlLmNvbmNhdChyfHxbXSkpLHRoaXMuX3Jlc2VlZD0xfSxmLnByb3RvdHlwZS5nZW5lcmF0ZT1mdW5jdGlvbihlLHQscixuKXtpZih0aGlzLl9yZXNlZWQ+dGhpcy5yZXNlZWRJbnRlcnZhbCl0aHJvdyBuZXcgRXJyb3IoIlJlc2VlZCBpcyByZXF1aXJlZCIpOyJzdHJpbmciIT09dHlwZW9mIHQmJihuPXIscj10LHQ9bnVsbCksciYmKHI9aS50b0FycmF5KHIsbnx8ImhleCIpLHRoaXMuX3VwZGF0ZShyKSk7dmFyIGE9W107d2hpbGUoYS5sZW5ndGg8ZSl0aGlzLlY9dGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpLGE9YS5jb25jYXQodGhpcy5WKTt2YXIgZj1hLnNsaWNlKDAsZSk7cmV0dXJuIHRoaXMuX3VwZGF0ZShyKSx0aGlzLl9yZXNlZWQrKyxpLmVuY29kZShmLHQpfX0sIjZlZWQiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigiYzNjMCIpLGk9cigiZWRjOSIpLGE9cigiYWE1NiIpLGY9cigiZGEzZSIpLG89bi5zdW0zMixzPW4uc3VtMzJfNCxkPW4uc3VtMzJfNSxjPWEuY2gzMix1PWEubWFqMzIsaD1hLnMwXzI1NixsPWEuczFfMjU2LGI9YS5nMF8yNTYscD1hLmcxXzI1NixtPWkuQmxvY2tIYXNoLGc9WzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF07ZnVuY3Rpb24geSgpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHkpKXJldHVybiBuZXcgeTttLmNhbGwodGhpcyksdGhpcy5oPVsxNzc5MDMzNzAzLDMxNDQxMzQyNzcsMTAxMzkwNDI0MiwyNzczNDgwNzYyLDEzNTk4OTMxMTksMjYwMDgyMjkyNCw1Mjg3MzQ2MzUsMTU0MTQ1OTIyNV0sdGhpcy5rPWcsdGhpcy5XPW5ldyBBcnJheSg2NCl9bi5pbmhlcml0cyh5LG0pLGUuZXhwb3J0cz15LHkuYmxvY2tTaXplPTUxMix5Lm91dFNpemU9MjU2LHkuaG1hY1N0cmVuZ3RoPTE5Mix5LnBhZExlbmd0aD02NCx5LnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMuVyxuPTA7bjwxNjtuKyspcltuXT1lW3Qrbl07Zm9yKDtuPHIubGVuZ3RoO24rKylyW25dPXMocChyW24tMl0pLHJbbi03XSxiKHJbbi0xNV0pLHJbbi0xNl0pO3ZhciBpPXRoaXMuaFswXSxhPXRoaXMuaFsxXSxtPXRoaXMuaFsyXSxnPXRoaXMuaFszXSx5PXRoaXMuaFs0XSx2PXRoaXMuaFs1XSx3PXRoaXMuaFs2XSxfPXRoaXMuaFs3XTtmb3IoZih0aGlzLmsubGVuZ3RoPT09ci5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIE09ZChfLGwoeSksYyh5LHYsdyksdGhpcy5rW25dLHJbbl0pLFM9byhoKGkpLHUoaSxhLG0pKTtfPXcsdz12LHY9eSx5PW8oZyxNKSxnPW0sbT1hLGE9aSxpPW8oTSxTKX10aGlzLmhbMF09byh0aGlzLmhbMF0saSksdGhpcy5oWzFdPW8odGhpcy5oWzFdLGEpLHRoaXMuaFsyXT1vKHRoaXMuaFsyXSxtKSx0aGlzLmhbM109byh0aGlzLmhbM10sZyksdGhpcy5oWzRdPW8odGhpcy5oWzRdLHkpLHRoaXMuaFs1XT1vKHRoaXMuaFs1XSx2KSx0aGlzLmhbNl09byh0aGlzLmhbNl0sdyksdGhpcy5oWzddPW8odGhpcy5oWzddLF8pfSx5LnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKGUpe3JldHVybiJoZXgiPT09ZT9uLnRvSGV4MzIodGhpcy5oLCJiaWciKTpuLnNwbGl0MzIodGhpcy5oLCJiaWciKX19LCI2ZmRlIjpmdW5jdGlvbihlLHQpe2NvbnN0IHI9WzEsMCwzMjg5OCwwLDMyOTA2LDIxNDc0ODM2NDgsMjE0NzUxNjQxNiwyMTQ3NDgzNjQ4LDMyOTA3LDAsMjE0NzQ4MzY0OSwwLDIxNDc1MTY1NDUsMjE0NzQ4MzY0OCwzMjc3NywyMTQ3NDgzNjQ4LDEzOCwwLDEzNiwwLDIxNDc1MTY0MjUsMCwyMTQ3NDgzNjU4LDAsMjE0NzUxNjU1NSwwLDEzOSwyMTQ3NDgzNjQ4LDMyOTA1LDIxNDc0ODM2NDgsMzI3NzEsMjE0NzQ4MzY0OCwzMjc3MCwyMTQ3NDgzNjQ4LDEyOCwyMTQ3NDgzNjQ4LDMyNzc4LDAsMjE0NzQ4MzY1OCwyMTQ3NDgzNjQ4LDIxNDc1MTY1NDUsMjE0NzQ4MzY0OCwzMjg5NiwyMTQ3NDgzNjQ4LDIxNDc0ODM2NDksMCwyMTQ3NTE2NDI0LDIxNDc0ODM2NDhdO3QucDE2MDA9ZnVuY3Rpb24oZSl7Zm9yKGxldCB0PTA7dDwyNDsrK3Qpe2NvbnN0IG49ZVswXV5lWzEwXV5lWzIwXV5lWzMwXV5lWzQwXSxpPWVbMV1eZVsxMV1eZVsyMV1eZVszMV1eZVs0MV0sYT1lWzJdXmVbMTJdXmVbMjJdXmVbMzJdXmVbNDJdLGY9ZVszXV5lWzEzXV5lWzIzXV5lWzMzXV5lWzQzXSxvPWVbNF1eZVsxNF1eZVsyNF1eZVszNF1eZVs0NF0scz1lWzVdXmVbMTVdXmVbMjVdXmVbMzVdXmVbNDVdLGQ9ZVs2XV5lWzE2XV5lWzI2XV5lWzM2XV5lWzQ2XSxjPWVbN11eZVsxN11eZVsyN11eZVszN11eZVs0N10sdT1lWzhdXmVbMThdXmVbMjhdXmVbMzhdXmVbNDhdLGg9ZVs5XV5lWzE5XV5lWzI5XV5lWzM5XV5lWzQ5XTtsZXQgbD11XihhPDwxfGY+Pj4zMSksYj1oXihmPDwxfGE+Pj4zMSk7Y29uc3QgcD1lWzBdXmwsbT1lWzFdXmIsZz1lWzEwXV5sLHk9ZVsxMV1eYix2PWVbMjBdXmwsdz1lWzIxXV5iLF89ZVszMF1ebCxNPWVbMzFdXmIsUz1lWzQwXV5sLEE9ZVs0MV1eYjtsPW5eKG88PDF8cz4+PjMxKSxiPWleKHM8PDF8bz4+PjMxKTtjb25zdCBFPWVbMl1ebCxSPWVbM11eYix4PWVbMTJdXmwsaz1lWzEzXV5iLEk9ZVsyMl1ebCxQPWVbMjNdXmIsVD1lWzMyXV5sLEw9ZVszM11eYixPPWVbNDJdXmwsQj1lWzQzXV5iO2w9YV4oZDw8MXxjPj4+MzEpLGI9Zl4oYzw8MXxkPj4+MzEpO2NvbnN0IHo9ZVs0XV5sLE49ZVs1XV5iLEM9ZVsxNF1ebCxxPWVbMTVdXmIsaj1lWzI0XV5sLFU9ZVsyNV1eYixEPWVbMzRdXmwsSz1lWzM1XV5iLEY9ZVs0NF1ebCxZPWVbNDVdXmI7bD1vXih1PDwxfGg+Pj4zMSksYj1zXihoPDwxfHU+Pj4zMSk7Y29uc3QgVz1lWzZdXmwsSD1lWzddXmIsVj1lWzE2XV5sLFo9ZVsxN11eYixKPWVbMjZdXmwsWD1lWzI3XV5iLEc9ZVszNl1ebCwkPWVbMzddXmIsUT1lWzQ2XV5sLGVlPWVbNDddXmI7bD1kXihuPDwxfGk+Pj4zMSksYj1jXihpPDwxfG4+Pj4zMSk7Y29uc3QgdGU9ZVs4XV5sLHJlPWVbOV1eYixuZT1lWzE4XV5sLGllPWVbMTldXmIsYWU9ZVsyOF1ebCxmZT1lWzI5XV5iLG9lPWVbMzhdXmwsc2U9ZVszOV1eYixkZT1lWzQ4XV5sLGNlPWVbNDldXmIsdWU9cCxoZT1tLGxlPXk8PDR8Zz4+PjI4LGJlPWc8PDR8eT4+PjI4LHBlPXY8PDN8dz4+PjI5LG1lPXc8PDN8dj4+PjI5LGdlPU08PDl8Xz4+PjIzLHllPV88PDl8TT4+PjIzLHZlPVM8PDE4fEE+Pj4xNCx3ZT1BPDwxOHxTPj4+MTQsX2U9RTw8MXxSPj4+MzEsTWU9Ujw8MXxFPj4+MzEsU2U9azw8MTJ8eD4+PjIwLEFlPXg8PDEyfGs+Pj4yMCxFZT1JPDwxMHxQPj4+MjIsUmU9UDw8MTB8ST4+PjIyLHhlPUw8PDEzfFQ+Pj4xOSxrZT1UPDwxM3xMPj4+MTksSWU9Tzw8MnxCPj4+MzAsUGU9Qjw8MnxPPj4+MzAsVGU9Tjw8MzB8ej4+PjIsTGU9ejw8MzB8Tj4+PjIsT2U9Qzw8NnxxPj4+MjYsQmU9cTw8NnxDPj4+MjYsemU9VTw8MTF8aj4+PjIxLE5lPWo8PDExfFU+Pj4yMSxDZT1EPDwxNXxLPj4+MTcscWU9Szw8MTV8RD4+PjE3LGplPVk8PDI5fEY+Pj4zLFVlPUY8PDI5fFk+Pj4zLERlPVc8PDI4fEg+Pj40LEtlPUg8PDI4fFc+Pj40LEZlPVo8PDIzfFY+Pj45LFllPVY8PDIzfFo+Pj45LFdlPUo8PDI1fFg+Pj43LEhlPVg8PDI1fEo+Pj43LFZlPUc8PDIxfCQ+Pj4xMSxaZT0kPDwyMXxHPj4+MTEsSmU9ZWU8PDI0fFE+Pj44LFhlPVE8PDI0fGVlPj4+OCxHZT10ZTw8Mjd8cmU+Pj41LCRlPXJlPDwyN3x0ZT4+PjUsUWU9bmU8PDIwfGllPj4+MTIsZXQ9aWU8PDIwfG5lPj4+MTIsdHQ9ZmU8PDd8YWU+Pj4yNSxydD1hZTw8N3xmZT4+PjI1LG50PW9lPDw4fHNlPj4+MjQsaXQ9c2U8PDh8b2U+Pj4yNCxhdD1kZTw8MTR8Y2U+Pj4xOCxmdD1jZTw8MTR8ZGU+Pj4xODtlWzBdPXVlXn5TZSZ6ZSxlWzFdPWhlXn5BZSZOZSxlWzEwXT1EZV5+UWUmcGUsZVsxMV09S2VefmV0Jm1lLGVbMjBdPV9lXn5PZSZXZSxlWzIxXT1NZV5+QmUmSGUsZVszMF09R2VefmxlJkVlLGVbMzFdPSRlXn5iZSZSZSxlWzQwXT1UZV5+RmUmdHQsZVs0MV09TGVeflllJnJ0LGVbMl09U2VefnplJlZlLGVbM109QWVefk5lJlplLGVbMTJdPVFlXn5wZSZ4ZSxlWzEzXT1ldF5+bWUma2UsZVsyMl09T2VefldlJm50LGVbMjNdPUJlXn5IZSZpdCxlWzMyXT1sZV5+RWUmQ2UsZVszM109YmVeflJlJnFlLGVbNDJdPUZlXn50dCZnZSxlWzQzXT1ZZV5+cnQmeWUsZVs0XT16ZV5+VmUmYXQsZVs1XT1OZV5+WmUmZnQsZVsxNF09cGVefnhlJmplLGVbMTVdPW1lXn5rZSZVZSxlWzI0XT1XZV5+bnQmdmUsZVsyNV09SGVefml0JndlLGVbMzRdPUVlXn5DZSZKZSxlWzM1XT1SZV5+cWUmWGUsZVs0NF09dHRefmdlJkllLGVbNDVdPXJ0Xn55ZSZQZSxlWzZdPVZlXn5hdCZ1ZSxlWzddPVplXn5mdCZoZSxlWzE2XT14ZV5+amUmRGUsZVsxN109a2VeflVlJktlLGVbMjZdPW50Xn52ZSZfZSxlWzI3XT1pdF5+d2UmTWUsZVszNl09Q2VefkplJkdlLGVbMzddPXFlXn5YZSYkZSxlWzQ2XT1nZV5+SWUmVGUsZVs0N109eWVeflBlJkxlLGVbOF09YXRefnVlJlNlLGVbOV09ZnRefmhlJkFlLGVbMThdPWplXn5EZSZRZSxlWzE5XT1VZV5+S2UmZXQsZVsyOF09dmVefl9lJk9lLGVbMjldPXdlXn5NZSZCZSxlWzM4XT1KZV5+R2UmbGUsZVszOV09WGVefiRlJmJlLGVbNDhdPUllXn5UZSZGZSxlWzQ5XT1QZV5+TGUmWWUsZVswXV49clsyKnRdLGVbMV1ePXJbMip0KzFdfX19LDc2NTg6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj10O2Z1bmN0aW9uIGkoZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlLnNsaWNlKCk7aWYoIWUpcmV0dXJuW107dmFyIHI9W107aWYoInN0cmluZyIhPT10eXBlb2YgZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspcltuXT0wfGVbbl07cmV0dXJuIHJ9aWYoImhleCI9PT10KXtlPWUucmVwbGFjZSgvW15hLXowLTldKy9naSwiIiksZS5sZW5ndGglMiE9PTAmJihlPSIwIitlKTtmb3Iobj0wO248ZS5sZW5ndGg7bis9MilyLnB1c2gocGFyc2VJbnQoZVtuXStlW24rMV0sMTYpKX1lbHNlIGZvcihuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWUuY2hhckNvZGVBdChuKSxhPWk+PjgsZj0yNTUmaTthP3IucHVzaChhLGYpOnIucHVzaChmKX1yZXR1cm4gcn1mdW5jdGlvbiBhKGUpe3JldHVybiAxPT09ZS5sZW5ndGg/IjAiK2U6ZX1mdW5jdGlvbiBmKGUpe2Zvcih2YXIgdD0iIixyPTA7cjxlLmxlbmd0aDtyKyspdCs9YShlW3JdLnRvU3RyaW5nKDE2KSk7cmV0dXJuIHR9bi50b0FycmF5PWksbi56ZXJvMj1hLG4udG9IZXg9ZixuLmVuY29kZT1mdW5jdGlvbihlLHQpe3JldHVybiJoZXgiPT09dD9mKGUpOmV9fSwiN2Q3MiI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCI4NzA3IikuQnVmZmVyLGk9bi5pc0VuY29kaW5nfHxmdW5jdGlvbihlKXtzd2l0Y2goZT0iIitlLGUmJmUudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6Y2FzZSJyYXciOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fTtmdW5jdGlvbiBhKGUpe2lmKCFlKXJldHVybiJ1dGY4Ijt2YXIgdDt3aGlsZSgxKXN3aXRjaChlKXtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiJ1dGY4IjtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuInV0ZjE2bGUiO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuImxhdGluMSI7Y2FzZSJiYXNlNjQiOmNhc2UiYXNjaWkiOmNhc2UiaGV4IjpyZXR1cm4gZTtkZWZhdWx0OmlmKHQpcmV0dXJuO2U9KCIiK2UpLnRvTG93ZXJDYXNlKCksdD0hMH19ZnVuY3Rpb24gZihlKXt2YXIgdD1hKGUpO2lmKCJzdHJpbmciIT09dHlwZW9mIHQmJihuLmlzRW5jb2Rpbmc9PT1pfHwhaShlKSkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO3JldHVybiB0fHxlfWZ1bmN0aW9uIG8oZSl7dmFyIHQ7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZihlKSx0aGlzLmVuY29kaW5nKXtjYXNlInV0ZjE2bGUiOnRoaXMudGV4dD1iLHRoaXMuZW5kPXAsdD00O2JyZWFrO2Nhc2UidXRmOCI6dGhpcy5maWxsTGFzdD11LHQ9NDticmVhaztjYXNlImJhc2U2NCI6dGhpcy50ZXh0PW0sdGhpcy5lbmQ9Zyx0PTM7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdGhpcy53cml0ZT15LHZvaWQodGhpcy5lbmQ9dil9dGhpcy5sYXN0TmVlZD0wLHRoaXMubGFzdFRvdGFsPTAsdGhpcy5sYXN0Q2hhcj1uLmFsbG9jVW5zYWZlKHQpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGU8PTEyNz8wOmU+PjU9PT02PzI6ZT4+ND09PTE0PzM6ZT4+Mz09PTMwPzQ6ZT4+Nj09PTI/LTE6LTJ9ZnVuY3Rpb24gZChlLHQscil7dmFyIG49dC5sZW5ndGgtMTtpZihuPHIpcmV0dXJuIDA7dmFyIGk9cyh0W25dKTtyZXR1cm4gaT49MD8oaT4wJiYoZS5sYXN0TmVlZD1pLTEpLGkpOi0tbjxyfHwtMj09PWk/MDooaT1zKHRbbl0pLGk+PTA/KGk+MCYmKGUubGFzdE5lZWQ9aS0yKSxpKTotLW48cnx8LTI9PT1pPzA6KGk9cyh0W25dKSxpPj0wPyhpPjAmJigyPT09aT9pPTA6ZS5sYXN0TmVlZD1pLTMpLGkpOjApKX1mdW5jdGlvbiBjKGUsdCxyKXtpZigxMjghPT0oMTkyJnRbMF0pKXJldHVybiBlLmxhc3ROZWVkPTAsIu+/vSI7aWYoZS5sYXN0TmVlZD4xJiZ0Lmxlbmd0aD4xKXtpZigxMjghPT0oMTkyJnRbMV0pKXJldHVybiBlLmxhc3ROZWVkPTEsIu+/vSI7aWYoZS5sYXN0TmVlZD4yJiZ0Lmxlbmd0aD4yJiYxMjghPT0oMTkyJnRbMl0pKXJldHVybiBlLmxhc3ROZWVkPTIsIu+/vSJ9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCxyPWModGhpcyxlLHQpO3JldHVybiB2b2lkIDAhPT1yP3I6dGhpcy5sYXN0TmVlZDw9ZS5sZW5ndGg/KGUuY29weSh0aGlzLmxhc3RDaGFyLHQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCkpOihlLmNvcHkodGhpcy5sYXN0Q2hhcix0LDAsZS5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09ZS5sZW5ndGgpKX1mdW5jdGlvbiBoKGUsdCl7dmFyIHI9ZCh0aGlzLGUsdCk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIGUudG9TdHJpbmcoInV0ZjgiLHQpO3RoaXMubGFzdFRvdGFsPXI7dmFyIG49ZS5sZW5ndGgtKHItdGhpcy5sYXN0TmVlZCk7cmV0dXJuIGUuY29weSh0aGlzLmxhc3RDaGFyLDAsbiksZS50b1N0cmluZygidXRmOCIsdCxuKX1mdW5jdGlvbiBsKGUpe3ZhciB0PWUmJmUubGVuZ3RoP3RoaXMud3JpdGUoZSk6IiI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/dCsi77+9Ijp0fWZ1bmN0aW9uIGIoZSx0KXtpZigoZS5sZW5ndGgtdCklMj09PTApe3ZhciByPWUudG9TdHJpbmcoInV0ZjE2bGUiLHQpO2lmKHIpe3ZhciBuPXIuY2hhckNvZGVBdChyLmxlbmd0aC0xKTtpZihuPj01NTI5NiYmbjw9NTYzMTkpcmV0dXJuIHRoaXMubGFzdE5lZWQ9Mix0aGlzLmxhc3RUb3RhbD00LHRoaXMubGFzdENoYXJbMF09ZVtlLmxlbmd0aC0yXSx0aGlzLmxhc3RDaGFyWzFdPWVbZS5sZW5ndGgtMV0sci5zbGljZSgwLC0xKX1yZXR1cm4gcn1yZXR1cm4gdGhpcy5sYXN0TmVlZD0xLHRoaXMubGFzdFRvdGFsPTIsdGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTFdLGUudG9TdHJpbmcoInV0ZjE2bGUiLHQsZS5sZW5ndGgtMSl9ZnVuY3Rpb24gcChlKXt2YXIgdD1lJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOiIiO2lmKHRoaXMubGFzdE5lZWQpe3ZhciByPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQ7cmV0dXJuIHQrdGhpcy5sYXN0Q2hhci50b1N0cmluZygidXRmMTZsZSIsMCxyKX1yZXR1cm4gdH1mdW5jdGlvbiBtKGUsdCl7dmFyIHI9KGUubGVuZ3RoLXQpJTM7cmV0dXJuIDA9PT1yP2UudG9TdHJpbmcoImJhc2U2NCIsdCk6KHRoaXMubGFzdE5lZWQ9My1yLHRoaXMubGFzdFRvdGFsPTMsMT09PXI/dGhpcy5sYXN0Q2hhclswXT1lW2UubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPWVbZS5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT1lW2UubGVuZ3RoLTFdKSxlLnRvU3RyaW5nKCJiYXNlNjQiLHQsZS5sZW5ndGgtcikpfWZ1bmN0aW9uIGcoZSl7dmFyIHQ9ZSYmZS5sZW5ndGg/dGhpcy53cml0ZShlKToiIjtyZXR1cm4gdGhpcy5sYXN0TmVlZD90K3RoaXMubGFzdENoYXIudG9TdHJpbmcoImJhc2U2NCIsMCwzLXRoaXMubGFzdE5lZWQpOnR9ZnVuY3Rpb24geShlKXtyZXR1cm4gZS50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiB2KGUpe3JldHVybiBlJiZlLmxlbmd0aD90aGlzLndyaXRlKGUpOiIifXQuU3RyaW5nRGVjb2Rlcj1vLG8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4iIjt2YXIgdCxyO2lmKHRoaXMubGFzdE5lZWQpe2lmKHQ9dGhpcy5maWxsTGFzdChlKSx2b2lkIDA9PT10KXJldHVybiIiO3I9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSByPTA7cmV0dXJuIHI8ZS5sZW5ndGg/dD90K3RoaXMudGV4dChlLHIpOnRoaXMudGV4dChlLHIpOnR8fCIifSxvLnByb3RvdHlwZS5lbmQ9bCxvLnByb3RvdHlwZS50ZXh0PWgsby5wcm90b3R5cGUuZmlsbExhc3Q9ZnVuY3Rpb24oZSl7aWYodGhpcy5sYXN0TmVlZDw9ZS5sZW5ndGgpcmV0dXJuIGUuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCk7ZS5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLGUubGVuZ3RoKSx0aGlzLmxhc3ROZWVkLT1lLmxlbmd0aH19LCI3ZDkyIjpmdW5jdGlvbihlLHQscil7dmFyIG49dDtuLnV0aWxzPXIoImMzYzAiKSxuLmNvbW1vbj1yKCJlZGM5Iiksbi5zaGE9cigiNTkxOSIpLG4ucmlwZW1kPXIoImJiNDQiKSxuLmhtYWM9cigiMjEzNyIpLG4uc2hhMT1uLnNoYS5zaGExLG4uc2hhMjU2PW4uc2hhLnNoYTI1NixuLnNoYTIyND1uLnNoYS5zaGEyMjQsbi5zaGEzODQ9bi5zaGEuc2hhMzg0LG4uc2hhNTEyPW4uc2hhLnNoYTUxMixuLnJpcGVtZDE2MD1uLnJpcGVtZC5yaXBlbWQxNjB9LCI4MGFmIjpmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpeyhmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYoIWUpdGhyb3cgbmV3IEVycm9yKHR8fCJBc3NlcnRpb24gZmFpbGVkIil9ZnVuY3Rpb24gaShlLHQpe2Uuc3VwZXJfPXQ7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPXQucHJvdG90eXBlLGUucHJvdG90eXBlPW5ldyByLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWV9ZnVuY3Rpb24gYShlLHQscil7aWYoYS5pc0JOKGUpKXJldHVybiBlO3RoaXMubmVnYXRpdmU9MCx0aGlzLndvcmRzPW51bGwsdGhpcy5sZW5ndGg9MCx0aGlzLnJlZD1udWxsLG51bGwhPT1lJiYoImxlIiE9PXQmJiJiZSIhPT10fHwocj10LHQ9MTApLHRoaXMuX2luaXQoZXx8MCx0fHwxMCxyfHwiYmUiKSl9dmFyIGY7Im9iamVjdCI9PT10eXBlb2YgZT9lLmV4cG9ydHM9YTp0LkJOPWEsYS5CTj1hLGEud29yZFNpemU9MjY7dHJ5e2Y9InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3cuQnVmZmVyP3dpbmRvdy5CdWZmZXI6cigwKS5CdWZmZXJ9Y2F0Y2goeCl7fWZ1bmN0aW9uIG8oZSx0KXt2YXIgcj1lLmNoYXJDb2RlQXQodCk7cmV0dXJuIHI+PTY1JiZyPD03MD9yLTU1OnI+PTk3JiZyPD0xMDI/ci04NzpyLTQ4JjE1fWZ1bmN0aW9uIHMoZSx0LHIpe3ZhciBuPW8oZSxyKTtyZXR1cm4gci0xPj10JiYobnw9byhlLHItMSk8PDQpLG59ZnVuY3Rpb24gZChlLHQscixuKXtmb3IodmFyIGk9MCxhPU1hdGgubWluKGUubGVuZ3RoLHIpLGY9dDtmPGE7ZisrKXt2YXIgbz1lLmNoYXJDb2RlQXQoZiktNDg7aSo9bixpKz1vPj00OT9vLTQ5KzEwOm8+PTE3P28tMTcrMTA6b31yZXR1cm4gaX1hLmlzQk49ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBhfHxudWxsIT09ZSYmIm9iamVjdCI9PT10eXBlb2YgZSYmZS5jb25zdHJ1Y3Rvci53b3JkU2l6ZT09PWEud29yZFNpemUmJkFycmF5LmlzQXJyYXkoZS53b3Jkcyl9LGEubWF4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY21wKHQpPjA/ZTp0fSxhLm1pbj1mdW5jdGlvbihlLHQpe3JldHVybiBlLmNtcCh0KTwwP2U6dH0sYS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiPT09dHlwZW9mIGUpcmV0dXJuIHRoaXMuX2luaXROdW1iZXIoZSx0LHIpO2lmKCJvYmplY3QiPT09dHlwZW9mIGUpcmV0dXJuIHRoaXMuX2luaXRBcnJheShlLHQscik7ImhleCI9PT10JiYodD0xNiksbih0PT09KDB8dCkmJnQ+PTImJnQ8PTM2KSxlPWUudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csIiIpO3ZhciBpPTA7Ii0iPT09ZVswXSYmKGkrKyx0aGlzLm5lZ2F0aXZlPTEpLGk8ZS5sZW5ndGgmJigxNj09PXQ/dGhpcy5fcGFyc2VIZXgoZSxpLHIpOih0aGlzLl9wYXJzZUJhc2UoZSx0LGkpLCJsZSI9PT1yJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksdCxyKSkpfSxhLnByb3RvdHlwZS5faW5pdE51bWJlcj1mdW5jdGlvbihlLHQscil7ZTwwJiYodGhpcy5uZWdhdGl2ZT0xLGU9LWUpLGU8NjcxMDg4NjQ/KHRoaXMud29yZHM9WzY3MTA4ODYzJmVdLHRoaXMubGVuZ3RoPTEpOmU8NDUwMzU5OTYyNzM3MDQ5Nj8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZSxlLzY3MTA4ODY0JjY3MTA4ODYzXSx0aGlzLmxlbmd0aD0yKToobihlPDkwMDcxOTkyNTQ3NDA5OTIpLHRoaXMud29yZHM9WzY3MTA4ODYzJmUsZS82NzEwODg2NCY2NzEwODg2MywxXSx0aGlzLmxlbmd0aD0zKSwibGUiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHQscil9LGEucHJvdG90eXBlLl9pbml0QXJyYXk9ZnVuY3Rpb24oZSx0LHIpe2lmKG4oIm51bWJlciI9PT10eXBlb2YgZS5sZW5ndGgpLGUubGVuZ3RoPD0wKXJldHVybiB0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xLHRoaXM7dGhpcy5sZW5ndGg9TWF0aC5jZWlsKGUubGVuZ3RoLzMpLHRoaXMud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIGk9MDtpPHRoaXMubGVuZ3RoO2krKyl0aGlzLndvcmRzW2ldPTA7dmFyIGEsZixvPTA7aWYoImJlIj09PXIpZm9yKGk9ZS5sZW5ndGgtMSxhPTA7aT49MDtpLT0zKWY9ZVtpXXxlW2ktMV08PDh8ZVtpLTJdPDwxNix0aGlzLndvcmRzW2FdfD1mPDxvJjY3MTA4ODYzLHRoaXMud29yZHNbYSsxXT1mPj4+MjYtbyY2NzEwODg2MyxvKz0yNCxvPj0yNiYmKG8tPTI2LGErKyk7ZWxzZSBpZigibGUiPT09cilmb3IoaT0wLGE9MDtpPGUubGVuZ3RoO2krPTMpZj1lW2ldfGVbaSsxXTw8OHxlW2krMl08PDE2LHRoaXMud29yZHNbYV18PWY8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1thKzFdPWY+Pj4yNi1vJjY3MTA4ODYzLG8rPTI0LG8+PTI2JiYoby09MjYsYSsrKTtyZXR1cm4gdGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5fcGFyc2VIZXg9ZnVuY3Rpb24oZSx0LHIpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZS5sZW5ndGgtdCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgbj0wO248dGhpcy5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09MDt2YXIgaSxhPTAsZj0wO2lmKCJiZSI9PT1yKWZvcihuPWUubGVuZ3RoLTE7bj49dDtuLT0yKWk9cyhlLHQsbik8PGEsdGhpcy53b3Jkc1tmXXw9NjcxMDg4NjMmaSxhPj0xOD8oYS09MTgsZis9MSx0aGlzLndvcmRzW2ZdfD1pPj4+MjYpOmErPTg7ZWxzZXt2YXIgbz1lLmxlbmd0aC10O2ZvcihuPW8lMj09PTA/dCsxOnQ7bjxlLmxlbmd0aDtuKz0yKWk9cyhlLHQsbik8PGEsdGhpcy53b3Jkc1tmXXw9NjcxMDg4NjMmaSxhPj0xOD8oYS09MTgsZis9MSx0aGlzLndvcmRzW2ZdfD1pPj4+MjYpOmErPTh9dGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5fcGFyc2VCYXNlPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLndvcmRzPVswXSx0aGlzLmxlbmd0aD0xO2Zvcih2YXIgbj0wLGk9MTtpPD02NzEwODg2MztpKj10KW4rKztuLS0saT1pL3R8MDtmb3IodmFyIGE9ZS5sZW5ndGgtcixmPWElbixvPU1hdGgubWluKGEsYS1mKStyLHM9MCxjPXI7YzxvO2MrPW4pcz1kKGUsYyxjK24sdCksdGhpcy5pbXVsbihpKSx0aGlzLndvcmRzWzBdK3M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9czp0aGlzLl9pYWRkbihzKTtpZigwIT09Zil7dmFyIHU9MTtmb3Iocz1kKGUsYyxlLmxlbmd0aCx0KSxjPTA7YzxmO2MrKyl1Kj10O3RoaXMuaW11bG4odSksdGhpcy53b3Jkc1swXStzPDY3MTA4ODY0P3RoaXMud29yZHNbMF0rPXM6dGhpcy5faWFkZG4ocyl9dGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUpe2Uud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoKTtmb3IodmFyIHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyllLndvcmRzW3RdPXRoaXMud29yZHNbdF07ZS5sZW5ndGg9dGhpcy5sZW5ndGgsZS5uZWdhdGl2ZT10aGlzLm5lZ2F0aXZlLGUucmVkPXRoaXMucmVkfSxhLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3ZhciBlPW5ldyBhKG51bGwpO3JldHVybiB0aGlzLmNvcHkoZSksZX0sYS5wcm90b3R5cGUuX2V4cGFuZD1mdW5jdGlvbihlKXt3aGlsZSh0aGlzLmxlbmd0aDxlKXRoaXMud29yZHNbdGhpcy5sZW5ndGgrK109MDtyZXR1cm4gdGhpc30sYS5wcm90b3R5cGUuc3RyaXA9ZnVuY3Rpb24oKXt3aGlsZSh0aGlzLmxlbmd0aD4xJiYwPT09dGhpcy53b3Jkc1t0aGlzLmxlbmd0aC0xXSl0aGlzLmxlbmd0aC0tO3JldHVybiB0aGlzLl9ub3JtU2lnbigpfSxhLnByb3RvdHlwZS5fbm9ybVNpZ249ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXSYmKHRoaXMubmVnYXRpdmU9MCksdGhpc30sYS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJlZD8iPEJOLVI6ICI6IjxCTjogIikrdGhpcy50b1N0cmluZygxNikrIj4ifTt2YXIgYz1bIiIsIjAiLCIwMCIsIjAwMCIsIjAwMDAiLCIwMDAwMCIsIjAwMDAwMCIsIjAwMDAwMDAiLCIwMDAwMDAwMCIsIjAwMDAwMDAwMCIsIjAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLCIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiXSx1PVswLDAsMjUsMTYsMTIsMTEsMTAsOSw4LDgsNyw3LDcsNyw2LDYsNiw2LDYsNiw2LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDVdLGg9WzAsMCwzMzU1NDQzMiw0MzA0NjcyMSwxNjc3NzIxNiw0ODgyODEyNSw2MDQ2NjE3Niw0MDM1MzYwNywxNjc3NzIxNiw0MzA0NjcyMSwxZTcsMTk0ODcxNzEsMzU4MzE4MDgsNjI3NDg1MTcsNzUyOTUzNiwxMTM5MDYyNSwxNjc3NzIxNiwyNDEzNzU2OSwzNDAxMjIyNCw0NzA0NTg4MSw2NGU2LDQwODQxMDEsNTE1MzYzMiw2NDM2MzQzLDc5NjI2MjQsOTc2NTYyNSwxMTg4MTM3NiwxNDM0ODkwNywxNzIxMDM2OCwyMDUxMTE0OSwyNDNlNSwyODYyOTE1MSwzMzU1NDQzMiwzOTEzNTM5Myw0NTQzNTQyNCw1MjUyMTg3NSw2MDQ2NjE3Nl07ZnVuY3Rpb24gbChlKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUuYml0TGVuZ3RoKCkpLHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49ci8yNnwwLGk9ciUyNjt0W3JdPShlLndvcmRzW25dJjE8PGkpPj4+aX1yZXR1cm4gdH1mdW5jdGlvbiBiKGUsdCxyKXtyLm5lZ2F0aXZlPXQubmVnYXRpdmVeZS5uZWdhdGl2ZTt2YXIgbj1lLmxlbmd0aCt0Lmxlbmd0aHwwO3IubGVuZ3RoPW4sbj1uLTF8MDt2YXIgaT0wfGUud29yZHNbMF0sYT0wfHQud29yZHNbMF0sZj1pKmEsbz02NzEwODg2MyZmLHM9Zi82NzEwODg2NHwwO3Iud29yZHNbMF09bztmb3IodmFyIGQ9MTtkPG47ZCsrKXtmb3IodmFyIGM9cz4+PjI2LHU9NjcxMDg4NjMmcyxoPU1hdGgubWluKGQsdC5sZW5ndGgtMSksbD1NYXRoLm1heCgwLGQtZS5sZW5ndGgrMSk7bDw9aDtsKyspe3ZhciBiPWQtbHwwO2k9MHxlLndvcmRzW2JdLGE9MHx0LndvcmRzW2xdLGY9aSphK3UsYys9Zi82NzEwODg2NHwwLHU9NjcxMDg4NjMmZn1yLndvcmRzW2RdPTB8dSxzPTB8Y31yZXR1cm4gMCE9PXM/ci53b3Jkc1tkXT0wfHM6ci5sZW5ndGgtLSxyLnN0cmlwKCl9YS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZihlPWV8fDEwLHQ9MHx0fHwxLDE2PT09ZXx8ImhleCI9PT1lKXtyPSIiO2Zvcih2YXIgaT0wLGE9MCxmPTA7Zjx0aGlzLmxlbmd0aDtmKyspe3ZhciBvPXRoaXMud29yZHNbZl0scz0oMTY3NzcyMTUmKG88PGl8YSkpLnRvU3RyaW5nKDE2KTthPW8+Pj4yNC1pJjE2Nzc3MjE1LHI9MCE9PWF8fGYhPT10aGlzLmxlbmd0aC0xP2NbNi1zLmxlbmd0aF0rcytyOnMrcixpKz0yLGk+PTI2JiYoaS09MjYsZi0tKX0wIT09YSYmKHI9YS50b1N0cmluZygxNikrcik7d2hpbGUoci5sZW5ndGgldCE9PTApcj0iMCIrcjtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmUmJihyPSItIityKSxyfWlmKGU9PT0oMHxlKSYmZT49MiYmZTw9MzYpe3ZhciBkPXVbZV0sbD1oW2VdO3I9IiI7dmFyIGI9dGhpcy5jbG9uZSgpO2IubmVnYXRpdmU9MDt3aGlsZSghYi5pc1plcm8oKSl7dmFyIHA9Yi5tb2RuKGwpLnRvU3RyaW5nKGUpO2I9Yi5pZGl2bihsKSxyPWIuaXNaZXJvKCk/cCtyOmNbZC1wLmxlbmd0aF0rcCtyfXRoaXMuaXNaZXJvKCkmJihyPSIwIityKTt3aGlsZShyLmxlbmd0aCV0IT09MClyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9bighMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxhLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9lKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/ZSs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm4oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1lOmV9LGEucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sYS5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbigidW5kZWZpbmVkIiE9PXR5cGVvZiBmKSx0aGlzLnRvQXJyYXlMaWtlKGYsZSx0KX0sYS5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGUsdCl9LGEucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzLmJ5dGVMZW5ndGgoKSxhPXJ8fE1hdGgubWF4KDEsaSk7bihpPD1hLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksbihhPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgZixvLHM9ImxlIj09PXQsZD1uZXcgZShhKSxjPXRoaXMuY2xvbmUoKTtpZihzKXtmb3Iobz0wOyFjLmlzWmVybygpO28rKylmPWMuYW5kbG4oMjU1KSxjLml1c2hybig4KSxkW29dPWY7Zm9yKDtvPGE7bysrKWRbb109MH1lbHNle2ZvcihvPTA7bzxhLWk7bysrKWRbb109MDtmb3Iobz0wOyFjLmlzWmVybygpO28rKylmPWMuYW5kbG4oMjU1KSxjLml1c2hybig4KSxkW2Etby0xXT1mfXJldHVybiBkfSxNYXRoLmNsejMyP2EucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZSl9OmEucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxyPTA7cmV0dXJuIHQ+PTQwOTYmJihyKz0xMyx0Pj4+PTEzKSx0Pj02NCYmKHIrPTcsdD4+Pj03KSx0Pj04JiYocis9NCx0Pj4+PTQpLHQ+PTImJihyKz0yLHQ+Pj49Mikscit0fSxhLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZSl7aWYoMD09PWUpcmV0dXJuIDI2O3ZhciB0PWUscj0wO3JldHVybiAwPT09KDgxOTEmdCkmJihyKz0xMyx0Pj4+PTEzKSwwPT09KDEyNyZ0KSYmKHIrPTcsdD4+Pj03KSwwPT09KDE1JnQpJiYocis9NCx0Pj4+PTQpLDA9PT0oMyZ0KSYmKHIrPTIsdD4+Pj0yKSwwPT09KDEmdCkmJnIrKyxyfSxhLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLHQ9dGhpcy5fY291bnRCaXRzKGUpO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrdH0sYS5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZT0wLHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t0XSk7aWYoZSs9ciwyNiE9PXIpYnJlYWt9cmV0dXJuIGV9LGEucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkvOCl9LGEucHJvdG90eXBlLnRvVHdvcz1mdW5jdGlvbihlKXtyZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/dGhpcy5hYnMoKS5pbm90bihlKS5pYWRkbigxKTp0aGlzLmNsb25lKCl9LGEucHJvdG90eXBlLmZyb21Ud29zPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRlc3RuKGUtMSk/dGhpcy5ub3RuKGUpLmlhZGRuKDEpLmluZWcoKTp0aGlzLmNsb25lKCl9LGEucHJvdG90eXBlLmlzTmVnPWZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlfSxhLnByb3RvdHlwZS5uZWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKX0sYS5wcm90b3R5cGUuaW5lZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzWmVybygpfHwodGhpcy5uZWdhdGl2ZV49MSksdGhpc30sYS5wcm90b3R5cGUuaXVvcj1mdW5jdGlvbihlKXt3aGlsZSh0aGlzLmxlbmd0aDxlLmxlbmd0aCl0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdPTA7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspdGhpcy53b3Jkc1t0XT10aGlzLndvcmRzW3RdfGUud29yZHNbdF07cmV0dXJuIHRoaXMuc3RyaXAoKX0sYS5wcm90b3R5cGUuaW9yPWZ1bmN0aW9uKGUpe3JldHVybiBuKDA9PT0odGhpcy5uZWdhdGl2ZXxlLm5lZ2F0aXZlKSksdGhpcy5pdW9yKGUpfSxhLnByb3RvdHlwZS5vcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZW5ndGg+ZS5sZW5ndGg/dGhpcy5jbG9uZSgpLmlvcihlKTplLmNsb25lKCkuaW9yKHRoaXMpfSxhLnByb3RvdHlwZS51b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGVuZ3RoPmUubGVuZ3RoP3RoaXMuY2xvbmUoKS5pdW9yKGUpOmUuY2xvbmUoKS5pdW9yKHRoaXMpfSxhLnByb3RvdHlwZS5pdWFuZD1mdW5jdGlvbihlKXt2YXIgdDt0PXRoaXMubGVuZ3RoPmUubGVuZ3RoP2U6dGhpcztmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0aGlzLndvcmRzW3JdPXRoaXMud29yZHNbcl0mZS53b3Jkc1tyXTtyZXR1cm4gdGhpcy5sZW5ndGg9dC5sZW5ndGgsdGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5pYW5kPWZ1bmN0aW9uKGUpe3JldHVybiBuKDA9PT0odGhpcy5uZWdhdGl2ZXxlLm5lZ2F0aXZlKSksdGhpcy5pdWFuZChlKX0sYS5wcm90b3R5cGUuYW5kPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxlbmd0aD5lLmxlbmd0aD90aGlzLmNsb25lKCkuaWFuZChlKTplLmNsb25lKCkuaWFuZCh0aGlzKX0sYS5wcm90b3R5cGUudWFuZD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5sZW5ndGg+ZS5sZW5ndGg/dGhpcy5jbG9uZSgpLml1YW5kKGUpOmUuY2xvbmUoKS5pdWFuZCh0aGlzKX0sYS5wcm90b3R5cGUuaXV4b3I9ZnVuY3Rpb24oZSl7dmFyIHQscjt0aGlzLmxlbmd0aD5lLmxlbmd0aD8odD10aGlzLHI9ZSk6KHQ9ZSxyPXRoaXMpO2Zvcih2YXIgbj0wO248ci5sZW5ndGg7bisrKXRoaXMud29yZHNbbl09dC53b3Jkc1tuXV5yLndvcmRzW25dO2lmKHRoaXMhPT10KWZvcig7bjx0Lmxlbmd0aDtuKyspdGhpcy53b3Jkc1tuXT10LndvcmRzW25dO3JldHVybiB0aGlzLmxlbmd0aD10Lmxlbmd0aCx0aGlzLnN0cmlwKCl9LGEucHJvdG90eXBlLml4b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oMD09PSh0aGlzLm5lZ2F0aXZlfGUubmVnYXRpdmUpKSx0aGlzLml1eG9yKGUpfSxhLnByb3RvdHlwZS54b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubGVuZ3RoPmUubGVuZ3RoP3RoaXMuY2xvbmUoKS5peG9yKGUpOmUuY2xvbmUoKS5peG9yKHRoaXMpfSxhLnByb3RvdHlwZS51eG9yPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmxlbmd0aD5lLmxlbmd0aD90aGlzLmNsb25lKCkuaXV4b3IoZSk6ZS5jbG9uZSgpLml1eG9yKHRoaXMpfSxhLnByb3RvdHlwZS5pbm90bj1mdW5jdGlvbihlKXtuKCJudW1iZXIiPT09dHlwZW9mIGUmJmU+PTApO3ZhciB0PTB8TWF0aC5jZWlsKGUvMjYpLHI9ZSUyNjt0aGlzLl9leHBhbmQodCkscj4wJiZ0LS07Zm9yKHZhciBpPTA7aTx0O2krKyl0aGlzLndvcmRzW2ldPTY3MTA4ODYzJn50aGlzLndvcmRzW2ldO3JldHVybiByPjAmJih0aGlzLndvcmRzW2ldPX50aGlzLndvcmRzW2ldJjY3MTA4ODYzPj4yNi1yKSx0aGlzLnN0cmlwKCl9LGEucHJvdG90eXBlLm5vdG49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bihlKX0sYS5wcm90b3R5cGUuc2V0bj1mdW5jdGlvbihlLHQpe24oIm51bWJlciI9PT10eXBlb2YgZSYmZT49MCk7dmFyIHI9ZS8yNnwwLGk9ZSUyNjtyZXR1cm4gdGhpcy5fZXhwYW5kKHIrMSksdGhpcy53b3Jkc1tyXT10P3RoaXMud29yZHNbcl18MTw8aTp0aGlzLndvcmRzW3JdJn4oMTw8aSksdGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5pYWRkPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtpZigwIT09dGhpcy5uZWdhdGl2ZSYmMD09PWUubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0PXRoaXMuaXN1YihlKSx0aGlzLm5lZ2F0aXZlXj0xLHRoaXMuX25vcm1TaWduKCk7aWYoMD09PXRoaXMubmVnYXRpdmUmJjAhPT1lLm5lZ2F0aXZlKXJldHVybiBlLm5lZ2F0aXZlPTAsdD10aGlzLmlzdWIoZSksZS5uZWdhdGl2ZT0xLHQuX25vcm1TaWduKCk7dGhpcy5sZW5ndGg+ZS5sZW5ndGg/KHI9dGhpcyxuPWUpOihyPWUsbj10aGlzKTtmb3IodmFyIGk9MCxhPTA7YTxuLmxlbmd0aDthKyspdD0oMHxyLndvcmRzW2FdKSsoMHxuLndvcmRzW2FdKStpLHRoaXMud29yZHNbYV09NjcxMDg4NjMmdCxpPXQ+Pj4yNjtmb3IoOzAhPT1pJiZhPHIubGVuZ3RoO2ErKyl0PSgwfHIud29yZHNbYV0pK2ksdGhpcy53b3Jkc1thXT02NzEwODg2MyZ0LGk9dD4+PjI2O2lmKHRoaXMubGVuZ3RoPXIubGVuZ3RoLDAhPT1pKXRoaXMud29yZHNbdGhpcy5sZW5ndGhdPWksdGhpcy5sZW5ndGgrKztlbHNlIGlmKHIhPT10aGlzKWZvcig7YTxyLmxlbmd0aDthKyspdGhpcy53b3Jkc1thXT1yLndvcmRzW2FdO3JldHVybiB0aGlzfSxhLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIDAhPT1lLm5lZ2F0aXZlJiYwPT09dGhpcy5uZWdhdGl2ZT8oZS5uZWdhdGl2ZT0wLHQ9dGhpcy5zdWIoZSksZS5uZWdhdGl2ZV49MSx0KTowPT09ZS5uZWdhdGl2ZSYmMCE9PXRoaXMubmVnYXRpdmU/KHRoaXMubmVnYXRpdmU9MCx0PWUuc3ViKHRoaXMpLHRoaXMubmVnYXRpdmU9MSx0KTp0aGlzLmxlbmd0aD5lLmxlbmd0aD90aGlzLmNsb25lKCkuaWFkZChlKTplLmNsb25lKCkuaWFkZCh0aGlzKX0sYS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihlKXtpZigwIT09ZS5uZWdhdGl2ZSl7ZS5uZWdhdGl2ZT0wO3ZhciB0PXRoaXMuaWFkZChlKTtyZXR1cm4gZS5uZWdhdGl2ZT0xLHQuX25vcm1TaWduKCl9aWYoMCE9PXRoaXMubmVnYXRpdmUpcmV0dXJuIHRoaXMubmVnYXRpdmU9MCx0aGlzLmlhZGQoZSksdGhpcy5uZWdhdGl2ZT0xLHRoaXMuX25vcm1TaWduKCk7dmFyIHIsbixpPXRoaXMuY21wKGUpO2lmKDA9PT1pKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5sZW5ndGg9MSx0aGlzLndvcmRzWzBdPTAsdGhpcztpPjA/KHI9dGhpcyxuPWUpOihyPWUsbj10aGlzKTtmb3IodmFyIGE9MCxmPTA7ZjxuLmxlbmd0aDtmKyspdD0oMHxyLndvcmRzW2ZdKS0oMHxuLndvcmRzW2ZdKSthLGE9dD4+MjYsdGhpcy53b3Jkc1tmXT02NzEwODg2MyZ0O2Zvcig7MCE9PWEmJmY8ci5sZW5ndGg7ZisrKXQ9KDB8ci53b3Jkc1tmXSkrYSxhPXQ+PjI2LHRoaXMud29yZHNbZl09NjcxMDg4NjMmdDtpZigwPT09YSYmZjxyLmxlbmd0aCYmciE9PXRoaXMpZm9yKDtmPHIubGVuZ3RoO2YrKyl0aGlzLndvcmRzW2ZdPXIud29yZHNbZl07cmV0dXJuIHRoaXMubGVuZ3RoPU1hdGgubWF4KHRoaXMubGVuZ3RoLGYpLHIhPT10aGlzJiYodGhpcy5uZWdhdGl2ZT0xKSx0aGlzLnN0cmlwKCl9LGEucHJvdG90eXBlLnN1Yj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIoZSl9O3ZhciBwPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixpLGEsZj1lLndvcmRzLG89dC53b3JkcyxzPXIud29yZHMsZD0wLGM9MHxmWzBdLHU9ODE5MSZjLGg9Yz4+PjEzLGw9MHxmWzFdLGI9ODE5MSZsLHA9bD4+PjEzLG09MHxmWzJdLGc9ODE5MSZtLHk9bT4+PjEzLHY9MHxmWzNdLHc9ODE5MSZ2LF89dj4+PjEzLE09MHxmWzRdLFM9ODE5MSZNLEE9TT4+PjEzLEU9MHxmWzVdLFI9ODE5MSZFLHg9RT4+PjEzLGs9MHxmWzZdLEk9ODE5MSZrLFA9az4+PjEzLFQ9MHxmWzddLEw9ODE5MSZULE89VD4+PjEzLEI9MHxmWzhdLHo9ODE5MSZCLE49Qj4+PjEzLEM9MHxmWzldLHE9ODE5MSZDLGo9Qz4+PjEzLFU9MHxvWzBdLEQ9ODE5MSZVLEs9VT4+PjEzLEY9MHxvWzFdLFk9ODE5MSZGLFc9Rj4+PjEzLEg9MHxvWzJdLFY9ODE5MSZILFo9SD4+PjEzLEo9MHxvWzNdLFg9ODE5MSZKLEc9Sj4+PjEzLCQ9MHxvWzRdLFE9ODE5MSYkLGVlPSQ+Pj4xMyx0ZT0wfG9bNV0scmU9ODE5MSZ0ZSxuZT10ZT4+PjEzLGllPTB8b1s2XSxhZT04MTkxJmllLGZlPWllPj4+MTMsb2U9MHxvWzddLHNlPTgxOTEmb2UsZGU9b2U+Pj4xMyxjZT0wfG9bOF0sdWU9ODE5MSZjZSxoZT1jZT4+PjEzLGxlPTB8b1s5XSxiZT04MTkxJmxlLHBlPWxlPj4+MTM7ci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmUsci5sZW5ndGg9MTksbj1NYXRoLmltdWwodSxEKSxpPU1hdGguaW11bCh1LEspLGk9aStNYXRoLmltdWwoaCxEKXwwLGE9TWF0aC5pbXVsKGgsSyk7dmFyIG1lPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhtZT4+PjI2KXwwLG1lJj02NzEwODg2MyxuPU1hdGguaW11bChiLEQpLGk9TWF0aC5pbXVsKGIsSyksaT1pK01hdGguaW11bChwLEQpfDAsYT1NYXRoLmltdWwocCxLKSxuPW4rTWF0aC5pbXVsKHUsWSl8MCxpPWkrTWF0aC5pbXVsKHUsVyl8MCxpPWkrTWF0aC5pbXVsKGgsWSl8MCxhPWErTWF0aC5pbXVsKGgsVyl8MDt2YXIgZ2U9KGQrbnwwKSsoKDgxOTEmaSk8PDEzKXwwO2Q9KGErKGk+Pj4xMyl8MCkrKGdlPj4+MjYpfDAsZ2UmPTY3MTA4ODYzLG49TWF0aC5pbXVsKGcsRCksaT1NYXRoLmltdWwoZyxLKSxpPWkrTWF0aC5pbXVsKHksRCl8MCxhPU1hdGguaW11bCh5LEspLG49bitNYXRoLmltdWwoYixZKXwwLGk9aStNYXRoLmltdWwoYixXKXwwLGk9aStNYXRoLmltdWwocCxZKXwwLGE9YStNYXRoLmltdWwocCxXKXwwLG49bitNYXRoLmltdWwodSxWKXwwLGk9aStNYXRoLmltdWwodSxaKXwwLGk9aStNYXRoLmltdWwoaCxWKXwwLGE9YStNYXRoLmltdWwoaCxaKXwwO3ZhciB5ZT0oZCtufDApKygoODE5MSZpKTw8MTMpfDA7ZD0oYSsoaT4+PjEzKXwwKSsoeWU+Pj4yNil8MCx5ZSY9NjcxMDg4NjMsbj1NYXRoLmltdWwodyxEKSxpPU1hdGguaW11bCh3LEspLGk9aStNYXRoLmltdWwoXyxEKXwwLGE9TWF0aC5pbXVsKF8sSyksbj1uK01hdGguaW11bChnLFkpfDAsaT1pK01hdGguaW11bChnLFcpfDAsaT1pK01hdGguaW11bCh5LFkpfDAsYT1hK01hdGguaW11bCh5LFcpfDAsbj1uK01hdGguaW11bChiLFYpfDAsaT1pK01hdGguaW11bChiLFopfDAsaT1pK01hdGguaW11bChwLFYpfDAsYT1hK01hdGguaW11bChwLFopfDAsbj1uK01hdGguaW11bCh1LFgpfDAsaT1pK01hdGguaW11bCh1LEcpfDAsaT1pK01hdGguaW11bChoLFgpfDAsYT1hK01hdGguaW11bChoLEcpfDA7dmFyIHZlPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyh2ZT4+PjI2KXwwLHZlJj02NzEwODg2MyxuPU1hdGguaW11bChTLEQpLGk9TWF0aC5pbXVsKFMsSyksaT1pK01hdGguaW11bChBLEQpfDAsYT1NYXRoLmltdWwoQSxLKSxuPW4rTWF0aC5pbXVsKHcsWSl8MCxpPWkrTWF0aC5pbXVsKHcsVyl8MCxpPWkrTWF0aC5pbXVsKF8sWSl8MCxhPWErTWF0aC5pbXVsKF8sVyl8MCxuPW4rTWF0aC5pbXVsKGcsVil8MCxpPWkrTWF0aC5pbXVsKGcsWil8MCxpPWkrTWF0aC5pbXVsKHksVil8MCxhPWErTWF0aC5pbXVsKHksWil8MCxuPW4rTWF0aC5pbXVsKGIsWCl8MCxpPWkrTWF0aC5pbXVsKGIsRyl8MCxpPWkrTWF0aC5pbXVsKHAsWCl8MCxhPWErTWF0aC5pbXVsKHAsRyl8MCxuPW4rTWF0aC5pbXVsKHUsUSl8MCxpPWkrTWF0aC5pbXVsKHUsZWUpfDAsaT1pK01hdGguaW11bChoLFEpfDAsYT1hK01hdGguaW11bChoLGVlKXwwO3ZhciB3ZT0oZCtufDApKygoODE5MSZpKTw8MTMpfDA7ZD0oYSsoaT4+PjEzKXwwKSsod2U+Pj4yNil8MCx3ZSY9NjcxMDg4NjMsbj1NYXRoLmltdWwoUixEKSxpPU1hdGguaW11bChSLEspLGk9aStNYXRoLmltdWwoeCxEKXwwLGE9TWF0aC5pbXVsKHgsSyksbj1uK01hdGguaW11bChTLFkpfDAsaT1pK01hdGguaW11bChTLFcpfDAsaT1pK01hdGguaW11bChBLFkpfDAsYT1hK01hdGguaW11bChBLFcpfDAsbj1uK01hdGguaW11bCh3LFYpfDAsaT1pK01hdGguaW11bCh3LFopfDAsaT1pK01hdGguaW11bChfLFYpfDAsYT1hK01hdGguaW11bChfLFopfDAsbj1uK01hdGguaW11bChnLFgpfDAsaT1pK01hdGguaW11bChnLEcpfDAsaT1pK01hdGguaW11bCh5LFgpfDAsYT1hK01hdGguaW11bCh5LEcpfDAsbj1uK01hdGguaW11bChiLFEpfDAsaT1pK01hdGguaW11bChiLGVlKXwwLGk9aStNYXRoLmltdWwocCxRKXwwLGE9YStNYXRoLmltdWwocCxlZSl8MCxuPW4rTWF0aC5pbXVsKHUscmUpfDAsaT1pK01hdGguaW11bCh1LG5lKXwwLGk9aStNYXRoLmltdWwoaCxyZSl8MCxhPWErTWF0aC5pbXVsKGgsbmUpfDA7dmFyIF9lPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhfZT4+PjI2KXwwLF9lJj02NzEwODg2MyxuPU1hdGguaW11bChJLEQpLGk9TWF0aC5pbXVsKEksSyksaT1pK01hdGguaW11bChQLEQpfDAsYT1NYXRoLmltdWwoUCxLKSxuPW4rTWF0aC5pbXVsKFIsWSl8MCxpPWkrTWF0aC5pbXVsKFIsVyl8MCxpPWkrTWF0aC5pbXVsKHgsWSl8MCxhPWErTWF0aC5pbXVsKHgsVyl8MCxuPW4rTWF0aC5pbXVsKFMsVil8MCxpPWkrTWF0aC5pbXVsKFMsWil8MCxpPWkrTWF0aC5pbXVsKEEsVil8MCxhPWErTWF0aC5pbXVsKEEsWil8MCxuPW4rTWF0aC5pbXVsKHcsWCl8MCxpPWkrTWF0aC5pbXVsKHcsRyl8MCxpPWkrTWF0aC5pbXVsKF8sWCl8MCxhPWErTWF0aC5pbXVsKF8sRyl8MCxuPW4rTWF0aC5pbXVsKGcsUSl8MCxpPWkrTWF0aC5pbXVsKGcsZWUpfDAsaT1pK01hdGguaW11bCh5LFEpfDAsYT1hK01hdGguaW11bCh5LGVlKXwwLG49bitNYXRoLmltdWwoYixyZSl8MCxpPWkrTWF0aC5pbXVsKGIsbmUpfDAsaT1pK01hdGguaW11bChwLHJlKXwwLGE9YStNYXRoLmltdWwocCxuZSl8MCxuPW4rTWF0aC5pbXVsKHUsYWUpfDAsaT1pK01hdGguaW11bCh1LGZlKXwwLGk9aStNYXRoLmltdWwoaCxhZSl8MCxhPWErTWF0aC5pbXVsKGgsZmUpfDA7dmFyIE1lPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhNZT4+PjI2KXwwLE1lJj02NzEwODg2MyxuPU1hdGguaW11bChMLEQpLGk9TWF0aC5pbXVsKEwsSyksaT1pK01hdGguaW11bChPLEQpfDAsYT1NYXRoLmltdWwoTyxLKSxuPW4rTWF0aC5pbXVsKEksWSl8MCxpPWkrTWF0aC5pbXVsKEksVyl8MCxpPWkrTWF0aC5pbXVsKFAsWSl8MCxhPWErTWF0aC5pbXVsKFAsVyl8MCxuPW4rTWF0aC5pbXVsKFIsVil8MCxpPWkrTWF0aC5pbXVsKFIsWil8MCxpPWkrTWF0aC5pbXVsKHgsVil8MCxhPWErTWF0aC5pbXVsKHgsWil8MCxuPW4rTWF0aC5pbXVsKFMsWCl8MCxpPWkrTWF0aC5pbXVsKFMsRyl8MCxpPWkrTWF0aC5pbXVsKEEsWCl8MCxhPWErTWF0aC5pbXVsKEEsRyl8MCxuPW4rTWF0aC5pbXVsKHcsUSl8MCxpPWkrTWF0aC5pbXVsKHcsZWUpfDAsaT1pK01hdGguaW11bChfLFEpfDAsYT1hK01hdGguaW11bChfLGVlKXwwLG49bitNYXRoLmltdWwoZyxyZSl8MCxpPWkrTWF0aC5pbXVsKGcsbmUpfDAsaT1pK01hdGguaW11bCh5LHJlKXwwLGE9YStNYXRoLmltdWwoeSxuZSl8MCxuPW4rTWF0aC5pbXVsKGIsYWUpfDAsaT1pK01hdGguaW11bChiLGZlKXwwLGk9aStNYXRoLmltdWwocCxhZSl8MCxhPWErTWF0aC5pbXVsKHAsZmUpfDAsbj1uK01hdGguaW11bCh1LHNlKXwwLGk9aStNYXRoLmltdWwodSxkZSl8MCxpPWkrTWF0aC5pbXVsKGgsc2UpfDAsYT1hK01hdGguaW11bChoLGRlKXwwO3ZhciBTZT0oZCtufDApKygoODE5MSZpKTw8MTMpfDA7ZD0oYSsoaT4+PjEzKXwwKSsoU2U+Pj4yNil8MCxTZSY9NjcxMDg4NjMsbj1NYXRoLmltdWwoeixEKSxpPU1hdGguaW11bCh6LEspLGk9aStNYXRoLmltdWwoTixEKXwwLGE9TWF0aC5pbXVsKE4sSyksbj1uK01hdGguaW11bChMLFkpfDAsaT1pK01hdGguaW11bChMLFcpfDAsaT1pK01hdGguaW11bChPLFkpfDAsYT1hK01hdGguaW11bChPLFcpfDAsbj1uK01hdGguaW11bChJLFYpfDAsaT1pK01hdGguaW11bChJLFopfDAsaT1pK01hdGguaW11bChQLFYpfDAsYT1hK01hdGguaW11bChQLFopfDAsbj1uK01hdGguaW11bChSLFgpfDAsaT1pK01hdGguaW11bChSLEcpfDAsaT1pK01hdGguaW11bCh4LFgpfDAsYT1hK01hdGguaW11bCh4LEcpfDAsbj1uK01hdGguaW11bChTLFEpfDAsaT1pK01hdGguaW11bChTLGVlKXwwLGk9aStNYXRoLmltdWwoQSxRKXwwLGE9YStNYXRoLmltdWwoQSxlZSl8MCxuPW4rTWF0aC5pbXVsKHcscmUpfDAsaT1pK01hdGguaW11bCh3LG5lKXwwLGk9aStNYXRoLmltdWwoXyxyZSl8MCxhPWErTWF0aC5pbXVsKF8sbmUpfDAsbj1uK01hdGguaW11bChnLGFlKXwwLGk9aStNYXRoLmltdWwoZyxmZSl8MCxpPWkrTWF0aC5pbXVsKHksYWUpfDAsYT1hK01hdGguaW11bCh5LGZlKXwwLG49bitNYXRoLmltdWwoYixzZSl8MCxpPWkrTWF0aC5pbXVsKGIsZGUpfDAsaT1pK01hdGguaW11bChwLHNlKXwwLGE9YStNYXRoLmltdWwocCxkZSl8MCxuPW4rTWF0aC5pbXVsKHUsdWUpfDAsaT1pK01hdGguaW11bCh1LGhlKXwwLGk9aStNYXRoLmltdWwoaCx1ZSl8MCxhPWErTWF0aC5pbXVsKGgsaGUpfDA7dmFyIEFlPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhBZT4+PjI2KXwwLEFlJj02NzEwODg2MyxuPU1hdGguaW11bChxLEQpLGk9TWF0aC5pbXVsKHEsSyksaT1pK01hdGguaW11bChqLEQpfDAsYT1NYXRoLmltdWwoaixLKSxuPW4rTWF0aC5pbXVsKHosWSl8MCxpPWkrTWF0aC5pbXVsKHosVyl8MCxpPWkrTWF0aC5pbXVsKE4sWSl8MCxhPWErTWF0aC5pbXVsKE4sVyl8MCxuPW4rTWF0aC5pbXVsKEwsVil8MCxpPWkrTWF0aC5pbXVsKEwsWil8MCxpPWkrTWF0aC5pbXVsKE8sVil8MCxhPWErTWF0aC5pbXVsKE8sWil8MCxuPW4rTWF0aC5pbXVsKEksWCl8MCxpPWkrTWF0aC5pbXVsKEksRyl8MCxpPWkrTWF0aC5pbXVsKFAsWCl8MCxhPWErTWF0aC5pbXVsKFAsRyl8MCxuPW4rTWF0aC5pbXVsKFIsUSl8MCxpPWkrTWF0aC5pbXVsKFIsZWUpfDAsaT1pK01hdGguaW11bCh4LFEpfDAsYT1hK01hdGguaW11bCh4LGVlKXwwLG49bitNYXRoLmltdWwoUyxyZSl8MCxpPWkrTWF0aC5pbXVsKFMsbmUpfDAsaT1pK01hdGguaW11bChBLHJlKXwwLGE9YStNYXRoLmltdWwoQSxuZSl8MCxuPW4rTWF0aC5pbXVsKHcsYWUpfDAsaT1pK01hdGguaW11bCh3LGZlKXwwLGk9aStNYXRoLmltdWwoXyxhZSl8MCxhPWErTWF0aC5pbXVsKF8sZmUpfDAsbj1uK01hdGguaW11bChnLHNlKXwwLGk9aStNYXRoLmltdWwoZyxkZSl8MCxpPWkrTWF0aC5pbXVsKHksc2UpfDAsYT1hK01hdGguaW11bCh5LGRlKXwwLG49bitNYXRoLmltdWwoYix1ZSl8MCxpPWkrTWF0aC5pbXVsKGIsaGUpfDAsaT1pK01hdGguaW11bChwLHVlKXwwLGE9YStNYXRoLmltdWwocCxoZSl8MCxuPW4rTWF0aC5pbXVsKHUsYmUpfDAsaT1pK01hdGguaW11bCh1LHBlKXwwLGk9aStNYXRoLmltdWwoaCxiZSl8MCxhPWErTWF0aC5pbXVsKGgscGUpfDA7dmFyIEVlPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhFZT4+PjI2KXwwLEVlJj02NzEwODg2MyxuPU1hdGguaW11bChxLFkpLGk9TWF0aC5pbXVsKHEsVyksaT1pK01hdGguaW11bChqLFkpfDAsYT1NYXRoLmltdWwoaixXKSxuPW4rTWF0aC5pbXVsKHosVil8MCxpPWkrTWF0aC5pbXVsKHosWil8MCxpPWkrTWF0aC5pbXVsKE4sVil8MCxhPWErTWF0aC5pbXVsKE4sWil8MCxuPW4rTWF0aC5pbXVsKEwsWCl8MCxpPWkrTWF0aC5pbXVsKEwsRyl8MCxpPWkrTWF0aC5pbXVsKE8sWCl8MCxhPWErTWF0aC5pbXVsKE8sRyl8MCxuPW4rTWF0aC5pbXVsKEksUSl8MCxpPWkrTWF0aC5pbXVsKEksZWUpfDAsaT1pK01hdGguaW11bChQLFEpfDAsYT1hK01hdGguaW11bChQLGVlKXwwLG49bitNYXRoLmltdWwoUixyZSl8MCxpPWkrTWF0aC5pbXVsKFIsbmUpfDAsaT1pK01hdGguaW11bCh4LHJlKXwwLGE9YStNYXRoLmltdWwoeCxuZSl8MCxuPW4rTWF0aC5pbXVsKFMsYWUpfDAsaT1pK01hdGguaW11bChTLGZlKXwwLGk9aStNYXRoLmltdWwoQSxhZSl8MCxhPWErTWF0aC5pbXVsKEEsZmUpfDAsbj1uK01hdGguaW11bCh3LHNlKXwwLGk9aStNYXRoLmltdWwodyxkZSl8MCxpPWkrTWF0aC5pbXVsKF8sc2UpfDAsYT1hK01hdGguaW11bChfLGRlKXwwLG49bitNYXRoLmltdWwoZyx1ZSl8MCxpPWkrTWF0aC5pbXVsKGcsaGUpfDAsaT1pK01hdGguaW11bCh5LHVlKXwwLGE9YStNYXRoLmltdWwoeSxoZSl8MCxuPW4rTWF0aC5pbXVsKGIsYmUpfDAsaT1pK01hdGguaW11bChiLHBlKXwwLGk9aStNYXRoLmltdWwocCxiZSl8MCxhPWErTWF0aC5pbXVsKHAscGUpfDA7dmFyIFJlPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhSZT4+PjI2KXwwLFJlJj02NzEwODg2MyxuPU1hdGguaW11bChxLFYpLGk9TWF0aC5pbXVsKHEsWiksaT1pK01hdGguaW11bChqLFYpfDAsYT1NYXRoLmltdWwoaixaKSxuPW4rTWF0aC5pbXVsKHosWCl8MCxpPWkrTWF0aC5pbXVsKHosRyl8MCxpPWkrTWF0aC5pbXVsKE4sWCl8MCxhPWErTWF0aC5pbXVsKE4sRyl8MCxuPW4rTWF0aC5pbXVsKEwsUSl8MCxpPWkrTWF0aC5pbXVsKEwsZWUpfDAsaT1pK01hdGguaW11bChPLFEpfDAsYT1hK01hdGguaW11bChPLGVlKXwwLG49bitNYXRoLmltdWwoSSxyZSl8MCxpPWkrTWF0aC5pbXVsKEksbmUpfDAsaT1pK01hdGguaW11bChQLHJlKXwwLGE9YStNYXRoLmltdWwoUCxuZSl8MCxuPW4rTWF0aC5pbXVsKFIsYWUpfDAsaT1pK01hdGguaW11bChSLGZlKXwwLGk9aStNYXRoLmltdWwoeCxhZSl8MCxhPWErTWF0aC5pbXVsKHgsZmUpfDAsbj1uK01hdGguaW11bChTLHNlKXwwLGk9aStNYXRoLmltdWwoUyxkZSl8MCxpPWkrTWF0aC5pbXVsKEEsc2UpfDAsYT1hK01hdGguaW11bChBLGRlKXwwLG49bitNYXRoLmltdWwodyx1ZSl8MCxpPWkrTWF0aC5pbXVsKHcsaGUpfDAsaT1pK01hdGguaW11bChfLHVlKXwwLGE9YStNYXRoLmltdWwoXyxoZSl8MCxuPW4rTWF0aC5pbXVsKGcsYmUpfDAsaT1pK01hdGguaW11bChnLHBlKXwwLGk9aStNYXRoLmltdWwoeSxiZSl8MCxhPWErTWF0aC5pbXVsKHkscGUpfDA7dmFyIHhlPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyh4ZT4+PjI2KXwwLHhlJj02NzEwODg2MyxuPU1hdGguaW11bChxLFgpLGk9TWF0aC5pbXVsKHEsRyksaT1pK01hdGguaW11bChqLFgpfDAsYT1NYXRoLmltdWwoaixHKSxuPW4rTWF0aC5pbXVsKHosUSl8MCxpPWkrTWF0aC5pbXVsKHosZWUpfDAsaT1pK01hdGguaW11bChOLFEpfDAsYT1hK01hdGguaW11bChOLGVlKXwwLG49bitNYXRoLmltdWwoTCxyZSl8MCxpPWkrTWF0aC5pbXVsKEwsbmUpfDAsaT1pK01hdGguaW11bChPLHJlKXwwLGE9YStNYXRoLmltdWwoTyxuZSl8MCxuPW4rTWF0aC5pbXVsKEksYWUpfDAsaT1pK01hdGguaW11bChJLGZlKXwwLGk9aStNYXRoLmltdWwoUCxhZSl8MCxhPWErTWF0aC5pbXVsKFAsZmUpfDAsbj1uK01hdGguaW11bChSLHNlKXwwLGk9aStNYXRoLmltdWwoUixkZSl8MCxpPWkrTWF0aC5pbXVsKHgsc2UpfDAsYT1hK01hdGguaW11bCh4LGRlKXwwLG49bitNYXRoLmltdWwoUyx1ZSl8MCxpPWkrTWF0aC5pbXVsKFMsaGUpfDAsaT1pK01hdGguaW11bChBLHVlKXwwLGE9YStNYXRoLmltdWwoQSxoZSl8MCxuPW4rTWF0aC5pbXVsKHcsYmUpfDAsaT1pK01hdGguaW11bCh3LHBlKXwwLGk9aStNYXRoLmltdWwoXyxiZSl8MCxhPWErTWF0aC5pbXVsKF8scGUpfDA7dmFyIGtlPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhrZT4+PjI2KXwwLGtlJj02NzEwODg2MyxuPU1hdGguaW11bChxLFEpLGk9TWF0aC5pbXVsKHEsZWUpLGk9aStNYXRoLmltdWwoaixRKXwwLGE9TWF0aC5pbXVsKGosZWUpLG49bitNYXRoLmltdWwoeixyZSl8MCxpPWkrTWF0aC5pbXVsKHosbmUpfDAsaT1pK01hdGguaW11bChOLHJlKXwwLGE9YStNYXRoLmltdWwoTixuZSl8MCxuPW4rTWF0aC5pbXVsKEwsYWUpfDAsaT1pK01hdGguaW11bChMLGZlKXwwLGk9aStNYXRoLmltdWwoTyxhZSl8MCxhPWErTWF0aC5pbXVsKE8sZmUpfDAsbj1uK01hdGguaW11bChJLHNlKXwwLGk9aStNYXRoLmltdWwoSSxkZSl8MCxpPWkrTWF0aC5pbXVsKFAsc2UpfDAsYT1hK01hdGguaW11bChQLGRlKXwwLG49bitNYXRoLmltdWwoUix1ZSl8MCxpPWkrTWF0aC5pbXVsKFIsaGUpfDAsaT1pK01hdGguaW11bCh4LHVlKXwwLGE9YStNYXRoLmltdWwoeCxoZSl8MCxuPW4rTWF0aC5pbXVsKFMsYmUpfDAsaT1pK01hdGguaW11bChTLHBlKXwwLGk9aStNYXRoLmltdWwoQSxiZSl8MCxhPWErTWF0aC5pbXVsKEEscGUpfDA7dmFyIEllPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhJZT4+PjI2KXwwLEllJj02NzEwODg2MyxuPU1hdGguaW11bChxLHJlKSxpPU1hdGguaW11bChxLG5lKSxpPWkrTWF0aC5pbXVsKGoscmUpfDAsYT1NYXRoLmltdWwoaixuZSksbj1uK01hdGguaW11bCh6LGFlKXwwLGk9aStNYXRoLmltdWwoeixmZSl8MCxpPWkrTWF0aC5pbXVsKE4sYWUpfDAsYT1hK01hdGguaW11bChOLGZlKXwwLG49bitNYXRoLmltdWwoTCxzZSl8MCxpPWkrTWF0aC5pbXVsKEwsZGUpfDAsaT1pK01hdGguaW11bChPLHNlKXwwLGE9YStNYXRoLmltdWwoTyxkZSl8MCxuPW4rTWF0aC5pbXVsKEksdWUpfDAsaT1pK01hdGguaW11bChJLGhlKXwwLGk9aStNYXRoLmltdWwoUCx1ZSl8MCxhPWErTWF0aC5pbXVsKFAsaGUpfDAsbj1uK01hdGguaW11bChSLGJlKXwwLGk9aStNYXRoLmltdWwoUixwZSl8MCxpPWkrTWF0aC5pbXVsKHgsYmUpfDAsYT1hK01hdGguaW11bCh4LHBlKXwwO3ZhciBQZT0oZCtufDApKygoODE5MSZpKTw8MTMpfDA7ZD0oYSsoaT4+PjEzKXwwKSsoUGU+Pj4yNil8MCxQZSY9NjcxMDg4NjMsbj1NYXRoLmltdWwocSxhZSksaT1NYXRoLmltdWwocSxmZSksaT1pK01hdGguaW11bChqLGFlKXwwLGE9TWF0aC5pbXVsKGosZmUpLG49bitNYXRoLmltdWwoeixzZSl8MCxpPWkrTWF0aC5pbXVsKHosZGUpfDAsaT1pK01hdGguaW11bChOLHNlKXwwLGE9YStNYXRoLmltdWwoTixkZSl8MCxuPW4rTWF0aC5pbXVsKEwsdWUpfDAsaT1pK01hdGguaW11bChMLGhlKXwwLGk9aStNYXRoLmltdWwoTyx1ZSl8MCxhPWErTWF0aC5pbXVsKE8saGUpfDAsbj1uK01hdGguaW11bChJLGJlKXwwLGk9aStNYXRoLmltdWwoSSxwZSl8MCxpPWkrTWF0aC5pbXVsKFAsYmUpfDAsYT1hK01hdGguaW11bChQLHBlKXwwO3ZhciBUZT0oZCtufDApKygoODE5MSZpKTw8MTMpfDA7ZD0oYSsoaT4+PjEzKXwwKSsoVGU+Pj4yNil8MCxUZSY9NjcxMDg4NjMsbj1NYXRoLmltdWwocSxzZSksaT1NYXRoLmltdWwocSxkZSksaT1pK01hdGguaW11bChqLHNlKXwwLGE9TWF0aC5pbXVsKGosZGUpLG49bitNYXRoLmltdWwoeix1ZSl8MCxpPWkrTWF0aC5pbXVsKHosaGUpfDAsaT1pK01hdGguaW11bChOLHVlKXwwLGE9YStNYXRoLmltdWwoTixoZSl8MCxuPW4rTWF0aC5pbXVsKEwsYmUpfDAsaT1pK01hdGguaW11bChMLHBlKXwwLGk9aStNYXRoLmltdWwoTyxiZSl8MCxhPWErTWF0aC5pbXVsKE8scGUpfDA7dmFyIExlPShkK258MCkrKCg4MTkxJmkpPDwxMyl8MDtkPShhKyhpPj4+MTMpfDApKyhMZT4+PjI2KXwwLExlJj02NzEwODg2MyxuPU1hdGguaW11bChxLHVlKSxpPU1hdGguaW11bChxLGhlKSxpPWkrTWF0aC5pbXVsKGosdWUpfDAsYT1NYXRoLmltdWwoaixoZSksbj1uK01hdGguaW11bCh6LGJlKXwwLGk9aStNYXRoLmltdWwoeixwZSl8MCxpPWkrTWF0aC5pbXVsKE4sYmUpfDAsYT1hK01hdGguaW11bChOLHBlKXwwO3ZhciBPZT0oZCtufDApKygoODE5MSZpKTw8MTMpfDA7ZD0oYSsoaT4+PjEzKXwwKSsoT2U+Pj4yNil8MCxPZSY9NjcxMDg4NjMsbj1NYXRoLmltdWwocSxiZSksaT1NYXRoLmltdWwocSxwZSksaT1pK01hdGguaW11bChqLGJlKXwwLGE9TWF0aC5pbXVsKGoscGUpO3ZhciBCZT0oZCtufDApKygoODE5MSZpKTw8MTMpfDA7cmV0dXJuIGQ9KGErKGk+Pj4xMyl8MCkrKEJlPj4+MjYpfDAsQmUmPTY3MTA4ODYzLHNbMF09bWUsc1sxXT1nZSxzWzJdPXllLHNbM109dmUsc1s0XT13ZSxzWzVdPV9lLHNbNl09TWUsc1s3XT1TZSxzWzhdPUFlLHNbOV09RWUsc1sxMF09UmUsc1sxMV09eGUsc1sxMl09a2Usc1sxM109SWUsc1sxNF09UGUsc1sxNV09VGUsc1sxNl09TGUsc1sxN109T2Usc1sxOF09QmUsMCE9PWQmJihzWzE5XT1kLHIubGVuZ3RoKyspLHJ9O2Z1bmN0aW9uIG0oZSx0LHIpe3IubmVnYXRpdmU9dC5uZWdhdGl2ZV5lLm5lZ2F0aXZlLHIubGVuZ3RoPWUubGVuZ3RoK3QubGVuZ3RoO2Zvcih2YXIgbj0wLGk9MCxhPTA7YTxyLmxlbmd0aC0xO2ErKyl7dmFyIGY9aTtpPTA7Zm9yKHZhciBvPTY3MTA4ODYzJm4scz1NYXRoLm1pbihhLHQubGVuZ3RoLTEpLGQ9TWF0aC5tYXgoMCxhLWUubGVuZ3RoKzEpO2Q8PXM7ZCsrKXt2YXIgYz1hLWQsdT0wfGUud29yZHNbY10saD0wfHQud29yZHNbZF0sbD11KmgsYj02NzEwODg2MyZsO2Y9ZisobC82NzEwODg2NHwwKXwwLGI9YitvfDAsbz02NzEwODg2MyZiLGY9ZisoYj4+PjI2KXwwLGkrPWY+Pj4yNixmJj02NzEwODg2M31yLndvcmRzW2FdPW8sbj1mLGY9aX1yZXR1cm4gMCE9PW4/ci53b3Jkc1thXT1uOnIubGVuZ3RoLS0sci5zdHJpcCgpfWZ1bmN0aW9uIGcoZSx0LHIpe3ZhciBuPW5ldyB5O3JldHVybiBuLm11bHAoZSx0LHIpfWZ1bmN0aW9uIHkoZSx0KXt0aGlzLng9ZSx0aGlzLnk9dH1NYXRoLmltdWx8fChwPWIpLGEucHJvdG90eXBlLm11bFRvPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10aGlzLmxlbmd0aCtlLmxlbmd0aDtyZXR1cm4gcj0xMD09PXRoaXMubGVuZ3RoJiYxMD09PWUubGVuZ3RoP3AodGhpcyxlLHQpOm48NjM/Yih0aGlzLGUsdCk6bjwxMDI0P20odGhpcyxlLHQpOmcodGhpcyxlLHQpLHJ9LHkucHJvdG90eXBlLm1ha2VSQlQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PW5ldyBBcnJheShlKSxyPWEucHJvdG90eXBlLl9jb3VudEJpdHMoZSktMSxuPTA7bjxlO24rKyl0W25dPXRoaXMucmV2QmluKG4scixlKTtyZXR1cm4gdH0seS5wcm90b3R5cGUucmV2QmluPWZ1bmN0aW9uKGUsdCxyKXtpZigwPT09ZXx8ZT09PXItMSlyZXR1cm4gZTtmb3IodmFyIG49MCxpPTA7aTx0O2krKylufD0oMSZlKTw8dC1pLTEsZT4+PTE7cmV0dXJuIG59LHkucHJvdG90eXBlLnBlcm11dGU9ZnVuY3Rpb24oZSx0LHIsbixpLGEpe2Zvcih2YXIgZj0wO2Y8YTtmKyspbltmXT10W2VbZl1dLGlbZl09cltlW2ZdXX0seS5wcm90b3R5cGUudHJhbnNmb3JtPWZ1bmN0aW9uKGUsdCxyLG4saSxhKXt0aGlzLnBlcm11dGUoYSxlLHQscixuLGkpO2Zvcih2YXIgZj0xO2Y8aTtmPDw9MSlmb3IodmFyIG89Zjw8MSxzPU1hdGguY29zKDIqTWF0aC5QSS9vKSxkPU1hdGguc2luKDIqTWF0aC5QSS9vKSxjPTA7YzxpO2MrPW8pZm9yKHZhciB1PXMsaD1kLGw9MDtsPGY7bCsrKXt2YXIgYj1yW2MrbF0scD1uW2MrbF0sbT1yW2MrbCtmXSxnPW5bYytsK2ZdLHk9dSptLWgqZztnPXUqZytoKm0sbT15LHJbYytsXT1iK20sbltjK2xdPXArZyxyW2MrbCtmXT1iLW0sbltjK2wrZl09cC1nLGwhPT1vJiYoeT1zKnUtZCpoLGg9cypoK2QqdSx1PXkpfX0seS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2I9ZnVuY3Rpb24oZSx0KXt2YXIgcj0xfE1hdGgubWF4KHQsZSksbj0xJnIsaT0wO2ZvcihyPXIvMnwwO3I7cj4+Pj0xKWkrKztyZXR1cm4gMTw8aSsxK259LHkucHJvdG90eXBlLmNvbmp1Z2F0ZT1mdW5jdGlvbihlLHQscil7aWYoIShyPD0xKSlmb3IodmFyIG49MDtuPHIvMjtuKyspe3ZhciBpPWVbbl07ZVtuXT1lW3Itbi0xXSxlW3Itbi0xXT1pLGk9dFtuXSx0W25dPS10W3Itbi0xXSx0W3Itbi0xXT0taX19LHkucHJvdG90eXBlLm5vcm1hbGl6ZTEzYj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wLG49MDtuPHQvMjtuKyspe3ZhciBpPTgxOTIqTWF0aC5yb3VuZChlWzIqbisxXS90KStNYXRoLnJvdW5kKGVbMipuXS90KStyO2Vbbl09NjcxMDg4NjMmaSxyPWk8NjcxMDg4NjQ/MDppLzY3MTA4ODY0fDB9cmV0dXJuIGV9LHkucHJvdG90eXBlLmNvbnZlcnQxM2I9ZnVuY3Rpb24oZSx0LHIsaSl7Zm9yKHZhciBhPTAsZj0wO2Y8dDtmKyspYSs9MHxlW2ZdLHJbMipmXT04MTkxJmEsYT4+Pj0xMyxyWzIqZisxXT04MTkxJmEsYT4+Pj0xMztmb3IoZj0yKnQ7ZjxpOysrZilyW2ZdPTA7bigwPT09YSksbigwPT09KC04MTkyJmEpKX0seS5wcm90b3R5cGUuc3R1Yj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09MDtyZXR1cm4gdH0seS5wcm90b3R5cGUubXVscD1mdW5jdGlvbihlLHQscil7dmFyIG49Mip0aGlzLmd1ZXNzTGVuMTNiKGUubGVuZ3RoLHQubGVuZ3RoKSxpPXRoaXMubWFrZVJCVChuKSxhPXRoaXMuc3R1YihuKSxmPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxzPW5ldyBBcnJheShuKSxkPW5ldyBBcnJheShuKSxjPW5ldyBBcnJheShuKSx1PW5ldyBBcnJheShuKSxoPXIud29yZHM7aC5sZW5ndGg9bix0aGlzLmNvbnZlcnQxM2IoZS53b3JkcyxlLmxlbmd0aCxmLG4pLHRoaXMuY29udmVydDEzYih0LndvcmRzLHQubGVuZ3RoLGQsbiksdGhpcy50cmFuc2Zvcm0oZixhLG8scyxuLGkpLHRoaXMudHJhbnNmb3JtKGQsYSxjLHUsbixpKTtmb3IodmFyIGw9MDtsPG47bCsrKXt2YXIgYj1vW2xdKmNbbF0tc1tsXSp1W2xdO3NbbF09b1tsXSp1W2xdK3NbbF0qY1tsXSxvW2xdPWJ9cmV0dXJuIHRoaXMuY29uanVnYXRlKG8scyxuKSx0aGlzLnRyYW5zZm9ybShvLHMsaCxhLG4saSksdGhpcy5jb25qdWdhdGUoaCxhLG4pLHRoaXMubm9ybWFsaXplMTNiKGgsbiksci5uZWdhdGl2ZT1lLm5lZ2F0aXZlXnQubmVnYXRpdmUsci5sZW5ndGg9ZS5sZW5ndGgrdC5sZW5ndGgsci5zdHJpcCgpfSxhLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGEobnVsbCk7cmV0dXJuIHQud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2UubGVuZ3RoKSx0aGlzLm11bFRvKGUsdCl9LGEucHJvdG90eXBlLm11bGY9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IGEobnVsbCk7cmV0dXJuIHQud29yZHM9bmV3IEFycmF5KHRoaXMubGVuZ3RoK2UubGVuZ3RoKSxnKHRoaXMsZSx0KX0sYS5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKGUsdGhpcyl9LGEucHJvdG90eXBlLmltdWxuPWZ1bmN0aW9uKGUpe24oIm51bWJlciI9PT10eXBlb2YgZSksbihlPDY3MTA4ODY0KTtmb3IodmFyIHQ9MCxyPTA7cjx0aGlzLmxlbmd0aDtyKyspe3ZhciBpPSgwfHRoaXMud29yZHNbcl0pKmUsYT0oNjcxMDg4NjMmaSkrKDY3MTA4ODYzJnQpO3Q+Pj0yNix0Kz1pLzY3MTA4ODY0fDAsdCs9YT4+PjI2LHRoaXMud29yZHNbcl09NjcxMDg4NjMmYX1yZXR1cm4gMCE9PXQmJih0aGlzLndvcmRzW3JdPXQsdGhpcy5sZW5ndGgrKyksdGhpc30sYS5wcm90b3R5cGUubXVsbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKGUpfSxhLnByb3RvdHlwZS5zcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tdWwodGhpcyl9LGEucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSl9LGEucHJvdG90eXBlLnBvdz1mdW5jdGlvbihlKXt2YXIgdD1sKGUpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gbmV3IGEoMSk7Zm9yKHZhciByPXRoaXMsbj0wO248dC5sZW5ndGg7bisrLHI9ci5zcXIoKSlpZigwIT09dFtuXSlicmVhaztpZigrK248dC5sZW5ndGgpZm9yKHZhciBpPXIuc3FyKCk7bjx0Lmxlbmd0aDtuKyssaT1pLnNxcigpKTAhPT10W25dJiYocj1yLm11bChpKSk7cmV0dXJuIHJ9LGEucHJvdG90eXBlLml1c2hsbj1mdW5jdGlvbihlKXtuKCJudW1iZXIiPT09dHlwZW9mIGUmJmU+PTApO3ZhciB0LHI9ZSUyNixpPShlLXIpLzI2LGE9NjcxMDg4NjM+Pj4yNi1yPDwyNi1yO2lmKDAhPT1yKXt2YXIgZj0wO2Zvcih0PTA7dDx0aGlzLmxlbmd0aDt0Kyspe3ZhciBvPXRoaXMud29yZHNbdF0mYSxzPSgwfHRoaXMud29yZHNbdF0pLW88PHI7dGhpcy53b3Jkc1t0XT1zfGYsZj1vPj4+MjYtcn1mJiYodGhpcy53b3Jkc1t0XT1mLHRoaXMubGVuZ3RoKyspfWlmKDAhPT1pKXtmb3IodD10aGlzLmxlbmd0aC0xO3Q+PTA7dC0tKXRoaXMud29yZHNbdCtpXT10aGlzLndvcmRzW3RdO2Zvcih0PTA7dDxpO3QrKyl0aGlzLndvcmRzW3RdPTA7dGhpcy5sZW5ndGgrPWl9cmV0dXJuIHRoaXMuc3RyaXAoKX0sYS5wcm90b3R5cGUuaXNobG49ZnVuY3Rpb24oZSl7cmV0dXJuIG4oMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaGxuKGUpfSxhLnByb3RvdHlwZS5pdXNocm49ZnVuY3Rpb24oZSx0LHIpe3ZhciBpO24oIm51bWJlciI9PT10eXBlb2YgZSYmZT49MCksaT10Pyh0LXQlMjYpLzI2OjA7dmFyIGE9ZSUyNixmPU1hdGgubWluKChlLWEpLzI2LHRoaXMubGVuZ3RoKSxvPTY3MTA4ODYzXjY3MTA4ODYzPj4+YTw8YSxzPXI7aWYoaS09ZixpPU1hdGgubWF4KDAsaSkscyl7Zm9yKHZhciBkPTA7ZDxmO2QrKylzLndvcmRzW2RdPXRoaXMud29yZHNbZF07cy5sZW5ndGg9Zn1pZigwPT09Zik7ZWxzZSBpZih0aGlzLmxlbmd0aD5mKWZvcih0aGlzLmxlbmd0aC09ZixkPTA7ZDx0aGlzLmxlbmd0aDtkKyspdGhpcy53b3Jkc1tkXT10aGlzLndvcmRzW2QrZl07ZWxzZSB0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MTt2YXIgYz0wO2ZvcihkPXRoaXMubGVuZ3RoLTE7ZD49MCYmKDAhPT1jfHxkPj1pKTtkLS0pe3ZhciB1PTB8dGhpcy53b3Jkc1tkXTt0aGlzLndvcmRzW2RdPWM8PDI2LWF8dT4+PmEsYz11Jm99cmV0dXJuIHMmJjAhPT1jJiYocy53b3Jkc1tzLmxlbmd0aCsrXT1jKSwwPT09dGhpcy5sZW5ndGgmJih0aGlzLndvcmRzWzBdPTAsdGhpcy5sZW5ndGg9MSksdGhpcy5zdHJpcCgpfSxhLnByb3RvdHlwZS5pc2hybj1mdW5jdGlvbihlLHQscil7cmV0dXJuIG4oMD09PXRoaXMubmVnYXRpdmUpLHRoaXMuaXVzaHJuKGUsdCxyKX0sYS5wcm90b3R5cGUuc2hsbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGUpfSxhLnByb3RvdHlwZS51c2hsbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihlKX0sYS5wcm90b3R5cGUuc2hybj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGUpfSxhLnByb3RvdHlwZS51c2hybj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihlKX0sYS5wcm90b3R5cGUudGVzdG49ZnVuY3Rpb24oZSl7bigibnVtYmVyIj09PXR5cGVvZiBlJiZlPj0wKTt2YXIgdD1lJTI2LHI9KGUtdCkvMjYsaT0xPDx0O2lmKHRoaXMubGVuZ3RoPD1yKXJldHVybiExO3ZhciBhPXRoaXMud29yZHNbcl07cmV0dXJuISEoYSZpKX0sYS5wcm90b3R5cGUuaW1hc2tuPWZ1bmN0aW9uKGUpe24oIm51bWJlciI9PT10eXBlb2YgZSYmZT49MCk7dmFyIHQ9ZSUyNixyPShlLXQpLzI2O2lmKG4oMD09PXRoaXMubmVnYXRpdmUsImltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycyIpLHRoaXMubGVuZ3RoPD1yKXJldHVybiB0aGlzO2lmKDAhPT10JiZyKyssdGhpcy5sZW5ndGg9TWF0aC5taW4ocix0aGlzLmxlbmd0aCksMCE9PXQpe3ZhciBpPTY3MTA4ODYzXjY3MTA4ODYzPj4+dDw8dDt0aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdJj1pfXJldHVybiB0aGlzLnN0cmlwKCl9LGEucHJvdG90eXBlLm1hc2tuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGUpfSxhLnByb3RvdHlwZS5pYWRkbj1mdW5jdGlvbihlKXtyZXR1cm4gbigibnVtYmVyIj09PXR5cGVvZiBlKSxuKGU8NjcxMDg4NjQpLGU8MD90aGlzLmlzdWJuKC1lKTowIT09dGhpcy5uZWdhdGl2ZT8xPT09dGhpcy5sZW5ndGgmJigwfHRoaXMud29yZHNbMF0pPGU/KHRoaXMud29yZHNbMF09ZS0oMHx0aGlzLndvcmRzWzBdKSx0aGlzLm5lZ2F0aXZlPTAsdGhpcyk6KHRoaXMubmVnYXRpdmU9MCx0aGlzLmlzdWJuKGUpLHRoaXMubmVnYXRpdmU9MSx0aGlzKTp0aGlzLl9pYWRkbihlKX0sYS5wcm90b3R5cGUuX2lhZGRuPWZ1bmN0aW9uKGUpe3RoaXMud29yZHNbMF0rPWU7Zm9yKHZhciB0PTA7dDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t0XT49NjcxMDg4NjQ7dCsrKXRoaXMud29yZHNbdF0tPTY3MTA4ODY0LHQ9PT10aGlzLmxlbmd0aC0xP3RoaXMud29yZHNbdCsxXT0xOnRoaXMud29yZHNbdCsxXSsrO3JldHVybiB0aGlzLmxlbmd0aD1NYXRoLm1heCh0aGlzLmxlbmd0aCx0KzEpLHRoaXN9LGEucHJvdG90eXBlLmlzdWJuPWZ1bmN0aW9uKGUpe2lmKG4oIm51bWJlciI9PT10eXBlb2YgZSksbihlPDY3MTA4ODY0KSxlPDApcmV0dXJuIHRoaXMuaWFkZG4oLWUpO2lmKDAhPT10aGlzLm5lZ2F0aXZlKXJldHVybiB0aGlzLm5lZ2F0aXZlPTAsdGhpcy5pYWRkbihlKSx0aGlzLm5lZ2F0aXZlPTEsdGhpcztpZih0aGlzLndvcmRzWzBdLT1lLDE9PT10aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1swXTwwKXRoaXMud29yZHNbMF09LXRoaXMud29yZHNbMF0sdGhpcy5uZWdhdGl2ZT0xO2Vsc2UgZm9yKHZhciB0PTA7dDx0aGlzLmxlbmd0aCYmdGhpcy53b3Jkc1t0XTwwO3QrKyl0aGlzLndvcmRzW3RdKz02NzEwODg2NCx0aGlzLndvcmRzW3QrMV0tPTE7cmV0dXJuIHRoaXMuc3RyaXAoKX0sYS5wcm90b3R5cGUuYWRkbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKGUpfSxhLnByb3RvdHlwZS5zdWJuPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4oZSl9LGEucHJvdG90eXBlLmlhYnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0wLHRoaXN9LGEucHJvdG90eXBlLmFicz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsb25lKCkuaWFicygpfSxhLnByb3RvdHlwZS5faXNobG5zdWJtdWw9ZnVuY3Rpb24oZSx0LHIpe3ZhciBpLGEsZj1lLmxlbmd0aCtyO3RoaXMuX2V4cGFuZChmKTt2YXIgbz0wO2ZvcihpPTA7aTxlLmxlbmd0aDtpKyspe2E9KDB8dGhpcy53b3Jkc1tpK3JdKStvO3ZhciBzPSgwfGUud29yZHNbaV0pKnQ7YS09NjcxMDg4NjMmcyxvPShhPj4yNiktKHMvNjcxMDg4NjR8MCksdGhpcy53b3Jkc1tpK3JdPTY3MTA4ODYzJmF9Zm9yKDtpPHRoaXMubGVuZ3RoLXI7aSsrKWE9KDB8dGhpcy53b3Jkc1tpK3JdKStvLG89YT4+MjYsdGhpcy53b3Jkc1tpK3JdPTY3MTA4ODYzJmE7aWYoMD09PW8pcmV0dXJuIHRoaXMuc3RyaXAoKTtmb3IobigtMT09PW8pLG89MCxpPTA7aTx0aGlzLmxlbmd0aDtpKyspYT0tKDB8dGhpcy53b3Jkc1tpXSkrbyxvPWE+PjI2LHRoaXMud29yZHNbaV09NjcxMDg4NjMmYTtyZXR1cm4gdGhpcy5uZWdhdGl2ZT0xLHRoaXMuc3RyaXAoKX0sYS5wcm90b3R5cGUuX3dvcmREaXY9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmxlbmd0aC1lLmxlbmd0aCxuPXRoaXMuY2xvbmUoKSxpPWUsZj0wfGkud29yZHNbaS5sZW5ndGgtMV0sbz10aGlzLl9jb3VudEJpdHMoZik7cj0yNi1vLDAhPT1yJiYoaT1pLnVzaGxuKHIpLG4uaXVzaGxuKHIpLGY9MHxpLndvcmRzW2kubGVuZ3RoLTFdKTt2YXIgcyxkPW4ubGVuZ3RoLWkubGVuZ3RoO2lmKCJtb2QiIT09dCl7cz1uZXcgYShudWxsKSxzLmxlbmd0aD1kKzEscy53b3Jkcz1uZXcgQXJyYXkocy5sZW5ndGgpO2Zvcih2YXIgYz0wO2M8cy5sZW5ndGg7YysrKXMud29yZHNbY109MH12YXIgdT1uLmNsb25lKCkuX2lzaGxuc3VibXVsKGksMSxkKTswPT09dS5uZWdhdGl2ZSYmKG49dSxzJiYocy53b3Jkc1tkXT0xKSk7Zm9yKHZhciBoPWQtMTtoPj0wO2gtLSl7dmFyIGw9NjcxMDg4NjQqKDB8bi53b3Jkc1tpLmxlbmd0aCtoXSkrKDB8bi53b3Jkc1tpLmxlbmd0aCtoLTFdKTtsPU1hdGgubWluKGwvZnwwLDY3MTA4ODYzKSxuLl9pc2hsbnN1Ym11bChpLGwsaCk7d2hpbGUoMCE9PW4ubmVnYXRpdmUpbC0tLG4ubmVnYXRpdmU9MCxuLl9pc2hsbnN1Ym11bChpLDEsaCksbi5pc1plcm8oKXx8KG4ubmVnYXRpdmVePTEpO3MmJihzLndvcmRzW2hdPWwpfXJldHVybiBzJiZzLnN0cmlwKCksbi5zdHJpcCgpLCJkaXYiIT09dCYmMCE9PXImJm4uaXVzaHJuKHIpLHtkaXY6c3x8bnVsbCxtb2Q6bn19LGEucHJvdG90eXBlLmRpdm1vZD1mdW5jdGlvbihlLHQscil7cmV0dXJuIG4oIWUuaXNaZXJvKCkpLHRoaXMuaXNaZXJvKCk/e2RpdjpuZXcgYSgwKSxtb2Q6bmV3IGEoMCl9OjAhPT10aGlzLm5lZ2F0aXZlJiYwPT09ZS5uZWdhdGl2ZT8obz10aGlzLm5lZygpLmRpdm1vZChlLHQpLCJtb2QiIT09dCYmKGk9by5kaXYubmVnKCkpLCJkaXYiIT09dCYmKGY9by5tb2QubmVnKCksciYmMCE9PWYubmVnYXRpdmUmJmYuaWFkZChlKSkse2RpdjppLG1vZDpmfSk6MD09PXRoaXMubmVnYXRpdmUmJjAhPT1lLm5lZ2F0aXZlPyhvPXRoaXMuZGl2bW9kKGUubmVnKCksdCksIm1vZCIhPT10JiYoaT1vLmRpdi5uZWcoKSkse2RpdjppLG1vZDpvLm1vZH0pOjAhPT0odGhpcy5uZWdhdGl2ZSZlLm5lZ2F0aXZlKT8obz10aGlzLm5lZygpLmRpdm1vZChlLm5lZygpLHQpLCJkaXYiIT09dCYmKGY9by5tb2QubmVnKCksciYmMCE9PWYubmVnYXRpdmUmJmYuaXN1YihlKSkse2RpdjpvLmRpdixtb2Q6Zn0pOmUubGVuZ3RoPnRoaXMubGVuZ3RofHx0aGlzLmNtcChlKTwwP3tkaXY6bmV3IGEoMCksbW9kOnRoaXN9OjE9PT1lLmxlbmd0aD8iZGl2Ij09PXQ/e2Rpdjp0aGlzLmRpdm4oZS53b3Jkc1swXSksbW9kOm51bGx9OiJtb2QiPT09dD97ZGl2Om51bGwsbW9kOm5ldyBhKHRoaXMubW9kbihlLndvcmRzWzBdKSl9OntkaXY6dGhpcy5kaXZuKGUud29yZHNbMF0pLG1vZDpuZXcgYSh0aGlzLm1vZG4oZS53b3Jkc1swXSkpfTp0aGlzLl93b3JkRGl2KGUsdCk7dmFyIGksZixvfSxhLnByb3RvdHlwZS5kaXY9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGl2bW9kKGUsImRpdiIsITEpLmRpdn0sYS5wcm90b3R5cGUubW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmRpdm1vZChlLCJtb2QiLCExKS5tb2R9LGEucHJvdG90eXBlLnVtb2Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZGl2bW9kKGUsIm1vZCIsITApLm1vZH0sYS5wcm90b3R5cGUuZGl2Um91bmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kaXZtb2QoZSk7aWYodC5tb2QuaXNaZXJvKCkpcmV0dXJuIHQuZGl2O3ZhciByPTAhPT10LmRpdi5uZWdhdGl2ZT90Lm1vZC5pc3ViKGUpOnQubW9kLG49ZS51c2hybigxKSxpPWUuYW5kbG4oMSksYT1yLmNtcChuKTtyZXR1cm4gYTwwfHwxPT09aSYmMD09PWE/dC5kaXY6MCE9PXQuZGl2Lm5lZ2F0aXZlP3QuZGl2LmlzdWJuKDEpOnQuZGl2LmlhZGRuKDEpfSxhLnByb3RvdHlwZS5tb2RuPWZ1bmN0aW9uKGUpe24oZTw9NjcxMDg4NjMpO2Zvcih2YXIgdD0oMTw8MjYpJWUscj0wLGk9dGhpcy5sZW5ndGgtMTtpPj0wO2ktLSlyPSh0KnIrKDB8dGhpcy53b3Jkc1tpXSkpJWU7cmV0dXJuIHJ9LGEucHJvdG90eXBlLmlkaXZuPWZ1bmN0aW9uKGUpe24oZTw9NjcxMDg4NjMpO2Zvcih2YXIgdD0wLHI9dGhpcy5sZW5ndGgtMTtyPj0wO3ItLSl7dmFyIGk9KDB8dGhpcy53b3Jkc1tyXSkrNjcxMDg4NjQqdDt0aGlzLndvcmRzW3JdPWkvZXwwLHQ9aSVlfXJldHVybiB0aGlzLnN0cmlwKCl9LGEucHJvdG90eXBlLmRpdm49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihlKX0sYS5wcm90b3R5cGUuZWdjZD1mdW5jdGlvbihlKXtuKDA9PT1lLm5lZ2F0aXZlKSxuKCFlLmlzWmVybygpKTt2YXIgdD10aGlzLHI9ZS5jbG9uZSgpO3Q9MCE9PXQubmVnYXRpdmU/dC51bW9kKGUpOnQuY2xvbmUoKTt2YXIgaT1uZXcgYSgxKSxmPW5ldyBhKDApLG89bmV3IGEoMCkscz1uZXcgYSgxKSxkPTA7d2hpbGUodC5pc0V2ZW4oKSYmci5pc0V2ZW4oKSl0Lml1c2hybigxKSxyLml1c2hybigxKSwrK2Q7dmFyIGM9ci5jbG9uZSgpLHU9dC5jbG9uZSgpO3doaWxlKCF0LmlzWmVybygpKXtmb3IodmFyIGg9MCxsPTE7MD09PSh0LndvcmRzWzBdJmwpJiZoPDI2OysraCxsPDw9MSk7aWYoaD4wKXt0Lml1c2hybihoKTt3aGlsZShoLS0gPjApKGkuaXNPZGQoKXx8Zi5pc09kZCgpKSYmKGkuaWFkZChjKSxmLmlzdWIodSkpLGkuaXVzaHJuKDEpLGYuaXVzaHJuKDEpfWZvcih2YXIgYj0wLHA9MTswPT09KHIud29yZHNbMF0mcCkmJmI8MjY7KytiLHA8PD0xKTtpZihiPjApe3IuaXVzaHJuKGIpO3doaWxlKGItLSA+MCkoby5pc09kZCgpfHxzLmlzT2RkKCkpJiYoby5pYWRkKGMpLHMuaXN1Yih1KSksby5pdXNocm4oMSkscy5pdXNocm4oMSl9dC5jbXAocik+PTA/KHQuaXN1YihyKSxpLmlzdWIobyksZi5pc3ViKHMpKTooci5pc3ViKHQpLG8uaXN1YihpKSxzLmlzdWIoZikpfXJldHVybnthOm8sYjpzLGdjZDpyLml1c2hsbihkKX19LGEucHJvdG90eXBlLl9pbnZtcD1mdW5jdGlvbihlKXtuKDA9PT1lLm5lZ2F0aXZlKSxuKCFlLmlzWmVybygpKTt2YXIgdD10aGlzLHI9ZS5jbG9uZSgpO3Q9MCE9PXQubmVnYXRpdmU/dC51bW9kKGUpOnQuY2xvbmUoKTt2YXIgaSxmPW5ldyBhKDEpLG89bmV3IGEoMCkscz1yLmNsb25lKCk7d2hpbGUodC5jbXBuKDEpPjAmJnIuY21wbigxKT4wKXtmb3IodmFyIGQ9MCxjPTE7MD09PSh0LndvcmRzWzBdJmMpJiZkPDI2OysrZCxjPDw9MSk7aWYoZD4wKXt0Lml1c2hybihkKTt3aGlsZShkLS0gPjApZi5pc09kZCgpJiZmLmlhZGQocyksZi5pdXNocm4oMSl9Zm9yKHZhciB1PTAsaD0xOzA9PT0oci53b3Jkc1swXSZoKSYmdTwyNjsrK3UsaDw8PTEpO2lmKHU+MCl7ci5pdXNocm4odSk7d2hpbGUodS0tID4wKW8uaXNPZGQoKSYmby5pYWRkKHMpLG8uaXVzaHJuKDEpfXQuY21wKHIpPj0wPyh0LmlzdWIociksZi5pc3ViKG8pKTooci5pc3ViKHQpLG8uaXN1YihmKSl9cmV0dXJuIGk9MD09PXQuY21wbigxKT9mOm8saS5jbXBuKDApPDAmJmkuaWFkZChlKSxpfSxhLnByb3RvdHlwZS5nY2Q9ZnVuY3Rpb24oZSl7aWYodGhpcy5pc1plcm8oKSlyZXR1cm4gZS5hYnMoKTtpZihlLmlzWmVybygpKXJldHVybiB0aGlzLmFicygpO3ZhciB0PXRoaXMuY2xvbmUoKSxyPWUuY2xvbmUoKTt0Lm5lZ2F0aXZlPTAsci5uZWdhdGl2ZT0wO2Zvcih2YXIgbj0wO3QuaXNFdmVuKCkmJnIuaXNFdmVuKCk7bisrKXQuaXVzaHJuKDEpLHIuaXVzaHJuKDEpO2Rve3doaWxlKHQuaXNFdmVuKCkpdC5pdXNocm4oMSk7d2hpbGUoci5pc0V2ZW4oKSlyLml1c2hybigxKTt2YXIgaT10LmNtcChyKTtpZihpPDApe3ZhciBhPXQ7dD1yLHI9YX1lbHNlIGlmKDA9PT1pfHwwPT09ci5jbXBuKDEpKWJyZWFrO3QuaXN1YihyKX13aGlsZSgxKTtyZXR1cm4gci5pdXNobG4obil9LGEucHJvdG90eXBlLmludm09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWdjZChlKS5hLnVtb2QoZSl9LGEucHJvdG90eXBlLmlzRXZlbj1mdW5jdGlvbigpe3JldHVybiAwPT09KDEmdGhpcy53b3Jkc1swXSl9LGEucHJvdG90eXBlLmlzT2RkPWZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLndvcmRzWzBdKX0sYS5wcm90b3R5cGUuYW5kbG49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMud29yZHNbMF0mZX0sYS5wcm90b3R5cGUuYmluY249ZnVuY3Rpb24oZSl7bigibnVtYmVyIj09PXR5cGVvZiBlKTt2YXIgdD1lJTI2LHI9KGUtdCkvMjYsaT0xPDx0O2lmKHRoaXMubGVuZ3RoPD1yKXJldHVybiB0aGlzLl9leHBhbmQocisxKSx0aGlzLndvcmRzW3JdfD1pLHRoaXM7Zm9yKHZhciBhPWksZj1yOzAhPT1hJiZmPHRoaXMubGVuZ3RoO2YrKyl7dmFyIG89MHx0aGlzLndvcmRzW2ZdO28rPWEsYT1vPj4+MjYsbyY9NjcxMDg4NjMsdGhpcy53b3Jkc1tmXT1vfXJldHVybiAwIT09YSYmKHRoaXMud29yZHNbZl09YSx0aGlzLmxlbmd0aCsrKSx0aGlzfSxhLnByb3RvdHlwZS5pc1plcm89ZnVuY3Rpb24oKXtyZXR1cm4gMT09PXRoaXMubGVuZ3RoJiYwPT09dGhpcy53b3Jkc1swXX0sYS5wcm90b3R5cGUuY21wbj1mdW5jdGlvbihlKXt2YXIgdCxyPWU8MDtpZigwIT09dGhpcy5uZWdhdGl2ZSYmIXIpcmV0dXJuLTE7aWYoMD09PXRoaXMubmVnYXRpdmUmJnIpcmV0dXJuIDE7aWYodGhpcy5zdHJpcCgpLHRoaXMubGVuZ3RoPjEpdD0xO2Vsc2V7ciYmKGU9LWUpLG4oZTw9NjcxMDg4NjMsIk51bWJlciBpcyB0b28gYmlnIik7dmFyIGk9MHx0aGlzLndvcmRzWzBdO3Q9aT09PWU/MDppPGU/LTE6MX1yZXR1cm4gMCE9PXRoaXMubmVnYXRpdmU/MHwtdDp0fSxhLnByb3RvdHlwZS5jbXA9ZnVuY3Rpb24oZSl7aWYoMCE9PXRoaXMubmVnYXRpdmUmJjA9PT1lLm5lZ2F0aXZlKXJldHVybi0xO2lmKDA9PT10aGlzLm5lZ2F0aXZlJiYwIT09ZS5uZWdhdGl2ZSlyZXR1cm4gMTt2YXIgdD10aGlzLnVjbXAoZSk7cmV0dXJuIDAhPT10aGlzLm5lZ2F0aXZlPzB8LXQ6dH0sYS5wcm90b3R5cGUudWNtcD1mdW5jdGlvbihlKXtpZih0aGlzLmxlbmd0aD5lLmxlbmd0aClyZXR1cm4gMTtpZih0aGlzLmxlbmd0aDxlLmxlbmd0aClyZXR1cm4tMTtmb3IodmFyIHQ9MCxyPXRoaXMubGVuZ3RoLTE7cj49MDtyLS0pe3ZhciBuPTB8dGhpcy53b3Jkc1tyXSxpPTB8ZS53b3Jkc1tyXTtpZihuIT09aSl7bjxpP3Q9LTE6bj5pJiYodD0xKTticmVha319cmV0dXJuIHR9LGEucHJvdG90eXBlLmd0bj1mdW5jdGlvbihlKXtyZXR1cm4gMT09PXRoaXMuY21wbihlKX0sYS5wcm90b3R5cGUuZ3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT10aGlzLmNtcChlKX0sYS5wcm90b3R5cGUuZ3Rlbj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jbXBuKGUpPj0wfSxhLnByb3RvdHlwZS5ndGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY21wKGUpPj0wfSxhLnByb3RvdHlwZS5sdG49ZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT10aGlzLmNtcG4oZSl9LGEucHJvdG90eXBlLmx0PWZ1bmN0aW9uKGUpe3JldHVybi0xPT09dGhpcy5jbXAoZSl9LGEucHJvdG90eXBlLmx0ZW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY21wbihlKTw9MH0sYS5wcm90b3R5cGUubHRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNtcChlKTw9MH0sYS5wcm90b3R5cGUuZXFuPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09dGhpcy5jbXBuKGUpfSxhLnByb3RvdHlwZS5lcT1mdW5jdGlvbihlKXtyZXR1cm4gMD09PXRoaXMuY21wKGUpfSxhLnJlZD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IEUoZSl9LGEucHJvdG90eXBlLnRvUmVkPWZ1bmN0aW9uKGUpe3JldHVybiBuKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLG4oMD09PXRoaXMubmVnYXRpdmUsInJlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzIiksZS5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGUpfSxhLnByb3RvdHlwZS5mcm9tUmVkPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsImZyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQiKSx0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKX0sYS5wcm90b3R5cGUuX2ZvcmNlUmVkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJlZD1lLHRoaXN9LGEucHJvdG90eXBlLmZvcmNlUmVkPWZ1bmN0aW9uKGUpe3JldHVybiBuKCF0aGlzLnJlZCwiQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCIpLHRoaXMuX2ZvcmNlUmVkKGUpfSxhLnByb3RvdHlwZS5yZWRBZGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQsInJlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5hZGQodGhpcyxlKX0sYS5wcm90b3R5cGUucmVkSUFkZD1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLnJlZCwicmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5pYWRkKHRoaXMsZSl9LGEucHJvdG90eXBlLnJlZFN1Yj1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLnJlZCwicmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLnN1Yih0aGlzLGUpfSxhLnByb3RvdHlwZS5yZWRJU3ViPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMucmVkLCJyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLmlzdWIodGhpcyxlKX0sYS5wcm90b3R5cGUucmVkU2hsPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMucmVkLCJyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuc2hsKHRoaXMsZSl9LGEucHJvdG90eXBlLnJlZE11bD1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLnJlZCwicmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsZSksdGhpcy5yZWQubXVsKHRoaXMsZSl9LGEucHJvdG90eXBlLnJlZElNdWw9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQsInJlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLGUpLHRoaXMucmVkLmltdWwodGhpcyxlKX0sYS5wcm90b3R5cGUucmVkU3FyPWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5zcXIodGhpcyl9LGEucHJvdG90eXBlLnJlZElTcXI9ZnVuY3Rpb24oKXtyZXR1cm4gbih0aGlzLnJlZCwicmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5pc3FyKHRoaXMpfSxhLnByb3RvdHlwZS5yZWRTcXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcy5yZWQsInJlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQuc3FydCh0aGlzKX0sYS5wcm90b3R5cGUucmVkSW52bT1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLCJyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycyIpLHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpLHRoaXMucmVkLmludm0odGhpcyl9LGEucHJvdG90eXBlLnJlZE5lZz1mdW5jdGlvbigpe3JldHVybiBuKHRoaXMucmVkLCJyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIiksdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyksdGhpcy5yZWQubmVnKHRoaXMpfSxhLnByb3RvdHlwZS5yZWRQb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5yZWQmJiFlLnJlZCwicmVkUG93KG5vcm1hbE51bSkiKSx0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKSx0aGlzLnJlZC5wb3codGhpcyxlKX07dmFyIHY9e2syNTY6bnVsbCxwMjI0Om51bGwscDE5MjpudWxsLHAyNTUxOTpudWxsfTtmdW5jdGlvbiB3KGUsdCl7dGhpcy5uYW1lPWUsdGhpcy5wPW5ldyBhKHQsMTYpLHRoaXMubj10aGlzLnAuYml0TGVuZ3RoKCksdGhpcy5rPW5ldyBhKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKSx0aGlzLnRtcD10aGlzLl90bXAoKX1mdW5jdGlvbiBfKCl7dy5jYWxsKHRoaXMsImsyNTYiLCJmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZiIpfWZ1bmN0aW9uIE0oKXt3LmNhbGwodGhpcywicDIyNCIsImZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxIil9ZnVuY3Rpb24gUygpe3cuY2FsbCh0aGlzLCJwMTkyIiwiZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYiKX1mdW5jdGlvbiBBKCl7dy5jYWxsKHRoaXMsIjI1NTE5IiwiN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCIpfWZ1bmN0aW9uIEUoZSl7aWYoInN0cmluZyI9PT10eXBlb2YgZSl7dmFyIHQ9YS5fcHJpbWUoZSk7dGhpcy5tPXQucCx0aGlzLnByaW1lPXR9ZWxzZSBuKGUuZ3RuKDEpLCJtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEiKSx0aGlzLm09ZSx0aGlzLnByaW1lPW51bGx9ZnVuY3Rpb24gUihlKXtFLmNhbGwodGhpcyxlKSx0aGlzLnNoaWZ0PXRoaXMubS5iaXRMZW5ndGgoKSx0aGlzLnNoaWZ0JTI2IT09MCYmKHRoaXMuc2hpZnQrPTI2LXRoaXMuc2hpZnQlMjYpLHRoaXMucj1uZXcgYSgxKS5pdXNobG4odGhpcy5zaGlmdCksdGhpcy5yMj10aGlzLmltb2QodGhpcy5yLnNxcigpKSx0aGlzLnJpbnY9dGhpcy5yLl9pbnZtcCh0aGlzLm0pLHRoaXMubWludj10aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSksdGhpcy5taW52PXRoaXMubWludi51bW9kKHRoaXMuciksdGhpcy5taW52PXRoaXMuci5zdWIodGhpcy5taW52KX13LnByb3RvdHlwZS5fdG1wPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IGEobnVsbCk7cmV0dXJuIGUud29yZHM9bmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4vMTMpKSxlfSx3LnByb3RvdHlwZS5pcmVkdWNlPWZ1bmN0aW9uKGUpe3ZhciB0LHI9ZTtkb3t0aGlzLnNwbGl0KHIsdGhpcy50bXApLHI9dGhpcy5pbXVsSyhyKSxyPXIuaWFkZCh0aGlzLnRtcCksdD1yLmJpdExlbmd0aCgpfXdoaWxlKHQ+dGhpcy5uKTt2YXIgbj10PHRoaXMubj8tMTpyLnVjbXAodGhpcy5wKTtyZXR1cm4gMD09PW4/KHIud29yZHNbMF09MCxyLmxlbmd0aD0xKTpuPjA/ci5pc3ViKHRoaXMucCk6dm9pZCAwIT09ci5zdHJpcD9yLnN0cmlwKCk6ci5fc3RyaXAoKSxyfSx3LnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihlLHQpe2UuaXVzaHJuKHRoaXMubiwwLHQpfSx3LnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihlKXtyZXR1cm4gZS5pbXVsKHRoaXMuayl9LGkoXyx3KSxfLnByb3RvdHlwZS5zcGxpdD1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj00MTk0MzAzLG49TWF0aC5taW4oZS5sZW5ndGgsOSksaT0wO2k8bjtpKyspdC53b3Jkc1tpXT1lLndvcmRzW2ldO2lmKHQubGVuZ3RoPW4sZS5sZW5ndGg8PTkpcmV0dXJuIGUud29yZHNbMF09MCx2b2lkKGUubGVuZ3RoPTEpO3ZhciBhPWUud29yZHNbOV07Zm9yKHQud29yZHNbdC5sZW5ndGgrK109YSZyLGk9MTA7aTxlLmxlbmd0aDtpKyspe3ZhciBmPTB8ZS53b3Jkc1tpXTtlLndvcmRzW2ktMTBdPShmJnIpPDw0fGE+Pj4yMixhPWZ9YT4+Pj0yMixlLndvcmRzW2ktMTBdPWEsMD09PWEmJmUubGVuZ3RoPjEwP2UubGVuZ3RoLT0xMDplLmxlbmd0aC09OX0sXy5wcm90b3R5cGUuaW11bEs9ZnVuY3Rpb24oZSl7ZS53b3Jkc1tlLmxlbmd0aF09MCxlLndvcmRzW2UubGVuZ3RoKzFdPTAsZS5sZW5ndGgrPTI7Zm9yKHZhciB0PTAscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj0wfGUud29yZHNbcl07dCs9OTc3Km4sZS53b3Jkc1tyXT02NzEwODg2MyZ0LHQ9NjQqbisodC82NzEwODg2NHwwKX1yZXR1cm4gMD09PWUud29yZHNbZS5sZW5ndGgtMV0mJihlLmxlbmd0aC0tLDA9PT1lLndvcmRzW2UubGVuZ3RoLTFdJiZlLmxlbmd0aC0tKSxlfSxpKE0sdyksaShTLHcpLGkoQSx3KSxBLnByb3RvdHlwZS5pbXVsSz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPTE5KigwfGUud29yZHNbcl0pK3QsaT02NzEwODg2MyZuO24+Pj49MjYsZS53b3Jkc1tyXT1pLHQ9bn1yZXR1cm4gMCE9PXQmJihlLndvcmRzW2UubGVuZ3RoKytdPXQpLGV9LGEuX3ByaW1lPWZ1bmN0aW9uKGUpe2lmKHZbZV0pcmV0dXJuIHZbZV07dmFyIHQ7aWYoImsyNTYiPT09ZSl0PW5ldyBfO2Vsc2UgaWYoInAyMjQiPT09ZSl0PW5ldyBNO2Vsc2UgaWYoInAxOTIiPT09ZSl0PW5ldyBTO2Vsc2V7aWYoInAyNTUxOSIhPT1lKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmltZSAiK2UpO3Q9bmV3IEF9cmV0dXJuIHZbZV09dCx0fSxFLnByb3RvdHlwZS5fdmVyaWZ5MT1mdW5jdGlvbihlKXtuKDA9PT1lLm5lZ2F0aXZlLCJyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcyIpLG4oZS5yZWQsInJlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMiKX0sRS5wcm90b3R5cGUuX3ZlcmlmeTI9ZnVuY3Rpb24oZSx0KXtuKDA9PT0oZS5uZWdhdGl2ZXx0Lm5lZ2F0aXZlKSwicmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMiKSxuKGUucmVkJiZlLnJlZD09PXQucmVkLCJyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzIil9LEUucHJvdG90eXBlLmltb2Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucHJpbWU/dGhpcy5wcmltZS5pcmVkdWNlKGUpLl9mb3JjZVJlZCh0aGlzKTplLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLm5lZz1mdW5jdGlvbihlKXtyZXR1cm4gZS5pc1plcm8oKT9lLmNsb25lKCk6dGhpcy5tLnN1YihlKS5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmFkZCh0KTtyZXR1cm4gci5jbXAodGhpcy5tKT49MCYmci5pc3ViKHRoaXMubSksci5fZm9yY2VSZWQodGhpcyl9LEUucHJvdG90eXBlLmlhZGQ9ZnVuY3Rpb24oZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7dmFyIHI9ZS5pYWRkKHQpO3JldHVybiByLmNtcCh0aGlzLm0pPj0wJiZyLmlzdWIodGhpcy5tKSxyfSxFLnByb3RvdHlwZS5zdWI9ZnVuY3Rpb24oZSx0KXt0aGlzLl92ZXJpZnkyKGUsdCk7dmFyIHI9ZS5zdWIodCk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyLl9mb3JjZVJlZCh0aGlzKX0sRS5wcm90b3R5cGUuaXN1Yj1mdW5jdGlvbihlLHQpe3RoaXMuX3ZlcmlmeTIoZSx0KTt2YXIgcj1lLmlzdWIodCk7cmV0dXJuIHIuY21wbigwKTwwJiZyLmlhZGQodGhpcy5tKSxyfSxFLnByb3RvdHlwZS5zaGw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MShlKSx0aGlzLmltb2QoZS51c2hsbih0KSl9LEUucHJvdG90eXBlLmltdWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihlLHQpLHRoaXMuaW1vZChlLmltdWwodCkpfSxFLnByb3RvdHlwZS5tdWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdmVyaWZ5MihlLHQpLHRoaXMuaW1vZChlLm11bCh0KSl9LEUucHJvdG90eXBlLmlzcXI9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW11bChlLGUuY2xvbmUoKSl9LEUucHJvdG90eXBlLnNxcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5tdWwoZSxlKX0sRS5wcm90b3R5cGUuc3FydD1mdW5jdGlvbihlKXtpZihlLmlzWmVybygpKXJldHVybiBlLmNsb25lKCk7dmFyIHQ9dGhpcy5tLmFuZGxuKDMpO2lmKG4odCUyPT09MSksMz09PXQpe3ZhciByPXRoaXMubS5hZGQobmV3IGEoMSkpLml1c2hybigyKTtyZXR1cm4gdGhpcy5wb3coZSxyKX12YXIgaT10aGlzLm0uc3VibigxKSxmPTA7d2hpbGUoIWkuaXNaZXJvKCkmJjA9PT1pLmFuZGxuKDEpKWYrKyxpLml1c2hybigxKTtuKCFpLmlzWmVybygpKTt2YXIgbz1uZXcgYSgxKS50b1JlZCh0aGlzKSxzPW8ucmVkTmVnKCksZD10aGlzLm0uc3VibigxKS5pdXNocm4oMSksYz10aGlzLm0uYml0TGVuZ3RoKCk7Yz1uZXcgYSgyKmMqYykudG9SZWQodGhpcyk7d2hpbGUoMCE9PXRoaXMucG93KGMsZCkuY21wKHMpKWMucmVkSUFkZChzKTt2YXIgdT10aGlzLnBvdyhjLGkpLGg9dGhpcy5wb3coZSxpLmFkZG4oMSkuaXVzaHJuKDEpKSxsPXRoaXMucG93KGUsaSksYj1mO3doaWxlKDAhPT1sLmNtcChvKSl7Zm9yKHZhciBwPWwsbT0wOzAhPT1wLmNtcChvKTttKyspcD1wLnJlZFNxcigpO24obTxiKTt2YXIgZz10aGlzLnBvdyh1LG5ldyBhKDEpLml1c2hsbihiLW0tMSkpO2g9aC5yZWRNdWwoZyksdT1nLnJlZFNxcigpLGw9bC5yZWRNdWwodSksYj1tfXJldHVybiBofSxFLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGUpe3ZhciB0PWUuX2ludm1wKHRoaXMubSk7cmV0dXJuIDAhPT10Lm5lZ2F0aXZlPyh0Lm5lZ2F0aXZlPTAsdGhpcy5pbW9kKHQpLnJlZE5lZygpKTp0aGlzLmltb2QodCl9LEUucHJvdG90eXBlLnBvdz1mdW5jdGlvbihlLHQpe2lmKHQuaXNaZXJvKCkpcmV0dXJuIG5ldyBhKDEpLnRvUmVkKHRoaXMpO2lmKDA9PT10LmNtcG4oMSkpcmV0dXJuIGUuY2xvbmUoKTt2YXIgcj00LG49bmV3IEFycmF5KDE8PHIpO25bMF09bmV3IGEoMSkudG9SZWQodGhpcyksblsxXT1lO2Zvcih2YXIgaT0yO2k8bi5sZW5ndGg7aSsrKW5baV09dGhpcy5tdWwobltpLTFdLGUpO3ZhciBmPW5bMF0sbz0wLHM9MCxkPXQuYml0TGVuZ3RoKCklMjY7Zm9yKDA9PT1kJiYoZD0yNiksaT10Lmxlbmd0aC0xO2k+PTA7aS0tKXtmb3IodmFyIGM9dC53b3Jkc1tpXSx1PWQtMTt1Pj0wO3UtLSl7dmFyIGg9Yz4+dSYxO2YhPT1uWzBdJiYoZj10aGlzLnNxcihmKSksMCE9PWh8fDAhPT1vPyhvPDw9MSxvfD1oLHMrKywocz09PXJ8fDA9PT1pJiYwPT09dSkmJihmPXRoaXMubXVsKGYsbltvXSkscz0wLG89MCkpOnM9MH1kPTI2fXJldHVybiBmfSxFLnByb3RvdHlwZS5jb252ZXJ0VG89ZnVuY3Rpb24oZSl7dmFyIHQ9ZS51bW9kKHRoaXMubSk7cmV0dXJuIHQ9PT1lP3QuY2xvbmUoKTp0fSxFLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihlKXt2YXIgdD1lLmNsb25lKCk7cmV0dXJuIHQucmVkPW51bGwsdH0sYS5tb250PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUihlKX0saShSLEUpLFIucHJvdG90eXBlLmNvbnZlcnRUbz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbW9kKGUudXNobG4odGhpcy5zaGlmdCkpfSxSLnByb3RvdHlwZS5jb252ZXJ0RnJvbT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmltb2QoZS5tdWwodGhpcy5yaW52KSk7cmV0dXJuIHQucmVkPW51bGwsdH0sUi5wcm90b3R5cGUuaW11bD1mdW5jdGlvbihlLHQpe2lmKGUuaXNaZXJvKCl8fHQuaXNaZXJvKCkpcmV0dXJuIGUud29yZHNbMF09MCxlLmxlbmd0aD0xLGU7dmFyIHI9ZS5pbXVsKHQpLG49ci5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSksaT1yLmlzdWIobikuaXVzaHJuKHRoaXMuc2hpZnQpLGE9aTtyZXR1cm4gaS5jbXAodGhpcy5tKT49MD9hPWkuaXN1Yih0aGlzLm0pOmkuY21wbigwKTwwJiYoYT1pLmlhZGQodGhpcy5tKSksYS5fZm9yY2VSZWQodGhpcyl9LFIucHJvdG90eXBlLm11bD1mdW5jdGlvbihlLHQpe2lmKGUuaXNaZXJvKCl8fHQuaXNaZXJvKCkpcmV0dXJuIG5ldyBhKDApLl9mb3JjZVJlZCh0aGlzKTt2YXIgcj1lLm11bCh0KSxuPXIubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pLGk9ci5pc3ViKG4pLml1c2hybih0aGlzLnNoaWZ0KSxmPWk7cmV0dXJuIGkuY21wKHRoaXMubSk+PTA/Zj1pLmlzdWIodGhpcy5tKTppLmNtcG4oMCk8MCYmKGY9aS5pYWRkKHRoaXMubSkpLGYuX2ZvcmNlUmVkKHRoaXMpfSxSLnByb3RvdHlwZS5pbnZtPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuaW1vZChlLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7cmV0dXJuIHQuX2ZvcmNlUmVkKHRoaXMpfX0pKGUsdGhpcyl9KS5jYWxsKHRoaXMscigiNjJlNCIpKGUpKX0sODcwNzpmdW5jdGlvbihlLHQscil7dmFyIG49cigiYjYzOSIpLGk9bi5CdWZmZXI7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXX1mdW5jdGlvbiBmKGUsdCxyKXtyZXR1cm4gaShlLHQscil9aS5mcm9tJiZpLmFsbG9jJiZpLmFsbG9jVW5zYWZlJiZpLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9bjooYShuLHQpLHQuQnVmZmVyPWYpLGEoaSxmKSxmLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiPT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gaShlLHQscil9LGYuYWxsb2M9ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBuPWkoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PT10eXBlb2Ygcj9uLmZpbGwodCxyKTpuLmZpbGwodCk6bi5maWxsKDApLG59LGYuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyIik7cmV0dXJuIGkoZSl9LGYuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe2lmKCJudW1iZXIiIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBuLlNsb3dCdWZmZXIoZSl9fSwiODhhMiI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7dmFyIG49T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdH07ZS5leHBvcnRzPWQ7dmFyIGk9cigiNjhhMCIpLGE9cigiOWJkYyIpO3IoIjNmYjUiKShkLGkpO2Zvcih2YXIgZj1uKGEucHJvdG90eXBlKSxvPTA7bzxmLmxlbmd0aDtvKyspe3ZhciBzPWZbb107ZC5wcm90b3R5cGVbc118fChkLnByb3RvdHlwZVtzXT1hLnByb3RvdHlwZVtzXSl9ZnVuY3Rpb24gZChlKXtpZighKHRoaXMgaW5zdGFuY2VvZiBkKSlyZXR1cm4gbmV3IGQoZSk7aS5jYWxsKHRoaXMsZSksYS5jYWxsKHRoaXMsZSksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLGUmJighMT09PWUucmVhZGFibGUmJih0aGlzLnJlYWRhYmxlPSExKSwhMT09PWUud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSwhMT09PWUuYWxsb3dIYWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSx0aGlzLm9uY2UoImVuZCIsYykpKX1mdW5jdGlvbiBjKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8dC5uZXh0VGljayh1LHRoaXMpfWZ1bmN0aW9uIHUoZSl7ZS5lbmQoKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZC5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZC5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZC5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGQucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkKX0sc2V0OmZ1bmN0aW9uKGUpe3ZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnZvaWQgMCE9PXRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD1lLHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPWUpfX0pfSkuY2FsbCh0aGlzLHIoIjQzNjIiKSl9LCI4Yjk1IjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoImMzYzAiKSxpPXIoImI1MjUiKTtmdW5jdGlvbiBhKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgYSkpcmV0dXJuIG5ldyBhO2kuY2FsbCh0aGlzKSx0aGlzLmg9WzM0MTgwNzAzNjUsMzIzODM3MTAzMiwxNjU0MjcwMjUwLDkxNDE1MDY2MywyNDM4NTI5MzcwLDgxMjcwMjk5OSwzNTU0NjIzNjAsNDE0NDkxMjY5NywxNzMxNDA1NDE1LDQyOTA3NzU4NTcsMjM5NDE4MDIzMSwxNzUwNjAzMDI1LDM2NzUwMDg1MjUsMTY5NDA3NjgzOSwxMjAzMDYyODEzLDMyMDQwNzU0MjhdfW4uaW5oZXJpdHMoYSxpKSxlLmV4cG9ydHM9YSxhLmJsb2NrU2l6ZT0xMDI0LGEub3V0U2l6ZT0zODQsYS5obWFjU3RyZW5ndGg9MTkyLGEucGFkTGVuZ3RoPTEyOCxhLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKGUpe3JldHVybiJoZXgiPT09ZT9uLnRvSGV4MzIodGhpcy5oLnNsaWNlKDAsMTIpLCJiaWciKTpuLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsMTIpLCJiaWciKX19LDkwNTQ6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0LnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLl9fcHJvdG9fXz10fXZhciBpPXt9O2Z1bmN0aW9uIGEoZSx0LHIpe2Z1bmN0aW9uIGEoZSxyLG4pe3JldHVybiJzdHJpbmciPT09dHlwZW9mIHQ/dDp0KGUscixuKX1yfHwocj1FcnJvcik7dmFyIGY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHIsbil7cmV0dXJuIGUuY2FsbCh0aGlzLGEodCxyLG4pKXx8dGhpc31yZXR1cm4gbih0LGUpLHR9KHIpO2YucHJvdG90eXBlLm5hbWU9ci5uYW1lLGYucHJvdG90eXBlLmNvZGU9ZSxpW2VdPWZ9ZnVuY3Rpb24gZihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpe3ZhciByPWUubGVuZ3RoO3JldHVybiBlPWUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpfSkpLHI+Mj8ib25lIG9mICIuY29uY2F0KHQsIiAiKS5jb25jYXQoZS5zbGljZSgwLHItMSkuam9pbigiLCAiKSwiLCBvciAiKStlW3ItMV06Mj09PXI/Im9uZSBvZiAiLmNvbmNhdCh0LCIgIikuY29uY2F0KGVbMF0sIiBvciAiKS5jb25jYXQoZVsxXSk6Im9mICIuY29uY2F0KHQsIiAiKS5jb25jYXQoZVswXSl9cmV0dXJuIm9mICIuY29uY2F0KHQsIiAiKS5jb25jYXQoU3RyaW5nKGUpKX1mdW5jdGlvbiBvKGUsdCxyKXtyZXR1cm4gZS5zdWJzdHIoIXJ8fHI8MD8wOityLHQubGVuZ3RoKT09PXR9ZnVuY3Rpb24gcyhlLHQscil7cmV0dXJuKHZvaWQgMD09PXJ8fHI+ZS5sZW5ndGgpJiYocj1lLmxlbmd0aCksZS5zdWJzdHJpbmcoci10Lmxlbmd0aCxyKT09PXR9ZnVuY3Rpb24gZChlLHQscil7cmV0dXJuIm51bWJlciIhPT10eXBlb2YgciYmKHI9MCksIShyK3QubGVuZ3RoPmUubGVuZ3RoKSYmLTEhPT1lLmluZGV4T2YodCxyKX1hKCJFUlJfSU5WQUxJRF9PUFRfVkFMVUUiLChmdW5jdGlvbihlLHQpe3JldHVyblwnVGhlIHZhbHVlICJcJyt0K1wnIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gIlwnK2UrXCciXCd9KSxUeXBlRXJyb3IpLGEoIkVSUl9JTlZBTElEX0FSR19UWVBFIiwoZnVuY3Rpb24oZSx0LHIpe3ZhciBuLGk7aWYoInN0cmluZyI9PT10eXBlb2YgdCYmbyh0LCJub3QgIik/KG49Im11c3Qgbm90IGJlIix0PXQucmVwbGFjZSgvXm5vdCAvLCIiKSk6bj0ibXVzdCBiZSIscyhlLCIgYXJndW1lbnQiKSlpPSJUaGUgIi5jb25jYXQoZSwiICIpLmNvbmNhdChuLCIgIikuY29uY2F0KGYodCwidHlwZSIpKTtlbHNle3ZhciBhPWQoZSwiLiIpPyJwcm9wZXJ0eSI6ImFyZ3VtZW50IjtpPVwnVGhlICJcJy5jb25jYXQoZSxcJyIgXCcpLmNvbmNhdChhLCIgIikuY29uY2F0KG4sIiAiKS5jb25jYXQoZih0LCJ0eXBlIikpfXJldHVybiBpKz0iLiBSZWNlaXZlZCB0eXBlICIuY29uY2F0KHR5cGVvZiByKSxpfSksVHlwZUVycm9yKSxhKCJFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GIiwic3RyZWFtLnB1c2goKSBhZnRlciBFT0YiKSxhKCJFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCIsKGZ1bmN0aW9uKGUpe3JldHVybiJUaGUgIitlKyIgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCJ9KSksYSgiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UiLCJQcmVtYXR1cmUgY2xvc2UiKSxhKCJFUlJfU1RSRUFNX0RFU1RST1lFRCIsKGZ1bmN0aW9uKGUpe3JldHVybiJDYW5ub3QgY2FsbCAiK2UrIiBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkIn0pKSxhKCJFUlJfTVVMVElQTEVfQ0FMTEJBQ0siLCJDYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMiKSxhKCJFUlJfU1RSRUFNX0NBTk5PVF9QSVBFIiwiQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZSIpLGEoIkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EIiwid3JpdGUgYWZ0ZXIgZW5kIiksYSgiRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyIsIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtIixUeXBlRXJyb3IpLGEoIkVSUl9VTktOT1dOX0VOQ09ESU5HIiwoZnVuY3Rpb24oZSl7cmV0dXJuIlVua25vd24gZW5jb2Rpbmc6ICIrZX0pLFR5cGVFcnJvciksYSgiRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCIsInN0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50IiksZS5leHBvcnRzLmNvZGVzPWl9LDkxNTI6ZnVuY3Rpb24oZSx0KXtcbi8qISBpZWVlNzU0LiBCU0QtMy1DbGF1c2UgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG50LnJlYWQ9ZnVuY3Rpb24oZSx0LHIsbixpKXt2YXIgYSxmLG89OCppLW4tMSxzPSgxPDxvKS0xLGQ9cz4+MSxjPS03LHU9cj9pLTE6MCxoPXI/LTE6MSxsPWVbdCt1XTtmb3IodSs9aCxhPWwmKDE8PC1jKS0xLGw+Pj0tYyxjKz1vO2M+MDthPTI1NiphK2VbdCt1XSx1Kz1oLGMtPTgpO2ZvcihmPWEmKDE8PC1jKS0xLGE+Pj0tYyxjKz1uO2M+MDtmPTI1NipmK2VbdCt1XSx1Kz1oLGMtPTgpO2lmKDA9PT1hKWE9MS1kO2Vsc2V7aWYoYT09PXMpcmV0dXJuIGY/TmFOOjEvMCoobD8tMToxKTtmKz1NYXRoLnBvdygyLG4pLGEtPWR9cmV0dXJuKGw/LTE6MSkqZipNYXRoLnBvdygyLGEtbil9LHQud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbixpLGEpe3ZhciBmLG8scyxkPTgqYS1pLTEsYz0oMTw8ZCktMSx1PWM+PjEsaD0yMz09PWk/TWF0aC5wb3coMiwtMjQpLU1hdGgucG93KDIsLTc3KTowLGw9bj8wOmEtMSxiPW4/MTotMSxwPXQ8MHx8MD09PXQmJjEvdDwwPzE6MDtmb3IodD1NYXRoLmFicyh0KSxpc05hTih0KXx8dD09PTEvMD8obz1pc05hTih0KT8xOjAsZj1jKTooZj1NYXRoLmZsb29yKE1hdGgubG9nKHQpL01hdGguTE4yKSx0KihzPU1hdGgucG93KDIsLWYpKTwxJiYoZi0tLHMqPTIpLHQrPWYrdT49MT9oL3M6aCpNYXRoLnBvdygyLDEtdSksdCpzPj0yJiYoZisrLHMvPTIpLGYrdT49Yz8obz0wLGY9Yyk6Zit1Pj0xPyhvPSh0KnMtMSkqTWF0aC5wb3coMixpKSxmKz11KToobz10Kk1hdGgucG93KDIsdS0xKSpNYXRoLnBvdygyLGkpLGY9MCkpO2k+PTg7ZVtyK2xdPTI1NSZvLGwrPWIsby89MjU2LGktPTgpO2ZvcihmPWY8PGl8byxkKz1pO2Q+MDtlW3IrbF09MjU1JmYsbCs9YixmLz0yNTYsZC09OCk7ZVtyK2wtYl18PTEyOCpwfX0sIjkyYTkiOmZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7Y29uc3R7VHJhbnNmb3JtOm59PXIoImUzOTkiKTtlLmV4cG9ydHM9ZT0+Y2xhc3MgciBleHRlbmRzIG57Y29uc3RydWN0b3IodCxyLG4saSl7c3VwZXIoaSksdGhpcy5fcmF0ZT10LHRoaXMuX2NhcGFjaXR5PXIsdGhpcy5fZGVsaW1pdGVkU3VmZml4PW4sdGhpcy5fb3B0aW9ucz1pLHRoaXMuX3N0YXRlPW5ldyBlLHRoaXMuX3N0YXRlLmluaXRpYWxpemUodCxyKSx0aGlzLl9maW5hbGl6ZWQ9ITF9X3RyYW5zZm9ybShlLHQscil7bGV0IG49bnVsbDt0cnl7dGhpcy51cGRhdGUoZSx0KX1jYXRjaChpKXtuPWl9cihuKX1fZmx1c2goKXt9X3JlYWQoZSl7dGhpcy5wdXNoKHRoaXMuc3F1ZWV6ZShlKSl9dXBkYXRlKGUscil7aWYoIXQuaXNCdWZmZXIoZSkmJiJzdHJpbmciIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGF0YSBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyIik7aWYodGhpcy5fZmluYWxpemVkKXRocm93IG5ldyBFcnJvcigiU3F1ZWV6ZSBhbHJlYWR5IGNhbGxlZCIpO3JldHVybiB0LmlzQnVmZmVyKGUpfHwoZT10LmZyb20oZSxyKSksdGhpcy5fc3RhdGUuYWJzb3JiKGUpLHRoaXN9c3F1ZWV6ZShlLHQpe3RoaXMuX2ZpbmFsaXplZHx8KHRoaXMuX2ZpbmFsaXplZD0hMCx0aGlzLl9zdGF0ZS5hYnNvcmJMYXN0RmV3Qml0cyh0aGlzLl9kZWxpbWl0ZWRTdWZmaXgpKTtsZXQgcj10aGlzLl9zdGF0ZS5zcXVlZXplKGUpO3JldHVybiB2b2lkIDAhPT10JiYocj1yLnRvU3RyaW5nKHQpKSxyfV9yZXNldFN0YXRlKCl7cmV0dXJuIHRoaXMuX3N0YXRlLmluaXRpYWxpemUodGhpcy5fcmF0ZSx0aGlzLl9jYXBhY2l0eSksdGhpc31fY2xvbmUoKXtjb25zdCBlPW5ldyByKHRoaXMuX3JhdGUsdGhpcy5fY2FwYWNpdHksdGhpcy5fZGVsaW1pdGVkU3VmZml4LHRoaXMuX29wdGlvbnMpO3JldHVybiB0aGlzLl9zdGF0ZS5jb3B5KGUuX3N0YXRlKSxlLl9maW5hbGl6ZWQ9dGhpcy5fZmluYWxpemVkLGV9fX0pLmNhbGwodGhpcyxyKCJiNjM5IikuQnVmZmVyKX0sIjk0NWQiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigiN2Q5MiIpLGk9cigiMGNiYiIpLGE9cigiZjNhMyIpLGY9YS5hc3NlcnQsbz1hLnBhcnNlQnl0ZXMscz1yKCIzODBmIiksZD1yKCI0NGEzIik7ZnVuY3Rpb24gYyhlKXtpZihmKCJlZDI1NTE5Ij09PWUsIm9ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXIiKSwhKHRoaXMgaW5zdGFuY2VvZiBjKSlyZXR1cm4gbmV3IGMoZSk7ZT1pW2VdLmN1cnZlLHRoaXMuY3VydmU9ZSx0aGlzLmc9ZS5nLHRoaXMuZy5wcmVjb21wdXRlKGUubi5iaXRMZW5ndGgoKSsxKSx0aGlzLnBvaW50Q2xhc3M9ZS5wb2ludCgpLmNvbnN0cnVjdG9yLHRoaXMuZW5jb2RpbmdMZW5ndGg9TWF0aC5jZWlsKGUubi5iaXRMZW5ndGgoKS84KSx0aGlzLmhhc2g9bi5zaGE1MTJ9ZS5leHBvcnRzPWMsYy5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihlLHQpe2U9byhlKTt2YXIgcj10aGlzLmtleUZyb21TZWNyZXQodCksbj10aGlzLmhhc2hJbnQoci5tZXNzYWdlUHJlZml4KCksZSksaT10aGlzLmcubXVsKG4pLGE9dGhpcy5lbmNvZGVQb2ludChpKSxmPXRoaXMuaGFzaEludChhLHIucHViQnl0ZXMoKSxlKS5tdWwoci5wcml2KCkpLHM9bi5hZGQoZikudW1vZCh0aGlzLmN1cnZlLm4pO3JldHVybiB0aGlzLm1ha2VTaWduYXR1cmUoe1I6aSxTOnMsUmVuY29kZWQ6YX0pfSxjLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oZSx0LHIpe2U9byhlKSx0PXRoaXMubWFrZVNpZ25hdHVyZSh0KTt2YXIgbj10aGlzLmtleUZyb21QdWJsaWMociksaT10aGlzLmhhc2hJbnQodC5SZW5jb2RlZCgpLG4ucHViQnl0ZXMoKSxlKSxhPXRoaXMuZy5tdWwodC5TKCkpLGY9dC5SKCkuYWRkKG4ucHViKCkubXVsKGkpKTtyZXR1cm4gZi5lcShhKX0sYy5wcm90b3R5cGUuaGFzaEludD1mdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLmhhc2goKSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllLnVwZGF0ZShhcmd1bWVudHNbdF0pO3JldHVybiBhLmludEZyb21MRShlLmRpZ2VzdCgpKS51bW9kKHRoaXMuY3VydmUubil9LGMucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oZSl7cmV0dXJuIHMuZnJvbVB1YmxpYyh0aGlzLGUpfSxjLnByb3RvdHlwZS5rZXlGcm9tU2VjcmV0PWZ1bmN0aW9uKGUpe3JldHVybiBzLmZyb21TZWNyZXQodGhpcyxlKX0sYy5wcm90b3R5cGUubWFrZVNpZ25hdHVyZT1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIGQ/ZTpuZXcgZCh0aGlzLGUpfSxjLnByb3RvdHlwZS5lbmNvZGVQb2ludD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldFkoKS50b0FycmF5KCJsZSIsdGhpcy5lbmNvZGluZ0xlbmd0aCk7cmV0dXJuIHRbdGhpcy5lbmNvZGluZ0xlbmd0aC0xXXw9ZS5nZXRYKCkuaXNPZGQoKT8xMjg6MCx0fSxjLnByb3RvdHlwZS5kZWNvZGVQb2ludD1mdW5jdGlvbihlKXtlPWEucGFyc2VCeXRlcyhlKTt2YXIgdD1lLmxlbmd0aC0xLHI9ZS5zbGljZSgwLHQpLmNvbmNhdCgtMTI5JmVbdF0pLG49MCE9PSgxMjgmZVt0XSksaT1hLmludEZyb21MRShyKTtyZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKGksbil9LGMucHJvdG90eXBlLmVuY29kZUludD1mdW5jdGlvbihlKXtyZXR1cm4gZS50b0FycmF5KCJsZSIsdGhpcy5lbmNvZGluZ0xlbmd0aCl9LGMucHJvdG90eXBlLmRlY29kZUludD1mdW5jdGlvbihlKXtyZXR1cm4gYS5pbnRGcm9tTEUoZSl9LGMucHJvdG90eXBlLmlzUG9pbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0aGlzLnBvaW50Q2xhc3N9fSw5ODYyOmZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7Y29uc3Qgbj1yKCIyMzMwIiksaT1yKCI2OTgzIiksYT1yKCIxMWRjIiksZj01MDAsbz1lPT57Y29uc3Qgcj1uLnB1YmxpY0tleUNyZWF0ZShlLCExKS5zbGljZSgxKTtyZXR1cm4gaSgia2VjY2FrMjU2IikudXBkYXRlKHQuZnJvbShyKSkuZGlnZXN0KCkuc2xpY2UoLTIwKS50b1N0cmluZygiaGV4Iil9LHM9KCk9Pntjb25zdCBlPWEoMzIpO3JldHVybnthZGRyZXNzOm8oZSkudG9TdHJpbmcoImhleCIpLHByaXZLZXk6ZS50b1N0cmluZygiaGV4Iil9fSxkPShlLHQscixuKT0+e2NvbnN0IGk9ZS5zdWJzdHJpbmcoMCx0Lmxlbmd0aCksYT1lLnN1YnN0cmluZyg0MC1yLmxlbmd0aCk7cmV0dXJuIG4/dC50b0xvd2VyQ2FzZSgpPT09aSYmci50b0xvd2VyQ2FzZSgpPT09YSYmYyhlLHQscik6dD09PWkmJnI9PT1hfSxjPShlLHQscik9Pntjb25zdCBuPWkoImtlY2NhazI1NiIpLnVwZGF0ZShlKS5kaWdlc3QoKS50b1N0cmluZygiaGV4Iik7Zm9yKGxldCBpPTA7aTx0Lmxlbmd0aDtpKyspaWYodFtpXSE9PShwYXJzZUludChuW2ldLDE2KT49OD9lW2ldLnRvVXBwZXJDYXNlKCk6ZVtpXSkpcmV0dXJuITE7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IHQ9aSs0MC1yLmxlbmd0aDtpZihyW2ldIT09KHBhcnNlSW50KG5bdF0sMTYpPj04P2VbdF0udG9VcHBlckNhc2UoKTplW3RdKSlyZXR1cm4hMX1yZXR1cm4hMH0sdT1lPT57Y29uc3QgdD1pKCJrZWNjYWsyNTYiKS51cGRhdGUoZSkuZGlnZXN0KCkudG9TdHJpbmcoImhleCIpO2xldCByPSIiO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXIrPXBhcnNlSW50KHRbbl0sMTYpPj04P2Vbbl0udG9VcHBlckNhc2UoKTplW25dO3JldHVybiByfSxoPShlLHQscixuKT0+e2xldCBpPXMoKSxhPTE7Y29uc3Qgbz1yP2U6ZS50b0xvd2VyQ2FzZSgpLGM9cj90OnQudG9Mb3dlckNhc2UoKTt3aGlsZSghZChpLmFkZHJlc3MsbyxjLHIpKWE+PWYmJihuKHthdHRlbXB0czphfSksYT0wKSxpPXMoKSxhKys7bih7YWRkcmVzczoiMHgiK3UoaS5hZGRyZXNzKSxwcml2S2V5OmkucHJpdktleSxhdHRlbXB0czphfSl9O29ubWVzc2FnZT1mdW5jdGlvbihlKXtjb25zdCB0PWUuZGF0YTt0cnl7aCh0LnByZWZpeCx0LnN1ZmZpeCx0LmNoZWNrc3VtLGU9PnBvc3RNZXNzYWdlKGUpKX1jYXRjaChyKXtzZWxmLnBvc3RNZXNzYWdlKHtlcnJvcjpyLnRvU3RyaW5nKCl9KX19LGUuZXhwb3J0cz17b25tZXNzYWdlOm9ubWVzc2FnZX19KS5jYWxsKHRoaXMscigiYjYzOSIpLkJ1ZmZlcil9LCI5YmRjIjpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGkoZSl7dmFyIHQ9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXtXKHQsZSl9fXZhciBhO2UuZXhwb3J0cz1rLGsuV3JpdGFibGVTdGF0ZT14O3ZhciBmPXtkZXByZWNhdGU6cigiYjdkMSIpfSxvPXIoIjAyN2QiKSxzPXIoImI2MzkiKS5CdWZmZXIsZD0oInVuZGVmaW5lZCIhPT10eXBlb2YgdD90OiJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPT10eXBlb2Ygc2VsZj9zZWxmOnt9KS5VaW50OEFycmF5fHxmdW5jdGlvbigpe307ZnVuY3Rpb24gYyhlKXtyZXR1cm4gcy5mcm9tKGUpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIHMuaXNCdWZmZXIoZSl8fGUgaW5zdGFuY2VvZiBkfXZhciBoLGw9cigiYWMwYyIpLGI9cigiNGQyOCIpLHA9Yi5nZXRIaWdoV2F0ZXJNYXJrLG09cigiOTA1NCIpLmNvZGVzLGc9bS5FUlJfSU5WQUxJRF9BUkdfVFlQRSx5PW0uRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsdj1tLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyx3PW0uRVJSX1NUUkVBTV9DQU5OT1RfUElQRSxfPW0uRVJSX1NUUkVBTV9ERVNUUk9ZRUQsTT1tLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsUz1tLkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5ELEE9bS5FUlJfVU5LTk9XTl9FTkNPRElORyxFPWwuZXJyb3JPckRlc3Ryb3k7ZnVuY3Rpb24gUigpe31mdW5jdGlvbiB4KGUsdCxuKXthPWF8fHIoIjg4YTIiKSxlPWV8fHt9LCJib29sZWFuIiE9PXR5cGVvZiBuJiYobj10IGluc3RhbmNlb2YgYSksdGhpcy5vYmplY3RNb2RlPSEhZS5vYmplY3RNb2RlLG4mJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIWUud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9cCh0aGlzLGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIsbiksdGhpcy5maW5hbENhbGxlZD0hMSx0aGlzLm5lZWREcmFpbj0hMSx0aGlzLmVuZGluZz0hMSx0aGlzLmVuZGVkPSExLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5kZXN0cm95ZWQ9ITE7dmFyIGY9ITE9PT1lLmRlY29kZVN0cmluZ3M7dGhpcy5kZWNvZGVTdHJpbmdzPSFmLHRoaXMuZGVmYXVsdEVuY29kaW5nPWUuZGVmYXVsdEVuY29kaW5nfHwidXRmOCIsdGhpcy5sZW5ndGg9MCx0aGlzLndyaXRpbmc9ITEsdGhpcy5jb3JrZWQ9MCx0aGlzLnN5bmM9ITAsdGhpcy5idWZmZXJQcm9jZXNzaW5nPSExLHRoaXMub253cml0ZT1mdW5jdGlvbihlKXtOKHQsZSl9LHRoaXMud3JpdGVjYj1udWxsLHRoaXMud3JpdGVsZW49MCx0aGlzLmJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLHRoaXMucGVuZGluZ2NiPTAsdGhpcy5wcmVmaW5pc2hlZD0hMSx0aGlzLmVycm9yRW1pdHRlZD0hMSx0aGlzLmVtaXRDbG9zZT0hMSE9PWUuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISFlLmF1dG9EZXN0cm95LHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQ9MCx0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgaSh0aGlzKX1mdW5jdGlvbiBrKGUpe2E9YXx8cigiODhhMiIpO3ZhciB0PXRoaXMgaW5zdGFuY2VvZiBhO2lmKCF0JiYhaC5jYWxsKGssdGhpcykpcmV0dXJuIG5ldyBrKGUpO3RoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IHgoZSx0aGlzLHQpLHRoaXMud3JpdGFibGU9ITAsZSYmKCJmdW5jdGlvbiI9PT10eXBlb2YgZS53cml0ZSYmKHRoaXMuX3dyaXRlPWUud3JpdGUpLCJmdW5jdGlvbiI9PT10eXBlb2YgZS53cml0ZXYmJih0aGlzLl93cml0ZXY9ZS53cml0ZXYpLCJmdW5jdGlvbiI9PT10eXBlb2YgZS5kZXN0cm95JiYodGhpcy5fZGVzdHJveT1lLmRlc3Ryb3kpLCJmdW5jdGlvbiI9PT10eXBlb2YgZS5maW5hbCYmKHRoaXMuX2ZpbmFsPWUuZmluYWwpKSxvLmNhbGwodGhpcyl9ZnVuY3Rpb24gSShlLHQpe3ZhciByPW5ldyBTO0UoZSxyKSxuLm5leHRUaWNrKHQscil9ZnVuY3Rpb24gUChlLHQscixpKXt2YXIgYTtyZXR1cm4gbnVsbD09PXI/YT1uZXcgTToic3RyaW5nIj09PXR5cGVvZiByfHx0Lm9iamVjdE1vZGV8fChhPW5ldyBnKCJjaHVuayIsWyJzdHJpbmciLCJCdWZmZXIiXSxyKSksIWF8fChFKGUsYSksbi5uZXh0VGljayhpLGEpLCExKX1mdW5jdGlvbiBUKGUsdCxyKXtyZXR1cm4gZS5vYmplY3RNb2RlfHwhMT09PWUuZGVjb2RlU3RyaW5nc3x8InN0cmluZyIhPT10eXBlb2YgdHx8KHQ9cy5mcm9tKHQscikpLHR9ZnVuY3Rpb24gTChlLHQscixuLGksYSl7aWYoIXIpe3ZhciBmPVQodCxuLGkpO24hPT1mJiYocj0hMCxpPSJidWZmZXIiLG49Zil9dmFyIG89dC5vYmplY3RNb2RlPzE6bi5sZW5ndGg7dC5sZW5ndGgrPW87dmFyIHM9dC5sZW5ndGg8dC5oaWdoV2F0ZXJNYXJrO2lmKHN8fCh0Lm5lZWREcmFpbj0hMCksdC53cml0aW5nfHx0LmNvcmtlZCl7dmFyIGQ9dC5sYXN0QnVmZmVyZWRSZXF1ZXN0O3QubGFzdEJ1ZmZlcmVkUmVxdWVzdD17Y2h1bms6bixlbmNvZGluZzppLGlzQnVmOnIsY2FsbGJhY2s6YSxuZXh0Om51bGx9LGQ/ZC5uZXh0PXQubGFzdEJ1ZmZlcmVkUmVxdWVzdDp0LmJ1ZmZlcmVkUmVxdWVzdD10Lmxhc3RCdWZmZXJlZFJlcXVlc3QsdC5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNlIE8oZSx0LCExLG8sbixpLGEpO3JldHVybiBzfWZ1bmN0aW9uIE8oZSx0LHIsbixpLGEsZil7dC53cml0ZWxlbj1uLHQud3JpdGVjYj1mLHQud3JpdGluZz0hMCx0LnN5bmM9ITAsdC5kZXN0cm95ZWQ/dC5vbndyaXRlKG5ldyBfKCJ3cml0ZSIpKTpyP2UuX3dyaXRldihpLHQub253cml0ZSk6ZS5fd3JpdGUoaSxhLHQub253cml0ZSksdC5zeW5jPSExfWZ1bmN0aW9uIEIoZSx0LHIsaSxhKXstLXQucGVuZGluZ2NiLHI/KG4ubmV4dFRpY2soYSxpKSxuLm5leHRUaWNrKEYsZSx0KSxlLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxFKGUsaSkpOihhKGkpLGUuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLEUoZSxpKSxGKGUsdCkpfWZ1bmN0aW9uIHooZSl7ZS53cml0aW5nPSExLGUud3JpdGVjYj1udWxsLGUubGVuZ3RoLT1lLndyaXRlbGVuLGUud3JpdGVsZW49MH1mdW5jdGlvbiBOKGUsdCl7dmFyIHI9ZS5fd3JpdGFibGVTdGF0ZSxpPXIuc3luYyxhPXIud3JpdGVjYjtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgbmV3IHY7aWYoeihyKSx0KUIoZSxyLGksdCxhKTtlbHNle3ZhciBmPVUocil8fGUuZGVzdHJveWVkO2Z8fHIuY29ya2VkfHxyLmJ1ZmZlclByb2Nlc3Npbmd8fCFyLmJ1ZmZlcmVkUmVxdWVzdHx8aihlLHIpLGk/bi5uZXh0VGljayhDLGUscixmLGEpOkMoZSxyLGYsYSl9fWZ1bmN0aW9uIEMoZSx0LHIsbil7cnx8cShlLHQpLHQucGVuZGluZ2NiLS0sbigpLEYoZSx0KX1mdW5jdGlvbiBxKGUsdCl7MD09PXQubGVuZ3RoJiZ0Lm5lZWREcmFpbiYmKHQubmVlZERyYWluPSExLGUuZW1pdCgiZHJhaW4iKSl9ZnVuY3Rpb24gaihlLHQpe3QuYnVmZmVyUHJvY2Vzc2luZz0hMDt2YXIgcj10LmJ1ZmZlcmVkUmVxdWVzdDtpZihlLl93cml0ZXYmJnImJnIubmV4dCl7dmFyIG49dC5idWZmZXJlZFJlcXVlc3RDb3VudCxhPW5ldyBBcnJheShuKSxmPXQuY29ya2VkUmVxdWVzdHNGcmVlO2YuZW50cnk9cjt2YXIgbz0wLHM9ITA7d2hpbGUocilhW29dPXIsci5pc0J1Znx8KHM9ITEpLHI9ci5uZXh0LG8rPTE7YS5hbGxCdWZmZXJzPXMsTyhlLHQsITAsdC5sZW5ndGgsYSwiIixmLmZpbmlzaCksdC5wZW5kaW5nY2IrKyx0Lmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxmLm5leHQ/KHQuY29ya2VkUmVxdWVzdHNGcmVlPWYubmV4dCxmLm5leHQ9bnVsbCk6dC5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IGkodCksdC5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7d2hpbGUocil7dmFyIGQ9ci5jaHVuayxjPXIuZW5jb2RpbmcsdT1yLmNhbGxiYWNrLGg9dC5vYmplY3RNb2RlPzE6ZC5sZW5ndGg7aWYoTyhlLHQsITEsaCxkLGMsdSkscj1yLm5leHQsdC5idWZmZXJlZFJlcXVlc3RDb3VudC0tLHQud3JpdGluZylicmVha31udWxsPT09ciYmKHQubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsKX10LmJ1ZmZlcmVkUmVxdWVzdD1yLHQuYnVmZmVyUHJvY2Vzc2luZz0hMX1mdW5jdGlvbiBVKGUpe3JldHVybiBlLmVuZGluZyYmMD09PWUubGVuZ3RoJiZudWxsPT09ZS5idWZmZXJlZFJlcXVlc3QmJiFlLmZpbmlzaGVkJiYhZS53cml0aW5nfWZ1bmN0aW9uIEQoZSx0KXtlLl9maW5hbCgoZnVuY3Rpb24ocil7dC5wZW5kaW5nY2ItLSxyJiZFKGUsciksdC5wcmVmaW5pc2hlZD0hMCxlLmVtaXQoInByZWZpbmlzaCIpLEYoZSx0KX0pKX1mdW5jdGlvbiBLKGUsdCl7dC5wcmVmaW5pc2hlZHx8dC5maW5hbENhbGxlZHx8KCJmdW5jdGlvbiIhPT10eXBlb2YgZS5fZmluYWx8fHQuZGVzdHJveWVkPyh0LnByZWZpbmlzaGVkPSEwLGUuZW1pdCgicHJlZmluaXNoIikpOih0LnBlbmRpbmdjYisrLHQuZmluYWxDYWxsZWQ9ITAsbi5uZXh0VGljayhELGUsdCkpKX1mdW5jdGlvbiBGKGUsdCl7dmFyIHI9VSh0KTtpZihyJiYoSyhlLHQpLDA9PT10LnBlbmRpbmdjYiYmKHQuZmluaXNoZWQ9ITAsZS5lbWl0KCJmaW5pc2giKSx0LmF1dG9EZXN0cm95KSkpe3ZhciBuPWUuX3JlYWRhYmxlU3RhdGU7KCFufHxuLmF1dG9EZXN0cm95JiZuLmVuZEVtaXR0ZWQpJiZlLmRlc3Ryb3koKX1yZXR1cm4gcn1mdW5jdGlvbiBZKGUsdCxyKXt0LmVuZGluZz0hMCxGKGUsdCksciYmKHQuZmluaXNoZWQ/bi5uZXh0VGljayhyKTplLm9uY2UoImZpbmlzaCIscikpLHQuZW5kZWQ9ITAsZS53cml0YWJsZT0hMX1mdW5jdGlvbiBXKGUsdCxyKXt2YXIgbj1lLmVudHJ5O2UuZW50cnk9bnVsbDt3aGlsZShuKXt2YXIgaT1uLmNhbGxiYWNrO3QucGVuZGluZ2NiLS0saShyKSxuPW4ubmV4dH10LmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PWV9cigiM2ZiNSIpKGssbykseC5wcm90b3R5cGUuZ2V0QnVmZmVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5idWZmZXJlZFJlcXVlc3QsdD1bXTt3aGlsZShlKXQucHVzaChlKSxlPWUubmV4dDtyZXR1cm4gdH0sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHgucHJvdG90eXBlLCJidWZmZXIiLHtnZXQ6Zi5kZXByZWNhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCl9KSwiX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgaW5zdGVhZC4iLCJERVAwMDAzIil9KX1jYXRjaChlKXt9fSgpLCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaGFzSW5zdGFuY2UmJiJmdW5jdGlvbiI9PT10eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0/KGg9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGssU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4hIWguY2FsbCh0aGlzLGUpfHx0aGlzPT09ayYmKGUmJmUuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiB4KX19KSk6aD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHRoaXN9LGsucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXtFKHRoaXMsbmV3IHcpfSxrLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpcy5fd3JpdGFibGVTdGF0ZSxpPSExLGE9IW4ub2JqZWN0TW9kZSYmdShlKTtyZXR1cm4gYSYmIXMuaXNCdWZmZXIoZSkmJihlPWMoZSkpLCJmdW5jdGlvbiI9PT10eXBlb2YgdCYmKHI9dCx0PW51bGwpLGE/dD0iYnVmZmVyIjp0fHwodD1uLmRlZmF1bHRFbmNvZGluZyksImZ1bmN0aW9uIiE9PXR5cGVvZiByJiYocj1SKSxuLmVuZGluZz9JKHRoaXMscik6KGF8fFAodGhpcyxuLGUscikpJiYobi5wZW5kaW5nY2IrKyxpPUwodGhpcyxuLGEsZSx0LHIpKSxpfSxrLnByb3RvdHlwZS5jb3JrPWZ1bmN0aW9uKCl7dGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrK30say5wcm90b3R5cGUudW5jb3JrPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fd3JpdGFibGVTdGF0ZTtlLmNvcmtlZCYmKGUuY29ya2VkLS0sZS53cml0aW5nfHxlLmNvcmtlZHx8ZS5idWZmZXJQcm9jZXNzaW5nfHwhZS5idWZmZXJlZFJlcXVlc3R8fGoodGhpcyxlKSl9LGsucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZz1mdW5jdGlvbihlKXtpZigic3RyaW5nIj09PXR5cGVvZiBlJiYoZT1lLnRvTG93ZXJDYXNlKCkpLCEoWyJoZXgiLCJ1dGY4IiwidXRmLTgiLCJhc2NpaSIsImJpbmFyeSIsImJhc2U2NCIsInVjczIiLCJ1Y3MtMiIsInV0ZjE2bGUiLCJ1dGYtMTZsZSIsInJhdyJdLmluZGV4T2YoKGUrIiIpLnRvTG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgQShlKTtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9ZSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoay5wcm90b3R5cGUsIndyaXRhYmxlQnVmZmVyIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoay5wcm90b3R5cGUsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxrLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LHIpe3IobmV3IHkoIl93cml0ZSgpIikpfSxrLnByb3RvdHlwZS5fd3JpdGV2PW51bGwsay5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzLl93cml0YWJsZVN0YXRlO3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZT8ocj1lLGU9bnVsbCx0PW51bGwpOiJmdW5jdGlvbiI9PT10eXBlb2YgdCYmKHI9dCx0PW51bGwpLG51bGwhPT1lJiZ2b2lkIDAhPT1lJiZ0aGlzLndyaXRlKGUsdCksbi5jb3JrZWQmJihuLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLG4uZW5kaW5nfHxZKHRoaXMsbixyKSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoay5wcm90b3R5cGUsIndyaXRhYmxlTGVuZ3RoIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5sZW5ndGh9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGsucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD1lKX19KSxrLnByb3RvdHlwZS5kZXN0cm95PWwuZGVzdHJveSxrLnByb3RvdHlwZS5fdW5kZXN0cm95PWwudW5kZXN0cm95LGsucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKGUsdCl7dChlKX19KS5jYWxsKHRoaXMscigiYzhiYSIpLHIoIjQzNjIiKSl9LGFhNTY6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCJjM2MwIiksaT1uLnJvdHIzMjtmdW5jdGlvbiBhKGUsdCxyLG4pe3JldHVybiAwPT09ZT9mKHQscixuKToxPT09ZXx8Mz09PWU/cyh0LHIsbik6Mj09PWU/byh0LHIsbik6dm9pZCAwfWZ1bmN0aW9uIGYoZSx0LHIpe3JldHVybiBlJnRefmUmcn1mdW5jdGlvbiBvKGUsdCxyKXtyZXR1cm4gZSZ0XmUmcl50JnJ9ZnVuY3Rpb24gcyhlLHQscil7cmV0dXJuIGVedF5yfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGkoZSwyKV5pKGUsMTMpXmkoZSwyMil9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gaShlLDYpXmkoZSwxMSleaShlLDI1KX1mdW5jdGlvbiB1KGUpe3JldHVybiBpKGUsNyleaShlLDE4KV5lPj4+M31mdW5jdGlvbiBoKGUpe3JldHVybiBpKGUsMTcpXmkoZSwxOSleZT4+PjEwfXQuZnRfMT1hLHQuY2gzMj1mLHQubWFqMzI9byx0LnAzMj1zLHQuczBfMjU2PWQsdC5zMV8yNTY9Yyx0LmcwXzI1Nj11LHQuZzFfMjU2PWh9LGFjMGM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24odCl7ZnVuY3Rpb24gcihlLHIpe3ZhciBhPXRoaXMsbz10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCxzPXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO3JldHVybiBvfHxzPyhyP3IoZSk6ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx0Lm5leHRUaWNrKGYsdGhpcyxlKSk6dC5uZXh0VGljayhmLHRoaXMsZSkpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveShlfHxudWxsLChmdW5jdGlvbihlKXshciYmZT9hLl93cml0YWJsZVN0YXRlP2EuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkP3QubmV4dFRpY2soaSxhKTooYS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsdC5uZXh0VGljayhuLGEsZSkpOnQubmV4dFRpY2sobixhLGUpOnI/KHQubmV4dFRpY2soaSxhKSxyKGUpKTp0Lm5leHRUaWNrKGksYSl9KSksdGhpcyl9ZnVuY3Rpb24gbihlLHQpe2YoZSx0KSxpKGUpfWZ1bmN0aW9uIGkoZSl7ZS5fd3JpdGFibGVTdGF0ZSYmIWUuX3dyaXRhYmxlU3RhdGUuZW1pdENsb3NlfHxlLl9yZWFkYWJsZVN0YXRlJiYhZS5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2V8fGUuZW1pdCgiY2xvc2UiKX1mdW5jdGlvbiBhKCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUucmVhZGluZz0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZD0hMSksdGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRpbmc9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITEpfWZ1bmN0aW9uIGYoZSx0KXtlLmVtaXQoImVycm9yIix0KX1mdW5jdGlvbiBvKGUsdCl7dmFyIHI9ZS5fcmVhZGFibGVTdGF0ZSxuPWUuX3dyaXRhYmxlU3RhdGU7ciYmci5hdXRvRGVzdHJveXx8biYmbi5hdXRvRGVzdHJveT9lLmRlc3Ryb3kodCk6ZS5lbWl0KCJlcnJvciIsdCl9ZS5leHBvcnRzPXtkZXN0cm95OnIsdW5kZXN0cm95OmEsZXJyb3JPckRlc3Ryb3k6b319KS5jYWxsKHRoaXMscigiNDM2MiIpKX0sYjUyNTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoImMzYzAiKSxpPXIoImVkYzkiKSxhPXIoImRhM2UiKSxmPW4ucm90cjY0X2hpLG89bi5yb3RyNjRfbG8scz1uLnNocjY0X2hpLGQ9bi5zaHI2NF9sbyxjPW4uc3VtNjQsdT1uLnN1bTY0X2hpLGg9bi5zdW02NF9sbyxsPW4uc3VtNjRfNF9oaSxiPW4uc3VtNjRfNF9sbyxwPW4uc3VtNjRfNV9oaSxtPW4uc3VtNjRfNV9sbyxnPWkuQmxvY2tIYXNoLHk9WzExMTYzNTI0MDgsMzYwOTc2NzQ1OCwxODk5NDQ3NDQxLDYwMjg5MTcyNSwzMDQ5MzIzNDcxLDM5NjQ0ODQzOTksMzkyMTAwOTU3MywyMTczMjk1NTQ4LDk2MTk4NzE2Myw0MDgxNjI4NDcyLDE1MDg5NzA5OTMsMzA1MzgzNDI2NSwyNDUzNjM1NzQ4LDI5Mzc2NzE1NzksMjg3MDc2MzIyMSwzNjY0NjA5NTYwLDM2MjQzODEwODAsMjczNDg4MzM5NCwzMTA1OTg0MDEsMTE2NDk5NjU0Miw2MDcyMjUyNzgsMTMyMzYxMDc2NCwxNDI2ODgxOTg3LDM1OTAzMDQ5OTQsMTkyNTA3ODM4OCw0MDY4MTgyMzgzLDIxNjIwNzgyMDYsOTkxMzM2MTEzLDI2MTQ4ODgxMDMsNjMzODAzMzE3LDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCwzODM1MzkwNDAxLDI2NjY2MTM0NTgsNDAyMjIyNDc3NCw5NDQ3MTExMzksMjY0MzQ3MDc4LDIzNDEyNjI3NzMsNjA0ODA3NjI4LDIwMDc4MDA5MzMsNzcwMjU1OTgzLDE0OTU5OTA5MDEsMTI0OTE1MDEyMiwxODU2NDMxMjM1LDE1NTUwODE2OTIsMzE3NTIxODEzMiwxOTk2MDY0OTg2LDIxOTg5NTA4MzcsMjU1NDIyMDg4MiwzOTk5NzE5MzM5LDI4MjE4MzQzNDksNzY2Nzg0MDE2LDI5NTI5OTY4MDgsMjU2NjU5NDg3OSwzMjEwMzEzNjcxLDMyMDMzMzc5NTYsMzMzNjU3MTg5MSwxMDM0NDU3MDI2LDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSwxMTM5MjY5OTMsMzc1ODMyNjM4MywzMzgyNDE4OTUsMTY4NzE3OTM2LDY2NjMwNzIwNSwxMTg4MTc5OTY0LDc3MzUyOTkxMiwxNTQ2MDQ1NzM0LDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSwxMzk2MTgyMjkxLDI2NDM4MzM4MjMsMTY5NTE4MzcwMCwyMzQzNTI3MzkwLDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCwyMTc3MDI2MzUwLDEyMDY3NTkxNDIsMjQ1Njk1NjAzNywzNDQwNzc2MjcsMjczMDQ4NTkyMSwxMjkwODYzNDYwLDI4MjAzMDI0MTEsMzE1ODQ1NDI3MywzMjU5NzMwODAwLDM1MDU5NTI2NTcsMzM0NTc2NDc3MSwxMDYyMTcwMDgsMzUxNjA2NTgxNywzNjA2MDA4MzQ0LDM2MDAzNTI4MDQsMTQzMjcyNTc3Niw0MDk0NTcxOTA5LDE0NjcwMzE1OTQsMjc1NDIzMzQ0LDg1MTE2OTcyMCw0MzAyMjc3MzQsMzEwMDgyMzc1Miw1MDY5NDg2MTYsMTM2MzI1ODE5NSw2NTkwNjA1NTYsMzc1MDY4NTU5Myw4ODM5OTc4NzcsMzc4NTA1MDI4MCw5NTgxMzk1NzEsMzMxODMwNzQyNywxMzIyODIyMjE4LDM4MTI3MjM0MDMsMTUzNzAwMjA2MywyMDAzMDM0OTk1LDE3NDc4NzM3NzksMzYwMjAzNjg5OSwxOTU1NTYyMjIyLDE1NzU5OTAwMTIsMjAyNDEwNDgxNSwxMTI1NTkyOTI4LDIyMjc3MzA0NTIsMjcxNjkwNDMwNiwyMzYxODUyNDI0LDQ0Mjc3NjA0NCwyNDI4NDM2NDc0LDU5MzY5ODM0NCwyNzU2NzM0MTg3LDM3MzMxMTAyNDksMzIwNDAzMTQ3OSwyOTk5MzUxNTczLDMzMjkzMjUyOTgsMzgxNTkyMDQyNywzMzkxNTY5NjE0LDM5MjgzODM5MDAsMzUxNTI2NzI3MSw1NjYyODA3MTEsMzk0MDE4NzYwNiwzNDU0MDY5NTM0LDQxMTg2MzAyNzEsNDAwMDIzOTk5MiwxMTY0MTg0NzQsMTkxNDEzODU1NCwxNzQyOTI0MjEsMjczMTA1NTI3MCwyODkzODAzNTYsMzIwMzk5MzAwNiw0NjAzOTMyNjksMzIwNjIwMzE1LDY4NTQ3MTczMyw1ODc0OTY4MzYsODUyMTQyOTcxLDEwODY3OTI4NTEsMTAxNzAzNjI5OCwzNjU1NDMxMDAsMTEyNjAwMDU4MCwyNjE4Mjk3Njc2LDEyODgwMzM0NzAsMzQwOTg1NTE1OCwxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYsMTYwNzE2NzkxNSw5ODcxNjc0NjgsMTgxNjQwMjMxNiwxMjQ2MTg5NTkxXTtmdW5jdGlvbiB2KCl7aWYoISh0aGlzIGluc3RhbmNlb2YgdikpcmV0dXJuIG5ldyB2O2cuY2FsbCh0aGlzKSx0aGlzLmg9WzE3NzkwMzM3MDMsNDA4OTIzNTcyMCwzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUsMTAxMzkwNDI0Miw0MjcxMTc1NzIzLDI3NzM0ODA3NjIsMTU5NTc1MDEyOSwxMzU5ODkzMTE5LDI5MTc1NjUxMzcsMjYwMDgyMjkyNCw3MjU1MTExOTksNTI4NzM0NjM1LDQyMTUzODk1NDcsMTU0MTQ1OTIyNSwzMjcwMzMyMDldLHRoaXMuaz15LHRoaXMuVz1uZXcgQXJyYXkoMTYwKX1mdW5jdGlvbiB3KGUsdCxyLG4saSl7dmFyIGE9ZSZyXn5lJmk7cmV0dXJuIGE8MCYmKGErPTQyOTQ5NjcyOTYpLGF9ZnVuY3Rpb24gXyhlLHQscixuLGksYSl7dmFyIGY9dCZuXn50JmE7cmV0dXJuIGY8MCYmKGYrPTQyOTQ5NjcyOTYpLGZ9ZnVuY3Rpb24gTShlLHQscixuLGkpe3ZhciBhPWUmcl5lJmleciZpO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfWZ1bmN0aW9uIFMoZSx0LHIsbixpLGEpe3ZhciBmPXQmbl50JmFebiZhO3JldHVybiBmPDAmJihmKz00Mjk0OTY3Mjk2KSxmfWZ1bmN0aW9uIEEoZSx0KXt2YXIgcj1mKGUsdCwyOCksbj1mKHQsZSwyKSxpPWYodCxlLDcpLGE9cl5uXmk7cmV0dXJuIGE8MCYmKGErPTQyOTQ5NjcyOTYpLGF9ZnVuY3Rpb24gRShlLHQpe3ZhciByPW8oZSx0LDI4KSxuPW8odCxlLDIpLGk9byh0LGUsNyksYT1yXm5eaTtyZXR1cm4gYTwwJiYoYSs9NDI5NDk2NzI5NiksYX1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9ZihlLHQsMTQpLG49ZihlLHQsMTgpLGk9Zih0LGUsOSksYT1yXm5eaTtyZXR1cm4gYTwwJiYoYSs9NDI5NDk2NzI5NiksYX1mdW5jdGlvbiB4KGUsdCl7dmFyIHI9byhlLHQsMTQpLG49byhlLHQsMTgpLGk9byh0LGUsOSksYT1yXm5eaTtyZXR1cm4gYTwwJiYoYSs9NDI5NDk2NzI5NiksYX1mdW5jdGlvbiBrKGUsdCl7dmFyIHI9ZihlLHQsMSksbj1mKGUsdCw4KSxpPXMoZSx0LDcpLGE9cl5uXmk7cmV0dXJuIGE8MCYmKGErPTQyOTQ5NjcyOTYpLGF9ZnVuY3Rpb24gSShlLHQpe3ZhciByPW8oZSx0LDEpLG49byhlLHQsOCksaT1kKGUsdCw3KSxhPXJebl5pO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfWZ1bmN0aW9uIFAoZSx0KXt2YXIgcj1mKGUsdCwxOSksbj1mKHQsZSwyOSksaT1zKGUsdCw2KSxhPXJebl5pO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfWZ1bmN0aW9uIFQoZSx0KXt2YXIgcj1vKGUsdCwxOSksbj1vKHQsZSwyOSksaT1kKGUsdCw2KSxhPXJebl5pO3JldHVybiBhPDAmJihhKz00Mjk0OTY3Mjk2KSxhfW4uaW5oZXJpdHModixnKSxlLmV4cG9ydHM9dix2LmJsb2NrU2l6ZT0xMDI0LHYub3V0U2l6ZT01MTIsdi5obWFjU3RyZW5ndGg9MTkyLHYucGFkTGVuZ3RoPTEyOCx2LnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMuVyxuPTA7bjwzMjtuKyspcltuXT1lW3Qrbl07Zm9yKDtuPHIubGVuZ3RoO24rPTIpe3ZhciBpPVAocltuLTRdLHJbbi0zXSksYT1UKHJbbi00XSxyW24tM10pLGY9cltuLTE0XSxvPXJbbi0xM10scz1rKHJbbi0zMF0scltuLTI5XSksZD1JKHJbbi0zMF0scltuLTI5XSksYz1yW24tMzJdLHU9cltuLTMxXTtyW25dPWwoaSxhLGYsbyxzLGQsYyx1KSxyW24rMV09YihpLGEsZixvLHMsZCxjLHUpfX0sdi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMuX3ByZXBhcmVCbG9jayhlLHQpO3ZhciByPXRoaXMuVyxuPXRoaXMuaFswXSxpPXRoaXMuaFsxXSxmPXRoaXMuaFsyXSxvPXRoaXMuaFszXSxzPXRoaXMuaFs0XSxkPXRoaXMuaFs1XSxsPXRoaXMuaFs2XSxiPXRoaXMuaFs3XSxnPXRoaXMuaFs4XSx5PXRoaXMuaFs5XSx2PXRoaXMuaFsxMF0saz10aGlzLmhbMTFdLEk9dGhpcy5oWzEyXSxQPXRoaXMuaFsxM10sVD10aGlzLmhbMTRdLEw9dGhpcy5oWzE1XTthKHRoaXMuay5sZW5ndGg9PT1yLmxlbmd0aCk7Zm9yKHZhciBPPTA7TzxyLmxlbmd0aDtPKz0yKXt2YXIgQj1ULHo9TCxOPVIoZyx5KSxDPXgoZyx5KSxxPXcoZyx5LHYsayxJLFApLGo9XyhnLHksdixrLEksUCksVT10aGlzLmtbT10sRD10aGlzLmtbTysxXSxLPXJbT10sRj1yW08rMV0sWT1wKEIseixOLEMscSxqLFUsRCxLLEYpLFc9bShCLHosTixDLHEsaixVLEQsSyxGKTtCPUEobixpKSx6PUUobixpKSxOPU0obixpLGYsbyxzLGQpLEM9UyhuLGksZixvLHMsZCk7dmFyIEg9dShCLHosTixDKSxWPWgoQix6LE4sQyk7VD1JLEw9UCxJPXYsUD1rLHY9ZyxrPXksZz11KGwsYixZLFcpLHk9aChiLGIsWSxXKSxsPXMsYj1kLHM9ZixkPW8sZj1uLG89aSxuPXUoWSxXLEgsViksaT1oKFksVyxILFYpfWModGhpcy5oLDAsbixpKSxjKHRoaXMuaCwyLGYsbyksYyh0aGlzLmgsNCxzLGQpLGModGhpcy5oLDYsbCxiKSxjKHRoaXMuaCw4LGcseSksYyh0aGlzLmgsMTAsdixrKSxjKHRoaXMuaCwxMixJLFApLGModGhpcy5oLDE0LFQsTCl9LHYucHJvdG90eXBlLl9kaWdlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuImhleCI9PT1lP24udG9IZXgzMih0aGlzLmgsImJpZyIpOm4uc3BsaXQzMih0aGlzLmgsImJpZyIpfX0sYjYzOTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiOyhmdW5jdGlvbihlKXtcbi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG52YXIgbj1yKCIxZmI1IiksaT1yKCI5MTUyIiksYT1yKCJlM2RiIik7ZnVuY3Rpb24gZigpe3RyeXt2YXIgZT1uZXcgVWludDhBcnJheSgxKTtyZXR1cm4gZS5fX3Byb3RvX189e19fcHJvdG9fXzpVaW50OEFycmF5LnByb3RvdHlwZSxmb286ZnVuY3Rpb24oKXtyZXR1cm4gNDJ9fSw0Mj09PWUuZm9vKCkmJiJmdW5jdGlvbiI9PT10eXBlb2YgZS5zdWJhcnJheSYmMD09PWUuc3ViYXJyYXkoMSwxKS5ieXRlTGVuZ3RofWNhdGNoKHQpe3JldHVybiExfX1mdW5jdGlvbiBvKCl7cmV0dXJuIGQuVFlQRURfQVJSQVlfU1VQUE9SVD8yMTQ3NDgzNjQ3OjEwNzM3NDE4MjN9ZnVuY3Rpb24gcyhlLHQpe2lmKG8oKTx0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCIpO3JldHVybiBkLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGU9bmV3IFVpbnQ4QXJyYXkodCksZS5fX3Byb3RvX189ZC5wcm90b3R5cGUpOihudWxsPT09ZSYmKGU9bmV3IGQodCkpLGUubGVuZ3RoPXQpLGV9ZnVuY3Rpb24gZChlLHQscil7aWYoIWQuVFlQRURfQVJSQVlfU1VQUE9SVCYmISh0aGlzIGluc3RhbmNlb2YgZCkpcmV0dXJuIG5ldyBkKGUsdCxyKTtpZigibnVtYmVyIj09PXR5cGVvZiBlKXtpZigic3RyaW5nIj09PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gbCh0aGlzLGUpfXJldHVybiBjKHRoaXMsZSx0LHIpfWZ1bmN0aW9uIGMoZSx0LHIsbil7aWYoIm51bWJlciI9PT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwnInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlclwnKTtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP20oZSx0LHIsbik6InN0cmluZyI9PT10eXBlb2YgdD9iKGUsdCxyKTpnKGUsdCl9ZnVuY3Rpb24gdShlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCcic2l6ZSIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwnKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmVcJyl9ZnVuY3Rpb24gaChlLHQscixuKXtyZXR1cm4gdSh0KSx0PD0wP3MoZSx0KTp2b2lkIDAhPT1yPyJzdHJpbmciPT09dHlwZW9mIG4/cyhlLHQpLmZpbGwocixuKTpzKGUsdCkuZmlsbChyKTpzKGUsdCl9ZnVuY3Rpb24gbChlLHQpe2lmKHUodCksZT1zKGUsdDwwPzA6MHx5KHQpKSwhZC5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIGIoZSx0LHIpe2lmKCJzdHJpbmciPT09dHlwZW9mIHImJiIiIT09cnx8KHI9InV0ZjgiKSwhZC5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCciZW5jb2RpbmciIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmdcJyk7dmFyIG49MHx3KHQscik7ZT1zKGUsbik7dmFyIGk9ZS53cml0ZSh0LHIpO3JldHVybiBpIT09biYmKGU9ZS5zbGljZSgwLGkpKSxlfWZ1bmN0aW9uIHAoZSx0KXt2YXIgcj10Lmxlbmd0aDwwPzA6MHx5KHQubGVuZ3RoKTtlPXMoZSxyKTtmb3IodmFyIG49MDtuPHI7bis9MSllW25dPTI1NSZ0W25dO3JldHVybiBlfWZ1bmN0aW9uIG0oZSx0LHIsbil7aWYodC5ieXRlTGVuZ3RoLHI8MHx8dC5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlwnb2Zmc2V0XCcgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKHQuYnl0ZUxlbmd0aDxyKyhufHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiXCdsZW5ndGhcJyBpcyBvdXQgb2YgYm91bmRzIik7cmV0dXJuIHQ9dm9pZCAwPT09ciYmdm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0KTp2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQscik6bmV3IFVpbnQ4QXJyYXkodCxyLG4pLGQuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT10LGUuX19wcm90b19fPWQucHJvdG90eXBlKTplPXAoZSx0KSxlfWZ1bmN0aW9uIGcoZSx0KXtpZihkLmlzQnVmZmVyKHQpKXt2YXIgcj0wfHkodC5sZW5ndGgpO3JldHVybiBlPXMoZSxyKSwwPT09ZS5sZW5ndGg/ZToodC5jb3B5KGUsMCwwLHIpLGUpfWlmKHQpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPT10eXBlb2YgdC5sZW5ndGh8fHRlKHQubGVuZ3RoKT9zKGUsMCk6cChlLHQpO2lmKCJCdWZmZXIiPT09dC50eXBlJiZhKHQuZGF0YSkpcmV0dXJuIHAoZSx0LmRhdGEpfXRocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4iKX1mdW5jdGlvbiB5KGUpe2lmKGU+PW8oKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweCIrbygpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZX1mdW5jdGlvbiB2KGUpe3JldHVybitlIT1lJiYoZT0wKSxkLmFsbG9jKCtlKX1mdW5jdGlvbiB3KGUsdCl7aWYoZC5pc0J1ZmZlcihlKSlyZXR1cm4gZS5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgQXJyYXlCdWZmZXImJiJmdW5jdGlvbiI9PT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPT10eXBlb2YgZSYmKGU9IiIrZSk7dmFyIHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPSExOzspc3dpdGNoKHQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gWChlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIFEoZSkubGVuZ3RoO2RlZmF1bHQ6aWYobilyZXR1cm4gWChlKS5sZW5ndGg7dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBfKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKHI+Pj49MCx0Pj4+PTAscjw9dClyZXR1cm4iIjtlfHwoZT0idXRmOCIpO3doaWxlKDEpc3dpdGNoKGUpe2Nhc2UiaGV4IjpyZXR1cm4gQyh0aGlzLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gTCh0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIHoodGhpcyx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIE4odGhpcyx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gVCh0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBxKHRoaXMsdCxyKTtkZWZhdWx0OmlmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIitlKTtlPShlKyIiKS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIE0oZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBTKGUsdCxyLG4saSl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT09dHlwZW9mIHI/KG49cixyPTApOnI+MjE0NzQ4MzY0Nz9yPTIxNDc0ODM2NDc6cjwtMjE0NzQ4MzY0OCYmKHI9LTIxNDc0ODM2NDgpLHI9K3IsaXNOYU4ocikmJihyPWk/MDplLmxlbmd0aC0xKSxyPDAmJihyPWUubGVuZ3RoK3IpLHI+PWUubGVuZ3RoKXtpZihpKXJldHVybi0xO3I9ZS5sZW5ndGgtMX1lbHNlIGlmKHI8MCl7aWYoIWkpcmV0dXJuLTE7cj0wfWlmKCJzdHJpbmciPT09dHlwZW9mIHQmJih0PWQuZnJvbSh0LG4pKSxkLmlzQnVmZmVyKHQpKXJldHVybiAwPT09dC5sZW5ndGg/LTE6QShlLHQscixuLGkpO2lmKCJudW1iZXIiPT09dHlwZW9mIHQpcmV0dXJuIHQmPTI1NSxkLlRZUEVEX0FSUkFZX1NVUFBPUlQmJiJmdW5jdGlvbiI9PT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9pP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHQscik6QShlLFt0XSxyLG4saSk7dGhyb3cgbmV3IFR5cGVFcnJvcigidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyIil9ZnVuY3Rpb24gQShlLHQscixuLGkpe3ZhciBhLGY9MSxvPWUubGVuZ3RoLHM9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKG49U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCksInVjczIiPT09bnx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTtmPTIsby89MixzLz0yLHIvPTJ9ZnVuY3Rpb24gZChlLHQpe3JldHVybiAxPT09Zj9lW3RdOmUucmVhZFVJbnQxNkJFKHQqZil9aWYoaSl7dmFyIGM9LTE7Zm9yKGE9cjthPG87YSsrKWlmKGQoZSxhKT09PWQodCwtMT09PWM/MDphLWMpKXtpZigtMT09PWMmJihjPWEpLGEtYysxPT09cylyZXR1cm4gYypmfWVsc2UtMSE9PWMmJihhLT1hLWMpLGM9LTF9ZWxzZSBmb3IocitzPm8mJihyPW8tcyksYT1yO2E+PTA7YS0tKXtmb3IodmFyIHU9ITAsaD0wO2g8cztoKyspaWYoZChlLGEraCkhPT1kKHQsaCkpe3U9ITE7YnJlYWt9aWYodSlyZXR1cm4gYX1yZXR1cm4tMX1mdW5jdGlvbiBFKGUsdCxyLG4pe3I9TnVtYmVyKHIpfHwwO3ZhciBpPWUubGVuZ3RoLXI7bj8obj1OdW1iZXIobiksbj5pJiYobj1pKSk6bj1pO3ZhciBhPXQubGVuZ3RoO2lmKGElMiE9PTApdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7bj5hLzImJihuPWEvMik7Zm9yKHZhciBmPTA7ZjxuOysrZil7dmFyIG89cGFyc2VJbnQodC5zdWJzdHIoMipmLDIpLDE2KTtpZihpc05hTihvKSlyZXR1cm4gZjtlW3IrZl09b31yZXR1cm4gZn1mdW5jdGlvbiBSKGUsdCxyLG4pe3JldHVybiBlZShYKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIHgoZSx0LHIsbil7cmV0dXJuIGVlKEcodCksZSxyLG4pfWZ1bmN0aW9uIGsoZSx0LHIsbil7cmV0dXJuIHgoZSx0LHIsbil9ZnVuY3Rpb24gSShlLHQscixuKXtyZXR1cm4gZWUoUSh0KSxlLHIsbil9ZnVuY3Rpb24gUChlLHQscixuKXtyZXR1cm4gZWUoJCh0LGUubGVuZ3RoLXIpLGUscixuKX1mdW5jdGlvbiBUKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD9uLmZyb21CeXRlQXJyYXkoZSk6bi5mcm9tQnl0ZUFycmF5KGUuc2xpY2UodCxyKSl9ZnVuY3Rpb24gTChlLHQscil7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTt2YXIgbj1bXSxpPXQ7d2hpbGUoaTxyKXt2YXIgYSxmLG8scyxkPWVbaV0sYz1udWxsLHU9ZD4yMzk/NDpkPjIyMz8zOmQ+MTkxPzI6MTtpZihpK3U8PXIpc3dpdGNoKHUpe2Nhc2UgMTpkPDEyOCYmKGM9ZCk7YnJlYWs7Y2FzZSAyOmE9ZVtpKzFdLDEyOD09PSgxOTImYSkmJihzPSgzMSZkKTw8Nnw2MyZhLHM+MTI3JiYoYz1zKSk7YnJlYWs7Y2FzZSAzOmE9ZVtpKzFdLGY9ZVtpKzJdLDEyOD09PSgxOTImYSkmJjEyOD09PSgxOTImZikmJihzPSgxNSZkKTw8MTJ8KDYzJmEpPDw2fDYzJmYscz4yMDQ3JiYoczw1NTI5Nnx8cz41NzM0MykmJihjPXMpKTticmVhaztjYXNlIDQ6YT1lW2krMV0sZj1lW2krMl0sbz1lW2krM10sMTI4PT09KDE5MiZhKSYmMTI4PT09KDE5MiZmKSYmMTI4PT09KDE5MiZvKSYmKHM9KDE1JmQpPDwxOHwoNjMmYSk8PDEyfCg2MyZmKTw8Nnw2MyZvLHM+NjU1MzUmJnM8MTExNDExMiYmKGM9cykpfW51bGw9PT1jPyhjPTY1NTMzLHU9MSk6Yz42NTUzNSYmKGMtPTY1NTM2LG4ucHVzaChjPj4+MTAmMTAyM3w1NTI5NiksYz01NjMyMHwxMDIzJmMpLG4ucHVzaChjKSxpKz11fXJldHVybiBCKG4pfXQuQnVmZmVyPWQsdC5TbG93QnVmZmVyPXYsdC5JTlNQRUNUX01BWF9CWVRFUz01MCxkLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwIT09ZS5UWVBFRF9BUlJBWV9TVVBQT1JUP2UuVFlQRURfQVJSQVlfU1VQUE9SVDpmKCksdC5rTWF4TGVuZ3RoPW8oKSxkLnBvb2xTaXplPTgxOTIsZC5fYXVnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX189ZC5wcm90b3R5cGUsZX0sZC5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gYyhudWxsLGUsdCxyKX0sZC5UWVBFRF9BUlJBWV9TVVBQT1JUJiYoZC5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLGQuX19wcm90b19fPVVpbnQ4QXJyYXksInVuZGVmaW5lZCIhPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuc3BlY2llcyYmZFtTeW1ib2wuc3BlY2llc109PT1kJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZCxTeW1ib2wuc3BlY2llcyx7dmFsdWU6bnVsbCxjb25maWd1cmFibGU6ITB9KSksZC5hbGxvYz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGgobnVsbCxlLHQscil9LGQuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGwobnVsbCxlKX0sZC5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIGwobnVsbCxlKX0sZC5pc0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9LGQuY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKCFkLmlzQnVmZmVyKGUpfHwhZC5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIik7aWYoZT09PXQpcmV0dXJuIDA7Zm9yKHZhciByPWUubGVuZ3RoLG49dC5sZW5ndGgsaT0wLGE9TWF0aC5taW4ocixuKTtpPGE7KytpKWlmKGVbaV0hPT10W2ldKXtyPWVbaV0sbj10W2ldO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH0sZC5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxkLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFhKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzXCcpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gZC5hbGxvYygwKTt2YXIgcjtpZih2b2lkIDA9PT10KWZvcih0PTAscj0wO3I8ZS5sZW5ndGg7KytyKXQrPWVbcl0ubGVuZ3RoO3ZhciBuPWQuYWxsb2NVbnNhZmUodCksaT0wO2ZvcihyPTA7cjxlLmxlbmd0aDsrK3Ipe3ZhciBmPWVbcl07aWYoIWQuaXNCdWZmZXIoZikpdGhyb3cgbmV3IFR5cGVFcnJvcihcJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnNcJyk7Zi5jb3B5KG4saSksaSs9Zi5sZW5ndGh9cmV0dXJuIG59LGQuYnl0ZUxlbmd0aD13LGQucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxkLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTIhPT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz0yKU0odGhpcyx0LHQrMSk7cmV0dXJuIHRoaXN9LGQucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlNCE9PTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTQpTSh0aGlzLHQsdCszKSxNKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LGQucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9PTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTgpTSh0aGlzLHQsdCs3KSxNKHRoaXMsdCsxLHQrNiksTSh0aGlzLHQrMix0KzUpLE0odGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sZC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9MKHRoaXMsMCxlKTpfLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGUpe2lmKCFkLmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1kLmNvbXBhcmUodGhpcyxlKX0sZC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiLHI9dC5JTlNQRUNUX01BWF9CWVRFUztyZXR1cm4gdGhpcy5sZW5ndGg+MCYmKGU9dGhpcy50b1N0cmluZygiaGV4IiwwLHIpLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD5yJiYoZSs9IiAuLi4gIikpLCI8QnVmZmVyICIrZSsiPiJ9LGQucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oZSx0LHIsbixpKXtpZighZC5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7aWYodm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09ciYmKHI9ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT10aGlzLmxlbmd0aCksdDwwfHxyPmUubGVuZ3RofHxuPDB8fGk+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKG4+PWkmJnQ+PXIpcmV0dXJuIDA7aWYobj49aSlyZXR1cm4tMTtpZih0Pj1yKXJldHVybiAxO2lmKHQ+Pj49MCxyPj4+PTAsbj4+Pj0wLGk+Pj49MCx0aGlzPT09ZSlyZXR1cm4gMDtmb3IodmFyIGE9aS1uLGY9ci10LG89TWF0aC5taW4oYSxmKSxzPXRoaXMuc2xpY2UobixpKSxjPWUuc2xpY2UodCxyKSx1PTA7dTxvOysrdSlpZihzW3VdIT09Y1t1XSl7YT1zW3VdLGY9Y1t1XTticmVha31yZXR1cm4gYTxmPy0xOmY8YT8xOjB9LGQucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihlLHQscil9LGQucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBTKHRoaXMsZSx0LHIsITApfSxkLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIFModGhpcyxlLHQsciwhMSl9LGQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHZvaWQgMD09PXQpbj0idXRmOCIscj10aGlzLmxlbmd0aCx0PTA7ZWxzZSBpZih2b2lkIDA9PT1yJiYic3RyaW5nIj09PXR5cGVvZiB0KW49dCxyPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7dHw9MCxpc0Zpbml0ZShyKT8ocnw9MCx2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgaT10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPmkpJiYocj1pKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBhPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4gRSh0aGlzLGUsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBSKHRoaXMsZSx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiB4KHRoaXMsZSx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGsodGhpcyxlLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBJKHRoaXMsZSx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gUCh0aGlzLGUsdCxyKTtkZWZhdWx0OmlmKGEpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgiIituKS50b0xvd2VyQ2FzZSgpLGE9ITB9fSxkLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciBPPTQwOTY7ZnVuY3Rpb24gQihlKXt2YXIgdD1lLmxlbmd0aDtpZih0PD1PKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTt2YXIgcj0iIixuPTA7d2hpbGUobjx0KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz1PKSk7cmV0dXJuIHJ9ZnVuY3Rpb24geihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGk9dDtpPHI7KytpKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JmVbaV0pO3JldHVybiBufWZ1bmN0aW9uIE4oZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBpPXQ7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbaV0pO3JldHVybiBufWZ1bmN0aW9uIEMoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgaT0iIixhPXQ7YTxyOysrYSlpKz1KKGVbYV0pO3JldHVybiBpfWZ1bmN0aW9uIHEoZSx0LHIpe2Zvcih2YXIgbj1lLnNsaWNlKHQsciksaT0iIixhPTA7YTxuLmxlbmd0aDthKz0yKWkrPVN0cmluZy5mcm9tQ2hhckNvZGUoblthXSsyNTYqblthKzFdKTtyZXR1cm4gaX1mdW5jdGlvbiBqKGUsdCxyKXtpZihlJTEhPT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGUrdD5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gVShlLHQscixuLGksYSl7aWYoIWQuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2VcJyk7aWYodD5pfHx0PGEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCcidmFsdWUiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHNcJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBEKGUsdCxyLG4pe3Q8MCYmKHQ9NjU1MzUrdCsxKTtmb3IodmFyIGk9MCxhPU1hdGgubWluKGUubGVuZ3RoLXIsMik7aTxhOysraSllW3IraV09KHQmMjU1PDw4KihuP2k6MS1pKSk+Pj44KihuP2k6MS1pKX1mdW5jdGlvbiBLKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgaT0wLGE9TWF0aC5taW4oZS5sZW5ndGgtciw0KTtpPGE7KytpKWVbcitpXT10Pj4+OCoobj9pOjMtaSkmMjU1fWZ1bmN0aW9uIEYoZSx0LHIsbixpLGEpe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBZKGUsdCxyLG4sYSl7cmV0dXJuIGF8fEYoZSx0LHIsNCwzNDAyODIzNDY2Mzg1Mjg4NmUyMiwtMzQwMjgyMzQ2NjM4NTI4ODZlMjIpLGkud3JpdGUoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gVyhlLHQscixuLGEpe3JldHVybiBhfHxGKGUsdCxyLDgsMTc5NzY5MzEzNDg2MjMxNTdlMjkyLC0xNzk3NjkzMTM0ODYyMzE1N2UyOTIpLGkud3JpdGUoZSx0LHIsbiw1Miw4KSxyKzh9ZC5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKGU9fn5lLHQ9dm9pZCAwPT09dD9uOn5+dCxlPDA/KGUrPW4sZTwwJiYoZT0wKSk6ZT5uJiYoZT1uKSx0PDA/KHQrPW4sdDwwJiYodD0wKSk6dD5uJiYodD1uKSx0PGUmJih0PWUpLGQuVFlQRURfQVJSQVlfU1VQUE9SVClyPXRoaXMuc3ViYXJyYXkoZSx0KSxyLl9fcHJvdG9fXz1kLnByb3RvdHlwZTtlbHNle3ZhciBpPXQtZTtyPW5ldyBkKGksdm9pZCAwKTtmb3IodmFyIGE9MDthPGk7KythKXJbYV09dGhpc1thK2VdfXJldHVybiByfSxkLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8aihlLHQsdGhpcy5sZW5ndGgpO3ZhciBuPXRoaXNbZV0saT0xLGE9MDt3aGlsZSgrK2E8dCYmKGkqPTI1Nikpbis9dGhpc1tlK2FdKmk7cmV0dXJuIG59LGQucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxqKGUsdCx0aGlzLmxlbmd0aCk7dmFyIG49dGhpc1tlKy0tdF0saT0xO3doaWxlKHQ+MCYmKGkqPTI1Nikpbis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gbn0sZC5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fGooZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxkLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8aihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSxkLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8aihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxkLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8aihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LGQucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxqKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sZC5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8aihlLHQsdGhpcy5sZW5ndGgpO3ZhciBuPXRoaXNbZV0saT0xLGE9MDt3aGlsZSgrK2E8dCYmKGkqPTI1Nikpbis9dGhpc1tlK2FdKmk7cmV0dXJuIGkqPTEyOCxuPj1pJiYobi09TWF0aC5wb3coMiw4KnQpKSxufSxkLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxqKGUsdCx0aGlzLmxlbmd0aCk7dmFyIG49dCxpPTEsYT10aGlzW2UrLS1uXTt3aGlsZShuPjAmJihpKj0yNTYpKWErPXRoaXNbZSstLW5dKmk7cmV0dXJuIGkqPTEyOCxhPj1pJiYoYS09TWF0aC5wb3coMiw4KnQpKSxhfSxkLnByb3RvdHlwZS5yZWFkSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxqKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LGQucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8aihlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZV18dGhpc1tlKzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxkLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fGooZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sZC5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8aihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sZC5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8aihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDI0fHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXX0sZC5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8aihlLDQsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITAsMjMsNCl9LGQucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fGooZSw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCExLDIzLDQpfSxkLnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8aihlLDgsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITAsNTIsOCl9LGQucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxqKGUsOCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsZSwhMSw1Miw4KX0sZC5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLHJ8PTAsIW4pe3ZhciBpPU1hdGgucG93KDIsOCpyKS0xO1UodGhpcyxlLHQscixpLDApfXZhciBhPTEsZj0wO3RoaXNbdF09MjU1JmU7d2hpbGUoKytmPHImJihhKj0yNTYpKXRoaXNbdCtmXT1lL2EmMjU1O3JldHVybiB0K3J9LGQucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCxyfD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqciktMTtVKHRoaXMsZSx0LHIsaSwwKX12YXIgYT1yLTEsZj0xO3RoaXNbdCthXT0yNTUmZTt3aGlsZSgtLWE+PTAmJihmKj0yNTYpKXRoaXNbdCthXT1lL2YmMjU1O3JldHVybiB0K3J9LGQucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8VSh0aGlzLGUsdCwxLDI1NSwwKSxkLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxkLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFUodGhpcyxlLHQsMiw2NTUzNSwwKSxkLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpEKHRoaXMsZSx0LCEwKSx0KzJ9LGQucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8VSh0aGlzLGUsdCwyLDY1NTM1LDApLGQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOkQodGhpcyxlLHQsITEpLHQrMn0sZC5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxVKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxkLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6Syh0aGlzLGUsdCwhMCksdCs0fSxkLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFUodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLGQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpLKHRoaXMsZSx0LCExKSx0KzR9LGQucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtVKHRoaXMsZSx0LHIsaS0xLC1pKX12YXIgYT0wLGY9MSxvPTA7dGhpc1t0XT0yNTUmZTt3aGlsZSgrK2E8ciYmKGYqPTI1NikpZTwwJiYwPT09byYmMCE9PXRoaXNbdCthLTFdJiYobz0xKSx0aGlzW3QrYV09KGUvZj4+MCktbyYyNTU7cmV0dXJuIHQrcn0sZC5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBpPU1hdGgucG93KDIsOCpyLTEpO1UodGhpcyxlLHQscixpLTEsLWkpfXZhciBhPXItMSxmPTEsbz0wO3RoaXNbdCthXT0yNTUmZTt3aGlsZSgtLWE+PTAmJihmKj0yNTYpKWU8MCYmMD09PW8mJjAhPT10aGlzW3QrYSsxXSYmKG89MSksdGhpc1t0K2FdPShlL2Y+PjApLW8mMjU1O3JldHVybiB0K3J9LGQucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxVKHRoaXMsZSx0LDEsMTI3LC0xMjgpLGQuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0sZC5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFUodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOkQodGhpcyxlLHQsITApLHQrMn0sZC5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFUodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLGQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOkQodGhpcyxlLHQsITEpLHQrMn0sZC5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFUodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxkLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzNdPWU+Pj4yNCk6Syh0aGlzLGUsdCwhMCksdCs0fSxkLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8VSh0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLGQuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpLKHRoaXMsZSx0LCExKSx0KzR9LGQucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFkodGhpcyxlLHQsITAscil9LGQucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFkodGhpcyxlLHQsITEscil9LGQucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBXKHRoaXMsZSx0LCEwLHIpfSxkLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVyh0aGlzLGUsdCwhMSxyKX0sZC5wcm90b3R5cGUuY29weT1mdW5jdGlvbihlLHQscixuKXtpZihyfHwocj0wKSxufHwwPT09bnx8KG49dGhpcy5sZW5ndGgpLHQ+PWUubGVuZ3RoJiYodD1lLmxlbmd0aCksdHx8KHQ9MCksbj4wJiZuPHImJihuPXIpLG49PT1yKXJldHVybiAwO2lmKDA9PT1lLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7bj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLGUubGVuZ3RoLXQ8bi1yJiYobj1lLmxlbmd0aC10K3IpO3ZhciBpLGE9bi1yO2lmKHRoaXM9PT1lJiZyPHQmJnQ8bilmb3IoaT1hLTE7aT49MDstLWkpZVtpK3RdPXRoaXNbaStyXTtlbHNlIGlmKGE8MWUzfHwhZC5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihpPTA7aTxhOysraSllW2krdF09dGhpc1tpK3JdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KHIscithKSx0KTtyZXR1cm4gYX0sZC5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQscixuKXtpZigic3RyaW5nIj09PXR5cGVvZiBlKXtpZigic3RyaW5nIj09PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgaT1lLmNoYXJDb2RlQXQoMCk7aTwyNTYmJihlPWkpfWlmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT09dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT09dHlwZW9mIG4mJiFkLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PT10eXBlb2YgZSYmKGUmPTI1NSk7aWYodDwwfHx0aGlzLmxlbmd0aDx0fHx0aGlzLmxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihyPD10KXJldHVybiB0aGlzO3ZhciBhO2lmKHQ+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5ndGg6cj4+PjAsZXx8KGU9MCksIm51bWJlciI9PT10eXBlb2YgZSlmb3IoYT10O2E8cjsrK2EpdGhpc1thXT1lO2Vsc2V7dmFyIGY9ZC5pc0J1ZmZlcihlKT9lOlgobmV3IGQoZSxuKS50b1N0cmluZygpKSxvPWYubGVuZ3RoO2ZvcihhPTA7YTxyLXQ7KythKXRoaXNbYSt0XT1mW2Elb119cmV0dXJuIHRoaXN9O3ZhciBIPS9bXitcXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBWKGUpe2lmKGU9WihlKS5yZXBsYWNlKEgsIiIpLGUubGVuZ3RoPDIpcmV0dXJuIiI7d2hpbGUoZS5sZW5ndGglNCE9PTApZSs9Ij0iO3JldHVybiBlfWZ1bmN0aW9uIFooZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15cXHMrfFxccyskL2csIiIpfWZ1bmN0aW9uIEooZSl7cmV0dXJuIGU8MTY/IjAiK2UudG9TdHJpbmcoMTYpOmUudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIFgoZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsaT1udWxsLGE9W10sZj0wO2Y8bjsrK2Ype2lmKHI9ZS5jaGFyQ29kZUF0KGYpLHI+NTUyOTUmJnI8NTczNDQpe2lmKCFpKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJmEucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoZisxPT09bil7KHQtPTMpPi0xJiZhLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWk9cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJmEucHVzaCgyMzksMTkxLDE4OSksaT1yO2NvbnRpbnVlfXI9NjU1MzYrKGktNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgaSYmKHQtPTMpPi0xJiZhLnB1c2goMjM5LDE5MSwxODkpO2lmKGk9bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7YS5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhazthLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7YS5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhazthLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBhfWZ1bmN0aW9uIEcoZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGUubGVuZ3RoOysrcil0LnB1c2goMjU1JmUuY2hhckNvZGVBdChyKSk7cmV0dXJuIHR9ZnVuY3Rpb24gJChlLHQpe2Zvcih2YXIgcixuLGksYT1bXSxmPTA7ZjxlLmxlbmd0aDsrK2Ype2lmKCh0LT0yKTwwKWJyZWFrO3I9ZS5jaGFyQ29kZUF0KGYpLG49cj4+OCxpPXIlMjU2LGEucHVzaChpKSxhLnB1c2gobil9cmV0dXJuIGF9ZnVuY3Rpb24gUShlKXtyZXR1cm4gbi50b0J5dGVBcnJheShWKGUpKX1mdW5jdGlvbiBlZShlLHQscixuKXtmb3IodmFyIGk9MDtpPG47KytpKXtpZihpK3I+PXQubGVuZ3RofHxpPj1lLmxlbmd0aClicmVhazt0W2krcl09ZVtpXX1yZXR1cm4gaX1mdW5jdGlvbiB0ZShlKXtyZXR1cm4gZSE9PWV9fSkuY2FsbCh0aGlzLHIoImM4YmEiKSl9LGI3MWM6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7dmFyIHI9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBpKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP24oT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXthKGUsdCxyW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpuKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGEoZSx0LHIpe3JldHVybiB0PWQodCksdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiBmKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsZChuLmtleSksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZvKGUucHJvdG90eXBlLHQpLHImJm8oZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9YyhlLCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfWZ1bmN0aW9uIGMoZSx0KXtpZigib2JqZWN0IiE9PXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4gZTt2YXIgcj1lW1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKGUsdHx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PXR5cGVvZiBuKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09dD9TdHJpbmc6TnVtYmVyKShlKX12YXIgdT1yKCJiNjM5IiksaD11LkJ1ZmZlcixsPXIoMyksYj1sLmluc3BlY3QscD1iJiZiLmN1c3RvbXx8Imluc3BlY3QiO2Z1bmN0aW9uIG0oZSx0LHIpe2gucHJvdG90eXBlLmNvcHkuY2FsbChlLHQscil9ZS5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe2YodGhpcyxlKSx0aGlzLmhlYWQ9bnVsbCx0aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfXJldHVybiBzKGUsW3trZXk6InB1c2giLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXtkYXRhOmUsbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PXQ6dGhpcy5oZWFkPXQsdGhpcy50YWlsPXQsKyt0aGlzLmxlbmd0aH19LHtrZXk6InVuc2hpZnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXtkYXRhOmUsbmV4dDp0aGlzLmhlYWR9OzA9PT10aGlzLmxlbmd0aCYmKHRoaXMudGFpbD10KSx0aGlzLmhlYWQ9dCwrK3RoaXMubGVuZ3RofX0se2tleToic2hpZnQiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgZT10aGlzLmhlYWQuZGF0YTtyZXR1cm4gMT09PXRoaXMubGVuZ3RoP3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbDp0aGlzLmhlYWQ9dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCxlfX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfX0se2tleToiam9pbiIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiIiO3ZhciB0PXRoaXMuaGVhZCxyPSIiK3QuZGF0YTt3aGlsZSh0PXQubmV4dClyKz1lK3QuZGF0YTtyZXR1cm4gcn19LHtrZXk6ImNvbmNhdCIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBoLmFsbG9jKDApO3ZhciB0PWguYWxsb2NVbnNhZmUoZT4+PjApLHI9dGhpcy5oZWFkLG49MDt3aGlsZShyKW0oci5kYXRhLHQsbiksbis9ci5kYXRhLmxlbmd0aCxyPXIubmV4dDtyZXR1cm4gdH19LHtrZXk6ImNvbnN1bWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIGU8dGhpcy5oZWFkLmRhdGEubGVuZ3RoPyhyPXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAsZSksdGhpcy5oZWFkLmRhdGE9dGhpcy5oZWFkLmRhdGEuc2xpY2UoZSkpOnI9ZT09PXRoaXMuaGVhZC5kYXRhLmxlbmd0aD90aGlzLnNoaWZ0KCk6dD90aGlzLl9nZXRTdHJpbmcoZSk6dGhpcy5fZ2V0QnVmZmVyKGUpLHJ9fSx7a2V5OiJmaXJzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWFkLmRhdGF9fSx7a2V5OiJfZ2V0U3RyaW5nIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmhlYWQscj0xLG49dC5kYXRhO2UtPW4ubGVuZ3RoO3doaWxlKHQ9dC5uZXh0KXt2YXIgaT10LmRhdGEsYT1lPmkubGVuZ3RoP2kubGVuZ3RoOmU7aWYoYT09PWkubGVuZ3RoP24rPWk6bis9aS5zbGljZSgwLGUpLGUtPWEsMD09PWUpe2E9PT1pLmxlbmd0aD8oKytyLHQubmV4dD90aGlzLmhlYWQ9dC5uZXh0OnRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD10LHQuZGF0YT1pLnNsaWNlKGEpKTticmVha30rK3J9cmV0dXJuIHRoaXMubGVuZ3RoLT1yLG59fSx7a2V5OiJfZ2V0QnVmZmVyIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1oLmFsbG9jVW5zYWZlKGUpLHI9dGhpcy5oZWFkLG49MTtyLmRhdGEuY29weSh0KSxlLT1yLmRhdGEubGVuZ3RoO3doaWxlKHI9ci5uZXh0KXt2YXIgaT1yLmRhdGEsYT1lPmkubGVuZ3RoP2kubGVuZ3RoOmU7aWYoaS5jb3B5KHQsdC5sZW5ndGgtZSwwLGEpLGUtPWEsMD09PWUpe2E9PT1pLmxlbmd0aD8oKytuLHIubmV4dD90aGlzLmhlYWQ9ci5uZXh0OnRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD1yLHIuZGF0YT1pLnNsaWNlKGEpKTticmVha30rK259cmV0dXJuIHRoaXMubGVuZ3RoLT1uLHR9fSx7a2V5OnAsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYih0aGlzLGkoaSh7fSx0KSx7fSx7ZGVwdGg6MCxjdXN0b21JbnNwZWN0OiExfSkpfX1dKSxlfSgpfSxiNzNmOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigiODBhZiIpLGk9cigiZjNhMyIpLGE9aS5hc3NlcnQ7ZnVuY3Rpb24gZihlLHQpe2lmKGUgaW5zdGFuY2VvZiBmKXJldHVybiBlO3RoaXMuX2ltcG9ydERFUihlLHQpfHwoYShlLnImJmUucywiU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzIiksdGhpcy5yPW5ldyBuKGUuciwxNiksdGhpcy5zPW5ldyBuKGUucywxNiksdm9pZCAwPT09ZS5yZWNvdmVyeVBhcmFtP3RoaXMucmVjb3ZlcnlQYXJhbT1udWxsOnRoaXMucmVjb3ZlcnlQYXJhbT1lLnJlY292ZXJ5UGFyYW0pfWZ1bmN0aW9uIG8oKXt0aGlzLnBsYWNlPTB9ZnVuY3Rpb24gcyhlLHQpe3ZhciByPWVbdC5wbGFjZSsrXTtpZighKDEyOCZyKSlyZXR1cm4gcjt2YXIgbj0xNSZyO2lmKDA9PT1ufHxuPjQpcmV0dXJuITE7Zm9yKHZhciBpPTAsYT0wLGY9dC5wbGFjZTthPG47YSsrLGYrKylpPDw9OCxpfD1lW2ZdLGk+Pj49MDtyZXR1cm4hKGk8PTEyNykmJih0LnBsYWNlPWYsaSl9ZnVuY3Rpb24gZChlKXt2YXIgdD0wLHI9ZS5sZW5ndGgtMTt3aGlsZSghZVt0XSYmISgxMjgmZVt0KzFdKSYmdDxyKXQrKztyZXR1cm4gMD09PXQ/ZTplLnNsaWNlKHQpfWZ1bmN0aW9uIGMoZSx0KXtpZih0PDEyOCllLnB1c2godCk7ZWxzZXt2YXIgcj0xKyhNYXRoLmxvZyh0KS9NYXRoLkxOMj4+PjMpO2UucHVzaCgxMjh8cik7d2hpbGUoLS1yKWUucHVzaCh0Pj4+KHI8PDMpJjI1NSk7ZS5wdXNoKHQpfX1lLmV4cG9ydHM9ZixmLnByb3RvdHlwZS5faW1wb3J0REVSPWZ1bmN0aW9uKGUsdCl7ZT1pLnRvQXJyYXkoZSx0KTt2YXIgcj1uZXcgbztpZig0OCE9PWVbci5wbGFjZSsrXSlyZXR1cm4hMTt2YXIgYT1zKGUscik7aWYoITE9PT1hKXJldHVybiExO2lmKGErci5wbGFjZSE9PWUubGVuZ3RoKXJldHVybiExO2lmKDIhPT1lW3IucGxhY2UrK10pcmV0dXJuITE7dmFyIGY9cyhlLHIpO2lmKCExPT09ZilyZXR1cm4hMTt2YXIgZD1lLnNsaWNlKHIucGxhY2UsZityLnBsYWNlKTtpZihyLnBsYWNlKz1mLDIhPT1lW3IucGxhY2UrK10pcmV0dXJuITE7dmFyIGM9cyhlLHIpO2lmKCExPT09YylyZXR1cm4hMTtpZihlLmxlbmd0aCE9PWMrci5wbGFjZSlyZXR1cm4hMTt2YXIgdT1lLnNsaWNlKHIucGxhY2UsYytyLnBsYWNlKTtpZigwPT09ZFswXSl7aWYoISgxMjgmZFsxXSkpcmV0dXJuITE7ZD1kLnNsaWNlKDEpfWlmKDA9PT11WzBdKXtpZighKDEyOCZ1WzFdKSlyZXR1cm4hMTt1PXUuc2xpY2UoMSl9cmV0dXJuIHRoaXMucj1uZXcgbihkKSx0aGlzLnM9bmV3IG4odSksdGhpcy5yZWNvdmVyeVBhcmFtPW51bGwsITB9LGYucHJvdG90eXBlLnRvREVSPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuci50b0FycmF5KCkscj10aGlzLnMudG9BcnJheSgpOzEyOCZ0WzBdJiYodD1bMF0uY29uY2F0KHQpKSwxMjgmclswXSYmKHI9WzBdLmNvbmNhdChyKSksdD1kKHQpLHI9ZChyKTt3aGlsZSghclswXSYmISgxMjgmclsxXSkpcj1yLnNsaWNlKDEpO3ZhciBuPVsyXTtjKG4sdC5sZW5ndGgpLG49bi5jb25jYXQodCksbi5wdXNoKDIpLGMobixyLmxlbmd0aCk7dmFyIGE9bi5jb25jYXQociksZj1bNDhdO3JldHVybiBjKGYsYS5sZW5ndGgpLGY9Zi5jb25jYXQoYSksaS5lbmNvZGUoZixlKX19LGI3ZDE6ZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbih0KXtmdW5jdGlvbiByKGUsdCl7aWYobigibm9EZXByZWNhdGlvbiIpKXJldHVybiBlO3ZhciByPSExO2Z1bmN0aW9uIGkoKXtpZighcil7aWYobigidGhyb3dEZXByZWNhdGlvbiIpKXRocm93IG5ldyBFcnJvcih0KTtuKCJ0cmFjZURlcHJlY2F0aW9uIik/Y29uc29sZS50cmFjZSh0KTpjb25zb2xlLndhcm4odCkscj0hMH1yZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGl9ZnVuY3Rpb24gbihlKXt0cnl7aWYoIXQubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoKG4pe3JldHVybiExfXZhciByPXQubG9jYWxTdG9yYWdlW2VdO3JldHVybiBudWxsIT1yJiYidHJ1ZSI9PT1TdHJpbmcocikudG9Mb3dlckNhc2UoKX1lLmV4cG9ydHM9cn0pLmNhbGwodGhpcyxyKCJjOGJhIikpfSxiOGRiOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPWk7dmFyIG49cigiNTNlMiIpO2Z1bmN0aW9uIGkoZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgaSkpcmV0dXJuIG5ldyBpKGUpO24uY2FsbCh0aGlzLGUpfXIoIjNmYjUiKShpLG4pLGkucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24oZSx0LHIpe3IobnVsbCxlKX19LGI5YTg6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCI4MGFmIiksaT1yKCI2YWEyIiksYT1yKCJmM2EzIiksZj1yKCIwY2JiIiksbz1yKCJmZGFjIikscz1hLmFzc2VydCxkPXIoImJiMzQiKSxjPXIoImI3M2YiKTtmdW5jdGlvbiB1KGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHUpKXJldHVybiBuZXcgdShlKTsic3RyaW5nIj09PXR5cGVvZiBlJiYocyhPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZixlKSwiVW5rbm93biBjdXJ2ZSAiK2UpLGU9ZltlXSksZSBpbnN0YW5jZW9mIGYuUHJlc2V0Q3VydmUmJihlPXtjdXJ2ZTplfSksdGhpcy5jdXJ2ZT1lLmN1cnZlLmN1cnZlLHRoaXMubj10aGlzLmN1cnZlLm4sdGhpcy5uaD10aGlzLm4udXNocm4oMSksdGhpcy5nPXRoaXMuY3VydmUuZyx0aGlzLmc9ZS5jdXJ2ZS5nLHRoaXMuZy5wcmVjb21wdXRlKGUuY3VydmUubi5iaXRMZW5ndGgoKSsxKSx0aGlzLmhhc2g9ZS5oYXNofHxlLmN1cnZlLmhhc2h9ZS5leHBvcnRzPXUsdS5wcm90b3R5cGUua2V5UGFpcj1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGQodGhpcyxlKX0sdS5wcm90b3R5cGUua2V5RnJvbVByaXZhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZC5mcm9tUHJpdmF0ZSh0aGlzLGUsdCl9LHUucHJvdG90eXBlLmtleUZyb21QdWJsaWM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZC5mcm9tUHVibGljKHRoaXMsZSx0KX0sdS5wcm90b3R5cGUuZ2VuS2V5UGFpcj1mdW5jdGlvbihlKXtlfHwoZT17fSk7Zm9yKHZhciB0PW5ldyBpKHtoYXNoOnRoaXMuaGFzaCxwZXJzOmUucGVycyxwZXJzRW5jOmUucGVyc0VuY3x8InV0ZjgiLGVudHJvcHk6ZS5lbnRyb3B5fHxvKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLGVudHJvcHlFbmM6ZS5lbnRyb3B5JiZlLmVudHJvcHlFbmN8fCJ1dGY4Iixub25jZTp0aGlzLm4udG9BcnJheSgpfSkscj10aGlzLm4uYnl0ZUxlbmd0aCgpLGE9dGhpcy5uLnN1YihuZXcgbigyKSk7Oyl7dmFyIGY9bmV3IG4odC5nZW5lcmF0ZShyKSk7aWYoIShmLmNtcChhKT4wKSlyZXR1cm4gZi5pYWRkbigxKSx0aGlzLmtleUZyb21Qcml2YXRlKGYpfX0sdS5wcm90b3R5cGUuX3RydW5jYXRlVG9OPWZ1bmN0aW9uKGUsdCl7dmFyIHI9OCplLmJ5dGVMZW5ndGgoKS10aGlzLm4uYml0TGVuZ3RoKCk7cmV0dXJuIHI+MCYmKGU9ZS51c2hybihyKSksIXQmJmUuY21wKHRoaXMubik+PTA/ZS5zdWIodGhpcy5uKTplfSx1LnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKGUsdCxyLGEpeyJvYmplY3QiPT09dHlwZW9mIHImJihhPXIscj1udWxsKSxhfHwoYT17fSksdD10aGlzLmtleUZyb21Qcml2YXRlKHQsciksZT10aGlzLl90cnVuY2F0ZVRvTihuZXcgbihlLDE2KSk7Zm9yKHZhciBmPXRoaXMubi5ieXRlTGVuZ3RoKCksbz10LmdldFByaXZhdGUoKS50b0FycmF5KCJiZSIsZikscz1lLnRvQXJyYXkoImJlIixmKSxkPW5ldyBpKHtoYXNoOnRoaXMuaGFzaCxlbnRyb3B5Om8sbm9uY2U6cyxwZXJzOmEucGVycyxwZXJzRW5jOmEucGVyc0VuY3x8InV0ZjgifSksdT10aGlzLm4uc3ViKG5ldyBuKDEpKSxoPTA7O2grKyl7dmFyIGw9YS5rP2EuayhoKTpuZXcgbihkLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtpZihsPXRoaXMuX3RydW5jYXRlVG9OKGwsITApLCEobC5jbXBuKDEpPD0wfHxsLmNtcCh1KT49MCkpe3ZhciBiPXRoaXMuZy5tdWwobCk7aWYoIWIuaXNJbmZpbml0eSgpKXt2YXIgcD1iLmdldFgoKSxtPXAudW1vZCh0aGlzLm4pO2lmKDAhPT1tLmNtcG4oMCkpe3ZhciBnPWwuaW52bSh0aGlzLm4pLm11bChtLm11bCh0LmdldFByaXZhdGUoKSkuaWFkZChlKSk7aWYoZz1nLnVtb2QodGhpcy5uKSwwIT09Zy5jbXBuKDApKXt2YXIgeT0oYi5nZXRZKCkuaXNPZGQoKT8xOjApfCgwIT09cC5jbXAobSk/MjowKTtyZXR1cm4gYS5jYW5vbmljYWwmJmcuY21wKHRoaXMubmgpPjAmJihnPXRoaXMubi5zdWIoZykseV49MSksbmV3IGMoe3I6bSxzOmcscmVjb3ZlcnlQYXJhbTp5fSl9fX19fX0sdS5wcm90b3R5cGUudmVyaWZ5PWZ1bmN0aW9uKGUsdCxyLGkpe2U9dGhpcy5fdHJ1bmNhdGVUb04obmV3IG4oZSwxNikpLHI9dGhpcy5rZXlGcm9tUHVibGljKHIsaSksdD1uZXcgYyh0LCJoZXgiKTt2YXIgYT10LnIsZj10LnM7aWYoYS5jbXBuKDEpPDB8fGEuY21wKHRoaXMubik+PTApcmV0dXJuITE7aWYoZi5jbXBuKDEpPDB8fGYuY21wKHRoaXMubik+PTApcmV0dXJuITE7dmFyIG8scz1mLmludm0odGhpcy5uKSxkPXMubXVsKGUpLnVtb2QodGhpcy5uKSx1PXMubXVsKGEpLnVtb2QodGhpcy5uKTtyZXR1cm4gdGhpcy5jdXJ2ZS5fbWF4d2VsbFRyaWNrPyhvPXRoaXMuZy5qbXVsQWRkKGQsci5nZXRQdWJsaWMoKSx1KSwhby5pc0luZmluaXR5KCkmJm8uZXFYVG9QKGEpKToobz10aGlzLmcubXVsQWRkKGQsci5nZXRQdWJsaWMoKSx1KSwhby5pc0luZmluaXR5KCkmJjA9PT1vLmdldFgoKS51bW9kKHRoaXMubikuY21wKGEpKX0sdS5wcm90b3R5cGUucmVjb3ZlclB1YktleT1mdW5jdGlvbihlLHQscixpKXtzKCgzJnIpPT09ciwiVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cyIpLHQ9bmV3IGModCxpKTt2YXIgYT10aGlzLm4sZj1uZXcgbihlKSxvPXQucixkPXQucyx1PTEmcixoPXI+PjE7aWYoby5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSk+PTAmJmgpdGhyb3cgbmV3IEVycm9yKCJVbmFibGUgdG8gZmluZCBzZW5jb25kIGtleSBjYW5kaW5hdGUiKTtvPWg/dGhpcy5jdXJ2ZS5wb2ludEZyb21YKG8uYWRkKHRoaXMuY3VydmUubiksdSk6dGhpcy5jdXJ2ZS5wb2ludEZyb21YKG8sdSk7dmFyIGw9dC5yLmludm0oYSksYj1hLnN1YihmKS5tdWwobCkudW1vZChhKSxwPWQubXVsKGwpLnVtb2QoYSk7cmV0dXJuIHRoaXMuZy5tdWxBZGQoYixvLHApfSx1LnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHQ9bmV3IGModCxuKSxudWxsIT09dC5yZWNvdmVyeVBhcmFtKXJldHVybiB0LnJlY292ZXJ5UGFyYW07Zm9yKHZhciBpPTA7aTw0O2krKyl7dmFyIGE7dHJ5e2E9dGhpcy5yZWNvdmVyUHViS2V5KGUsdCxpKX1jYXRjaChlKXtjb250aW51ZX1pZihhLmVxKHIpKXJldHVybiBpfXRocm93IG5ldyBFcnJvcigiVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yIil9fSxiYjM0OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cigiODBhZiIpLGk9cigiZjNhMyIpLGE9aS5hc3NlcnQ7ZnVuY3Rpb24gZihlLHQpe3RoaXMuZWM9ZSx0aGlzLnByaXY9bnVsbCx0aGlzLnB1Yj1udWxsLHQucHJpdiYmdGhpcy5faW1wb3J0UHJpdmF0ZSh0LnByaXYsdC5wcml2RW5jKSx0LnB1YiYmdGhpcy5faW1wb3J0UHVibGljKHQucHViLHQucHViRW5jKX1lLmV4cG9ydHM9ZixmLmZyb21QdWJsaWM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0IGluc3RhbmNlb2YgZj90Om5ldyBmKGUse3B1Yjp0LHB1YkVuYzpyfSl9LGYuZnJvbVByaXZhdGU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0IGluc3RhbmNlb2YgZj90Om5ldyBmKGUse3ByaXY6dCxwcml2RW5jOnJ9KX0sZi5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmdldFB1YmxpYygpO3JldHVybiBlLmlzSW5maW5pdHkoKT97cmVzdWx0OiExLHJlYXNvbjoiSW52YWxpZCBwdWJsaWMga2V5In06ZS52YWxpZGF0ZSgpP2UubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpP3tyZXN1bHQ6ITAscmVhc29uOm51bGx9OntyZXN1bHQ6ITEscmVhc29uOiJQdWJsaWMga2V5ICogTiAhPSBPIn06e3Jlc3VsdDohMSxyZWFzb246IlB1YmxpYyBrZXkgaXMgbm90IGEgcG9pbnQifX0sZi5wcm90b3R5cGUuZ2V0UHVibGljPWZ1bmN0aW9uKGUsdCl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZSYmKHQ9ZSxlPW51bGwpLHRoaXMucHVifHwodGhpcy5wdWI9dGhpcy5lYy5nLm11bCh0aGlzLnByaXYpKSx0P3RoaXMucHViLmVuY29kZSh0LGUpOnRoaXMucHVifSxmLnByb3RvdHlwZS5nZXRQcml2YXRlPWZ1bmN0aW9uKGUpe3JldHVybiJoZXgiPT09ZT90aGlzLnByaXYudG9TdHJpbmcoMTYsMik6dGhpcy5wcml2fSxmLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZT1mdW5jdGlvbihlLHQpe3RoaXMucHJpdj1uZXcgbihlLHR8fDE2KSx0aGlzLnByaXY9dGhpcy5wcml2LnVtb2QodGhpcy5lYy5jdXJ2ZS5uKX0sZi5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYz1mdW5jdGlvbihlLHQpe2lmKGUueHx8ZS55KXJldHVybiJtb250Ij09PXRoaXMuZWMuY3VydmUudHlwZT9hKGUueCwiTmVlZCB4IGNvb3JkaW5hdGUiKToic2hvcnQiIT09dGhpcy5lYy5jdXJ2ZS50eXBlJiYiZWR3YXJkcyIhPT10aGlzLmVjLmN1cnZlLnR5cGV8fGEoZS54JiZlLnksIk5lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUiKSx2b2lkKHRoaXMucHViPXRoaXMuZWMuY3VydmUucG9pbnQoZS54LGUueSkpO3RoaXMucHViPXRoaXMuZWMuY3VydmUuZGVjb2RlUG9pbnQoZSx0KX0sZi5wcm90b3R5cGUuZGVyaXZlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbGlkYXRlKCl8fGEoZS52YWxpZGF0ZSgpLCJwdWJsaWMgcG9pbnQgbm90IHZhbGlkYXRlZCIpLGUubXVsKHRoaXMucHJpdikuZ2V0WCgpfSxmLnByb3RvdHlwZS5zaWduPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5lYy5zaWduKGUsdGhpcyx0LHIpfSxmLnByb3RvdHlwZS52ZXJpZnk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5lYy52ZXJpZnkoZSx0LHRoaXMpfSxmLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIjxLZXkgcHJpdjogIisodGhpcy5wcml2JiZ0aGlzLnByaXYudG9TdHJpbmcoMTYsMikpKyIgcHViOiAiKyh0aGlzLnB1YiYmdGhpcy5wdWIuaW5zcGVjdCgpKSsiID4ifX0sYmI0NDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoImMzYzAiKSxpPXIoImVkYzkiKSxhPW4ucm90bDMyLGY9bi5zdW0zMixvPW4uc3VtMzJfMyxzPW4uc3VtMzJfNCxkPWkuQmxvY2tIYXNoO2Z1bmN0aW9uIGMoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBjKSlyZXR1cm4gbmV3IGM7ZC5jYWxsKHRoaXMpLHRoaXMuaD1bMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdLHRoaXMuZW5kaWFuPSJsaXR0bGUifWZ1bmN0aW9uIHUoZSx0LHIsbil7cmV0dXJuIGU8PTE1P3Recl5uOmU8PTMxP3Qmcnx+dCZuOmU8PTQ3Pyh0fH5yKV5uOmU8PTYzP3QmbnxyJn5uOnReKHJ8fm4pfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGU8PTE1PzA6ZTw9MzE/MTUxODUwMDI0OTplPD00Nz8xODU5Nzc1MzkzOmU8PTYzPzI0MDA5NTk3MDg6Mjg0MDg1MzgzOH1mdW5jdGlvbiBsKGUpe3JldHVybiBlPD0xNT8xMzUyODI5OTI2OmU8PTMxPzE1NDg2MDM2ODQ6ZTw9NDc/MTgzNjA3MjY5MTplPD02Mz8yMDUzOTk0MjE3OjB9bi5pbmhlcml0cyhjLGQpLHQucmlwZW1kMTYwPWMsYy5ibG9ja1NpemU9NTEyLGMub3V0U2l6ZT0xNjAsYy5obWFjU3RyZW5ndGg9MTkyLGMucGFkTGVuZ3RoPTY0LGMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9dGhpcy5oWzBdLG49dGhpcy5oWzFdLGk9dGhpcy5oWzJdLGQ9dGhpcy5oWzNdLGM9dGhpcy5oWzRdLHk9cix2PW4sdz1pLF89ZCxNPWMsUz0wO1M8ODA7UysrKXt2YXIgQT1mKGEocyhyLHUoUyxuLGksZCksZVtiW1NdK3RdLGgoUykpLG1bU10pLGMpO3I9YyxjPWQsZD1hKGksMTApLGk9bixuPUEsQT1mKGEocyh5LHUoNzktUyx2LHcsXyksZVtwW1NdK3RdLGwoUykpLGdbU10pLE0pLHk9TSxNPV8sXz1hKHcsMTApLHc9dix2PUF9QT1vKHRoaXMuaFsxXSxpLF8pLHRoaXMuaFsxXT1vKHRoaXMuaFsyXSxkLE0pLHRoaXMuaFsyXT1vKHRoaXMuaFszXSxjLHkpLHRoaXMuaFszXT1vKHRoaXMuaFs0XSxyLHYpLHRoaXMuaFs0XT1vKHRoaXMuaFswXSxuLHcpLHRoaXMuaFswXT1BfSxjLnByb3RvdHlwZS5fZGlnZXN0PWZ1bmN0aW9uKGUpe3JldHVybiJoZXgiPT09ZT9uLnRvSGV4MzIodGhpcy5oLCJsaXR0bGUiKTpuLnNwbGl0MzIodGhpcy5oLCJsaXR0bGUiKX07dmFyIGI9WzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10scD1bNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSxtPVsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSxnPVs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXX0sYzNjMDpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoImRhM2UiKSxpPXIoIjNmYjUiKTtmdW5jdGlvbiBhKGUsdCl7cmV0dXJuIDU1Mjk2PT09KDY0NTEyJmUuY2hhckNvZGVBdCh0KSkmJighKHQ8MHx8dCsxPj1lLmxlbmd0aCkmJjU2MzIwPT09KDY0NTEyJmUuY2hhckNvZGVBdCh0KzEpKSl9ZnVuY3Rpb24gZihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUuc2xpY2UoKTtpZighZSlyZXR1cm5bXTt2YXIgcj1bXTtpZigic3RyaW5nIj09PXR5cGVvZiBlKWlmKHQpe2lmKCJoZXgiPT09dClmb3IoZT1lLnJlcGxhY2UoL1teYS16MC05XSsvZ2ksIiIpLGUubGVuZ3RoJTIhPT0wJiYoZT0iMCIrZSksaT0wO2k8ZS5sZW5ndGg7aSs9MilyLnB1c2gocGFyc2VJbnQoZVtpXStlW2krMV0sMTYpKX1lbHNlIGZvcih2YXIgbj0wLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIGY9ZS5jaGFyQ29kZUF0KGkpO2Y8MTI4P3JbbisrXT1mOmY8MjA0OD8ocltuKytdPWY+PjZ8MTkyLHJbbisrXT02MyZmfDEyOCk6YShlLGkpPyhmPTY1NTM2KygoMTAyMyZmKTw8MTApKygxMDIzJmUuY2hhckNvZGVBdCgrK2kpKSxyW24rK109Zj4+MTh8MjQwLHJbbisrXT1mPj4xMiY2M3wxMjgscltuKytdPWY+PjYmNjN8MTI4LHJbbisrXT02MyZmfDEyOCk6KHJbbisrXT1mPj4xMnwyMjQscltuKytdPWY+PjYmNjN8MTI4LHJbbisrXT02MyZmfDEyOCl9ZWxzZSBmb3IoaT0wO2k8ZS5sZW5ndGg7aSsrKXJbaV09MHxlW2ldO3JldHVybiByfWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PSIiLHI9MDtyPGUubGVuZ3RoO3IrKyl0Kz1jKGVbcl0udG9TdHJpbmcoMTYpKTtyZXR1cm4gdH1mdW5jdGlvbiBzKGUpe3ZhciB0PWU+Pj4yNHxlPj4+OCY2NTI4MHxlPDw4JjE2NzExNjgwfCgyNTUmZSk8PDI0O3JldHVybiB0Pj4+MH1mdW5jdGlvbiBkKGUsdCl7Zm9yKHZhciByPSIiLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTsibGl0dGxlIj09PXQmJihpPXMoaSkpLHIrPXUoaS50b1N0cmluZygxNikpfXJldHVybiByfWZ1bmN0aW9uIGMoZSl7cmV0dXJuIDE9PT1lLmxlbmd0aD8iMCIrZTplfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIDc9PT1lLmxlbmd0aD8iMCIrZTo2PT09ZS5sZW5ndGg/IjAwIitlOjU9PT1lLmxlbmd0aD8iMDAwIitlOjQ9PT1lLmxlbmd0aD8iMDAwMCIrZTozPT09ZS5sZW5ndGg/IjAwMDAwIitlOjI9PT1lLmxlbmd0aD8iMDAwMDAwIitlOjE9PT1lLmxlbmd0aD8iMDAwMDAwMCIrZTplfWZ1bmN0aW9uIGgoZSx0LHIsaSl7dmFyIGE9ci10O24oYSU0PT09MCk7Zm9yKHZhciBmPW5ldyBBcnJheShhLzQpLG89MCxzPXQ7bzxmLmxlbmd0aDtvKysscys9NCl7dmFyIGQ7ZD0iYmlnIj09PWk/ZVtzXTw8MjR8ZVtzKzFdPDwxNnxlW3MrMl08PDh8ZVtzKzNdOmVbcyszXTw8MjR8ZVtzKzJdPDwxNnxlW3MrMV08PDh8ZVtzXSxmW29dPWQ+Pj4wfXJldHVybiBmfWZ1bmN0aW9uIGwoZSx0KXtmb3IodmFyIHI9bmV3IEFycmF5KDQqZS5sZW5ndGgpLG49MCxpPTA7bjxlLmxlbmd0aDtuKyssaSs9NCl7dmFyIGE9ZVtuXTsiYmlnIj09PXQ/KHJbaV09YT4+PjI0LHJbaSsxXT1hPj4+MTYmMjU1LHJbaSsyXT1hPj4+OCYyNTUscltpKzNdPTI1NSZhKToocltpKzNdPWE+Pj4yNCxyW2krMl09YT4+PjE2JjI1NSxyW2krMV09YT4+PjgmMjU1LHJbaV09MjU1JmEpfXJldHVybiByfWZ1bmN0aW9uIGIoZSx0KXtyZXR1cm4gZT4+PnR8ZTw8MzItdH1mdW5jdGlvbiBwKGUsdCl7cmV0dXJuIGU8PHR8ZT4+PjMyLXR9ZnVuY3Rpb24gbShlLHQpe3JldHVybiBlK3Q+Pj4wfWZ1bmN0aW9uIGcoZSx0LHIpe3JldHVybiBlK3Qrcj4+PjB9ZnVuY3Rpb24geShlLHQscixuKXtyZXR1cm4gZSt0K3Irbj4+PjB9ZnVuY3Rpb24gdihlLHQscixuLGkpe3JldHVybiBlK3QrcituK2k+Pj4wfWZ1bmN0aW9uIHcoZSx0LHIsbil7dmFyIGk9ZVt0XSxhPWVbdCsxXSxmPW4rYT4+PjAsbz0oZjxuPzE6MCkrcitpO2VbdF09bz4+PjAsZVt0KzFdPWZ9ZnVuY3Rpb24gXyhlLHQscixuKXt2YXIgaT10K24+Pj4wLGE9KGk8dD8xOjApK2UrcjtyZXR1cm4gYT4+PjB9ZnVuY3Rpb24gTShlLHQscixuKXt2YXIgaT10K247cmV0dXJuIGk+Pj4wfWZ1bmN0aW9uIFMoZSx0LHIsbixpLGEsZixvKXt2YXIgcz0wLGQ9dDtkPWQrbj4+PjAscys9ZDx0PzE6MCxkPWQrYT4+PjAscys9ZDxhPzE6MCxkPWQrbz4+PjAscys9ZDxvPzE6MDt2YXIgYz1lK3IraStmK3M7cmV0dXJuIGM+Pj4wfWZ1bmN0aW9uIEEoZSx0LHIsbixpLGEsZixvKXt2YXIgcz10K24rYStvO3JldHVybiBzPj4+MH1mdW5jdGlvbiBFKGUsdCxyLG4saSxhLGYsbyxzLGQpe3ZhciBjPTAsdT10O3U9dStuPj4+MCxjKz11PHQ/MTowLHU9dSthPj4+MCxjKz11PGE/MTowLHU9dStvPj4+MCxjKz11PG8/MTowLHU9dStkPj4+MCxjKz11PGQ/MTowO3ZhciBoPWUrcitpK2YrcytjO3JldHVybiBoPj4+MH1mdW5jdGlvbiBSKGUsdCxyLG4saSxhLGYsbyxzLGQpe3ZhciBjPXQrbithK28rZDtyZXR1cm4gYz4+PjB9ZnVuY3Rpb24geChlLHQscil7dmFyIG49dDw8MzItcnxlPj4+cjtyZXR1cm4gbj4+PjB9ZnVuY3Rpb24gayhlLHQscil7dmFyIG49ZTw8MzItcnx0Pj4+cjtyZXR1cm4gbj4+PjB9ZnVuY3Rpb24gSShlLHQscil7cmV0dXJuIGU+Pj5yfWZ1bmN0aW9uIFAoZSx0LHIpe3ZhciBuPWU8PDMyLXJ8dD4+PnI7cmV0dXJuIG4+Pj4wfXQuaW5oZXJpdHM9aSx0LnRvQXJyYXk9Zix0LnRvSGV4PW8sdC5odG9ubD1zLHQudG9IZXgzMj1kLHQuemVybzI9Yyx0Lnplcm84PXUsdC5qb2luMzI9aCx0LnNwbGl0MzI9bCx0LnJvdHIzMj1iLHQucm90bDMyPXAsdC5zdW0zMj1tLHQuc3VtMzJfMz1nLHQuc3VtMzJfND15LHQuc3VtMzJfNT12LHQuc3VtNjQ9dyx0LnN1bTY0X2hpPV8sdC5zdW02NF9sbz1NLHQuc3VtNjRfNF9oaT1TLHQuc3VtNjRfNF9sbz1BLHQuc3VtNjRfNV9oaT1FLHQuc3VtNjRfNV9sbz1SLHQucm90cjY0X2hpPXgsdC5yb3RyNjRfbG89ayx0LnNocjY0X2hpPUksdC5zaHI2NF9sbz1QfSxjOGJhOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtyPXJ8fG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKG4peyJvYmplY3QiPT09dHlwZW9mIHdpbmRvdyYmKHI9d2luZG93KX1lLmV4cG9ydHM9cn0sYzk4YzpmdW5jdGlvbihlLHQscil7Y29uc3Qgbj1yKCJlMDczIiksaT1yKCI5MmE5Iik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2NvbnN0IHQ9bihlKSxyPWkoZSk7cmV0dXJuIGZ1bmN0aW9uKGUsbil7Y29uc3QgaT0ic3RyaW5nIj09PXR5cGVvZiBlP2UudG9Mb3dlckNhc2UoKTplO3N3aXRjaChpKXtjYXNlImtlY2NhazIyNCI6cmV0dXJuIG5ldyB0KDExNTIsNDQ4LG51bGwsMjI0LG4pO2Nhc2Uia2VjY2FrMjU2IjpyZXR1cm4gbmV3IHQoMTA4OCw1MTIsbnVsbCwyNTYsbik7Y2FzZSJrZWNjYWszODQiOnJldHVybiBuZXcgdCg4MzIsNzY4LG51bGwsMzg0LG4pO2Nhc2Uia2VjY2FrNTEyIjpyZXR1cm4gbmV3IHQoNTc2LDEwMjQsbnVsbCw1MTIsbik7Y2FzZSJzaGEzLTIyNCI6cmV0dXJuIG5ldyB0KDExNTIsNDQ4LDYsMjI0LG4pO2Nhc2Uic2hhMy0yNTYiOnJldHVybiBuZXcgdCgxMDg4LDUxMiw2LDI1NixuKTtjYXNlInNoYTMtMzg0IjpyZXR1cm4gbmV3IHQoODMyLDc2OCw2LDM4NCxuKTtjYXNlInNoYTMtNTEyIjpyZXR1cm4gbmV3IHQoNTc2LDEwMjQsNiw1MTIsbik7Y2FzZSJzaGFrZTEyOCI6cmV0dXJuIG5ldyByKDEzNDQsMjU2LDMxLG4pO2Nhc2Uic2hha2UyNTYiOnJldHVybiBuZXcgcigxMDg4LDUxMiwzMSxuKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiSW52YWxkIGFsZ29yaXRobTogIitlKX19fX0sZDJiMjpmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyIil9fSxkYTNlOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQpe2lmKCFlKXRocm93IG5ldyBFcnJvcih0fHwiQXNzZXJ0aW9uIGZhaWxlZCIpfWUuZXhwb3J0cz1yLHIuZXF1YWw9ZnVuY3Rpb24oZSx0LHIpe2lmKGUhPXQpdGhyb3cgbmV3IEVycm9yKHJ8fCJBc3NlcnRpb24gZmFpbGVkOiAiK2UrIiAhPSAiK3QpfX0sZGY3YzpmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLTE7bj49MDtuLS0pe3ZhciBpPWVbbl07Ii4iPT09aT9lLnNwbGljZShuLDEpOiIuLiI9PT1pPyhlLnNwbGljZShuLDEpLHIrKyk6ciYmKGUuc3BsaWNlKG4sMSksci0tKX1pZih0KWZvcig7ci0tO3IpZS51bnNoaWZ0KCIuLiIpO3JldHVybiBlfWZ1bmN0aW9uIG4oZSl7InN0cmluZyIhPT10eXBlb2YgZSYmKGUrPSIiKTt2YXIgdCxyPTAsbj0tMSxpPSEwO2Zvcih0PWUubGVuZ3RoLTE7dD49MDstLXQpaWYoNDc9PT1lLmNoYXJDb2RlQXQodCkpe2lmKCFpKXtyPXQrMTticmVha319ZWxzZS0xPT09biYmKGk9ITEsbj10KzEpO3JldHVybi0xPT09bj8iIjplLnNsaWNlKHIsbil9ZnVuY3Rpb24gaShlLHQpe2lmKGUuZmlsdGVyKXJldHVybiBlLmZpbHRlcih0KTtmb3IodmFyIHI9W10sbj0wO248ZS5sZW5ndGg7bisrKXQoZVtuXSxuLGUpJiZyLnB1c2goZVtuXSk7cmV0dXJuIHJ9dC5yZXNvbHZlPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PSIiLG49ITEsYT1hcmd1bWVudHMubGVuZ3RoLTE7YT49LTEmJiFuO2EtLSl7dmFyIGY9YT49MD9hcmd1bWVudHNbYV06ZS5jd2QoKTtpZigic3RyaW5nIiE9PXR5cGVvZiBmKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzIik7ZiYmKHQ9ZisiLyIrdCxuPSIvIj09PWYuY2hhckF0KDApKX1yZXR1cm4gdD1yKGkodC5zcGxpdCgiLyIpLChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSksIW4pLmpvaW4oIi8iKSwobj8iLyI6IiIpK3R8fCIuIn0sdC5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7dmFyIG49dC5pc0Fic29sdXRlKGUpLGY9Ii8iPT09YShlLC0xKTtyZXR1cm4gZT1yKGkoZS5zcGxpdCgiLyIpLChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSksIW4pLmpvaW4oIi8iKSxlfHxufHwoZT0iLiIpLGUmJmYmJihlKz0iLyIpLChuPyIvIjoiIikrZX0sdC5pc0Fic29sdXRlPWZ1bmN0aW9uKGUpe3JldHVybiIvIj09PWUuY2hhckF0KDApfSx0LmpvaW49ZnVuY3Rpb24oKXt2YXIgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQubm9ybWFsaXplKGkoZSwoZnVuY3Rpb24oZSx0KXtpZigic3RyaW5nIiE9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyB0byBwYXRoLmpvaW4gbXVzdCBiZSBzdHJpbmdzIik7cmV0dXJuIGV9KSkuam9pbigiLyIpKX0sdC5yZWxhdGl2ZT1mdW5jdGlvbihlLHIpe2Z1bmN0aW9uIG4oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspaWYoIiIhPT1lW3RdKWJyZWFrO2Zvcih2YXIgcj1lLmxlbmd0aC0xO3I+PTA7ci0tKWlmKCIiIT09ZVtyXSlicmVhaztyZXR1cm4gdD5yP1tdOmUuc2xpY2UodCxyLXQrMSl9ZT10LnJlc29sdmUoZSkuc3Vic3RyKDEpLHI9dC5yZXNvbHZlKHIpLnN1YnN0cigxKTtmb3IodmFyIGk9bihlLnNwbGl0KCIvIikpLGE9bihyLnNwbGl0KCIvIikpLGY9TWF0aC5taW4oaS5sZW5ndGgsYS5sZW5ndGgpLG89ZixzPTA7czxmO3MrKylpZihpW3NdIT09YVtzXSl7bz1zO2JyZWFrfXZhciBkPVtdO2ZvcihzPW87czxpLmxlbmd0aDtzKyspZC5wdXNoKCIuLiIpO3JldHVybiBkPWQuY29uY2F0KGEuc2xpY2UobykpLGQuam9pbigiLyIpfSx0LnNlcD0iLyIsdC5kZWxpbWl0ZXI9IjoiLHQuZGlybmFtZT1mdW5jdGlvbihlKXtpZigic3RyaW5nIiE9PXR5cGVvZiBlJiYoZSs9IiIpLDA9PT1lLmxlbmd0aClyZXR1cm4iLiI7Zm9yKHZhciB0PWUuY2hhckNvZGVBdCgwKSxyPTQ3PT09dCxuPS0xLGk9ITAsYT1lLmxlbmd0aC0xO2E+PTE7LS1hKWlmKHQ9ZS5jaGFyQ29kZUF0KGEpLDQ3PT09dCl7aWYoIWkpe249YTticmVha319ZWxzZSBpPSExO3JldHVybi0xPT09bj9yPyIvIjoiLiI6ciYmMT09PW4/Ii8iOmUuc2xpY2UoMCxuKX0sdC5iYXNlbmFtZT1mdW5jdGlvbihlLHQpe3ZhciByPW4oZSk7cmV0dXJuIHQmJnIuc3Vic3RyKC0xKnQubGVuZ3RoKT09PXQmJihyPXIuc3Vic3RyKDAsci5sZW5ndGgtdC5sZW5ndGgpKSxyfSx0LmV4dG5hbWU9ZnVuY3Rpb24oZSl7InN0cmluZyIhPT10eXBlb2YgZSYmKGUrPSIiKTtmb3IodmFyIHQ9LTEscj0wLG49LTEsaT0hMCxhPTAsZj1lLmxlbmd0aC0xO2Y+PTA7LS1mKXt2YXIgbz1lLmNoYXJDb2RlQXQoZik7aWYoNDchPT1vKS0xPT09biYmKGk9ITEsbj1mKzEpLDQ2PT09bz8tMT09PXQ/dD1mOjEhPT1hJiYoYT0xKTotMSE9PXQmJihhPS0xKTtlbHNlIGlmKCFpKXtyPWYrMTticmVha319cmV0dXJuLTE9PT10fHwtMT09PW58fDA9PT1hfHwxPT09YSYmdD09PW4tMSYmdD09PXIrMT8iIjplLnNsaWNlKHQsbil9O3ZhciBhPSJiIj09PSJhYiIuc3Vic3RyKC0xKT9mdW5jdGlvbihlLHQscil7cmV0dXJuIGUuc3Vic3RyKHQscil9OmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdDwwJiYodD1lLmxlbmd0aCt0KSxlLnN1YnN0cih0LHIpfX0pLmNhbGwodGhpcyxyKCI0MzYyIikpfSxlMDczOmZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24odCl7Y29uc3R7VHJhbnNmb3JtOm59PXIoImUzOTkiKTtlLmV4cG9ydHM9ZT0+Y2xhc3MgciBleHRlbmRzIG57Y29uc3RydWN0b3IodCxyLG4saSxhKXtzdXBlcihhKSx0aGlzLl9yYXRlPXQsdGhpcy5fY2FwYWNpdHk9cix0aGlzLl9kZWxpbWl0ZWRTdWZmaXg9bix0aGlzLl9oYXNoQml0TGVuZ3RoPWksdGhpcy5fb3B0aW9ucz1hLHRoaXMuX3N0YXRlPW5ldyBlLHRoaXMuX3N0YXRlLmluaXRpYWxpemUodCxyKSx0aGlzLl9maW5hbGl6ZWQ9ITF9X3RyYW5zZm9ybShlLHQscil7bGV0IG49bnVsbDt0cnl7dGhpcy51cGRhdGUoZSx0KX1jYXRjaChpKXtuPWl9cihuKX1fZmx1c2goZSl7bGV0IHQ9bnVsbDt0cnl7dGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpfWNhdGNoKHIpe3Q9cn1lKHQpfXVwZGF0ZShlLHIpe2lmKCF0LmlzQnVmZmVyKGUpJiYic3RyaW5nIiE9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkRhdGEgbXVzdCBiZSBhIHN0cmluZyBvciBhIGJ1ZmZlciIpO2lmKHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO3JldHVybiB0LmlzQnVmZmVyKGUpfHwoZT10LmZyb20oZSxyKSksdGhpcy5fc3RhdGUuYWJzb3JiKGUpLHRoaXN9ZGlnZXN0KGUpe2lmKHRoaXMuX2ZpbmFsaXplZCl0aHJvdyBuZXcgRXJyb3IoIkRpZ2VzdCBhbHJlYWR5IGNhbGxlZCIpO3RoaXMuX2ZpbmFsaXplZD0hMCx0aGlzLl9kZWxpbWl0ZWRTdWZmaXgmJnRoaXMuX3N0YXRlLmFic29yYkxhc3RGZXdCaXRzKHRoaXMuX2RlbGltaXRlZFN1ZmZpeCk7bGV0IHQ9dGhpcy5fc3RhdGUuc3F1ZWV6ZSh0aGlzLl9oYXNoQml0TGVuZ3RoLzgpO3JldHVybiB2b2lkIDAhPT1lJiYodD10LnRvU3RyaW5nKGUpKSx0aGlzLl9yZXNldFN0YXRlKCksdH1fcmVzZXRTdGF0ZSgpe3JldHVybiB0aGlzLl9zdGF0ZS5pbml0aWFsaXplKHRoaXMuX3JhdGUsdGhpcy5fY2FwYWNpdHkpLHRoaXN9X2Nsb25lKCl7Y29uc3QgZT1uZXcgcih0aGlzLl9yYXRlLHRoaXMuX2NhcGFjaXR5LHRoaXMuX2RlbGltaXRlZFN1ZmZpeCx0aGlzLl9oYXNoQml0TGVuZ3RoLHRoaXMuX29wdGlvbnMpO3JldHVybiB0aGlzLl9zdGF0ZS5jb3B5KGUuX3N0YXRlKSxlLl9maW5hbGl6ZWQ9dGhpcy5fZmluYWxpemVkLGV9fX0pLmNhbGwodGhpcyxyKCJiNjM5IikuQnVmZmVyKX0sZTM5OTpmdW5jdGlvbihlLHQscil7dD1lLmV4cG9ydHM9cigiNjhhMCIpLHQuU3RyZWFtPXQsdC5SZWFkYWJsZT10LHQuV3JpdGFibGU9cigiOWJkYyIpLHQuRHVwbGV4PXIoIjg4YTIiKSx0LlRyYW5zZm9ybT1yKCI1M2UyIiksdC5QYXNzVGhyb3VnaD1yKCJiOGRiIiksdC5maW5pc2hlZD1yKCI2NWFiIiksdC5waXBlbGluZT1yKCIwMThhIil9LGUzZGI6ZnVuY3Rpb24oZSx0KXt2YXIgcj17fS50b1N0cmluZztlLmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09ci5jYWxsKGUpfX0sZWE1MzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoIjgwYWYiKSxpPXIoImYzYTMiKSxhPWkuZ2V0TkFGLGY9aS5nZXRKU0Ysbz1pLmFzc2VydDtmdW5jdGlvbiBzKGUsdCl7dGhpcy50eXBlPWUsdGhpcy5wPW5ldyBuKHQucCwxNiksdGhpcy5yZWQ9dC5wcmltZT9uLnJlZCh0LnByaW1lKTpuLm1vbnQodGhpcy5wKSx0aGlzLnplcm89bmV3IG4oMCkudG9SZWQodGhpcy5yZWQpLHRoaXMub25lPW5ldyBuKDEpLnRvUmVkKHRoaXMucmVkKSx0aGlzLnR3bz1uZXcgbigyKS50b1JlZCh0aGlzLnJlZCksdGhpcy5uPXQubiYmbmV3IG4odC5uLDE2KSx0aGlzLmc9dC5nJiZ0aGlzLnBvaW50RnJvbUpTT04odC5nLHQuZ1JlZCksdGhpcy5fd25hZlQxPW5ldyBBcnJheSg0KSx0aGlzLl93bmFmVDI9bmV3IEFycmF5KDQpLHRoaXMuX3duYWZUMz1uZXcgQXJyYXkoNCksdGhpcy5fd25hZlQ0PW5ldyBBcnJheSg0KSx0aGlzLl9iaXRMZW5ndGg9dGhpcy5uP3RoaXMubi5iaXRMZW5ndGgoKTowO3ZhciByPXRoaXMubiYmdGhpcy5wLmRpdih0aGlzLm4pOyFyfHxyLmNtcG4oMTAwKT4wP3RoaXMucmVkTj1udWxsOih0aGlzLl9tYXh3ZWxsVHJpY2s9ITAsdGhpcy5yZWROPXRoaXMubi50b1JlZCh0aGlzLnJlZCkpfWZ1bmN0aW9uIGQoZSx0KXt0aGlzLmN1cnZlPWUsdGhpcy50eXBlPXQsdGhpcy5wcmVjb21wdXRlZD1udWxsfWUuZXhwb3J0cz1zLHMucHJvdG90eXBlLnBvaW50PWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0scy5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCIpfSxzLnByb3RvdHlwZS5fZml4ZWROYWZNdWw9ZnVuY3Rpb24oZSx0KXtvKGUucHJlY29tcHV0ZWQpO3ZhciByPWUuX2dldERvdWJsZXMoKSxuPWEodCwxLHRoaXMuX2JpdExlbmd0aCksaT0oMTw8ci5zdGVwKzEpLShyLnN0ZXAlMj09PTA/MjoxKTtpLz0zO3ZhciBmLHMsZD1bXTtmb3IoZj0wO2Y8bi5sZW5ndGg7Zis9ci5zdGVwKXtzPTA7Zm9yKHZhciBjPWYrci5zdGVwLTE7Yz49ZjtjLS0pcz0oczw8MSkrbltjXTtkLnB1c2gocyl9Zm9yKHZhciB1PXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxoPXRoaXMuanBvaW50KG51bGwsbnVsbCxudWxsKSxsPWk7bD4wO2wtLSl7Zm9yKGY9MDtmPGQubGVuZ3RoO2YrKylzPWRbZl0scz09PWw/aD1oLm1peGVkQWRkKHIucG9pbnRzW2ZdKTpzPT09LWwmJihoPWgubWl4ZWRBZGQoci5wb2ludHNbZl0ubmVnKCkpKTt1PXUuYWRkKGgpfXJldHVybiB1LnRvUCgpfSxzLnByb3RvdHlwZS5fd25hZk11bD1mdW5jdGlvbihlLHQpe3ZhciByPTQsbj1lLl9nZXROQUZQb2ludHMocik7cj1uLnduZDtmb3IodmFyIGk9bi5wb2ludHMsZj1hKHQscix0aGlzLl9iaXRMZW5ndGgpLHM9dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLGQ9Zi5sZW5ndGgtMTtkPj0wO2QtLSl7Zm9yKHZhciBjPTA7ZD49MCYmMD09PWZbZF07ZC0tKWMrKztpZihkPj0wJiZjKysscz1zLmRibHAoYyksZDwwKWJyZWFrO3ZhciB1PWZbZF07bygwIT09dSkscz0iYWZmaW5lIj09PWUudHlwZT91PjA/cy5taXhlZEFkZChpW3UtMT4+MV0pOnMubWl4ZWRBZGQoaVstdS0xPj4xXS5uZWcoKSk6dT4wP3MuYWRkKGlbdS0xPj4xXSk6cy5hZGQoaVstdS0xPj4xXS5uZWcoKSl9cmV0dXJuImFmZmluZSI9PT1lLnR5cGU/cy50b1AoKTpzfSxzLnByb3RvdHlwZS5fd25hZk11bEFkZD1mdW5jdGlvbihlLHQscixuLGkpe3ZhciBvLHMsZCxjPXRoaXMuX3duYWZUMSx1PXRoaXMuX3duYWZUMixoPXRoaXMuX3duYWZUMyxsPTA7Zm9yKG89MDtvPG47bysrKXtkPXRbb107dmFyIGI9ZC5fZ2V0TkFGUG9pbnRzKGUpO2Nbb109Yi53bmQsdVtvXT1iLnBvaW50c31mb3Iobz1uLTE7bz49MTtvLT0yKXt2YXIgcD1vLTEsbT1vO2lmKDE9PT1jW3BdJiYxPT09Y1ttXSl7dmFyIGc9W3RbcF0sbnVsbCxudWxsLHRbbV1dOzA9PT10W3BdLnkuY21wKHRbbV0ueSk/KGdbMV09dFtwXS5hZGQodFttXSksZ1syXT10W3BdLnRvSigpLm1peGVkQWRkKHRbbV0ubmVnKCkpKTowPT09dFtwXS55LmNtcCh0W21dLnkucmVkTmVnKCkpPyhnWzFdPXRbcF0udG9KKCkubWl4ZWRBZGQodFttXSksZ1syXT10W3BdLmFkZCh0W21dLm5lZygpKSk6KGdbMV09dFtwXS50b0ooKS5taXhlZEFkZCh0W21dKSxnWzJdPXRbcF0udG9KKCkubWl4ZWRBZGQodFttXS5uZWcoKSkpO3ZhciB5PVstMywtMSwtNSwtNywwLDcsNSwxLDNdLHY9ZihyW3BdLHJbbV0pO2ZvcihsPU1hdGgubWF4KHZbMF0ubGVuZ3RoLGwpLGhbcF09bmV3IEFycmF5KGwpLGhbbV09bmV3IEFycmF5KGwpLHM9MDtzPGw7cysrKXt2YXIgdz0wfHZbMF1bc10sXz0wfHZbMV1bc107aFtwXVtzXT15WzMqKHcrMSkrKF8rMSldLGhbbV1bc109MCx1W3BdPWd9fWVsc2UgaFtwXT1hKHJbcF0sY1twXSx0aGlzLl9iaXRMZW5ndGgpLGhbbV09YShyW21dLGNbbV0sdGhpcy5fYml0TGVuZ3RoKSxsPU1hdGgubWF4KGhbcF0ubGVuZ3RoLGwpLGw9TWF0aC5tYXgoaFttXS5sZW5ndGgsbCl9dmFyIE09dGhpcy5qcG9pbnQobnVsbCxudWxsLG51bGwpLFM9dGhpcy5fd25hZlQ0O2ZvcihvPWw7bz49MDtvLS0pe3ZhciBBPTA7d2hpbGUobz49MCl7dmFyIEU9ITA7Zm9yKHM9MDtzPG47cysrKVNbc109MHxoW3NdW29dLDAhPT1TW3NdJiYoRT0hMSk7aWYoIUUpYnJlYWs7QSsrLG8tLX1pZihvPj0wJiZBKyssTT1NLmRibHAoQSksbzwwKWJyZWFrO2ZvcihzPTA7czxuO3MrKyl7dmFyIFI9U1tzXTswIT09UiYmKFI+MD9kPXVbc11bUi0xPj4xXTpSPDAmJihkPXVbc11bLVItMT4+MV0ubmVnKCkpLE09ImFmZmluZSI9PT1kLnR5cGU/TS5taXhlZEFkZChkKTpNLmFkZChkKSl9fWZvcihvPTA7bzxuO28rKyl1W29dPW51bGw7cmV0dXJuIGk/TTpNLnRvUCgpfSxzLkJhc2VQb2ludD1kLGQucHJvdG90eXBlLmVxPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKX0sZC5wcm90b3R5cGUudmFsaWRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJ2ZS52YWxpZGF0ZSh0aGlzKX0scy5wcm90b3R5cGUuZGVjb2RlUG9pbnQ9ZnVuY3Rpb24oZSx0KXtlPWkudG9BcnJheShlLHQpO3ZhciByPXRoaXMucC5ieXRlTGVuZ3RoKCk7aWYoKDQ9PT1lWzBdfHw2PT09ZVswXXx8Nz09PWVbMF0pJiZlLmxlbmd0aC0xPT09MipyKXs2PT09ZVswXT9vKGVbZS5sZW5ndGgtMV0lMj09PTApOjc9PT1lWzBdJiZvKGVbZS5sZW5ndGgtMV0lMj09PTEpO3ZhciBuPXRoaXMucG9pbnQoZS5zbGljZSgxLDErciksZS5zbGljZSgxK3IsMSsyKnIpKTtyZXR1cm4gbn1pZigoMj09PWVbMF18fDM9PT1lWzBdKSYmZS5sZW5ndGgtMT09PXIpcmV0dXJuIHRoaXMucG9pbnRGcm9tWChlLnNsaWNlKDEsMStyKSwzPT09ZVswXSk7dGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHBvaW50IGZvcm1hdCIpfSxkLnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVuY29kZShlLCEwKX0sZC5wcm90b3R5cGUuX2VuY29kZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpLHI9dGhpcy5nZXRYKCkudG9BcnJheSgiYmUiLHQpO3JldHVybiBlP1t0aGlzLmdldFkoKS5pc0V2ZW4oKT8yOjNdLmNvbmNhdChyKTpbNF0uY29uY2F0KHIsdGhpcy5nZXRZKCkudG9BcnJheSgiYmUiLHQpKX0sZC5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkuZW5jb2RlKHRoaXMuX2VuY29kZSh0KSxlKX0sZC5wcm90b3R5cGUucHJlY29tcHV0ZT1mdW5jdGlvbihlKXtpZih0aGlzLnByZWNvbXB1dGVkKXJldHVybiB0aGlzO3ZhciB0PXtkb3VibGVzOm51bGwsbmFmOm51bGwsYmV0YTpudWxsfTtyZXR1cm4gdC5uYWY9dGhpcy5fZ2V0TkFGUG9pbnRzKDgpLHQuZG91Ymxlcz10aGlzLl9nZXREb3VibGVzKDQsZSksdC5iZXRhPXRoaXMuX2dldEJldGEoKSx0aGlzLnByZWNvbXB1dGVkPXQsdGhpc30sZC5wcm90b3R5cGUuX2hhc0RvdWJsZXM9ZnVuY3Rpb24oZSl7aWYoIXRoaXMucHJlY29tcHV0ZWQpcmV0dXJuITE7dmFyIHQ9dGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO3JldHVybiEhdCYmdC5wb2ludHMubGVuZ3RoPj1NYXRoLmNlaWwoKGUuYml0TGVuZ3RoKCkrMSkvdC5zdGVwKX0sZC5wcm90b3R5cGUuX2dldERvdWJsZXM9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcztmb3IodmFyIHI9W3RoaXNdLG49dGhpcyxpPTA7aTx0O2krPWUpe2Zvcih2YXIgYT0wO2E8ZTthKyspbj1uLmRibCgpO3IucHVzaChuKX1yZXR1cm57c3RlcDplLHBvaW50czpyfX0sZC5wcm90b3R5cGUuX2dldE5BRlBvaW50cz1mdW5jdGlvbihlKXtpZih0aGlzLnByZWNvbXB1dGVkJiZ0aGlzLnByZWNvbXB1dGVkLm5hZilyZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7Zm9yKHZhciB0PVt0aGlzXSxyPSgxPDxlKS0xLG49MT09PXI/bnVsbDp0aGlzLmRibCgpLGk9MTtpPHI7aSsrKXRbaV09dFtpLTFdLmFkZChuKTtyZXR1cm57d25kOmUscG9pbnRzOnR9fSxkLnByb3RvdHlwZS5fZ2V0QmV0YT1mdW5jdGlvbigpe3JldHVybiBudWxsfSxkLnByb3RvdHlwZS5kYmxwPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLHI9MDtyPGU7cisrKXQ9dC5kYmwoKTtyZXR1cm4gdH19LGVkYzk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKCJjM2MwIiksaT1yKCJkYTNlIik7ZnVuY3Rpb24gYSgpe3RoaXMucGVuZGluZz1udWxsLHRoaXMucGVuZGluZ1RvdGFsPTAsdGhpcy5ibG9ja1NpemU9dGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemUsdGhpcy5vdXRTaXplPXRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZSx0aGlzLmhtYWNTdHJlbmd0aD10aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aCx0aGlzLnBhZExlbmd0aD10aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aC84LHRoaXMuZW5kaWFuPSJiaWciLHRoaXMuX2RlbHRhOD10aGlzLmJsb2NrU2l6ZS84LHRoaXMuX2RlbHRhMzI9dGhpcy5ibG9ja1NpemUvMzJ9dC5CbG9ja0hhc2g9YSxhLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXtpZihlPW4udG9BcnJheShlLHQpLHRoaXMucGVuZGluZz90aGlzLnBlbmRpbmc9dGhpcy5wZW5kaW5nLmNvbmNhdChlKTp0aGlzLnBlbmRpbmc9ZSx0aGlzLnBlbmRpbmdUb3RhbCs9ZS5sZW5ndGgsdGhpcy5wZW5kaW5nLmxlbmd0aD49dGhpcy5fZGVsdGE4KXtlPXRoaXMucGVuZGluZzt2YXIgcj1lLmxlbmd0aCV0aGlzLl9kZWx0YTg7dGhpcy5wZW5kaW5nPWUuc2xpY2UoZS5sZW5ndGgtcixlLmxlbmd0aCksMD09PXRoaXMucGVuZGluZy5sZW5ndGgmJih0aGlzLnBlbmRpbmc9bnVsbCksZT1uLmpvaW4zMihlLDAsZS5sZW5ndGgtcix0aGlzLmVuZGlhbik7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKz10aGlzLl9kZWx0YTMyKXRoaXMuX3VwZGF0ZShlLGksaSt0aGlzLl9kZWx0YTMyKX1yZXR1cm4gdGhpc30sYS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSksaShudWxsPT09dGhpcy5wZW5kaW5nKSx0aGlzLl9kaWdlc3QoZSl9LGEucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBlbmRpbmdUb3RhbCx0PXRoaXMuX2RlbHRhOCxyPXQtKGUrdGhpcy5wYWRMZW5ndGgpJXQsbj1uZXcgQXJyYXkocit0aGlzLnBhZExlbmd0aCk7blswXT0xMjg7Zm9yKHZhciBpPTE7aTxyO2krKyluW2ldPTA7aWYoZTw8PTMsImJpZyI9PT10aGlzLmVuZGlhbil7Zm9yKHZhciBhPTg7YTx0aGlzLnBhZExlbmd0aDthKyspbltpKytdPTA7bltpKytdPTAsbltpKytdPTAsbltpKytdPTAsbltpKytdPTAsbltpKytdPWU+Pj4yNCYyNTUsbltpKytdPWU+Pj4xNiYyNTUsbltpKytdPWU+Pj44JjI1NSxuW2krK109MjU1JmV9ZWxzZSBmb3IobltpKytdPTI1NSZlLG5baSsrXT1lPj4+OCYyNTUsbltpKytdPWU+Pj4xNiYyNTUsbltpKytdPWU+Pj4yNCYyNTUsbltpKytdPTAsbltpKytdPTAsbltpKytdPTAsbltpKytdPTAsYT04O2E8dGhpcy5wYWRMZW5ndGg7YSsrKW5baSsrXT0wO3JldHVybiBufX0sZjNhMzpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXQsaT1yKCI4MGFmIiksYT1yKCJkYTNlIiksZj1yKCI3NjU4Iik7ZnVuY3Rpb24gbyhlLHQscil7dmFyIG49bmV3IEFycmF5KE1hdGgubWF4KGUuYml0TGVuZ3RoKCkscikrMSk7bi5maWxsKDApO2Zvcih2YXIgaT0xPDx0KzEsYT1lLmNsb25lKCksZj0wO2Y8bi5sZW5ndGg7ZisrKXt2YXIgbyxzPWEuYW5kbG4oaS0xKTthLmlzT2RkKCk/KG89cz4oaT4+MSktMT8oaT4+MSktczpzLGEuaXN1Ym4obykpOm89MCxuW2ZdPW8sYS5pdXNocm4oMSl9cmV0dXJuIG59ZnVuY3Rpb24gcyhlLHQpe3ZhciByPVtbXSxbXV07ZT1lLmNsb25lKCksdD10LmNsb25lKCk7dmFyIG4saT0wLGE9MDt3aGlsZShlLmNtcG4oLWkpPjB8fHQuY21wbigtYSk+MCl7dmFyIGYsbyxzPWUuYW5kbG4oMykraSYzLGQ9dC5hbmRsbigzKSthJjM7Mz09PXMmJihzPS0xKSwzPT09ZCYmKGQ9LTEpLDA9PT0oMSZzKT9mPTA6KG49ZS5hbmRsbig3KStpJjcsZj0zIT09biYmNSE9PW58fDIhPT1kP3M6LXMpLHJbMF0ucHVzaChmKSwwPT09KDEmZCk/bz0wOihuPXQuYW5kbG4oNykrYSY3LG89MyE9PW4mJjUhPT1ufHwyIT09cz9kOi1kKSxyWzFdLnB1c2gobyksMippPT09ZisxJiYoaT0xLWkpLDIqYT09PW8rMSYmKGE9MS1hKSxlLml1c2hybigxKSx0Lml1c2hybigxKX1yZXR1cm4gcn1mdW5jdGlvbiBkKGUsdCxyKXt2YXIgbj0iXyIrdDtlLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzW25dP3RoaXNbbl06dGhpc1tuXT1yLmNhbGwodGhpcyl9fWZ1bmN0aW9uIGMoZSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZT9uLnRvQXJyYXkoZSwiaGV4Iik6ZX1mdW5jdGlvbiB1KGUpe3JldHVybiBuZXcgaShlLCJoZXgiLCJsZSIpfW4uYXNzZXJ0PWEsbi50b0FycmF5PWYudG9BcnJheSxuLnplcm8yPWYuemVybzIsbi50b0hleD1mLnRvSGV4LG4uZW5jb2RlPWYuZW5jb2RlLG4uZ2V0TkFGPW8sbi5nZXRKU0Y9cyxuLmNhY2hlZFByb3BlcnR5PWQsbi5wYXJzZUJ5dGVzPWMsbi5pbnRGcm9tTEU9dX0sZmFhMTpmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuLGk9Im9iamVjdCI9PT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsYT1pJiYiZnVuY3Rpb24iPT09dHlwZW9mIGkuYXBwbHk/aS5hcHBseTpmdW5jdGlvbihlLHQscil7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGUsdCxyKX07ZnVuY3Rpb24gZihlKXtjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihlKX1uPWkmJiJmdW5jdGlvbiI9PT10eXBlb2YgaS5vd25LZXlzP2kub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKX07dmFyIG89TnVtYmVyLmlzTmFOfHxmdW5jdGlvbihlKXtyZXR1cm4gZSE9PWV9O2Z1bmN0aW9uIHMoKXtzLmluaXQuY2FsbCh0aGlzKX1lLmV4cG9ydHM9cyxlLmV4cG9ydHMub25jZT13LHMuRXZlbnRFbWl0dGVyPXMscy5wcm90b3R5cGUuX2V2ZW50cz12b2lkIDAscy5wcm90b3R5cGUuX2V2ZW50c0NvdW50PTAscy5wcm90b3R5cGUuX21heExpc3RlbmVycz12b2lkIDA7dmFyIGQ9MTA7ZnVuY3Rpb24gYyhlKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcJ1RoZSAibGlzdGVuZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSBcJyt0eXBlb2YgZSl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gdm9pZCAwPT09ZS5fbWF4TGlzdGVuZXJzP3MuZGVmYXVsdE1heExpc3RlbmVyczplLl9tYXhMaXN0ZW5lcnN9ZnVuY3Rpb24gaChlLHQscixuKXt2YXIgaSxhLG87aWYoYyhyKSxhPWUuX2V2ZW50cyx2b2lkIDA9PT1hPyhhPWUuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLGUuX2V2ZW50c0NvdW50PTApOih2b2lkIDAhPT1hLm5ld0xpc3RlbmVyJiYoZS5lbWl0KCJuZXdMaXN0ZW5lciIsdCxyLmxpc3RlbmVyP3IubGlzdGVuZXI6ciksYT1lLl9ldmVudHMpLG89YVt0XSksdm9pZCAwPT09bylvPWFbdF09ciwrK2UuX2V2ZW50c0NvdW50O2Vsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBvP289YVt0XT1uP1tyLG9dOltvLHJdOm4/by51bnNoaWZ0KHIpOm8ucHVzaChyKSxpPXUoZSksaT4wJiZvLmxlbmd0aD5pJiYhby53YXJuZWQpe28ud2FybmVkPSEwO3ZhciBzPW5ldyBFcnJvcigiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAiK28ubGVuZ3RoKyIgIitTdHJpbmcodCkrIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0Iik7cy5uYW1lPSJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmciLHMuZW1pdHRlcj1lLHMudHlwZT10LHMuY291bnQ9by5sZW5ndGgsZihzKX1yZXR1cm4gZX1mdW5jdGlvbiBsKCl7aWYoIXRoaXMuZmlyZWQpcmV0dXJuIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSx0aGlzLndyYXBGbiksdGhpcy5maXJlZD0hMCwwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpOnRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsYXJndW1lbnRzKX1mdW5jdGlvbiBiKGUsdCxyKXt2YXIgbj17ZmlyZWQ6ITEsd3JhcEZuOnZvaWQgMCx0YXJnZXQ6ZSx0eXBlOnQsbGlzdGVuZXI6cn0saT1sLmJpbmQobik7cmV0dXJuIGkubGlzdGVuZXI9cixuLndyYXBGbj1pLGl9ZnVuY3Rpb24gcChlLHQscil7dmFyIG49ZS5fZXZlbnRzO2lmKHZvaWQgMD09PW4pcmV0dXJuW107dmFyIGk9blt0XTtyZXR1cm4gdm9pZCAwPT09aT9bXToiZnVuY3Rpb24iPT09dHlwZW9mIGk/cj9baS5saXN0ZW5lcnx8aV06W2ldOnI/dihpKTpnKGksaS5sZW5ndGgpfWZ1bmN0aW9uIG0oZSl7dmFyIHQ9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PXQpe3ZhciByPXRbZV07aWYoImZ1bmN0aW9uIj09PXR5cGVvZiByKXJldHVybiAxO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGcoZSx0KXtmb3IodmFyIHI9bmV3IEFycmF5KHQpLG49MDtuPHQ7KytuKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5KGUsdCl7Zm9yKDt0KzE8ZS5sZW5ndGg7dCsrKWVbdF09ZVt0KzFdO2UucG9wKCl9ZnVuY3Rpb24gdihlKXtmb3IodmFyIHQ9bmV3IEFycmF5KGUubGVuZ3RoKSxyPTA7cjx0Lmxlbmd0aDsrK3IpdFtyXT1lW3JdLmxpc3RlbmVyfHxlW3JdO3JldHVybiB0fWZ1bmN0aW9uIHcoZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbil7ZnVuY3Rpb24gaShyKXtlLnJlbW92ZUxpc3RlbmVyKHQsYSksbihyKX1mdW5jdGlvbiBhKCl7ImZ1bmN0aW9uIj09PXR5cGVvZiBlLnJlbW92ZUxpc3RlbmVyJiZlLnJlbW92ZUxpc3RlbmVyKCJlcnJvciIsaSkscihbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfU0oZSx0LGEse29uY2U6ITB9KSwiZXJyb3IiIT09dCYmXyhlLGkse29uY2U6ITB9KX0pKX1mdW5jdGlvbiBfKGUsdCxyKXsiZnVuY3Rpb24iPT09dHlwZW9mIGUub24mJk0oZSwiZXJyb3IiLHQscil9ZnVuY3Rpb24gTShlLHQscixuKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGUub24pbi5vbmNlP2Uub25jZSh0LHIpOmUub24odCxyKTtlbHNle2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgZS5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoXCdUaGUgImVtaXR0ZXIiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgXCcrdHlwZW9mIGUpO2UuYWRkRXZlbnRMaXN0ZW5lcih0LChmdW5jdGlvbiBpKGEpe24ub25jZSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsaSkscihhKX0pKX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsImRlZmF1bHRNYXhMaXN0ZW5lcnMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBkfSxzZXQ6ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPT10eXBlb2YgZXx8ZTwwfHxvKGUpKXRocm93IG5ldyBSYW5nZUVycm9yKFwnVGhlIHZhbHVlIG9mICJkZWZhdWx0TWF4TGlzdGVuZXJzIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCBcJytlKyIuIik7ZD1lfX0pLHMuaW5pdD1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LHMucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9PXR5cGVvZiBlfHxlPDB8fG8oZSkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCdUaGUgdmFsdWUgb2YgIm4iIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkIFwnK2UrIi4iKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPWUsdGhpc30scy5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHUodGhpcyl9LHMucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXQucHVzaChhcmd1bWVudHNbcl0pO3ZhciBuPSJlcnJvciI9PT1lLGk9dGhpcy5fZXZlbnRzO2lmKHZvaWQgMCE9PWkpbj1uJiZ2b2lkIDA9PT1pLmVycm9yO2Vsc2UgaWYoIW4pcmV0dXJuITE7aWYobil7dmFyIGY7aWYodC5sZW5ndGg+MCYmKGY9dFswXSksZiBpbnN0YW5jZW9mIEVycm9yKXRocm93IGY7dmFyIG89bmV3IEVycm9yKCJVbmhhbmRsZWQgZXJyb3IuIisoZj8iICgiK2YubWVzc2FnZSsiKSI6IiIpKTt0aHJvdyBvLmNvbnRleHQ9ZixvfXZhciBzPWlbZV07aWYodm9pZCAwPT09cylyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIHMpYShzLHRoaXMsdCk7ZWxzZXt2YXIgZD1zLmxlbmd0aCxjPWcocyxkKTtmb3Iocj0wO3I8ZDsrK3IpYShjW3JdLHRoaXMsdCl9cmV0dXJuITB9LHMucHJvdG90eXBlLmFkZExpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgodGhpcyxlLHQsITEpfSxzLnByb3RvdHlwZS5vbj1zLnByb3RvdHlwZS5hZGRMaXN0ZW5lcixzLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaCh0aGlzLGUsdCwhMCl9LHMucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYyh0KSx0aGlzLm9uKGUsYih0aGlzLGUsdCkpLHRoaXN9LHMucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYyh0KSx0aGlzLnByZXBlbmRMaXN0ZW5lcihlLGIodGhpcyxlLHQpKSx0aGlzfSxzLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe3ZhciByLG4saSxhLGY7aWYoYyh0KSxuPXRoaXMuX2V2ZW50cyx2b2lkIDA9PT1uKXJldHVybiB0aGlzO2lmKHI9bltlXSx2b2lkIDA9PT1yKXJldHVybiB0aGlzO2lmKHI9PT10fHxyLmxpc3RlbmVyPT09dCkwPT09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTooZGVsZXRlIG5bZV0sbi5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KCJyZW1vdmVMaXN0ZW5lciIsZSxyLmxpc3RlbmVyfHx0KSk7ZWxzZSBpZigiZnVuY3Rpb24iIT09dHlwZW9mIHIpe2ZvcihpPS0xLGE9ci5sZW5ndGgtMTthPj0wO2EtLSlpZihyW2FdPT09dHx8clthXS5saXN0ZW5lcj09PXQpe2Y9clthXS5saXN0ZW5lcixpPWE7YnJlYWt9aWYoaTwwKXJldHVybiB0aGlzOzA9PT1pP3Iuc2hpZnQoKTp5KHIsaSksMT09PXIubGVuZ3RoJiYobltlXT1yWzBdKSx2b2lkIDAhPT1uLnJlbW92ZUxpc3RlbmVyJiZ0aGlzLmVtaXQoInJlbW92ZUxpc3RlbmVyIixlLGZ8fHQpfXJldHVybiB0aGlzfSxzLnByb3RvdHlwZS5vZmY9cy5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIscy5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtpZihyPXRoaXMuX2V2ZW50cyx2b2lkIDA9PT1yKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PXIucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1yW2VdJiYoMD09PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6ZGVsZXRlIHJbZV0pLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBpLGE9T2JqZWN0LmtleXMocik7Zm9yKG49MDtuPGEubGVuZ3RoOysrbilpPWFbbl0sInJlbW92ZUxpc3RlbmVyIiE9PWkmJnRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGkpO3JldHVybiB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygicmVtb3ZlTGlzdGVuZXIiKSx0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYodD1yW2VdLCJmdW5jdGlvbiI9PT10eXBlb2YgdCl0aGlzLnJlbW92ZUxpc3RlbmVyKGUsdCk7ZWxzZSBpZih2b2lkIDAhPT10KWZvcihuPXQubGVuZ3RoLTE7bj49MDtuLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcihlLHRbbl0pO3JldHVybiB0aGlzfSxzLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuIHAodGhpcyxlLCEwKX0scy5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybiBwKHRoaXMsZSwhMSl9LHMubGlzdGVuZXJDb3VudD1mdW5jdGlvbihlLHQpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgZS5saXN0ZW5lckNvdW50P2UubGlzdGVuZXJDb3VudCh0KTptLmNhbGwoZSx0KX0scy5wcm90b3R5cGUubGlzdGVuZXJDb3VudD1tLHMucHJvdG90eXBlLmV2ZW50TmFtZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQ+MD9uKHRoaXMuX2V2ZW50cyk6W119fSxmZGFjOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbjtmdW5jdGlvbiBpKGUpe3RoaXMucmFuZD1lfWlmKGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbnx8KG49bmV3IGkobnVsbCkpLG4uZ2VuZXJhdGUoZSl9LGUuZXhwb3J0cy5SYW5kPWksaS5wcm90b3R5cGUuZ2VuZXJhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3JhbmQoZSl9LGkucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKGUpe2lmKHRoaXMucmFuZC5nZXRCeXRlcylyZXR1cm4gdGhpcy5yYW5kLmdldEJ5dGVzKGUpO2Zvcih2YXIgdD1uZXcgVWludDhBcnJheShlKSxyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT10aGlzLnJhbmQuZ2V0Qnl0ZSgpO3JldHVybiB0fSwib2JqZWN0Ij09PXR5cGVvZiBzZWxmKXNlbGYuY3J5cHRvJiZzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXM/aS5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoZSk7cmV0dXJuIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh0KSx0fTpzZWxmLm1zQ3J5cHRvJiZzZWxmLm1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcz9pLnByb3RvdHlwZS5fcmFuZD1mdW5jdGlvbihlKXt2YXIgdD1uZXcgVWludDhBcnJheShlKTtyZXR1cm4gc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXModCksdH06Im9iamVjdCI9PT10eXBlb2Ygd2luZG93JiYoaS5wcm90b3R5cGUuX3JhbmQ9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCBpbXBsZW1lbnRlZCB5ZXQiKX0pO2Vsc2UgdHJ5e3ZhciBhPXIoMSk7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBhLnJhbmRvbUJ5dGVzKXRocm93IG5ldyBFcnJvcigiTm90IHN1cHBvcnRlZCIpO2kucHJvdG90eXBlLl9yYW5kPWZ1bmN0aW9uKGUpe3JldHVybiBhLnJhbmRvbUJ5dGVzKGUpfX1jYXRjaChmKXt9fX0pO1xuJywiV29ya2VyIix2b2lkIDAsdm9pZCAwKX12YXIgZD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50O2UuX3NlbGYuX2M7cmV0dXJuIGUuX20oMCl9LGM9W2Z1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQscj1lLl9zZWxmLl9jfHx0O3JldHVybiByKCJkaXYiLFtyKCJoMSIsW2UuX3YoIlZBTklUWS1FVEgiKV0pLHIoInAiLFtlLl92KCJFVEggdmFuaXR5IGFkZHJlc3MgZ2VuZXJhdG9yIildKV0pfV0sdT17fSxoPXUsbD0ocigiNzVhZSIpLHIoIjI4NzciKSksYj1PYmplY3QobFsiYSJdKShoLGQsYywhMSxudWxsLCIxMDViZDI3OCIsbnVsbCkscD1iLmV4cG9ydHMsbT1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50LHI9ZS5fc2VsZi5fY3x8dDtyZXR1cm4gcigiZGl2Iix7c3RhdGljQ2xhc3M6InBhbmVsIn0sW2UuX20oMCkscigiZGl2Iix7c3RhdGljQ2xhc3M6InNob3J0Y3V0In0sW3IoImJ1dHRvbiIse3N0YXRpY0NsYXNzOiJidXR0b24tbGFyZ2UiLGF0dHJzOnt0eXBlOiJidXR0b24ifSxvbjp7Y2xpY2s6ZS5zY3JvbGxEb3dufX0sW2UuX3YoIlN0YXJ0IG5vdyIpXSldKSxyKCJoMiIsW2UuX3YoIldoYXQncyBhIHZhbml0eSBhZGRyZXNzPyIpXSksZS5fbSgxKSxyKCJoMiIsW2UuX3YoIkhvdyBpdCB3b3JrcyIpXSksZS5fbSgyKSxyKCJoMiIsW2UuX3YoIlNlY3VyaXR5IildKSxlLl9tKDMpLHIoImgyIixbZS5fdigiT3RoZXIgYnJvd3Nlci1iYXNlZCB0b29scyIpXSksZS5fbSg0KSxyKCJoMiIsW2UuX3YoIlBlcmZvcm1hbmNlIildKSxlLl9tKDUpLHIoImgyIixbZS5fdigiQ29tcGF0aWJpbGl0eSIpXSksZS5fbSg2KV0pfSxnPVtmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50LHI9ZS5fc2VsZi5fY3x8dDtyZXR1cm4gcigicCIsW2UuX3YoIiBWYW5pdHktRVRIIGlzIGFuIG9wZW4tc291cmNlIHRvb2wgdGhhdCB1c2VzIHlvdXIgd2ViIGJyb3dzZXIgdG8gZ2VuZXJhdGUgRXRoZXJldW0gdmFuaXR5IGFkZHJlc3Nlcy4iKSxyKCJiciIpLGUuX3YoIiBFbnRlciBhIHNob3J0IHByZWZpeCBhbmQvb3Igc3VmZml4IG9mIHlvdXIgY2hvaWNlIGFuZCBjbGljayAiKSxyKCJpIixbZS5fdigiR2VuZXJhdGUiKV0pLGUuX3YoIiB0byBzdGFydC4gIildKX0sZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVudCxyPWUuX3NlbGYuX2N8fHQ7cmV0dXJuIHIoImRpdiIse3N0YXRpY0NsYXNzOiJwIn0sW2UuX3YoIiBBIHZhbml0eSBhZGRyZXNzIGlzIGFuIGFkZHJlc3MgaW4gd2hpY2ggeW91IGNhbiBjaG9vc2UgYSBwYXJ0IG9mIGl0IHRvIG1ha2UgaXQgYXBwZWFyIGxlc3MgcmFuZG9tLiIpLHIoImJyIiksZS5fdigiIEV4YW1wbGVzOiAiKSxyKCJ1bCIsW3IoImxpIixbcigic3BhbiIse3N0YXRpY0NsYXNzOiJtb25vc3BhY2UifSxbZS5fdigiMHhjMGZmZWUyNTQ3MjkyOTZhNDVhMzg4NTYzOUFDN0UxMEY5ZDU0OTc5IildKV0pLHIoImxpIixbcigic3BhbiIse3N0YXRpY0NsYXNzOiJtb25vc3BhY2UifSxbZS5fdigiMHg5OTk5OTljZjEwNDZlNjhlMzZFMWFBMkUwRTA3MTA1ZURERDFmMDhFIildKV0pXSldKX0sZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVudCxyPWUuX3NlbGYuX2N8fHQ7cmV0dXJuIHIoInAiLFtlLl92KCIgRW50ZXIgYSBzaG9ydCBwcmVmaXggYW5kL29yIHN1ZmZpeCBvZiB5b3VyIGNob2ljZSBhbmQgY2xpY2sgIikscigiaSIsW2UuX3YoIkdlbmVyYXRlIildKSxlLl92KCIgdG8gc3RhcnQuIFlvdXIgYnJvd3NlciB3aWxsIGdlbmVyYXRlIGxvdHMgb2YgcmFuZG9tIGFkZHJlc3NlcyB1bnRpbCBpdCBmaW5kcyBvbmUgdGhhdCBtYXRjaGVzIHlvdXIgaW5wdXQuIikscigiYnIiKSxlLl92KCIgT25jZSBhbiBhZGRyZXNzIGlzIGZvdW5kLCB5b3UgY2FuIGNob29zZSB0byByZXZlYWwgdGhlIHByaXZhdGUga2V5IG9yIGNsaWNrIHRoZSAiKSxyKCJpIixbZS5fdigiU2F2ZSIpXSksZS5fdigiIGJ1dHRvbiB0byBkb3dubG9hZCBhIHBhc3N3b3JkLWVuY3J5cHRlZCBrZXlzdG9yZSBmaWxlLiIpLHIoImJyIikscigiYnIiKSxlLl92KCIgQWRqdXN0aW5nIHRoZSBudW1iZXIgb2Ygd29ya2luZyB0aHJlYWRzIGNhbiBpbmNyZWFzZSBvciBkZWNyZWFzZSB0aGUgc3BlZWQsIGRlcGVuZGluZyBvbiB5b3VyIGNvbXB1dGVyJ3MgY2FwYWJpbGl0aWVzLiIpLHIoImJyIildKX0sZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVudCxyPWUuX3NlbGYuX2N8fHQ7cmV0dXJuIHIoInAiLFtlLl92KCIgQXMgbWVudGlvbmVkIGVhcmxpZXIsIGFsbCBjb21wdXRhdGlvbnMgb2NjdXIgc29sZWx5IHdpdGhpbiB5b3VyIGJyb3dzZXIuIE5vdGhpbmcgZXZlciBsZWF2ZXMgeW91ciBtYWNoaW5lLCBvciBldmVuIHlvdXIgYnJvd3NlciB0YWIuIFRoZXJlIGlzIG5vIGRhdGFiYXNlLCBubyBzZXJ2ZXItc2lkZSBjb2RlLiBFdmVyeXRoaW5nIHZhbmlzaGVzIHdoZW4geW91IGNsb3NlIHlvdXIgYnJvd3NlciB0YWIuIikscigiYnIiKSxyKCJiciIpLHIoImIiLFtlLl92KCJWYW5pdHktRVRIIGNhbm5vdCBhbmQgd2lsbCBuZXZlciBzdG9yZSB5b3VyIHByaXZhdGUga2V5LiIpXSksZS5fdigiIElmIHlvdSBoYXZlIGNvbmNlcm5zIGFib3V0IGl0cyB0cnVzdHdvcnRoaW5lc3MsIHlvdSBoYXZlIHRocmVlIG9wdGlvbnMgdG8gZW5zdXJlIHRoZSBwcml2YWN5IG9mIHlvdXIga2V5OiIpLHIoImJyIiksZS5fdigiIC0gQWZ0ZXIgbG9hZGluZyB0aGUgd2ViIHBhZ2UsIHlvdSBjYW4gZGlzY29ubmVjdCBmcm9tIHRoZSBpbnRlcm5ldCBhbmQgY29udGludWUgdXNpbmcgaXQgc2VhbWxlc3NseSIpLHIoImJyIiksZS5fdigiIC0gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBkb3dubG9hZCB0aGUgbGF0ZXN0IGJ1aWxkIG9mIFZhbml0eS1FVEggIikscigiYSIse2F0dHJzOntocmVmOiJodHRwczovL2dpdC5pby92ZXRoLWRsIix0YXJnZXQ6Il9ibGFuayJ9fSxbZS5fdigiaGVyZSIpXSksZS5fdigiIGFuZCB1c2UgaXQgb24gYW4gb2ZmbGluZSBjb21wdXRlciIpLHIoImJyIiksZS5fdigiIC0gVGhlIGNvZGUgaXMgMTAwJSBvcGVuIHNvdXJjZSBhbmQgYXZhaWxhYmxlIG9uICIpLHIoImEiLHthdHRyczp7aHJlZjoiaHR0cHM6Ly9naXRodWIuY29tL2Jva3ViL3Zhbml0eS1ldGgiLHRhcmdldDoiX2JsYW5rIn19LFtlLl92KCJHaXRIdWIiKV0pLGUuX3YoIiwgYWxsb3dpbmcgeW91IHRvIHJldmlldyBpdCB0aG9yb3VnaGx5IGJlZm9yZSB1c2FnZSIpLHIoImJyIikscigiYnIiKSxlLl92KCIgVmFuaXR5LUVUSCB1c2VzIGEgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkb3JhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIChDU1BSTkcpIHRvIGdlbmVyYXRlIEV0aGVyZXVtIGFkZHJlc3Nlcy4iKSxyKCJiciIpLGUuX3YoIiBUaGUga2V5c3RvcmUgZmlsZSBpcyBlbmNyeXB0ZWQgd2l0aCBhbiBBRVMtMTI4LUNUUiBjaXBoZXIgdXNpbmcgdGhlIFBCS0RGMi1TSEEyNTYgZGVyaXZhdGlvbiBmdW5jdGlvbiB3aXRoIDY1NTM2IGhhc2hpbmcgcm91bmRzLiAiKV0pfSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50LHI9ZS5fc2VsZi5fY3x8dDtyZXR1cm4gcigicCIsW2UuX3YoIiBCZSBhd2FyZSB0aGF0IGR1ZSB0byBpdHMgcG9wdWxhcml0eSBhbmQgb3Blbi1zb3VyY2UgbmF0dXJlLCBWYW5pdHktRVRIIGhhcyBiZWVuIHdpZGVseSBjb3BpZWQsIGxlYWRpbmcgdG8gdGhlIGV4aXN0ZW5jZSBvZiB3ZWJzaXRlcyBjbGFpbWluZyB0byBwcm92aWRlIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuIFNvbWV0aW1lcywgdGhleSBhcmUgcGVyZmVjdCBjbG9uZXMgaG9zdGVkIG9uIHZlcnkgc2ltaWxhciBkb21haW5zLiIpLHIoImJyIiksZS5fdigiIE1vc3Qgb2YgdGhlbSBkbyBub3QgY3JlZGl0IHRoZSBvcmlnaW5hbCBjb2RlLCBhcmUgbm90IG9wZW4tc291cmNlLCBhbmQgbWF5IGNvbnRhaW4gbWFsaWNpb3VzIGNvZGUuIikscigiYnIiKSxyKCJiciIpLGUuX3YoIiBWYW5pdHktRVRIIGhhcyBhbHdheXMgYmVlbiB0aGUgIikscigiYiIsW2UuX3YoImZpcnN0IildKSxlLl92KCIgYnJvd3Nlci1iYXNlZCBFVEggdmFuaXR5IGFkZHJlc3MgZ2VuZXJhdG9yLCBhbmQgcmVtYWlucyB0aGUgbW9zdCBwb3B1bGFyIGFuZCB0cnVzdGVkIG9uZS4iKSxyKCJiciIpLHIoImJyIiksZS5fdigiIFRvIGJlIHN1cmUgeW91J3JlIG9uIHRoZSByZWFsIFZhbml0eS1FVEggd2Vic2l0ZSwgc2VhcmNoIGZvciAiKSxyKCJhIix7YXR0cnM6e2hyZWY6Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWFyY2g/bz1kZXNjJnE9VmFuaXR5LUVUSCZzPXN0YXJzIix0YXJnZXQ6Il9ibGFuayJ9fSxbZS5fdigiVmFuaXR5LUVUSCBvbiBHaXRIdWIiKV0pLGUuX3YoIiwgZmluZCB0aGUgcmVwb3NpdG9yeSB3aXRoIHRoZSBtb3N0IHN0YXJzICg+IDYwMCksIGFuZCBjbGljayB0aGUgbGluayBpbiB0aGUgZGVzY3JpcHRpb24uIERvdWJsZSBjaGVjayBieSBzZWFyY2hpbmcgIikscigiYSIse2F0dHJzOntocmVmOiJodHRwczovL3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPVZhbml0eS1FVEgiLHRhcmdldDoiX2JsYW5rIn19LFtlLl92KCJWYW5pdHktRVRIIG9uIEdvb2dsZSIpXSksZS5fdigiLiAiKV0pfSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50LHI9ZS5fc2VsZi5fY3x8dDtyZXR1cm4gcigicCIsW2UuX3YoIiBWYW5pdHktRVRIJ3MgcGVyZm9ybWFuY2UgbWF5IHZhcnkgc2lnbmlmaWNhbnRseSBhY3Jvc3MgZGlmZmVyZW50IGJyb3dzZXJzLiBDdXJyZW50bHksIENocm9tZSBwcm92aWRlcyB0aGUgYmVzdCByZXN1bHRzLiIpLHIoImJyIiksZS5fdigiIFdoaWxlIHlvdSBjYW4gdXNlIFZhbml0eS1FVEggb24geW91ciBwaG9uZSBvciB0YWJsZXQsIGl0IGlzIHVubGlrZWx5IHRvIG1hdGNoIHRoZSBzcGVlZCBvZiBhIHRyYWRpdGlvbmFsIGNvbXB1dGVyLiIpLHIoImJyIikscigiYnIiKSxyKCJiIixbZS5fdigiTi5COiIpXSksZS5fdigiIFZhbml0eS1FVEggaXMgZGVzaWduZWQgdG8gYmUgYSB1c2VyLWZyaWVuZGx5IHRvb2wgdGhhdCBydW5zIGRpcmVjdGx5IGluIHlvdXIgYnJvd3NlciwgcHJvdmlkaW5nIGVhc3kgYWNjZXNzaWJpbGl0eSB3aXRob3V0IHRoZSBuZWVkIHRvIGRvd25sb2FkIG9yIGluc3RhbGwgYWRkaXRpb25hbCBzb2Z0d2FyZS4iKSxyKCJiciIpLGUuX3YoIiBIb3dldmVyLCBicm93c2VyLWJhc2VkIHRvb2xzIGhhdmUgaW5oZXJlbnQgbGltaXRhdGlvbnMgdGhhdCBtYXkgYWZmZWN0IHRoZWlyIHBlcmZvcm1hbmNlIGFuZCBlZmZpY2llbmN5LiBTb21lIGRlZGljYXRlZCBjb21tYW5kLWxpbmUgdG9vbHMgYXJlIG1vcmUgZGlmZmljdWx0IHRvIHVzZSwgYnV0IG1heSBvZmZlciBiZXR0ZXIgcGVyZm9ybWFuY2UuICIpXSl9LGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQscj1lLl9zZWxmLl9jfHx0O3JldHVybiByKCJwIixbZS5fdigiIEFueSBhZGRyZXNzIGdlbmVyYXRlZCB3aXRoIFZhbml0eS1FVEggaXMgRVJDLTIwIGNvbXBhdGlibGUsIHdoaWNoIG1lYW5zIHlvdSBjYW4gdXNlIGl0IGZvciBhbiBJQ08sIGFuIGFpcmRyb3AsIG9yIGp1c3QgdG8gd2l0aGRyYXcgeW91ciBmdW5kcyBmcm9tIGFuIGV4Y2hhbmdlLiIpLHIoImJyIiksZS5fdigiIFRoZSBrZXlzdG9yZSBmaWxlIGlzIDEwMCUgY29tcGF0aWJsZSB3aXRoIE15RXRoZXJXYWxsZXQsIE1ldGFNYXNrLCBNaXN0LCBhbmQgZ2V0aC4gIildKX1dLHY9e2RhdGE6ZnVuY3Rpb24oKXtyZXR1cm57c2Nyb2xsVGltZU91dDpudWxsfX0sbWV0aG9kczp7c2Nyb2xsRG93bigpe3RoaXMuc2Nyb2xsVG8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0LXBhbmVsIiksLTEpfSxzY3JvbGxUbyhlLHQpe2xldCByPXdpbmRvdy5zY3JvbGxZLG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AvNjtNYXRoLmFicyhuKT4xJiZyPnQ/KHdpbmRvdy5zY3JvbGxUbygwLHdpbmRvdy5zY3JvbGxZK24pLHRoaXMuc2Nyb2xsVGltZU91dD1zZXRUaW1lb3V0KHRoaXMuc2Nyb2xsVG8sMzAsZSxyKSk6cj49dCYmZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlucHV0IikuZm9jdXMoKX19fSx5PXYsdz0ocigiMzA0MiIpLE9iamVjdChsWyJhIl0pKHksbSxnLCExLG51bGwsIjI4ODVhOTlhIixudWxsKSksXz13LmV4cG9ydHMsTT1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50LHI9ZS5fc2VsZi5fY3x8dDtyZXR1cm4gcigiZGl2Iix7c3RhdGljQ2xhc3M6InBhbmVsIn0sWyJ3b3JrZXJzX3Vuc3VwcG9ydGVkIj09PWUuZXJyb3I/cigicCIsW2UuX3YoIiBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aS10aHJlYWQgY29tcHV0YXRpb24uIikscigiYnIiKSxlLl92KCIgUGxlYXNlIHVzZSBhIGRpZmZlcmVudCBicm93c2VyLiAiKV0pOmUuX2UoKSwiaW5zZWN1cmVfbG9jYXRpb24iPT09ZS5lcnJvcj9yKCJkaXYiLFtyKCJoMyIsW2UuX3YoIlNlY3VyaXR5IGFsZXJ0IildKSxlLl92KCIgWW91IGFyZSB1c2luZyBWYW5pdHktRVRIIGZyb20gYW4gdW5rbm93biB3ZWJzaXRlLCB3aGljaCBjb3VsZCBzdGVhbCB5b3VyIHByaXZhdGUga2V5cy4iKSxyKCJiciIpLGUuX3YoIiBUbyBzdGF5IHNhZmUsIHVzZSBWYW5pdHktRVRIIG9uICIpLHIoImEiLHthdHRyczp7aHJlZjoiaHR0cHM6Ly92YW5pdHktZXRoLnRrIix0YXJnZXQ6Il9ibGFuayJ9fSxbZS5fdigidmFuaXR5LWV0aC50ayIpXSksZS5fdigiLCBvciBkb3dubG9hZCB0aGUgbGF0ZXN0IGJ1aWxkICIpLHIoImEiLHthdHRyczp7aHJlZjoiaHR0cHM6Ly9naXQuaW8vdmV0aC1kbCIsdGFyZ2V0OiJfYmxhbmsifX0sW2UuX3YoImhlcmUiKV0pLGUuX3YoIiB0byB1c2Ugb2ZmbGluZS4gIildKTpyKCJwIix7ZG9tUHJvcHM6e2lubmVySFRNTDplLl9zKGUuZXJyb3IucmVwbGFjZSgiXG4iLCI8YnI+IikpfX0pXSl9LFM9W10sQT17cHJvcHM6e2Vycm9yOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH19fSxFPUEseD0ocigiYjU1OSIpLE9iamVjdChsWyJhIl0pKEUsTSxTLCExLG51bGwsIjE3NDc4YWVkIixudWxsKSksaz14LmV4cG9ydHMsUj1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50LHI9ZS5fc2VsZi5fY3x8dDtyZXR1cm4gcigiZGl2Iix7c3RhdGljQ2xhc3M6InBhbmVsIixhdHRyczp7aWQ6ImlucHV0LXBhbmVsIn19LFtyKCJmb3JtIix7b246e3N1Ym1pdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpLGUuc3RhcnRHZW4odCl9fX0sW2UuaW5wdXRFcnJvcj9yKCJkaXYiLHtzdGF0aWNDbGFzczoiZXJyb3ItdGV4dCJ9LFtlLl92KCJOdW1iZXJzIGFuZCBsZXR0ZXJzIGZyb20gQSB0byBGIG9ubHkiKV0pOmUuX2UoKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoicm93In0sW3IoImRpdiIse3N0YXRpY0NsYXNzOiJjb2wtMTIgY29sLXNtLTYgY29sLW1kLTEyIGNvbC1sZy02In0sW3IoImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTplLnByZWZpeCxleHByZXNzaW9uOiJwcmVmaXgifV0sc3RhdGljQ2xhc3M6InRleHQtaW5wdXQtbGFyZ2UiLGNsYXNzOntlcnJvcjplLnByZWZpeEVycm9yfSxhdHRyczp7dHlwZToidGV4dCIsaWQ6ImlucHV0IixwbGFjZWhvbGRlcjoiUHJlZml4IixkaXNhYmxlZDplLnJ1bm5pbmd9LGRvbVByb3BzOnt2YWx1ZTplLnByZWZpeH0sb246e2lucHV0OmZ1bmN0aW9uKHQpe3QudGFyZ2V0LmNvbXBvc2luZ3x8KGUucHJlZml4PXQudGFyZ2V0LnZhbHVlKX19fSldKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoiY29sLTEyIGNvbC1zbS02IGNvbC1tZC0xMiBjb2wtbGctNiJ9LFtyKCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6ZS5zdWZmaXgsZXhwcmVzc2lvbjoic3VmZml4In1dLHN0YXRpY0NsYXNzOiJ0ZXh0LWlucHV0LWxhcmdlIixjbGFzczp7ZXJyb3I6ZS5zdWZmaXhFcnJvcn0sYXR0cnM6e3R5cGU6InRleHQiLGlkOiJpbnB1dCIscGxhY2Vob2xkZXI6IlN1ZmZpeCIsZGlzYWJsZWQ6ZS5ydW5uaW5nfSxkb21Qcm9wczp7dmFsdWU6ZS5zdWZmaXh9LG9uOntpbnB1dDpmdW5jdGlvbih0KXt0LnRhcmdldC5jb21wb3Npbmd8fChlLnN1ZmZpeD10LnRhcmdldC52YWx1ZSl9fX0pXSldKSxlLl9tKDApLHIoImRpdiIse3N0YXRpY0NsYXNzOiJleGFtcGxlIGhpZGUtcHJlcmVuZGVyIn0sW2UuX3YoIiBFLmcuICIpLGUuaW5wdXRFcnJvcj9yKCJzcGFuIix7c3RhdGljQ2xhc3M6Im1vbm9zcGFjZSJ9LFtlLl92KCJOL0EiKV0pOnIoInNwYW4iLHtzdGF0aWNDbGFzczoibW9ub3NwYWNlIn0sW2UuX3YoIiAweCIpLGUuZXhhbXBsZS5wcmVmaXg/cigiYiIse2RvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUuZXhhbXBsZS5wcmVmaXgpfX0pOmUuX2UoKSxyKCJzcGFuIix7ZG9tUHJvcHM6e3RleHRDb250ZW50OmUuX3MoZS5leGFtcGxlLnJhbmRvbSl9fSksZS5leGFtcGxlLnN1ZmZpeD9yKCJiIix7ZG9tUHJvcHM6e3RleHRDb250ZW50OmUuX3MoZS5leGFtcGxlLnN1ZmZpeCl9fSk6ZS5fZSgpXSldKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoiY29udHJvbHMgaGlkZS1wcmVyZW5kZXIifSxbcigibGFiZWwiLHtzdGF0aWNDbGFzczoiY2hlY2tib3gifSxbcigiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUuY2hlY2tzdW0sZXhwcmVzc2lvbjoiY2hlY2tzdW0ifV0sYXR0cnM6e3R5cGU6ImNoZWNrYm94IixuYW1lOiJjaGVja2JveCIsY2hlY2tlZDoiIixkaXNhYmxlZDplLnJ1bm5pbmd9LGRvbVByb3BzOntjaGVja2VkOkFycmF5LmlzQXJyYXkoZS5jaGVja3N1bSk/ZS5faShlLmNoZWNrc3VtLG51bGwpPi0xOmUuY2hlY2tzdW19LG9uOntjaGFuZ2U6ZnVuY3Rpb24odCl7dmFyIHI9ZS5jaGVja3N1bSxuPXQudGFyZ2V0LGk9ISFuLmNoZWNrZWQ7aWYoQXJyYXkuaXNBcnJheShyKSl7dmFyIGE9bnVsbCxzPWUuX2kocixhKTtuLmNoZWNrZWQ/czwwJiYoZS5jaGVja3N1bT1yLmNvbmNhdChbYV0pKTpzPi0xJiYoZS5jaGVja3N1bT1yLnNsaWNlKDAscykuY29uY2F0KHIuc2xpY2UocysxKSkpfWVsc2UgZS5jaGVja3N1bT1pfX19KSxyKCJpIix7c3RhdGljQ2xhc3M6ImxlZnQifSksZS5fdigiIENhc2Utc2Vuc2l0aXZlICIpXSldKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoidGhyZWFkcyBoaWRlLXByZXJlbmRlciJ9LFtyKCJpbnB1dCIse3N0YXRpY0NsYXNzOiJzcXVhcmUtYnRuIGJ1dHRvbi1sYXJnZSIsYXR0cnM6e3R5cGU6ImJ1dHRvbiIsdmFsdWU6Ii0iLGRpc2FibGVkOmUucnVubmluZ3x8ZS50aHJlYWRzPD0xfSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS50aHJlYWRzLS19fX0pLHIoImlucHV0Iix7c3RhdGljQ2xhc3M6InNxdWFyZS1idG4gYXJyb3cgYnV0dG9uLWxhcmdlIixhdHRyczp7dHlwZToiYnV0dG9uIix2YWx1ZToiKyIsZGlzYWJsZWQ6ZS5ydW5uaW5nfSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS50aHJlYWRzKyt9fX0pLHIoImg0Iix7ZG9tUHJvcHM6e3RleHRDb250ZW50OmUuX3MoZS50aHJlYWRzKX19KSxyKCJzcGFuIixbZS5fdigiIHRocmVhZHMiKV0pLGUudGhyZWFkcz09PWUuY29yZXM/cigic3BhbiIsW2UuX3YoIiAocmVjb21tZW5kZWQpIildKTplLl9lKCldKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoicm93In0sW3IoImRpdiIse3N0YXRpY0NsYXNzOiJjb2wtbGctNiBjb2wtc20tMTIifSxbcigiaW5wdXQiLHtzdGF0aWNDbGFzczoiYnV0dG9uLWxhcmdlIGhpZGUtcmVuZGVyIixhdHRyczp7dHlwZToiYnV0dG9uIix2YWx1ZToiR2VuZXJhdGUiLGRpc2FibGVkOiIifX0pLHIoImlucHV0Iix7c3RhdGljQ2xhc3M6ImJ1dHRvbi1sYXJnZSBoaWRlLXByZXJlbmRlciIsYXR0cnM6e3R5cGU6ImJ1dHRvbiIsdmFsdWU6IkdlbmVyYXRlIixkaXNhYmxlZDplLnJ1bm5pbmd8fGUuaW5wdXRFcnJvcnx8ZS5lcnJvcn0sb246e2NsaWNrOmUuc3RhcnRHZW59fSldKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoiY29sLWxnLTYgY29sLXNtLTEyIn0sW3IoImlucHV0Iix7c3RhdGljQ2xhc3M6ImJ1dHRvbi1sYXJnZSIsYXR0cnM6e3R5cGU6ImJ1dHRvbiIsdmFsdWU6IlN0b3AiLGRpc2FibGVkOiFlLnJ1bm5pbmd9LG9uOntjbGljazplLnN0b3BHZW59fSldKV0pXSldKX0sST1bZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVudCxyPWUuX3NlbGYuX2N8fHQ7cmV0dXJuIHIoImRpdiIse3N0YXRpY0NsYXNzOiJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciBoaWRlLXJlbmRlciJ9LFtyKCJkaXYiLHtzdGF0aWNDbGFzczoic3Bpbm5lciJ9LFtyKCJkaXYiKSxyKCJkaXYiKSxyKCJkaXYiKSxyKCJkaXYiKV0pXSl9XTtjb25zdCBQPWZ1bmN0aW9uKGUpe3JldHVybiFlLmxlbmd0aHx8L15bMC05QS1GXSskL2cudGVzdChlLnRvVXBwZXJDYXNlKCkpfTtmdW5jdGlvbiBDKGUpe2xldCB0PSIiO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtjb25zdCBuPWUuc3Vic3RyKHIsMSk7dCs9TWF0aC5yYW5kb20oKTwuNT9uLnRvVXBwZXJDYXNlKCk6bi50b0xvd2VyQ2FzZSgpfXJldHVybiB0fXZhciBUPXtwcm9wczp7cnVubmluZzpCb29sZWFuLGNvcmVzOk51bWJlcn0sZGF0YTpmdW5jdGlvbigpe3JldHVybnt0aHJlYWRzOnRoaXMuJHByb3BzLmNvcmVzfHw0LHByZWZpeDoiIixzdWZmaXg6IiIsY2hlY2tzdW06ITAsZXJyb3I6ITF9fSxjb21wdXRlZDp7cHJlZml4RXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4hUCh0aGlzLnByZWZpeCl9LHN1ZmZpeEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIVAodGhpcy5zdWZmaXgpfSxpbnB1dEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJlZml4RXJyb3J8fHRoaXMuc3VmZml4RXJyb3J9LGV4YW1wbGU6ZnVuY3Rpb24oKXtpZih0aGlzLmlucHV0RXJyb3IpcmV0dXJuIG51bGw7Y29uc3QgZT10aGlzLmNoZWNrc3VtP3RoaXMucHJlZml4OkModGhpcy5wcmVmaXgpLHQ9dGhpcy5jaGVja3N1bT90aGlzLnN1ZmZpeDpDKHRoaXMuc3VmZml4KTtsZXQgcj0iIjtmb3IobGV0IG49MDtuPDQwLXRoaXMucHJlZml4Lmxlbmd0aC10aGlzLnN1ZmZpeC5sZW5ndGg7bisrKXIrPUMoTWF0aC5mbG9vcigxNipNYXRoLnJhbmRvbSgpKS50b1N0cmluZygxNikpO3JldHVybntyYW5kb206cixwcmVmaXg6ZSxzdWZmaXg6dH19fSxtZXRob2RzOntzdGFydEdlbjpmdW5jdGlvbigpe3RoaXMucnVubmluZ3x8dGhpcy5pbnB1dEVycm9yfHx0aGlzLmVycm9yfHx0aGlzLiRlbWl0KCJzdGFydCIpfSxzdG9wR2VuOmZ1bmN0aW9uKCl7dGhpcy4kZW1pdCgic3RvcCIpfX0sd2F0Y2g6e3ByZWZpeDpmdW5jdGlvbigpe3RoaXMuJGVtaXQoImlucHV0LWNoYW5nZSIsInByZWZpeCIsdGhpcy5wcmVmaXgpfSxzdWZmaXg6ZnVuY3Rpb24oKXt0aGlzLiRlbWl0KCJpbnB1dC1jaGFuZ2UiLCJzdWZmaXgiLHRoaXMuc3VmZml4KX0sY2hlY2tzdW06ZnVuY3Rpb24oKXt0aGlzLiRlbWl0KCJpbnB1dC1jaGFuZ2UiLCJjaGVja3N1bSIsdGhpcy5jaGVja3N1bSl9LHRocmVhZHM6ZnVuY3Rpb24oKXt0aGlzLiRlbWl0KCJpbnB1dC1jaGFuZ2UiLCJ0aHJlYWRzIix0aGlzLnRocmVhZHMpfX19LEw9VCxPPShyKCIwNWMwIiksT2JqZWN0KGxbImEiXSkoTCxSLEksITEsbnVsbCwiMGQxMzRmNmEiLG51bGwpKSxOPU8uZXhwb3J0cyxqPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQscj1lLl9zZWxmLl9jfHx0O3JldHVybiByKCJkaXYiLHtzdGF0aWNDbGFzczoicGFuZWwifSxbcigiZGl2IixbZS5fdigiRGlmZmljdWx0eTogIikscigic3BhbiIse3N0YXRpY0NsYXNzOiJvdXRwdXQiLGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUuZm9ybWF0TnVtKGUuZGlmZmljdWx0eSkpfX0sW2UuX3YoIjEiKV0pXSkscigiZGl2IixbZS5fdigiIEdlbmVyYXRlZDogIikscigic3BhbiIse3N0YXRpY0NsYXNzOiJvdXRwdXQiLGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUuZm9ybWF0TnVtKGUuY291bnQpKygxPT09ZS5jb3VudD8iIGFkZHJlc3MiOiIgYWRkcmVzc2VzIikpfX0sW2UuX3YoIjAgYWRkcmVzc2VzIildKV0pLHIoImRpdiIsW2UuX3YoIjUwJSBwcm9iYWJpbGl0eTogIikscigic3BhbiIse3N0YXRpY0NsYXNzOiJvdXRwdXQiLGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUuc3BlZWQ/ZS50aW1lNTA6ZS5hZHJlc3NlczUwKX19LFtlLl92KCIwIGFkZHJlc3NlcyIpXSldKSxyKCJkaXYiLFtlLl92KCJTcGVlZDogIikscigic3BhbiIse3N0YXRpY0NsYXNzOiJvdXRwdXQiLGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUuc3BlZWQrIiBhZGRyL3MiKX19LFtlLl92KCIwIGFkZHIvcyIpXSldKSxyKCJkaXYiLFtlLl92KCJTdGF0dXM6ICIpLHIoInNwYW4iLHtzdGF0aWNDbGFzczoib3V0cHV0Iixkb21Qcm9wczp7dGV4dENvbnRlbnQ6ZS5fcyhlLnN0YXR1cyl9fSxbZS5fdigiV2FpdGluZyIpXSldKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoicHJvYmFiaWxpdHkifSxbcigiZGl2Iix7c3RhdGljQ2xhc3M6InByb2JhYmlsaXR5LWJhciIsc3R5bGU6IndpZHRoOiIrZS5wcm9iYWJpbGl0eSsiJSJ9KV0pLHIoImRpdiIse3N0YXRpY0NsYXNzOiJwZXJjZW50YWdlIn0sW3IoImg0Iix7ZG9tUHJvcHM6e3RleHRDb250ZW50OmUuX3MoZS5wcm9iYWJpbGl0eSsiJSIpfX0sW2UuX3YoIjAlIildKSxyKCJkaXYiLFtlLl92KCJQcm9iYWJpbGl0eSIpXSldKV0pfSxCPVtdLHo9cigiOGYxNCIpLHE9ci5uKHopO2NvbnN0IEQ9ZnVuY3Rpb24oZSx0LHIpe2NvbnN0IG49ZSt0LGk9TWF0aC5wb3coMTYsbi5sZW5ndGgpO3JldHVybiByP2kqTWF0aC5wb3coMixuLnJlcGxhY2UoL1teYS1mXS9naSwiIikubGVuZ3RoKTppfSxVPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDEtTWF0aC5wb3coMS0xL2UsdCl9LEs9ZnVuY3Rpb24oZSl7cmV0dXJuIWUubGVuZ3RofHwvXlswLTlBLUZdKyQvZy50ZXN0KGUudG9VcHBlckNhc2UoKSl9O3ZhciBZPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3NwZWVkOjAsY291bnQ6MH19LHByb3BzOntwcmVmaXg6U3RyaW5nLHN1ZmZpeDpTdHJpbmcsY2hlY2tzdW06Qm9vbGVhbixzdGF0dXM6U3RyaW5nLGZpcnN0VGljazp7fX0sd2F0Y2g6e3ByZWZpeCgpe3RoaXMuY291bnQ9MH0sc3VmZml4KCl7dGhpcy5jb3VudD0wfSxjaGVja3N1bSgpe3RoaXMuY291bnQ9MH19LGNvbXB1dGVkOntpbnB1dEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIUsodGhpcy5wcmVmaXgpfHwhSyh0aGlzLnN1ZmZpeCl9LGRpZmZpY3VsdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnB1dEVycm9yPyJOL0EiOkQodGhpcy5wcmVmaXgsdGhpcy5zdWZmaXgsdGhpcy5jaGVja3N1bSl9LHByb2JhYmlsaXR5NTAoKXtyZXR1cm4gdGhpcy5pbnB1dEVycm9yPzA6TWF0aC5mbG9vcihNYXRoLmxvZyguNSkvTWF0aC5sb2coMS0xL3RoaXMuZGlmZmljdWx0eSkpfSxhZHJlc3NlczUwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvYmFiaWxpdHk1MD09PS0xLzA/Ik5lYXJseSBpbXBvc3NpYmxlIjp0aGlzLmlucHV0RXJyb3I/Ik4vQSI6dGhpcy5mb3JtYXROdW0odGhpcy5wcm9iYWJpbGl0eTUwKSsiIGFkZHJlc3NlcyJ9LHRpbWU1MDpmdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5wcm9iYWJpbGl0eTUwL3RoaXMuc3BlZWQ7cmV0dXJuIGU+NjMxMTUyZTR8fGU9PT0tMS8wPyJUaG91c2FuZHMgb2YgeWVhcnMiOnRoaXMuaW5wdXRFcnJvcj8iTi9BIjpxKCkoMWUzKk1hdGgucm91bmQoZSkse2xhcmdlc3Q6Mn0pfSxwcm9iYWJpbGl0eTpmdW5jdGlvbigpe3JldHVybiBNYXRoLnJvdW5kKDFlNCpVKHRoaXMuZGlmZmljdWx0eSx0aGlzLmNvdW50KSkvMTAwfX0sbWV0aG9kczp7Zm9ybWF0TnVtOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRvU3RyaW5nKCkucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZywiICIpfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuJHBhcmVudC4kb24oImluY3JlbWVudC1jb3VudGVyIixlPT57dGhpcy5jb3VudCs9ZT4wP2U6LXRoaXMuY291bnQsdGhpcy5zcGVlZD1lPjA/TWF0aC5mbG9vcigxZTMqdGhpcy5jb3VudC8ocGVyZm9ybWFuY2Uubm93KCktdGhpcy5maXJzdFRpY2spKTowfSl9fSxXPVksRj0ocigiZGYwOSIpLE9iamVjdChsWyJhIl0pKFcsaixCLCExLG51bGwsIjY2NDU1NmExIixudWxsKSksVj1GLmV4cG9ydHMsSD1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50LHI9ZS5fc2VsZi5fY3x8dDtyZXR1cm4gcigiZGl2Iix7c3RhdGljQ2xhc3M6InBhbmVsIHJlc3VsdCJ9LFtyKCJkaXYiLHtzdGF0aWNDbGFzczoicm93In0sW3IoImRpdiIse3N0YXRpY0NsYXNzOiJmbG9hdC1sZWZ0IixhdHRyczp7aWQ6ImlkZW50aWNvbiJ9fSkscigiZGl2Iix7c3RhdGljQ2xhc3M6ImNvbCJ9LFtyKCJkaXYiLFtlLl92KCJBZGRyZXNzOiAiKSxyKCJzcGFuIix7c3RhdGljQ2xhc3M6Im91dHB1dCIsZG9tUHJvcHM6e3RleHRDb250ZW50OmUuX3MoZS5hZGRyZXNzKX19KV0pLHIoImRpdiIsW2UuX3YoIiBQcml2YXRlIGtleTogIiksZS5wcml2YXRlS2V5P3IoInNwYW4iLHtzdGF0aWNDbGFzczoib3V0cHV0Iixkb21Qcm9wczp7dGV4dENvbnRlbnQ6ZS5fcyhlLnJldmVhbD9lLnByaXZhdGVLZXk6IkNsaWNrIHRvIHJldmVhbCIpfSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7cmV0dXJuIGUucmV2ZWFsS2V5KCl9fX0pOmUuX2UoKV0pXSkscigiZGl2Iix7c3RhdGljQ2xhc3M6ImNvbC1sZy0yIGNvbC0xMiJ9LFtyKCJidXR0b24iLHtzdGF0aWNDbGFzczoic2F2ZSBidXR0b24tbGFyZ2UiLGF0dHJzOnsiZGF0YS1yZW1vZGFsLXRhcmdldCI6Im1vZGFsIixkaXNhYmxlZDohZS5wcml2YXRlS2V5fX0sW3IoImkiLHtzdGF0aWNDbGFzczoiaWNvbi1sb2NrIn0pLGUuX3YoIlNhdmUgIildKV0pXSldKX0sWj1bXSxHPXIoIjkwOTUiKSxYPXtwcm9wczp7YWRkcmVzczpTdHJpbmcscHJpdmF0ZUtleTpTdHJpbmd9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cmV2ZWFsOiExfX0sd2F0Y2g6e2FkZHJlc3MoZSl7dGhpcy5yZXZlYWw9ITE7Y29uc3QgdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWRlbnRpY29uIik7dC5pbm5lckhUTUw9IiIsZSYmdC5hcHBlbmRDaGlsZChHKHtzZWVkOmUudG9Mb2NhbGVMb3dlckNhc2UoKSxzY2FsZTo2fSkpfX0sbWV0aG9kczp7cmV2ZWFsS2V5KCl7dGhpcy5yZXZlYWw9ITB9fX0sJD1YLEo9KHIoIjM2MjgiKSxPYmplY3QobFsiYSJdKSgkLEgsWiwhMSxudWxsLCIwNWM5YmJhNiIsbnVsbCkpLFE9Si5leHBvcnRzLGVlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQscj1lLl9zZWxmLl9jfHx0O3JldHVybiByKCJkaXYiLHtzdGF0aWNDbGFzczoicmVtb2RhbCIsYXR0cnM6eyJkYXRhLXJlbW9kYWwtaWQiOiJtb2RhbCIsImRhdGEtcmVtb2RhbC1vcHRpb25zIjoiaGFzaFRyYWNraW5nOiBmYWxzZSJ9fSxbcigiYnV0dG9uIix7c3RhdGljQ2xhc3M6InJlbW9kYWwtY2xvc2UiLGF0dHJzOnsiZGF0YS1yZW1vZGFsLWFjdGlvbiI6ImNsb3NlIn19KSxyKCJoMyIse3N0YXRpY0NsYXNzOiJ0aXRsZSJ9LFtlLl92KCJDcmVhdGUgZW5jcnlwdGVkIGtleXN0b3JlIGZpbGUgKFVUQyAvIEpTT04pIildKSxyKCJmb3JtIix7b246e3N1Ym1pdDpmdW5jdGlvbih0KXtyZXR1cm4gdC5wcmV2ZW50RGVmYXVsdCgpLGUuc2F2ZSh0KX19fSxbcigiZGl2IixbcigiaW5wdXQiLHtzdGF0aWNDbGFzczoiaGlkZGVuIixhdHRyczp7dHlwZToidGV4dCIsYXV0b2NvbXBsZXRlOiJ1c2VybmFtZSJ9fSksImNoZWNrYm94Ij09PShlLnNob3dQYXNzd29yZD8idGV4dCI6InBhc3N3b3JkIik/cigiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUucGFzc3dvcmQsZXhwcmVzc2lvbjoicGFzc3dvcmQifV0sc3RhdGljQ2xhc3M6InRleHQtaW5wdXQtbGFyZ2UiLGF0dHJzOnthdXRvY29tcGxldGU6Im5ldy1wYXNzd29yZCIscGxhY2Vob2xkZXI6IlBhc3N3b3JkIix0eXBlOiJjaGVja2JveCJ9LGRvbVByb3BzOntjaGVja2VkOkFycmF5LmlzQXJyYXkoZS5wYXNzd29yZCk/ZS5faShlLnBhc3N3b3JkLG51bGwpPi0xOmUucGFzc3dvcmR9LG9uOntjaGFuZ2U6ZnVuY3Rpb24odCl7dmFyIHI9ZS5wYXNzd29yZCxuPXQudGFyZ2V0LGk9ISFuLmNoZWNrZWQ7aWYoQXJyYXkuaXNBcnJheShyKSl7dmFyIGE9bnVsbCxzPWUuX2kocixhKTtuLmNoZWNrZWQ/czwwJiYoZS5wYXNzd29yZD1yLmNvbmNhdChbYV0pKTpzPi0xJiYoZS5wYXNzd29yZD1yLnNsaWNlKDAscykuY29uY2F0KHIuc2xpY2UocysxKSkpfWVsc2UgZS5wYXNzd29yZD1pfX19KToicmFkaW8iPT09KGUuc2hvd1Bhc3N3b3JkPyJ0ZXh0IjoicGFzc3dvcmQiKT9yKCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6ZS5wYXNzd29yZCxleHByZXNzaW9uOiJwYXNzd29yZCJ9XSxzdGF0aWNDbGFzczoidGV4dC1pbnB1dC1sYXJnZSIsYXR0cnM6e2F1dG9jb21wbGV0ZToibmV3LXBhc3N3b3JkIixwbGFjZWhvbGRlcjoiUGFzc3dvcmQiLHR5cGU6InJhZGlvIn0sZG9tUHJvcHM6e2NoZWNrZWQ6ZS5fcShlLnBhc3N3b3JkLG51bGwpfSxvbjp7Y2hhbmdlOmZ1bmN0aW9uKHQpe2UucGFzc3dvcmQ9bnVsbH19fSk6cigiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUucGFzc3dvcmQsZXhwcmVzc2lvbjoicGFzc3dvcmQifV0sc3RhdGljQ2xhc3M6InRleHQtaW5wdXQtbGFyZ2UiLGF0dHJzOnthdXRvY29tcGxldGU6Im5ldy1wYXNzd29yZCIscGxhY2Vob2xkZXI6IlBhc3N3b3JkIix0eXBlOmUuc2hvd1Bhc3N3b3JkPyJ0ZXh0IjoicGFzc3dvcmQifSxkb21Qcm9wczp7dmFsdWU6ZS5wYXNzd29yZH0sb246e2lucHV0OmZ1bmN0aW9uKHQpe3QudGFyZ2V0LmNvbXBvc2luZ3x8KGUucGFzc3dvcmQ9dC50YXJnZXQudmFsdWUpfX19KSxyKCJidXR0b24iLHtzdGF0aWNDbGFzczoic2hvdy1wYXNzd29yZCIsYXR0cnM6e3R5cGU6ImJ1dHRvbiJ9LG9uOntjbGljazpmdW5jdGlvbih0KXtlLnNob3dQYXNzd29yZD0hZS5zaG93UGFzc3dvcmR9fX0sW3IoImkiLHtjbGFzczplLnNob3dQYXNzd29yZD8iaWNvbi1leWUtb2ZmIjoiaWNvbi1leWUtb24ifSldKV0pLHIoImRpdiIsW3IoImJ1dHRvbiIse3N0YXRpY0NsYXNzOiJidXR0b24tbGFyZ2UiLGF0dHJzOnt0eXBlOiJidXR0b24iLGRpc2FibGVkOiFlLnBhc3N3b3JkfHwhZS5wcml2YXRlS2V5fHxlLmxvYWRpbmd9LGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUubG9hZGluZz8iR2VuZXJhdGluZy4uLiI6IkRvd25sb2FkIil9LG9uOntjbGljazplLnNhdmV9fSldKV0pXSl9LHRlPVtdLHJlPXIoImMwZDEiKSxuZT1yZVsiYSJdLGllPShyKCI0OTBiIiksT2JqZWN0KGxbImEiXSkobmUsZWUsdGUsITEsbnVsbCxudWxsLG51bGwpKSxhZT1pZS5leHBvcnRzLHNlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQscj1lLl9zZWxmLl9jfHx0O3JldHVybiByKCJhIix7YXR0cnM6e2hyZWY6Imh0dHBzOi8vZ2l0aHViLmNvbS9ib2t1Yi92YW5pdHktZXRoIix0YXJnZXQ6Il9ibGFuayIsImFyaWEtbGFiZWwiOiJWaWV3IHNvdXJjZSBvbiBHaXRodWIifX0sW3IoInN2ZyIse3N0YXRpY1N0eWxlOntmaWxsOiIjMTUxNTEzIixjb2xvcjoiI2ZmZiIscG9zaXRpb246ImFic29sdXRlIix0b3A6IjAiLGJvcmRlcjoiMCIscmlnaHQ6IjAifSxhdHRyczp7d2lkdGg6IjgwIixoZWlnaHQ6IjgwIix2aWV3Qm94OiIwIDAgMjUwIDI1MCIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9fSxbcigiZGVmcyIsW3IoIm1hc2siLHthdHRyczp7aWQ6Im9jdG9tYXNrIn19LFtyKCJwYXRoIix7YXR0cnM6e2ZpbGw6IndoaXRlIixkOiJNMCwwIEwxMTUsMTE1IEwxMzAsMTE1IEwxNDIsMTQyIEwyNTAsMjUwIEwyNTAsMCBaIn19KSxyKCJwYXRoIix7c3RhdGljQ2xhc3M6Im9jdG8tYXJtIixzdGF0aWNTdHlsZTp7InRyYW5zZm9ybS1vcmlnaW4iOiIxMzBweCAxMDZweCJ9LGF0dHJzOntmaWxsOiJibGFjayIsZDoiTTEyOC4zLDEwOS4wIEMxMTMuOCw5OS43IDExOS4wLDg5LjYgMTE5LjAsODkuNiBDMTIyLjAsODIuNyAxMjAuNSw3OC42IDEyMC41LDc4LjYgQzExOS4yLDcyLjAgMTIzLjQsNzYuMyAxMjMuNCw3Ni4zIEMxMjcuMyw4MC45IDEyNS41LDg3LjMgMTI1LjUsODcuMyBDMTIyLjksOTcuNiAxMzAuNiwxMDEuOSAxMzQuNCwxMDMuMiJ9fSkscigicGF0aCIse3N0YXRpY0NsYXNzOiJvY3RvLWJvZHkiLGF0dHJzOntkOiJNMTE1LjAsMTE1LjAgQzExNC45LDExNS4xIDExOC43LDExNi41IDExOS44LDExNS40IEwxMzMuNywxMDEuNiBDMTM2LjksOTkuMiAxMzkuOSw5OC40IDE0Mi4yLDk4LjYgQzEzMy44LDg4LjAgMTI3LjUsNzQuNCAxNDMuOCw1OC4wIEMxNDguNSw1My40IDE1NC4wLDUxLjIgMTU5LjcsNTEuMCBDMTYwLjMsNDkuNCAxNjMuMiw0My42IDE3MS40LDQwLjEgQzE3MS40LDQwLjEgMTc2LjEsNDIuNSAxNzguOCw1Ni4yIEMxODMuMSw1OC42IDE4Ny4yLDYxLjggMTkwLjksNjUuNCBDMTk0LjUsNjkuMCAxOTcuNyw3My4yIDIwMC4xLDc3LjYgQzIxMy44LDgwLjIgMjE2LjMsODQuOSAyMTYuMyw4NC45IEMyMTIuNyw5My4xIDIwNi45LDk2LjAgMjA1LjQsOTYuNiBDMjA1LjEsMTAyLjQgMjAzLjAsMTA3LjggMTk4LjMsMTEyLjUgQzE4MS45LDEyOC45IDE2OC4zLDEyMi41IDE1Ny43LDExNC4xIEMxNTcuOSwxMTYuOSAxNTYuNywxMjAuOSAxNTIuNywxMjQuOSBMMTQxLjAsMTM2LjUgQzEzOS44LDEzNy43IDE0MS42LDE0MS45IDE0MS44LDE0MS44IFoiLGZpbGw6ImJsYWNrIn19KV0pXSkscigicmVjdCIse3N0YXRpY0NsYXNzOiJmaWxsZXIiLGF0dHJzOntmaWxsOiJ3aGl0ZSIsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsbWFzazoidXJsKCNvY3RvbWFzaykifX0pXSldKX0sb2U9W10sZmU9e30sZGU9ZmUsY2U9KHIoIjcyMzEiKSxPYmplY3QobFsiYSJdKShkZSxzZSxvZSwhMSxudWxsLCI4ODdmNmRlZSIsbnVsbCkpLHVlPWNlLmV4cG9ydHMsaGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kY3JlYXRlRWxlbWVudCxyPWUuX3NlbGYuX2N8fHQ7cmV0dXJuIHIoImZvb3RlciIsW3IoImRpdiIse3N0YXRpY0NsYXNzOiJjb250YWluZXIifSxbcigiZGl2Iix7c3RhdGljQ2xhc3M6InJvdyJ9LFtyKCJkaXYiLHtzdGF0aWNDbGFzczoiY29sLTEyIGNvbC1sZy02IGFkZHJlc3MifSxbZS5fdigiIFRpcHM6ICIpLHIoImEiLHthdHRyczp7aHJlZjoiaHR0cHM6Ly9ldGhlcnNjYW4uaW8vYWRkcmVzcy8iK2UudGlwc0FkZHJlc3MrIiN0b2tlbnR4bnMiLHRhcmdldDoiX2JsYW5rIn0sZG9tUHJvcHM6e3RleHRDb250ZW50OmUuX3MoZS50aXBzQWRkcmVzcyl9fSldKSxyKCJkaXYiLHtzdGF0aWNDbGFzczoiY29sLTEyIGNvbC1sZy02IGxpbmtzIn0sW3IoImEiLHthdHRyczp7aHJlZjoiaHR0cHM6Ly9ldGhlcnNjYW4uaW8vYWRkcmVzcy8iK2UudGlwc0FkZHJlc3MsdGFyZ2V0OiJfYmxhbmsifX0sW3IoImkiLHtzdGF0aWNDbGFzczoiaWNvbi1ldGhlcmV1bSJ9KSxlLl92KCIgRG9uYXRlICIpXSksZS5fbSgwKSxlLl9tKDEpXSldKV0pXSl9LGxlPVtmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1lLiRjcmVhdGVFbGVtZW50LHI9ZS5fc2VsZi5fY3x8dDtyZXR1cm4gcigiYSIse2F0dHJzOntocmVmOiJodHRwczovL2dpdGh1Yi5jb20vYm9rdWIvdmFuaXR5LWV0aCIsdGFyZ2V0OiJfYmxhbmsifX0sW3IoImkiLHtzdGF0aWNDbGFzczoiaWNvbi1zdGFyIn0pLGUuX3YoIiBTdGFyIG1lICIpXSl9LGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWUuJGNyZWF0ZUVsZW1lbnQscj1lLl9zZWxmLl9jfHx0O3JldHVybiByKCJhIix7YXR0cnM6e2hyZWY6Imh0dHBzOi8vZ2l0aHViLmNvbS9ib2t1Yi92YW5pdHktZXRoL3dpa2kvZG93bmxvYWQtVmFuaXR5LUVUSCIsdGFyZ2V0OiJfYmxhbmsifX0sW3IoImkiLHtzdGF0aWNDbGFzczoiaWNvbi1kb3dubG9hZCJ9KSxlLl92KCIgRG93bmxvYWQgIildKX1dLGJlPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3RpcHNBZGRyZXNzOiIweEFjZUJhYmU2NDgwN2NiMDQ1NTA1YjI2OGVmMjUzRDhmQzJGZUY1QmMifX19LHBlPWJlLG1lPShyKCJhOTk3IiksT2JqZWN0KGxbImEiXSkocGUsaGUsbGUsITEsbnVsbCwiMTY3YTQyMWMiLG51bGwpKSxnZT1tZS5leHBvcnRzLHZlPXtjb21wb25lbnRzOntIZWFkbGluZTpwLERlc2NyaXB0aW9uOl8sRXJyOmssVXNlcklucHV0Ok4sU3RhdGlzdGljczpWLFJlc3VsdDpRLFNhdmU6YWUsQ29ybmVyOnVlLEZvb3Q6Z2V9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cnVubmluZzohMSxzdGF0dXM6IldhaXRpbmciLHdvcmtlcnM6W10sdGhyZWFkczo0LGNvcmVzOjAscmVzdWx0OnthZGRyZXNzOiIiLHByaXZhdGVLZXk6IiJ9LGlucHV0OntwcmVmaXg6IiIsc3VmZml4OiIiLGNoZWNrc3VtOiEwfSxmaXJzdFRpY2s6bnVsbCxlcnJvcjpudWxsfX0sd2F0Y2g6e3RocmVhZHM6ZnVuY3Rpb24oKXt0aGlzLnJ1bm5pbmd8fHRoaXMuaW5pdFdvcmtlcnMoKX19LG1ldGhvZHM6e3NldElucHV0OmZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UicHJlZml4Ijp0aGlzLmlucHV0LnByZWZpeD10O2JyZWFrO2Nhc2Uic3VmZml4Ijp0aGlzLmlucHV0LnN1ZmZpeD10O2JyZWFrO2Nhc2UiY2hlY2tzdW0iOnRoaXMuaW5wdXQuY2hlY2tzdW09dDticmVhaztjYXNlInRocmVhZHMiOnRoaXMudGhyZWFkcz10fX0sZGlzcGxheVJlc3VsdDpmdW5jdGlvbihlKXt0aGlzLiRlbWl0KCJpbmNyZW1lbnQtY291bnRlciIsZS5hdHRlbXB0cyksdGhpcy5yZXN1bHQuYWRkcmVzcz1lLmFkZHJlc3MsdGhpcy5yZXN1bHQucHJpdmF0ZUtleT1lLnByaXZLZXksdGhpcy5zdGF0dXM9IkFkZHJlc3MgZm91bmQifSxjbGVhclJlc3VsdDpmdW5jdGlvbigpe3RoaXMucmVzdWx0LmFkZHJlc3M9IiIsdGhpcy5yZXN1bHQucHJpdmF0ZUtleT0iIix0aGlzLiRlbWl0KCJpbmNyZW1lbnQtY291bnRlciIsLTEpfSxpbml0V29ya2VyczpmdW5jdGlvbigpe2NvbnN0IGU9dGhpcztpZih0aGlzLndvcmtlcnMubGVuZ3RoIT09dGhpcy50aHJlYWRzKWlmKHRoaXMud29ya2Vycy5sZW5ndGg+dGhpcy50aHJlYWRzKXtmb3IobGV0IGU9dGhpcy50aHJlYWRzO2U8dGhpcy53b3JrZXJzLmxlbmd0aDtlKyspdGhpcy53b3JrZXJzW2VdLnRlcm1pbmF0ZSgpO3RoaXMud29ya2Vycz10aGlzLndvcmtlcnMuc2xpY2UoMCx0aGlzLnRocmVhZHMpfWVsc2UgZm9yKGxldCByPXRoaXMud29ya2Vycy5sZW5ndGg7cjx0aGlzLnRocmVhZHM7cisrKXRyeXt0aGlzLndvcmtlcnNbcl09bmV3IGYsdGhpcy53b3JrZXJzW3JdLm9ubWVzc2FnZT10PT5lLnBhcnNlV29ya2VyTWVzc2FnZSh0LmRhdGEpfWNhdGNoKHQpe3RoaXMuZXJyb3I9dCx0aGlzLnN0YXR1cz0iRXJyb3IiLGNvbnNvbGUuZXJyb3IodGhpcy5lcnJvcik7YnJlYWt9fSxwYXJzZVdvcmtlck1lc3NhZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3I/KHRoaXMuc3RvcEdlbigpLHRoaXMuZXJyb3I9ZS5lcnJvcix0aGlzLnN0YXR1cz0iRXJyb3IiLHZvaWQgY29uc29sZS5lcnJvcih0aGlzLmVycm9yKSk6ZS5hZGRyZXNzPyh0aGlzLnN0b3BHZW4oKSx0aGlzLmRpc3BsYXlSZXN1bHQoZSkpOnZvaWQgdGhpcy4kZW1pdCgiaW5jcmVtZW50LWNvdW50ZXIiLGUuYXR0ZW1wdHMpfSxzdGFydEdlbjpmdW5jdGlvbigpe2lmKHdpbmRvdy5Xb3JrZXIpe3RoaXMuY2xlYXJSZXN1bHQoKSx0aGlzLnJ1bm5pbmc9ITA7Zm9yKGxldCBlPTA7ZTx0aGlzLndvcmtlcnMubGVuZ3RoO2UrKyl0aGlzLndvcmtlcnNbZV0ucG9zdE1lc3NhZ2UodGhpcy5pbnB1dCk7dGhpcy5zdGF0dXM9IlJ1bm5pbmciLHRoaXMuZmlyc3RUaWNrPXBlcmZvcm1hbmNlLm5vdygpfWVsc2UgdGhpcy5lcnJvcj0id29ya2Vyc191bnN1cHBvcnRlZCJ9LHN0b3BHZW46ZnVuY3Rpb24oKXt0aGlzLnJ1bm5pbmc9ITEsdGhpcy5zdGF0dXM9IlN0b3BwZWQiO2ZvcihsZXQgZT0wO2U8dGhpcy53b3JrZXJzLmxlbmd0aDtlKyspdGhpcy53b3JrZXJzW2VdLnRlcm1pbmF0ZSgpO3RoaXMud29ya2Vycz1bXSx0aGlzLmluaXRXb3JrZXJzKCl9LGNvdW50Q29yZXM6ZnVuY3Rpb24oKXtsZXQgZT0wO3RyeXtlPXBhcnNlSW50KG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5LDEwKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKHQpfWUmJih0aGlzLmNvcmVzPWUsdGhpcy50aHJlYWRzPXRoaXMuY29yZXMpfSxjaGVja0xvY2F0aW9uKCl7dHJ5e3RoaXMuZXJyb3I9d2luZG93LnNlbGYhPT13aW5kb3cudG9wPyJpbnNlY3VyZV9sb2NhdGlvbiI6dGhpcy5lcnJvcn1jYXRjaCh0KXt0aGlzLmVycm9yPSJpbnNlY3VyZV9sb2NhdGlvbiJ9Y29uc3QgZT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7ZSYmLTE9PT1bImxvY2FsaG9zdCIsIjEyNy4wLjAuMSIsInZhbml0eS1ldGgudGsiXS5pbmRleE9mKGUpJiYodGhpcy5lcnJvcj0iaW5zZWN1cmVfbG9jYXRpb24iKX0sYmVuY2htYXJrKGUpe2U9ZXx8MWU0O2NvbnN0IHQ9NTAwLHI9bmV3IGY7bGV0IG49MDtjb25zdCBpPVtdLGE9W10scz0oZSx0KT0+TWF0aC5yb3VuZCgxZTMqZS90KTtyLm9ubWVzc2FnZT0oKT0+e2kucHVzaChwZXJmb3JtYW5jZS5ub3coKSksMSE9PWkubGVuZ3RoJiYoYS5wdXNoKGlbaS5sZW5ndGgtMV0taVtpLmxlbmd0aC0yXSksbis9dCxjb25zb2xlLmluZm8obisiLyIrZSsiLi4uIitzKHQsYVthLmxlbmd0aC0xXSkrIiBhZGRyL3MiKSxuPj1lJiYoY29uc29sZS5pbmZvKCJcblNwZWVkIHJhbmdlOiAiK3ModCxNYXRoLm1heCguLi5hKSkrIiAtICIrcyh0LE1hdGgubWluKC4uLmEpKSsiIGFkZHIvcyIpLGNvbnNvbGUuaW5mbygiQXZlcmFnZTogIitzKG4saVtpLmxlbmd0aC0xXS1pWzBdKSsiIGFkZHIvcyIpLHIudGVybWluYXRlKCkpKX07Y29uc3Qgbz17Y2hlY2tzdW06ITAscHJlZml4OiJmIi5yZXBlYXQoNSksc3VmZml4OiIifTtjb25zb2xlLmluZm8oIlN0YXJ0aW5nIGJlbmNobWFyayB3aXRoIDEgY29yZS4uLiIpLHIucG9zdE1lc3NhZ2Uobyl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5jaGVja0xvY2F0aW9uKCksdGhpcy5jb3VudENvcmVzKCksdGhpcy5pbml0V29ya2VycygpLHdpbmRvd1siYmVuY2htYXJrIl09dGhpcy5iZW5jaG1hcmt9fSx5ZT12ZSx3ZT0ocigiY2YyNSIpLE9iamVjdChsWyJhIl0pKHllLGksYSwhMSxudWxsLG51bGwsbnVsbCkpLF9lPXdlLmV4cG9ydHMsTWU9cigiOTQ4MyIpO09iamVjdChNZVsiYSJdKSgic2VydmljZS13b3JrZXIuanMiLHtyZWFkeSgpe2NvbnNvbGUubG9nKCJBcHAgaXMgYmVpbmcgc2VydmVkIGZyb20gY2FjaGUgYnkgYSBzZXJ2aWNlIHdvcmtlci5cbkZvciBtb3JlIGRldGFpbHMsIHZpc2l0IGh0dHBzOi8vZ29vLmdsL0FGc2txQiIpfSxyZWdpc3RlcmVkKCl7Y29uc29sZS5sb2coIlNlcnZpY2Ugd29ya2VyIGhhcyBiZWVuIHJlZ2lzdGVyZWQuIil9LGNhY2hlZCgpe2NvbnNvbGUubG9nKCJDb250ZW50IGhhcyBiZWVuIGNhY2hlZCBmb3Igb2ZmbGluZSB1c2UuIil9LHVwZGF0ZWZvdW5kKCl7Y29uc29sZS5sb2coIk5ldyBjb250ZW50IGlzIGRvd25sb2FkaW5nLiIpfSx1cGRhdGVkKCl7Y29uc29sZS5sb2coIk5ldyBjb250ZW50IGlzIGF2YWlsYWJsZTsgcGxlYXNlIHJlZnJlc2guIil9LG9mZmxpbmUoKXtjb25zb2xlLmxvZygiTm8gaW50ZXJuZXQgY29ubmVjdGlvbiBmb3VuZC4gQXBwIGlzIHJ1bm5pbmcgaW4gb2ZmbGluZSBtb2RlLiIpfSxlcnJvcihlKXtjb25zb2xlLmVycm9yKCJFcnJvciBkdXJpbmcgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uOiIsZSl9fSksblsiYSJdLmNvbmZpZy5wcm9kdWN0aW9uVGlwPSExLG5ldyBuWyJhIl0oe3JlbmRlcjplPT5lKF9lKX0pLiRtb3VudCgiI2FwcCIpfSw3MjMxOmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7cigiY2M1ZiIpfSwiNzVhZSI6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKCI4ZjllIil9LCI4ZjllIjpmdW5jdGlvbihlLHQscil7fSxhOTk3OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7cigiMWYwMCIpfSxhZjYwOmZ1bmN0aW9uKGUsdCxyKXt9LGI1NTk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKCIyZWJmIil9LGMwZDE6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjsoZnVuY3Rpb24oZSl7cigiYzFlZSIpLHIoIjExZGMiKTt2YXIgbj1yKCJhZWIxIiksaT1yKCIxMWMxIiksYT1yKCIzNDUyIikscz1yLm4oYSk7dFsiYSJdPXtwcm9wczp7cHJpdmF0ZUtleTpTdHJpbmcsYWRkcmVzczpTdHJpbmd9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57c2hvd1Bhc3N3b3JkOiExLHBhc3N3b3JkOiIiLGxvYWRpbmc6ITF9fSx3YXRjaDp7cHJpdmF0ZUtleTpmdW5jdGlvbigpe3RoaXMucGFzc3dvcmQ9IiJ9fSxtZXRob2RzOntzYXZlKCl7dGhpcy5wYXNzd29yZCYmKHRoaXMubG9hZGluZz0hMCxzZXRUaW1lb3V0KCgpPT57Y29uc3QgZT10aGlzLmdlbmVyYXRlV2FsbGV0KHRoaXMucHJpdmF0ZUtleSx0aGlzLnBhc3N3b3JkKSx0PSJVVEMtLSIrKG5ldyBEYXRlKS50b0lTT1N0cmluZygpLnJlcGxhY2UoLzovZywiLSIpKyItLSIrdGhpcy5hZGRyZXNzO24oSlNPTi5zdHJpbmdpZnkoZSksdCwiYXBwbGljYXRpb24vanNvbiIpLHRoaXMubG9hZGluZz0hMX0sMjApKX0sZ2VuZXJhdGVXYWxsZXQodCxyKXtyZXR1cm4gdD1lLmZyb20odCwiaGV4Iikse2FkZHJlc3M6dGhpcy5hZGRyZXNzLGNyeXB0bzp0aGlzLmVuY3J5cHRQcml2YXRlS2V5KHQsciksaWQ6T2JqZWN0KGlbInY0Il0pKCksdmVyc2lvbjozfX0sc2xpY2VXb3JkQXJyYXkoZSx0LHIpe2NvbnN0IG49ZS5jbG9uZSgpO3JldHVybiBuLndvcmRzPW4ud29yZHMuc2xpY2UodCxyKSxuLnNpZ0J5dGVzPTQqKHItdCksbn0sZW5jcnlwdFByaXZhdGVLZXkoZSx0KXtjb25zdCByPXMuYS5saWIuV29yZEFycmF5LnJhbmRvbSgxNiksbj1zLmEubGliLldvcmRBcnJheS5yYW5kb20oMzIpLGk9cy5hLlBCS0RGMih0LG4se2tleVNpemU6OCxoYXNoZXI6cy5hLmFsZ28uU0hBMjU2LGl0ZXJhdGlvbnM6MjYyMTQ0fSksYT1zLmEuQUVTLmVuY3J5cHQocy5hLmVuYy5IZXgucGFyc2UoZS50b1N0cmluZygiaGV4IikpLHRoaXMuc2xpY2VXb3JkQXJyYXkoaSwwLDQpLHtpdjpyLG1vZGU6cy5hLm1vZGUuQ1RSLHBhZGRpbmc6cy5hLnBhZC5Ob1BhZGRpbmd9KSxvPXMuYS5TSEEzKHRoaXMuc2xpY2VXb3JkQXJyYXkoaSw0LDgpLmNvbmNhdChhLmNpcGhlcnRleHQpLHtvdXRwdXRMZW5ndGg6MjU2fSk7cmV0dXJue2tkZjoicGJrZGYyIixrZGZwYXJhbXM6e2M6MjYyMTQ0LGRrbGVuOjMyLHByZjoiaG1hYy1zaGEyNTYiLHNhbHQ6bi50b1N0cmluZygpfSxjaXBoZXI6ImFlcy0xMjgtY3RyIixjaXBoZXJ0ZXh0OmEuY2lwaGVydGV4dC50b1N0cmluZygpLGNpcGhlcnBhcmFtczp7aXY6ci50b1N0cmluZygpfSxtYWM6by50b1N0cmluZygpfX19fX0pLmNhbGwodGhpcyxyKCJiNjM5IikuQnVmZmVyKX0sY2M1ZjpmdW5jdGlvbihlLHQscil7fSxjZjI1OmZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7cigiZmVhNiIpfSxkYTM4OmZ1bmN0aW9uKGUsdCxyKXt9LGRmMDk6ZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyKCJmYWJjIil9LGZhYmM6ZnVuY3Rpb24oZSx0LHIpe30sZmNmNDpmdW5jdGlvbihlLHQscil7fSxmZWE2OmZ1bmN0aW9uKGUsdCxyKXt9fSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC5jZmFiMTVkNC5qcy5tYXA="></script>
<div class="remodal-overlay remodal-is-closed" style="display: none"></div>
<div class="remodal-wrapper remodal-is-closed" style="display: none">
<div data-remodal-id="modal" data-remodal-options="hashTracking: false" class="remodal remodal-is-initialized remodal-is-closed" tabindex="-1">
<button data-remodal-action="close" class="remodal-close"></button>
<h3 class="title">Create encrypted keystore file (UTC / JSON)</h3>
<form>
<div>
<input type="text" autocomplete="username" class="hidden"><input autocomplete="new-password" placeholder="Password" type="password" class="text-input-large"><button type="button" class="show-password"><i class="icon-eye-on"></i></button>
</div>
<div><button type="button" disabled="disabled" class="button-large">Download</button></div>
</form>
</div>
</div>
</body></html>