Version Description
- Fixed incompatibility with custom code for changing flags
- Fixed some pages not being translated due to incorrectly encoded character
- Fixed some images missing when automatic translation is on
Download this release
Release Info
Developer | madalin.ungureanu |
Plugin | TranslatePress – Translate Multilingual sites |
Version | 1.4.9 |
Comparing to | |
See all releases |
Code changes from version 1.4.8 to 1.4.9
- assets/css/trp-editor-style.css +0 -494
- assets/css/trp-jquery-ui.css +0 -1312
- assets/js/trp-editor-script.js +0 -1707
- assets/js/trp-editor.js +4 -4
- assets/js/trp-language-switcher.js +0 -114
- assets/js/trp-translate-dom-changes.js +24 -12
- class-translate-press.php +2 -1
- includes/class-editor-api-regular-strings.php +21 -5
- includes/class-query.php +1 -1
- includes/class-translation-render.php +31 -8
- includes/trp-ajax.php +7 -3
- index.php +1 -1
- partials/translation-manager.php +7 -1
- readme.txt +6 -1
assets/css/trp-editor-style.css
DELETED
@@ -1,494 +0,0 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
body{
|
4 |
-
margin: 0px;
|
5 |
-
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
|
6 |
-
}
|
7 |
-
|
8 |
-
#trp-editor{
|
9 |
-
margin-left: 350px;
|
10 |
-
position: fixed;
|
11 |
-
width: 100%;
|
12 |
-
height: 100%;
|
13 |
-
}
|
14 |
-
|
15 |
-
#trp-controls{
|
16 |
-
width: 348px;
|
17 |
-
position: fixed;
|
18 |
-
top: 0;
|
19 |
-
bottom: 0;
|
20 |
-
left: 0;
|
21 |
-
border-right: 2px solid #ddd;
|
22 |
-
background: #eee;
|
23 |
-
}
|
24 |
-
|
25 |
-
.trp-controls-container{
|
26 |
-
height: 100%;
|
27 |
-
overflow-x: auto;
|
28 |
-
}
|
29 |
-
|
30 |
-
|
31 |
-
#trp-save-container{
|
32 |
-
float: right;
|
33 |
-
}
|
34 |
-
|
35 |
-
.trp-controls-section{
|
36 |
-
background: #fff;
|
37 |
-
color: #555d66;
|
38 |
-
cursor: default;
|
39 |
-
border: none;
|
40 |
-
border-bottom: 1px solid #ddd;
|
41 |
-
border-top: 1px solid #ddd;
|
42 |
-
margin-bottom: 15px;
|
43 |
-
}
|
44 |
-
|
45 |
-
.trp-controls-section-content{
|
46 |
-
padding: 12px;
|
47 |
-
}
|
48 |
-
|
49 |
-
#trp-upsell-section h3,
|
50 |
-
#trp-upsell-section p{
|
51 |
-
text-align: center;
|
52 |
-
}
|
53 |
-
|
54 |
-
#trp-upsell-section .button-primary{
|
55 |
-
min-width:200px;
|
56 |
-
}
|
57 |
-
|
58 |
-
|
59 |
-
#trp-unsaved-changes-warning-message{
|
60 |
-
color: #dc3232;
|
61 |
-
}
|
62 |
-
|
63 |
-
.ui-resizable-handle {
|
64 |
-
position: absolute;
|
65 |
-
font-size: 1px;
|
66 |
-
display: block;
|
67 |
-
z-index: 50;
|
68 |
-
}
|
69 |
-
|
70 |
-
.ui-resizable-handle:active {
|
71 |
-
background-color: #676767;
|
72 |
-
}
|
73 |
-
|
74 |
-
.ui-resizable-disabled .ui-resizable-handle,
|
75 |
-
.ui-resizable-autohide .ui-resizable-handle {
|
76 |
-
display: none;
|
77 |
-
}
|
78 |
-
.ui-resizable-e {
|
79 |
-
cursor: e-resize;
|
80 |
-
width: 7px;
|
81 |
-
right: -2px;
|
82 |
-
top: 0;
|
83 |
-
height: 100%;
|
84 |
-
}
|
85 |
-
|
86 |
-
#trp-controls-close{
|
87 |
-
cursor: pointer;
|
88 |
-
font: 400 26px/40px dashicons;
|
89 |
-
font-weight: bold;
|
90 |
-
display: inline-block;
|
91 |
-
width: 45px;
|
92 |
-
height: 41px;
|
93 |
-
background: #eee;
|
94 |
-
border: none;
|
95 |
-
border-top: 4px solid #eee;
|
96 |
-
border-right: 1px solid #ddd;
|
97 |
-
color: #444;
|
98 |
-
text-align: center;
|
99 |
-
-webkit-transition: color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;
|
100 |
-
transition: color .15s ease-in-out,border-color .15s ease-in-out,background .15s ease-in-out;
|
101 |
-
-webkit-box-sizing: content-box;
|
102 |
-
-moz-box-sizing: content-box;
|
103 |
-
box-sizing: content-box;
|
104 |
-
text-decoration: none;
|
105 |
-
}
|
106 |
-
|
107 |
-
#trp-controls-close:after{
|
108 |
-
content: "\f335";
|
109 |
-
}
|
110 |
-
|
111 |
-
#trp-controls-close:focus,
|
112 |
-
#trp-controls-close:hover{
|
113 |
-
background: #fff;
|
114 |
-
color: #0073aa;
|
115 |
-
border-top-color: #0073aa;
|
116 |
-
outline: none;
|
117 |
-
-webkit-box-shadow: none;
|
118 |
-
box-shadow: none;
|
119 |
-
}
|
120 |
-
|
121 |
-
#trp-preview{
|
122 |
-
position: absolute;
|
123 |
-
left: 0;
|
124 |
-
right: 350px;
|
125 |
-
height: 100%;
|
126 |
-
}
|
127 |
-
|
128 |
-
html[dir="rtl"] #trp-preview{
|
129 |
-
left: 350px !important;
|
130 |
-
right: 0px !important;
|
131 |
-
}
|
132 |
-
|
133 |
-
iframe#trp-preview-iframe {
|
134 |
-
position: absolute;
|
135 |
-
height: 100%;
|
136 |
-
width: 100%;
|
137 |
-
border-width: 0px;
|
138 |
-
}
|
139 |
-
|
140 |
-
#trp-language-switch-form{
|
141 |
-
display: inline;
|
142 |
-
}
|
143 |
-
|
144 |
-
#trp-language-select{
|
145 |
-
width: 100%;
|
146 |
-
margin-bottom: 30px;
|
147 |
-
font-size: 14px;
|
148 |
-
padding: 3px;
|
149 |
-
}
|
150 |
-
|
151 |
-
.string-selector-description{
|
152 |
-
font-size: 12px;
|
153 |
-
}
|
154 |
-
|
155 |
-
|
156 |
-
/*
|
157 |
-
View as Dropdown
|
158 |
-
*/
|
159 |
-
#trp-view-as{
|
160 |
-
clear:both;
|
161 |
-
padding-top:15px;
|
162 |
-
}
|
163 |
-
|
164 |
-
#trp-view-as-description{
|
165 |
-
padding-bottom: 10px;
|
166 |
-
color: black;
|
167 |
-
}
|
168 |
-
|
169 |
-
#trp-view-as-select{
|
170 |
-
width: 100%;
|
171 |
-
margin-bottom: 30px;
|
172 |
-
font-size: 14px;
|
173 |
-
padding: 3px;
|
174 |
-
}
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
/*
|
180 |
-
String list
|
181 |
-
*/
|
182 |
-
|
183 |
-
#trp-string-categories{
|
184 |
-
width: 100% /*!important*/;
|
185 |
-
margin-bottom: 10px;
|
186 |
-
font-size: 14px;
|
187 |
-
padding: 3px;
|
188 |
-
}
|
189 |
-
|
190 |
-
span.select2-container{
|
191 |
-
margin-bottom: 10px;
|
192 |
-
/*width: 100% !important;*/
|
193 |
-
}
|
194 |
-
|
195 |
-
#trp-lists{
|
196 |
-
margin-botton: 10px;
|
197 |
-
}
|
198 |
-
|
199 |
-
|
200 |
-
/*
|
201 |
-
Translation Editors
|
202 |
-
*/
|
203 |
-
|
204 |
-
#trp-previous{
|
205 |
-
float: left;
|
206 |
-
}
|
207 |
-
#trp-next{
|
208 |
-
float: right;
|
209 |
-
}
|
210 |
-
.trp-toggle-languages {
|
211 |
-
margin-top: 10px;
|
212 |
-
margin-bottom: 10px;
|
213 |
-
}
|
214 |
-
|
215 |
-
.trp-toggle-languages span,
|
216 |
-
.trp-next-previous-buttons {
|
217 |
-
cursor: pointer;
|
218 |
-
}
|
219 |
-
|
220 |
-
.trp-language-name{
|
221 |
-
padding-bottom: 10px;
|
222 |
-
color: black;
|
223 |
-
}
|
224 |
-
|
225 |
-
.trp-language-text{
|
226 |
-
padding-right: 9px;
|
227 |
-
padding-bottom: 15px;
|
228 |
-
}
|
229 |
-
|
230 |
-
.trp-language-text textarea{
|
231 |
-
height: 80px;
|
232 |
-
font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
|
233 |
-
font-size: 14px;
|
234 |
-
max-width: 100%;
|
235 |
-
min-width: 100%;
|
236 |
-
width: 100%;
|
237 |
-
padding: 3px;
|
238 |
-
border: 1px solid #aaa;
|
239 |
-
border-radius:3px;
|
240 |
-
}
|
241 |
-
|
242 |
-
.trp-language-text textarea[readonly="readonly"]{
|
243 |
-
background: #EBEBE4;
|
244 |
-
border: 1px solid #aaa;
|
245 |
-
outline-width: 0;
|
246 |
-
}
|
247 |
-
|
248 |
-
.trp-discard-changes{
|
249 |
-
color: darkgrey;
|
250 |
-
font-size: 11px;
|
251 |
-
float: right;
|
252 |
-
user-select: none;
|
253 |
-
}
|
254 |
-
|
255 |
-
.trp-unsaved-changes .trp-discard-changes{
|
256 |
-
color: #a00;
|
257 |
-
cursor: pointer;
|
258 |
-
text-decoration: underline;
|
259 |
-
}
|
260 |
-
.trp-unsaved-changes .trp-discard-changes:hover{
|
261 |
-
color: #dc3232;
|
262 |
-
cursor: pointer;
|
263 |
-
}
|
264 |
-
|
265 |
-
#trp-next-previous {
|
266 |
-
margin: 5px 0 10px 0;
|
267 |
-
}
|
268 |
-
|
269 |
-
.trp-toggle-languages span,
|
270 |
-
.trp-next-previous-buttons span {
|
271 |
-
font-size: initial;
|
272 |
-
}
|
273 |
-
|
274 |
-
.trp-toggle-languages span,
|
275 |
-
.trp-next-previous-buttons {
|
276 |
-
display: inline-block;
|
277 |
-
text-decoration: none;
|
278 |
-
font-size: 13px;
|
279 |
-
line-height: 26px;
|
280 |
-
height: 28px;
|
281 |
-
margin: 0;
|
282 |
-
padding: 0 10px 1px;
|
283 |
-
cursor: pointer;
|
284 |
-
border-width: 1px;
|
285 |
-
border-style: solid;
|
286 |
-
-webkit-appearance: none;
|
287 |
-
-webkit-border-radius: 3px;
|
288 |
-
border-radius: 3px;
|
289 |
-
white-space: nowrap;
|
290 |
-
-webkit-box-sizing: border-box;
|
291 |
-
-moz-box-sizing: border-box;
|
292 |
-
box-sizing: border-box;
|
293 |
-
min-width: 85px;
|
294 |
-
}
|
295 |
-
|
296 |
-
.trp-toggle-languages span,
|
297 |
-
.trp-next-previous-buttons {
|
298 |
-
color: #555;
|
299 |
-
border-color: #cccccc;
|
300 |
-
background: #f7f7f7;
|
301 |
-
-webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08);
|
302 |
-
box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08);
|
303 |
-
vertical-align: top;
|
304 |
-
}
|
305 |
-
|
306 |
-
.trp-toggle-languages span,
|
307 |
-
.trp-next-previous-buttons {
|
308 |
-
vertical-align: baseline;
|
309 |
-
}
|
310 |
-
|
311 |
-
.trp-toggle-languages span:hover,
|
312 |
-
.trp-next-previous-buttons:hover,
|
313 |
-
.trp-next-previous-buttons:focus {
|
314 |
-
background: #fafafa;
|
315 |
-
border-color: #999;
|
316 |
-
color: #222;
|
317 |
-
}
|
318 |
-
|
319 |
-
.trp-toggle-languages.trp-toggle-languages-active span:hover {
|
320 |
-
background: #eee;
|
321 |
-
}
|
322 |
-
|
323 |
-
.trp-toggle-languages span,
|
324 |
-
.trp-next-previous-buttons:focus {
|
325 |
-
-webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2);
|
326 |
-
box-shadow: 1px 1px 1px rgba(0,0,0,.2);
|
327 |
-
}
|
328 |
-
|
329 |
-
.trp-toggle-languages.trp-toggle-languages-active span,
|
330 |
-
.trp-next-previous-buttons:active {
|
331 |
-
background: #eee;
|
332 |
-
border-color: #999;
|
333 |
-
color: #333;
|
334 |
-
-webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
|
335 |
-
box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
|
336 |
-
}
|
337 |
-
|
338 |
-
.trp-toggle-languages {
|
339 |
-
-webkit-touch-callout: none;
|
340 |
-
-webkit-user-select: none;
|
341 |
-
-khtml-user-select: none;
|
342 |
-
-moz-user-select: none;
|
343 |
-
-ms-user-select: none;
|
344 |
-
user-select: none;
|
345 |
-
}
|
346 |
-
|
347 |
-
#trp-hide-all-languages,
|
348 |
-
.trp-other-language{
|
349 |
-
display: none;
|
350 |
-
}
|
351 |
-
|
352 |
-
#trp-save, #trp-save-gettext{
|
353 |
-
margin-right: 10px;
|
354 |
-
margin-top: 9px;
|
355 |
-
margin-left: 10px;
|
356 |
-
background: #0085ba;
|
357 |
-
border-color: #0073aa #006799 #006799;
|
358 |
-
-webkit-box-shadow: 0 1px 0 #006799;
|
359 |
-
box-shadow: 0 1px 0 #006799;
|
360 |
-
color: #fff;
|
361 |
-
text-decoration: none;
|
362 |
-
text-shadow: 0 -1px 1px #006799, 1px 0 1px #006799, 0 1px 1px #006799, -1px 0 1px #006799;
|
363 |
-
display: inline-block;
|
364 |
-
font-size: 13px;
|
365 |
-
height: 28px;
|
366 |
-
padding: 0 10px 1px;
|
367 |
-
cursor: pointer;
|
368 |
-
border-width: 1px;
|
369 |
-
border-style: solid;
|
370 |
-
-webkit-appearance: none;
|
371 |
-
-webkit-border-radius: 3px;
|
372 |
-
border-radius: 3px;
|
373 |
-
white-space: nowrap;
|
374 |
-
-webkit-box-sizing: border-box;
|
375 |
-
-moz-box-sizing: border-box;
|
376 |
-
box-sizing: border-box;
|
377 |
-
font-family: inherit;
|
378 |
-
}
|
379 |
-
|
380 |
-
#trp-save:hover, #trp-save-gettext:hover {
|
381 |
-
background: #008ec2;
|
382 |
-
border-color: #006799;
|
383 |
-
color: #fff;
|
384 |
-
}
|
385 |
-
|
386 |
-
#trp-save:active, #trp-save-gettext:active {
|
387 |
-
background: #0073aa;
|
388 |
-
border-color: #006799;
|
389 |
-
-webkit-box-shadow: inset 0 2px 0 #006799;
|
390 |
-
box-shadow: inset 0 2px 0 #006799;
|
391 |
-
}
|
392 |
-
|
393 |
-
|
394 |
-
#trp-translation-saved {
|
395 |
-
padding-left: 20px;
|
396 |
-
color: #008000;
|
397 |
-
font-size: 14px;
|
398 |
-
display:none;
|
399 |
-
}
|
400 |
-
|
401 |
-
/*
|
402 |
-
* Loading animation
|
403 |
-
*/
|
404 |
-
.trp-ajax-loader {
|
405 |
-
margin-bottom: -6px;
|
406 |
-
margin-left:20px;
|
407 |
-
display: inline-block;
|
408 |
-
z-index: 50;
|
409 |
-
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1, StartColorStr='#E57EB149', EndColorStr='#E57EB149')";
|
410 |
-
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, StartColorStr='#E57EB149', EndColorStr='#E57EB149');
|
411 |
-
zoom: 1!important;
|
412 |
-
}
|
413 |
-
|
414 |
-
.trp-ajax-loader .trp-spinner {
|
415 |
-
width: 15px;
|
416 |
-
height: 15px;
|
417 |
-
border: 3px solid #a1b9e6;
|
418 |
-
border-radius: 50%;
|
419 |
-
border-left-color: transparent;
|
420 |
-
border-right-color: transparent;
|
421 |
-
-webkit-animation: spin 1s linear infinite;
|
422 |
-
animation: spin 1s linear infinite;
|
423 |
-
|
424 |
-
}
|
425 |
-
|
426 |
-
@-webkit-keyframes
|
427 |
-
spin {
|
428 |
-
100% {
|
429 |
-
-webkit-transform: rotate(360deg);
|
430 |
-
transform: rotate(360deg)
|
431 |
-
}
|
432 |
-
}
|
433 |
-
|
434 |
-
@keyframes
|
435 |
-
spin {
|
436 |
-
100% {
|
437 |
-
-moz-transform: rotate(360deg);
|
438 |
-
-ms-transform: rotate(360deg);
|
439 |
-
-o-transform: rotate(360deg);
|
440 |
-
transform: rotate(360deg)
|
441 |
-
}
|
442 |
-
}
|
443 |
-
|
444 |
-
#trp-preview.trp-still-loading-strings:before{
|
445 |
-
position: absolute; /* Sit on top of the page content */
|
446 |
-
width: 100%; /* Full width (cover the whole page) */
|
447 |
-
height: 30px; /* Full height (cover the whole page) */
|
448 |
-
line-height:30px;
|
449 |
-
top: 0;
|
450 |
-
left: 0;
|
451 |
-
right: 0;
|
452 |
-
background-color: rgba(40,177,255,0.8); /* Black background with opacity */
|
453 |
-
z-index: 200; /* Specify a stack order in case you're using a different order for other elements */
|
454 |
-
cursor: pointer; /* Add a pointer on hover */
|
455 |
-
content:'The strings are not yet ready for translation. Try again in a moment...';
|
456 |
-
color:#fff;
|
457 |
-
text-align:center;
|
458 |
-
}
|
459 |
-
/*
|
460 |
-
* Select 2 Overlay in front-end
|
461 |
-
*/
|
462 |
-
|
463 |
-
.select2-selection.select2-selection--single{
|
464 |
-
outline: 0;
|
465 |
-
}
|
466 |
-
|
467 |
-
#trp_select2_overlay{
|
468 |
-
display: none;
|
469 |
-
position: absolute;
|
470 |
-
top: 0;
|
471 |
-
left: 0;
|
472 |
-
width: 100%;
|
473 |
-
height: 100%;
|
474 |
-
background-color: #000;
|
475 |
-
filter:alpha(opacity=50);
|
476 |
-
-moz-opacity:0.5;
|
477 |
-
-khtml-opacity: 0.5;
|
478 |
-
opacity: 0.5;
|
479 |
-
z-index: 1000;
|
480 |
-
}
|
481 |
-
|
482 |
-
.select2-container{
|
483 |
-
z-index: 1051;
|
484 |
-
}
|
485 |
-
|
486 |
-
#trp-view-as .select2-container{
|
487 |
-
z-index: 999;
|
488 |
-
}
|
489 |
-
|
490 |
-
.select2-container--default .select2-results > .select2-results__options,
|
491 |
-
.select2-container--default .select2-results > .select2-results__options,
|
492 |
-
.select2-results{
|
493 |
-
max-height: 400px !important;
|
494 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/css/trp-jquery-ui.css
DELETED
@@ -1,1312 +0,0 @@
|
|
1 |
-
/*! jQuery UI - v1.12.1 - 2016-09-14
|
2 |
-
* http://jqueryui.com
|
3 |
-
* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
|
4 |
-
* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
|
5 |
-
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
-
|
7 |
-
/* Layout helpers
|
8 |
-
----------------------------------*/
|
9 |
-
.ui-helper-hidden {
|
10 |
-
display: none;
|
11 |
-
}
|
12 |
-
.ui-helper-hidden-accessible {
|
13 |
-
border: 0;
|
14 |
-
clip: rect(0 0 0 0);
|
15 |
-
height: 1px;
|
16 |
-
margin: -1px;
|
17 |
-
overflow: hidden;
|
18 |
-
padding: 0;
|
19 |
-
position: absolute;
|
20 |
-
width: 1px;
|
21 |
-
}
|
22 |
-
.ui-helper-reset {
|
23 |
-
margin: 0;
|
24 |
-
padding: 0;
|
25 |
-
border: 0;
|
26 |
-
outline: 0;
|
27 |
-
line-height: 1.3;
|
28 |
-
text-decoration: none;
|
29 |
-
font-size: 100%;
|
30 |
-
list-style: none;
|
31 |
-
}
|
32 |
-
.ui-helper-clearfix:before,
|
33 |
-
.ui-helper-clearfix:after {
|
34 |
-
content: "";
|
35 |
-
display: table;
|
36 |
-
border-collapse: collapse;
|
37 |
-
}
|
38 |
-
.ui-helper-clearfix:after {
|
39 |
-
clear: both;
|
40 |
-
}
|
41 |
-
.ui-helper-zfix {
|
42 |
-
width: 100%;
|
43 |
-
height: 100%;
|
44 |
-
top: 0;
|
45 |
-
left: 0;
|
46 |
-
position: absolute;
|
47 |
-
opacity: 0;
|
48 |
-
filter:Alpha(Opacity=0); /* support: IE8 */
|
49 |
-
}
|
50 |
-
|
51 |
-
.ui-front {
|
52 |
-
z-index: 100;
|
53 |
-
}
|
54 |
-
|
55 |
-
|
56 |
-
/* Interaction Cues
|
57 |
-
----------------------------------*/
|
58 |
-
.ui-state-disabled {
|
59 |
-
cursor: default !important;
|
60 |
-
pointer-events: none;
|
61 |
-
}
|
62 |
-
|
63 |
-
|
64 |
-
/* Icons
|
65 |
-
----------------------------------*/
|
66 |
-
.ui-icon {
|
67 |
-
display: inline-block;
|
68 |
-
vertical-align: middle;
|
69 |
-
margin-top: -.25em;
|
70 |
-
position: relative;
|
71 |
-
text-indent: -99999px;
|
72 |
-
overflow: hidden;
|
73 |
-
background-repeat: no-repeat;
|
74 |
-
}
|
75 |
-
|
76 |
-
.ui-widget-icon-block {
|
77 |
-
left: 50%;
|
78 |
-
margin-left: -8px;
|
79 |
-
display: block;
|
80 |
-
}
|
81 |
-
|
82 |
-
/* Misc visuals
|
83 |
-
----------------------------------*/
|
84 |
-
|
85 |
-
/* Overlays */
|
86 |
-
.ui-widget-overlay {
|
87 |
-
position: fixed;
|
88 |
-
top: 0;
|
89 |
-
left: 0;
|
90 |
-
width: 100%;
|
91 |
-
height: 100%;
|
92 |
-
}
|
93 |
-
.ui-accordion .ui-accordion-header {
|
94 |
-
display: block;
|
95 |
-
cursor: pointer;
|
96 |
-
position: relative;
|
97 |
-
margin: 2px 0 0 0;
|
98 |
-
padding: .5em .5em .5em .7em;
|
99 |
-
font-size: 100%;
|
100 |
-
}
|
101 |
-
.ui-accordion .ui-accordion-content {
|
102 |
-
padding: 1em 2.2em;
|
103 |
-
border-top: 0;
|
104 |
-
overflow: auto;
|
105 |
-
}
|
106 |
-
.ui-autocomplete {
|
107 |
-
position: absolute;
|
108 |
-
top: 0;
|
109 |
-
left: 0;
|
110 |
-
cursor: default;
|
111 |
-
}
|
112 |
-
.ui-menu {
|
113 |
-
list-style: none;
|
114 |
-
padding: 0;
|
115 |
-
margin: 0;
|
116 |
-
display: block;
|
117 |
-
outline: 0;
|
118 |
-
}
|
119 |
-
.ui-menu .ui-menu {
|
120 |
-
position: absolute;
|
121 |
-
}
|
122 |
-
.ui-menu .ui-menu-item {
|
123 |
-
margin: 0;
|
124 |
-
cursor: pointer;
|
125 |
-
/* support: IE10, see #8844 */
|
126 |
-
list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
|
127 |
-
}
|
128 |
-
.ui-menu .ui-menu-item-wrapper {
|
129 |
-
position: relative;
|
130 |
-
padding: 3px 1em 3px .4em;
|
131 |
-
}
|
132 |
-
.ui-menu .ui-menu-divider {
|
133 |
-
margin: 5px 0;
|
134 |
-
height: 0;
|
135 |
-
font-size: 0;
|
136 |
-
line-height: 0;
|
137 |
-
border-width: 1px 0 0 0;
|
138 |
-
}
|
139 |
-
.ui-menu .ui-state-focus,
|
140 |
-
.ui-menu .ui-state-active {
|
141 |
-
margin: -1px;
|
142 |
-
}
|
143 |
-
|
144 |
-
/* icon support */
|
145 |
-
.ui-menu-icons {
|
146 |
-
position: relative;
|
147 |
-
}
|
148 |
-
.ui-menu-icons .ui-menu-item-wrapper {
|
149 |
-
padding-left: 2em;
|
150 |
-
}
|
151 |
-
|
152 |
-
/* left-aligned */
|
153 |
-
.ui-menu .ui-icon {
|
154 |
-
position: absolute;
|
155 |
-
top: 0;
|
156 |
-
bottom: 0;
|
157 |
-
left: .2em;
|
158 |
-
margin: auto 0;
|
159 |
-
}
|
160 |
-
|
161 |
-
/* right-aligned */
|
162 |
-
.ui-menu .ui-menu-icon {
|
163 |
-
left: auto;
|
164 |
-
right: 0;
|
165 |
-
}
|
166 |
-
.ui-button {
|
167 |
-
padding: .4em 1em;
|
168 |
-
display: inline-block;
|
169 |
-
position: relative;
|
170 |
-
line-height: normal;
|
171 |
-
margin-right: .1em;
|
172 |
-
cursor: pointer;
|
173 |
-
vertical-align: middle;
|
174 |
-
text-align: center;
|
175 |
-
-webkit-user-select: none;
|
176 |
-
-moz-user-select: none;
|
177 |
-
-ms-user-select: none;
|
178 |
-
user-select: none;
|
179 |
-
|
180 |
-
/* Support: IE <= 11 */
|
181 |
-
overflow: visible;
|
182 |
-
}
|
183 |
-
|
184 |
-
.ui-button,
|
185 |
-
.ui-button:link,
|
186 |
-
.ui-button:visited,
|
187 |
-
.ui-button:hover,
|
188 |
-
.ui-button:active {
|
189 |
-
text-decoration: none;
|
190 |
-
}
|
191 |
-
|
192 |
-
/* to make room for the icon, a width needs to be set here */
|
193 |
-
.ui-button-icon-only {
|
194 |
-
width: 2em;
|
195 |
-
box-sizing: border-box;
|
196 |
-
text-indent: -9999px;
|
197 |
-
white-space: nowrap;
|
198 |
-
}
|
199 |
-
|
200 |
-
/* no icon support for input elements */
|
201 |
-
input.ui-button.ui-button-icon-only {
|
202 |
-
text-indent: 0;
|
203 |
-
}
|
204 |
-
|
205 |
-
/* button icon element(s) */
|
206 |
-
.ui-button-icon-only .ui-icon {
|
207 |
-
position: absolute;
|
208 |
-
top: 50%;
|
209 |
-
left: 50%;
|
210 |
-
margin-top: -8px;
|
211 |
-
margin-left: -8px;
|
212 |
-
}
|
213 |
-
|
214 |
-
.ui-button.ui-icon-notext .ui-icon {
|
215 |
-
padding: 0;
|
216 |
-
width: 2.1em;
|
217 |
-
height: 2.1em;
|
218 |
-
text-indent: -9999px;
|
219 |
-
white-space: nowrap;
|
220 |
-
|
221 |
-
}
|
222 |
-
|
223 |
-
input.ui-button.ui-icon-notext .ui-icon {
|
224 |
-
width: auto;
|
225 |
-
height: auto;
|
226 |
-
text-indent: 0;
|
227 |
-
white-space: normal;
|
228 |
-
padding: .4em 1em;
|
229 |
-
}
|
230 |
-
|
231 |
-
/* workarounds */
|
232 |
-
/* Support: Firefox 5 - 40 */
|
233 |
-
input.ui-button::-moz-focus-inner,
|
234 |
-
button.ui-button::-moz-focus-inner {
|
235 |
-
border: 0;
|
236 |
-
padding: 0;
|
237 |
-
}
|
238 |
-
.ui-controlgroup {
|
239 |
-
vertical-align: middle;
|
240 |
-
display: inline-block;
|
241 |
-
}
|
242 |
-
.ui-controlgroup > .ui-controlgroup-item {
|
243 |
-
float: left;
|
244 |
-
margin-left: 0;
|
245 |
-
margin-right: 0;
|
246 |
-
}
|
247 |
-
.ui-controlgroup > .ui-controlgroup-item:focus,
|
248 |
-
.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
|
249 |
-
z-index: 9999;
|
250 |
-
}
|
251 |
-
.ui-controlgroup-vertical > .ui-controlgroup-item {
|
252 |
-
display: block;
|
253 |
-
float: none;
|
254 |
-
width: 100%;
|
255 |
-
margin-top: 0;
|
256 |
-
margin-bottom: 0;
|
257 |
-
text-align: left;
|
258 |
-
}
|
259 |
-
.ui-controlgroup-vertical .ui-controlgroup-item {
|
260 |
-
box-sizing: border-box;
|
261 |
-
}
|
262 |
-
.ui-controlgroup .ui-controlgroup-label {
|
263 |
-
padding: .4em 1em;
|
264 |
-
}
|
265 |
-
.ui-controlgroup .ui-controlgroup-label span {
|
266 |
-
font-size: 80%;
|
267 |
-
}
|
268 |
-
.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
|
269 |
-
border-left: none;
|
270 |
-
}
|
271 |
-
.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
|
272 |
-
border-top: none;
|
273 |
-
}
|
274 |
-
.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
|
275 |
-
border-right: none;
|
276 |
-
}
|
277 |
-
.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
|
278 |
-
border-bottom: none;
|
279 |
-
}
|
280 |
-
|
281 |
-
/* Spinner specific style fixes */
|
282 |
-
.ui-controlgroup-vertical .ui-spinner-input {
|
283 |
-
|
284 |
-
/* Support: IE8 only, Android < 4.4 only */
|
285 |
-
width: 75%;
|
286 |
-
width: calc( 100% - 2.4em );
|
287 |
-
}
|
288 |
-
.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
|
289 |
-
border-top-style: solid;
|
290 |
-
}
|
291 |
-
|
292 |
-
.ui-checkboxradio-label .ui-icon-background {
|
293 |
-
box-shadow: inset 1px 1px 1px #ccc;
|
294 |
-
border-radius: .12em;
|
295 |
-
border: none;
|
296 |
-
}
|
297 |
-
.ui-checkboxradio-radio-label .ui-icon-background {
|
298 |
-
width: 16px;
|
299 |
-
height: 16px;
|
300 |
-
border-radius: 1em;
|
301 |
-
overflow: visible;
|
302 |
-
border: none;
|
303 |
-
}
|
304 |
-
.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
|
305 |
-
.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
|
306 |
-
background-image: none;
|
307 |
-
width: 8px;
|
308 |
-
height: 8px;
|
309 |
-
border-width: 4px;
|
310 |
-
border-style: solid;
|
311 |
-
}
|
312 |
-
.ui-checkboxradio-disabled {
|
313 |
-
pointer-events: none;
|
314 |
-
}
|
315 |
-
.ui-datepicker {
|
316 |
-
width: 17em;
|
317 |
-
padding: .2em .2em 0;
|
318 |
-
display: none;
|
319 |
-
}
|
320 |
-
.ui-datepicker .ui-datepicker-header {
|
321 |
-
position: relative;
|
322 |
-
padding: .2em 0;
|
323 |
-
}
|
324 |
-
.ui-datepicker .ui-datepicker-prev,
|
325 |
-
.ui-datepicker .ui-datepicker-next {
|
326 |
-
position: absolute;
|
327 |
-
top: 2px;
|
328 |
-
width: 1.8em;
|
329 |
-
height: 1.8em;
|
330 |
-
}
|
331 |
-
.ui-datepicker .ui-datepicker-prev-hover,
|
332 |
-
.ui-datepicker .ui-datepicker-next-hover {
|
333 |
-
top: 1px;
|
334 |
-
}
|
335 |
-
.ui-datepicker .ui-datepicker-prev {
|
336 |
-
left: 2px;
|
337 |
-
}
|
338 |
-
.ui-datepicker .ui-datepicker-next {
|
339 |
-
right: 2px;
|
340 |
-
}
|
341 |
-
.ui-datepicker .ui-datepicker-prev-hover {
|
342 |
-
left: 1px;
|
343 |
-
}
|
344 |
-
.ui-datepicker .ui-datepicker-next-hover {
|
345 |
-
right: 1px;
|
346 |
-
}
|
347 |
-
.ui-datepicker .ui-datepicker-prev span,
|
348 |
-
.ui-datepicker .ui-datepicker-next span {
|
349 |
-
display: block;
|
350 |
-
position: absolute;
|
351 |
-
left: 50%;
|
352 |
-
margin-left: -8px;
|
353 |
-
top: 50%;
|
354 |
-
margin-top: -8px;
|
355 |
-
}
|
356 |
-
.ui-datepicker .ui-datepicker-title {
|
357 |
-
margin: 0 2.3em;
|
358 |
-
line-height: 1.8em;
|
359 |
-
text-align: center;
|
360 |
-
}
|
361 |
-
.ui-datepicker .ui-datepicker-title select {
|
362 |
-
font-size: 1em;
|
363 |
-
margin: 1px 0;
|
364 |
-
}
|
365 |
-
.ui-datepicker select.ui-datepicker-month,
|
366 |
-
.ui-datepicker select.ui-datepicker-year {
|
367 |
-
width: 45%;
|
368 |
-
}
|
369 |
-
.ui-datepicker table {
|
370 |
-
width: 100%;
|
371 |
-
font-size: .9em;
|
372 |
-
border-collapse: collapse;
|
373 |
-
margin: 0 0 .4em;
|
374 |
-
}
|
375 |
-
.ui-datepicker th {
|
376 |
-
padding: .7em .3em;
|
377 |
-
text-align: center;
|
378 |
-
font-weight: bold;
|
379 |
-
border: 0;
|
380 |
-
}
|
381 |
-
.ui-datepicker td {
|
382 |
-
border: 0;
|
383 |
-
padding: 1px;
|
384 |
-
}
|
385 |
-
.ui-datepicker td span,
|
386 |
-
.ui-datepicker td a {
|
387 |
-
display: block;
|
388 |
-
padding: .2em;
|
389 |
-
text-align: right;
|
390 |
-
text-decoration: none;
|
391 |
-
}
|
392 |
-
.ui-datepicker .ui-datepicker-buttonpane {
|
393 |
-
background-image: none;
|
394 |
-
margin: .7em 0 0 0;
|
395 |
-
padding: 0 .2em;
|
396 |
-
border-left: 0;
|
397 |
-
border-right: 0;
|
398 |
-
border-bottom: 0;
|
399 |
-
}
|
400 |
-
.ui-datepicker .ui-datepicker-buttonpane button {
|
401 |
-
float: right;
|
402 |
-
margin: .5em .2em .4em;
|
403 |
-
cursor: pointer;
|
404 |
-
padding: .2em .6em .3em .6em;
|
405 |
-
width: auto;
|
406 |
-
overflow: visible;
|
407 |
-
}
|
408 |
-
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
|
409 |
-
float: left;
|
410 |
-
}
|
411 |
-
|
412 |
-
/* with multiple calendars */
|
413 |
-
.ui-datepicker.ui-datepicker-multi {
|
414 |
-
width: auto;
|
415 |
-
}
|
416 |
-
.ui-datepicker-multi .ui-datepicker-group {
|
417 |
-
float: left;
|
418 |
-
}
|
419 |
-
.ui-datepicker-multi .ui-datepicker-group table {
|
420 |
-
width: 95%;
|
421 |
-
margin: 0 auto .4em;
|
422 |
-
}
|
423 |
-
.ui-datepicker-multi-2 .ui-datepicker-group {
|
424 |
-
width: 50%;
|
425 |
-
}
|
426 |
-
.ui-datepicker-multi-3 .ui-datepicker-group {
|
427 |
-
width: 33.3%;
|
428 |
-
}
|
429 |
-
.ui-datepicker-multi-4 .ui-datepicker-group {
|
430 |
-
width: 25%;
|
431 |
-
}
|
432 |
-
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
|
433 |
-
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
|
434 |
-
border-left-width: 0;
|
435 |
-
}
|
436 |
-
.ui-datepicker-multi .ui-datepicker-buttonpane {
|
437 |
-
clear: left;
|
438 |
-
}
|
439 |
-
.ui-datepicker-row-break {
|
440 |
-
clear: both;
|
441 |
-
width: 100%;
|
442 |
-
font-size: 0;
|
443 |
-
}
|
444 |
-
|
445 |
-
/* RTL support */
|
446 |
-
.ui-datepicker-rtl {
|
447 |
-
direction: rtl;
|
448 |
-
}
|
449 |
-
.ui-datepicker-rtl .ui-datepicker-prev {
|
450 |
-
right: 2px;
|
451 |
-
left: auto;
|
452 |
-
}
|
453 |
-
.ui-datepicker-rtl .ui-datepicker-next {
|
454 |
-
left: 2px;
|
455 |
-
right: auto;
|
456 |
-
}
|
457 |
-
.ui-datepicker-rtl .ui-datepicker-prev:hover {
|
458 |
-
right: 1px;
|
459 |
-
left: auto;
|
460 |
-
}
|
461 |
-
.ui-datepicker-rtl .ui-datepicker-next:hover {
|
462 |
-
left: 1px;
|
463 |
-
right: auto;
|
464 |
-
}
|
465 |
-
.ui-datepicker-rtl .ui-datepicker-buttonpane {
|
466 |
-
clear: right;
|
467 |
-
}
|
468 |
-
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
|
469 |
-
float: left;
|
470 |
-
}
|
471 |
-
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
|
472 |
-
.ui-datepicker-rtl .ui-datepicker-group {
|
473 |
-
float: right;
|
474 |
-
}
|
475 |
-
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
|
476 |
-
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
|
477 |
-
border-right-width: 0;
|
478 |
-
border-left-width: 1px;
|
479 |
-
}
|
480 |
-
|
481 |
-
/* Icons */
|
482 |
-
.ui-datepicker .ui-icon {
|
483 |
-
display: block;
|
484 |
-
text-indent: -99999px;
|
485 |
-
overflow: hidden;
|
486 |
-
background-repeat: no-repeat;
|
487 |
-
left: .5em;
|
488 |
-
top: .3em;
|
489 |
-
}
|
490 |
-
.ui-dialog {
|
491 |
-
position: absolute;
|
492 |
-
top: 0;
|
493 |
-
left: 0;
|
494 |
-
padding: .2em;
|
495 |
-
outline: 0;
|
496 |
-
}
|
497 |
-
.ui-dialog .ui-dialog-titlebar {
|
498 |
-
padding: .4em 1em;
|
499 |
-
position: relative;
|
500 |
-
}
|
501 |
-
.ui-dialog .ui-dialog-title {
|
502 |
-
float: left;
|
503 |
-
margin: .1em 0;
|
504 |
-
white-space: nowrap;
|
505 |
-
width: 90%;
|
506 |
-
overflow: hidden;
|
507 |
-
text-overflow: ellipsis;
|
508 |
-
}
|
509 |
-
.ui-dialog .ui-dialog-titlebar-close {
|
510 |
-
position: absolute;
|
511 |
-
right: .3em;
|
512 |
-
top: 50%;
|
513 |
-
width: 20px;
|
514 |
-
margin: -10px 0 0 0;
|
515 |
-
padding: 1px;
|
516 |
-
height: 20px;
|
517 |
-
}
|
518 |
-
.ui-dialog .ui-dialog-content {
|
519 |
-
position: relative;
|
520 |
-
border: 0;
|
521 |
-
padding: .5em 1em;
|
522 |
-
background: none;
|
523 |
-
overflow: auto;
|
524 |
-
}
|
525 |
-
.ui-dialog .ui-dialog-buttonpane {
|
526 |
-
text-align: left;
|
527 |
-
border-width: 1px 0 0 0;
|
528 |
-
background-image: none;
|
529 |
-
margin-top: .5em;
|
530 |
-
padding: .3em 1em .5em .4em;
|
531 |
-
}
|
532 |
-
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
|
533 |
-
float: right;
|
534 |
-
}
|
535 |
-
.ui-dialog .ui-dialog-buttonpane button {
|
536 |
-
margin: .5em .4em .5em 0;
|
537 |
-
cursor: pointer;
|
538 |
-
}
|
539 |
-
.ui-dialog .ui-resizable-n {
|
540 |
-
height: 2px;
|
541 |
-
top: 0;
|
542 |
-
}
|
543 |
-
.ui-dialog .ui-resizable-e {
|
544 |
-
width: 2px;
|
545 |
-
right: 0;
|
546 |
-
}
|
547 |
-
.ui-dialog .ui-resizable-s {
|
548 |
-
height: 2px;
|
549 |
-
bottom: 0;
|
550 |
-
}
|
551 |
-
.ui-dialog .ui-resizable-w {
|
552 |
-
width: 2px;
|
553 |
-
left: 0;
|
554 |
-
}
|
555 |
-
.ui-dialog .ui-resizable-se,
|
556 |
-
.ui-dialog .ui-resizable-sw,
|
557 |
-
.ui-dialog .ui-resizable-ne,
|
558 |
-
.ui-dialog .ui-resizable-nw {
|
559 |
-
width: 7px;
|
560 |
-
height: 7px;
|
561 |
-
}
|
562 |
-
.ui-dialog .ui-resizable-se {
|
563 |
-
right: 0;
|
564 |
-
bottom: 0;
|
565 |
-
}
|
566 |
-
.ui-dialog .ui-resizable-sw {
|
567 |
-
left: 0;
|
568 |
-
bottom: 0;
|
569 |
-
}
|
570 |
-
.ui-dialog .ui-resizable-ne {
|
571 |
-
right: 0;
|
572 |
-
top: 0;
|
573 |
-
}
|
574 |
-
.ui-dialog .ui-resizable-nw {
|
575 |
-
left: 0;
|
576 |
-
top: 0;
|
577 |
-
}
|
578 |
-
.ui-draggable .ui-dialog-titlebar {
|
579 |
-
cursor: move;
|
580 |
-
}
|
581 |
-
.ui-draggable-handle {
|
582 |
-
-ms-touch-action: none;
|
583 |
-
touch-action: none;
|
584 |
-
}
|
585 |
-
.ui-resizable {
|
586 |
-
position: relative;
|
587 |
-
}
|
588 |
-
.ui-resizable-handle {
|
589 |
-
position: absolute;
|
590 |
-
font-size: 0.1px;
|
591 |
-
display: block;
|
592 |
-
-ms-touch-action: none;
|
593 |
-
touch-action: none;
|
594 |
-
}
|
595 |
-
.ui-resizable-disabled .ui-resizable-handle,
|
596 |
-
.ui-resizable-autohide .ui-resizable-handle {
|
597 |
-
display: none;
|
598 |
-
}
|
599 |
-
.ui-resizable-n {
|
600 |
-
cursor: n-resize;
|
601 |
-
height: 7px;
|
602 |
-
width: 100%;
|
603 |
-
top: -5px;
|
604 |
-
left: 0;
|
605 |
-
}
|
606 |
-
.ui-resizable-s {
|
607 |
-
cursor: s-resize;
|
608 |
-
height: 7px;
|
609 |
-
width: 100%;
|
610 |
-
bottom: -5px;
|
611 |
-
left: 0;
|
612 |
-
}
|
613 |
-
.ui-resizable-e {
|
614 |
-
cursor: e-resize;
|
615 |
-
width: 7px;
|
616 |
-
right: -5px;
|
617 |
-
top: 0;
|
618 |
-
height: 100%;
|
619 |
-
}
|
620 |
-
.ui-resizable-w {
|
621 |
-
cursor: w-resize;
|
622 |
-
width: 7px;
|
623 |
-
left: -5px;
|
624 |
-
top: 0;
|
625 |
-
height: 100%;
|
626 |
-
}
|
627 |
-
.ui-resizable-se {
|
628 |
-
cursor: se-resize;
|
629 |
-
width: 12px;
|
630 |
-
height: 12px;
|
631 |
-
right: 1px;
|
632 |
-
bottom: 1px;
|
633 |
-
}
|
634 |
-
.ui-resizable-sw {
|
635 |
-
cursor: sw-resize;
|
636 |
-
width: 9px;
|
637 |
-
height: 9px;
|
638 |
-
left: -5px;
|
639 |
-
bottom: -5px;
|
640 |
-
}
|
641 |
-
.ui-resizable-nw {
|
642 |
-
cursor: nw-resize;
|
643 |
-
width: 9px;
|
644 |
-
height: 9px;
|
645 |
-
left: -5px;
|
646 |
-
top: -5px;
|
647 |
-
}
|
648 |
-
.ui-resizable-ne {
|
649 |
-
cursor: ne-resize;
|
650 |
-
width: 9px;
|
651 |
-
height: 9px;
|
652 |
-
right: -5px;
|
653 |
-
top: -5px;
|
654 |
-
}
|
655 |
-
.ui-progressbar {
|
656 |
-
height: 2em;
|
657 |
-
text-align: left;
|
658 |
-
overflow: hidden;
|
659 |
-
}
|
660 |
-
.ui-progressbar .ui-progressbar-value {
|
661 |
-
margin: -1px;
|
662 |
-
height: 100%;
|
663 |
-
}
|
664 |
-
.ui-progressbar .ui-progressbar-overlay {
|
665 |
-
background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
|
666 |
-
height: 100%;
|
667 |
-
filter: alpha(opacity=25); /* support: IE8 */
|
668 |
-
opacity: 0.25;
|
669 |
-
}
|
670 |
-
.ui-progressbar-indeterminate .ui-progressbar-value {
|
671 |
-
background-image: none;
|
672 |
-
}
|
673 |
-
.ui-selectable {
|
674 |
-
-ms-touch-action: none;
|
675 |
-
touch-action: none;
|
676 |
-
}
|
677 |
-
.ui-selectable-helper {
|
678 |
-
position: absolute;
|
679 |
-
z-index: 100;
|
680 |
-
border: 1px dotted black;
|
681 |
-
}
|
682 |
-
.ui-selectmenu-menu {
|
683 |
-
padding: 0;
|
684 |
-
margin: 0;
|
685 |
-
position: absolute;
|
686 |
-
top: 0;
|
687 |
-
left: 0;
|
688 |
-
display: none;
|
689 |
-
}
|
690 |
-
.ui-selectmenu-menu .ui-menu {
|
691 |
-
overflow: auto;
|
692 |
-
overflow-x: hidden;
|
693 |
-
padding-bottom: 1px;
|
694 |
-
}
|
695 |
-
.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
|
696 |
-
font-size: 1em;
|
697 |
-
font-weight: bold;
|
698 |
-
line-height: 1.5;
|
699 |
-
padding: 2px 0.4em;
|
700 |
-
margin: 0.5em 0 0 0;
|
701 |
-
height: auto;
|
702 |
-
border: 0;
|
703 |
-
}
|
704 |
-
.ui-selectmenu-open {
|
705 |
-
display: block;
|
706 |
-
}
|
707 |
-
.ui-selectmenu-text {
|
708 |
-
display: block;
|
709 |
-
margin-right: 20px;
|
710 |
-
overflow: hidden;
|
711 |
-
text-overflow: ellipsis;
|
712 |
-
}
|
713 |
-
.ui-selectmenu-button.ui-button {
|
714 |
-
text-align: left;
|
715 |
-
white-space: nowrap;
|
716 |
-
width: 14em;
|
717 |
-
}
|
718 |
-
.ui-selectmenu-icon.ui-icon {
|
719 |
-
float: right;
|
720 |
-
margin-top: 0;
|
721 |
-
}
|
722 |
-
.ui-slider {
|
723 |
-
position: relative;
|
724 |
-
text-align: left;
|
725 |
-
}
|
726 |
-
.ui-slider .ui-slider-handle {
|
727 |
-
position: absolute;
|
728 |
-
z-index: 2;
|
729 |
-
width: 1.2em;
|
730 |
-
height: 1.2em;
|
731 |
-
cursor: default;
|
732 |
-
-ms-touch-action: none;
|
733 |
-
touch-action: none;
|
734 |
-
}
|
735 |
-
.ui-slider .ui-slider-range {
|
736 |
-
position: absolute;
|
737 |
-
z-index: 1;
|
738 |
-
font-size: .7em;
|
739 |
-
display: block;
|
740 |
-
border: 0;
|
741 |
-
background-position: 0 0;
|
742 |
-
}
|
743 |
-
|
744 |
-
/* support: IE8 - See #6727 */
|
745 |
-
.ui-slider.ui-state-disabled .ui-slider-handle,
|
746 |
-
.ui-slider.ui-state-disabled .ui-slider-range {
|
747 |
-
filter: inherit;
|
748 |
-
}
|
749 |
-
|
750 |
-
.ui-slider-horizontal {
|
751 |
-
height: .8em;
|
752 |
-
}
|
753 |
-
.ui-slider-horizontal .ui-slider-handle {
|
754 |
-
top: -.3em;
|
755 |
-
margin-left: -.6em;
|
756 |
-
}
|
757 |
-
.ui-slider-horizontal .ui-slider-range {
|
758 |
-
top: 0;
|
759 |
-
height: 100%;
|
760 |
-
}
|
761 |
-
.ui-slider-horizontal .ui-slider-range-min {
|
762 |
-
left: 0;
|
763 |
-
}
|
764 |
-
.ui-slider-horizontal .ui-slider-range-max {
|
765 |
-
right: 0;
|
766 |
-
}
|
767 |
-
|
768 |
-
.ui-slider-vertical {
|
769 |
-
width: .8em;
|
770 |
-
height: 100px;
|
771 |
-
}
|
772 |
-
.ui-slider-vertical .ui-slider-handle {
|
773 |
-
left: -.3em;
|
774 |
-
margin-left: 0;
|
775 |
-
margin-bottom: -.6em;
|
776 |
-
}
|
777 |
-
.ui-slider-vertical .ui-slider-range {
|
778 |
-
left: 0;
|
779 |
-
width: 100%;
|
780 |
-
}
|
781 |
-
.ui-slider-vertical .ui-slider-range-min {
|
782 |
-
bottom: 0;
|
783 |
-
}
|
784 |
-
.ui-slider-vertical .ui-slider-range-max {
|
785 |
-
top: 0;
|
786 |
-
}
|
787 |
-
.ui-sortable-handle {
|
788 |
-
-ms-touch-action: none;
|
789 |
-
touch-action: none;
|
790 |
-
}
|
791 |
-
.ui-spinner {
|
792 |
-
position: relative;
|
793 |
-
display: inline-block;
|
794 |
-
overflow: hidden;
|
795 |
-
padding: 0;
|
796 |
-
vertical-align: middle;
|
797 |
-
}
|
798 |
-
.ui-spinner-input {
|
799 |
-
border: none;
|
800 |
-
background: none;
|
801 |
-
color: inherit;
|
802 |
-
padding: .222em 0;
|
803 |
-
margin: .2em 0;
|
804 |
-
vertical-align: middle;
|
805 |
-
margin-left: .4em;
|
806 |
-
margin-right: 2em;
|
807 |
-
}
|
808 |
-
.ui-spinner-button {
|
809 |
-
width: 1.6em;
|
810 |
-
height: 50%;
|
811 |
-
font-size: .5em;
|
812 |
-
padding: 0;
|
813 |
-
margin: 0;
|
814 |
-
text-align: center;
|
815 |
-
position: absolute;
|
816 |
-
cursor: default;
|
817 |
-
display: block;
|
818 |
-
overflow: hidden;
|
819 |
-
right: 0;
|
820 |
-
}
|
821 |
-
/* more specificity required here to override default borders */
|
822 |
-
.ui-spinner a.ui-spinner-button {
|
823 |
-
border-top-style: none;
|
824 |
-
border-bottom-style: none;
|
825 |
-
border-right-style: none;
|
826 |
-
}
|
827 |
-
.ui-spinner-up {
|
828 |
-
top: 0;
|
829 |
-
}
|
830 |
-
.ui-spinner-down {
|
831 |
-
bottom: 0;
|
832 |
-
}
|
833 |
-
.ui-tabs {
|
834 |
-
position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
835 |
-
padding: .2em;
|
836 |
-
}
|
837 |
-
.ui-tabs .ui-tabs-nav {
|
838 |
-
margin: 0;
|
839 |
-
padding: .2em .2em 0;
|
840 |
-
}
|
841 |
-
.ui-tabs .ui-tabs-nav li {
|
842 |
-
list-style: none;
|
843 |
-
float: left;
|
844 |
-
position: relative;
|
845 |
-
top: 0;
|
846 |
-
margin: 1px .2em 0 0;
|
847 |
-
border-bottom-width: 0;
|
848 |
-
padding: 0;
|
849 |
-
white-space: nowrap;
|
850 |
-
}
|
851 |
-
.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
|
852 |
-
float: left;
|
853 |
-
padding: .5em 1em;
|
854 |
-
text-decoration: none;
|
855 |
-
}
|
856 |
-
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
|
857 |
-
margin-bottom: -1px;
|
858 |
-
padding-bottom: 1px;
|
859 |
-
}
|
860 |
-
.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
|
861 |
-
.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
|
862 |
-
.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
|
863 |
-
cursor: text;
|
864 |
-
}
|
865 |
-
.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
|
866 |
-
cursor: pointer;
|
867 |
-
}
|
868 |
-
.ui-tabs .ui-tabs-panel {
|
869 |
-
display: block;
|
870 |
-
border-width: 0;
|
871 |
-
padding: 1em 1.4em;
|
872 |
-
background: none;
|
873 |
-
}
|
874 |
-
.ui-tooltip {
|
875 |
-
padding: 8px;
|
876 |
-
position: absolute;
|
877 |
-
z-index: 9999;
|
878 |
-
max-width: 300px;
|
879 |
-
}
|
880 |
-
body .ui-tooltip {
|
881 |
-
border-width: 2px;
|
882 |
-
}
|
883 |
-
|
884 |
-
/* Component containers
|
885 |
-
----------------------------------*/
|
886 |
-
.ui-widget {
|
887 |
-
font-family: Arial,Helvetica,sans-serif;
|
888 |
-
font-size: 1em;
|
889 |
-
}
|
890 |
-
.ui-widget .ui-widget {
|
891 |
-
font-size: 1em;
|
892 |
-
}
|
893 |
-
.ui-widget input,
|
894 |
-
.ui-widget select,
|
895 |
-
.ui-widget textarea,
|
896 |
-
.ui-widget button {
|
897 |
-
font-family: Arial,Helvetica,sans-serif;
|
898 |
-
font-size: 1em;
|
899 |
-
}
|
900 |
-
.ui-widget.ui-widget-content {
|
901 |
-
border: 1px solid #c5c5c5;
|
902 |
-
}
|
903 |
-
.ui-widget-content {
|
904 |
-
border: 1px solid #dddddd;
|
905 |
-
background: #ffffff;
|
906 |
-
color: #333333;
|
907 |
-
}
|
908 |
-
.ui-widget-content a {
|
909 |
-
color: #333333;
|
910 |
-
}
|
911 |
-
.ui-widget-header {
|
912 |
-
border: 1px solid #dddddd;
|
913 |
-
background: #e9e9e9;
|
914 |
-
color: #333333;
|
915 |
-
font-weight: bold;
|
916 |
-
}
|
917 |
-
.ui-widget-header a {
|
918 |
-
color: #333333;
|
919 |
-
}
|
920 |
-
|
921 |
-
/* Interaction states
|
922 |
-
----------------------------------*/
|
923 |
-
.ui-state-default,
|
924 |
-
.ui-widget-content .ui-state-default,
|
925 |
-
.ui-widget-header .ui-state-default,
|
926 |
-
.ui-button,
|
927 |
-
|
928 |
-
/* We use html here because we need a greater specificity to make sure disabled
|
929 |
-
works properly when clicked or hovered */
|
930 |
-
html .ui-button.ui-state-disabled:hover,
|
931 |
-
html .ui-button.ui-state-disabled:active {
|
932 |
-
border: 1px solid #c5c5c5;
|
933 |
-
background: #f6f6f6;
|
934 |
-
font-weight: normal;
|
935 |
-
color: #454545;
|
936 |
-
}
|
937 |
-
.ui-state-default a,
|
938 |
-
.ui-state-default a:link,
|
939 |
-
.ui-state-default a:visited,
|
940 |
-
a.ui-button,
|
941 |
-
a:link.ui-button,
|
942 |
-
a:visited.ui-button,
|
943 |
-
.ui-button {
|
944 |
-
color: #454545;
|
945 |
-
text-decoration: none;
|
946 |
-
}
|
947 |
-
.ui-state-hover,
|
948 |
-
.ui-widget-content .ui-state-hover,
|
949 |
-
.ui-widget-header .ui-state-hover,
|
950 |
-
.ui-state-focus,
|
951 |
-
.ui-widget-content .ui-state-focus,
|
952 |
-
.ui-widget-header .ui-state-focus,
|
953 |
-
.ui-button:hover,
|
954 |
-
.ui-button:focus {
|
955 |
-
border: 1px solid #cccccc;
|
956 |
-
background: #ededed;
|
957 |
-
font-weight: normal;
|
958 |
-
color: #2b2b2b;
|
959 |
-
}
|
960 |
-
.ui-state-hover a,
|
961 |
-
.ui-state-hover a:hover,
|
962 |
-
.ui-state-hover a:link,
|
963 |
-
.ui-state-hover a:visited,
|
964 |
-
.ui-state-focus a,
|
965 |
-
.ui-state-focus a:hover,
|
966 |
-
.ui-state-focus a:link,
|
967 |
-
.ui-state-focus a:visited,
|
968 |
-
a.ui-button:hover,
|
969 |
-
a.ui-button:focus {
|
970 |
-
color: #2b2b2b;
|
971 |
-
text-decoration: none;
|
972 |
-
}
|
973 |
-
|
974 |
-
.ui-visual-focus {
|
975 |
-
box-shadow: 0 0 3px 1px rgb(94, 158, 214);
|
976 |
-
}
|
977 |
-
.ui-state-active,
|
978 |
-
.ui-widget-content .ui-state-active,
|
979 |
-
.ui-widget-header .ui-state-active,
|
980 |
-
a.ui-button:active,
|
981 |
-
.ui-button:active,
|
982 |
-
.ui-button.ui-state-active:hover {
|
983 |
-
border: 1px solid #003eff;
|
984 |
-
background: #007fff;
|
985 |
-
font-weight: normal;
|
986 |
-
color: #ffffff;
|
987 |
-
}
|
988 |
-
.ui-icon-background,
|
989 |
-
.ui-state-active .ui-icon-background {
|
990 |
-
border: #003eff;
|
991 |
-
background-color: #ffffff;
|
992 |
-
}
|
993 |
-
.ui-state-active a,
|
994 |
-
.ui-state-active a:link,
|
995 |
-
.ui-state-active a:visited {
|
996 |
-
color: #ffffff;
|
997 |
-
text-decoration: none;
|
998 |
-
}
|
999 |
-
|
1000 |
-
/* Interaction Cues
|
1001 |
-
----------------------------------*/
|
1002 |
-
.ui-state-highlight,
|
1003 |
-
.ui-widget-content .ui-state-highlight,
|
1004 |
-
.ui-widget-header .ui-state-highlight {
|
1005 |
-
border: 1px solid #dad55e;
|
1006 |
-
background: #fffa90;
|
1007 |
-
color: #777620;
|
1008 |
-
}
|
1009 |
-
.ui-state-checked {
|
1010 |
-
border: 1px solid #dad55e;
|
1011 |
-
background: #fffa90;
|
1012 |
-
}
|
1013 |
-
.ui-state-highlight a,
|
1014 |
-
.ui-widget-content .ui-state-highlight a,
|
1015 |
-
.ui-widget-header .ui-state-highlight a {
|
1016 |
-
color: #777620;
|
1017 |
-
}
|
1018 |
-
.ui-state-error,
|
1019 |
-
.ui-widget-content .ui-state-error,
|
1020 |
-
.ui-widget-header .ui-state-error {
|
1021 |
-
border: 1px solid #f1a899;
|
1022 |
-
background: #fddfdf;
|
1023 |
-
color: #5f3f3f;
|
1024 |
-
}
|
1025 |
-
.ui-state-error a,
|
1026 |
-
.ui-widget-content .ui-state-error a,
|
1027 |
-
.ui-widget-header .ui-state-error a {
|
1028 |
-
color: #5f3f3f;
|
1029 |
-
}
|
1030 |
-
.ui-state-error-text,
|
1031 |
-
.ui-widget-content .ui-state-error-text,
|
1032 |
-
.ui-widget-header .ui-state-error-text {
|
1033 |
-
color: #5f3f3f;
|
1034 |
-
}
|
1035 |
-
.ui-priority-primary,
|
1036 |
-
.ui-widget-content .ui-priority-primary,
|
1037 |
-
.ui-widget-header .ui-priority-primary {
|
1038 |
-
font-weight: bold;
|
1039 |
-
}
|
1040 |
-
.ui-priority-secondary,
|
1041 |
-
.ui-widget-content .ui-priority-secondary,
|
1042 |
-
.ui-widget-header .ui-priority-secondary {
|
1043 |
-
opacity: .7;
|
1044 |
-
filter:Alpha(Opacity=70); /* support: IE8 */
|
1045 |
-
font-weight: normal;
|
1046 |
-
}
|
1047 |
-
.ui-state-disabled,
|
1048 |
-
.ui-widget-content .ui-state-disabled,
|
1049 |
-
.ui-widget-header .ui-state-disabled {
|
1050 |
-
opacity: .35;
|
1051 |
-
filter:Alpha(Opacity=35); /* support: IE8 */
|
1052 |
-
background-image: none;
|
1053 |
-
}
|
1054 |
-
.ui-state-disabled .ui-icon {
|
1055 |
-
filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
|
1056 |
-
}
|
1057 |
-
|
1058 |
-
/* Icons
|
1059 |
-
----------------------------------*/
|
1060 |
-
|
1061 |
-
/* states and images */
|
1062 |
-
.ui-icon {
|
1063 |
-
width: 16px;
|
1064 |
-
height: 16px;
|
1065 |
-
}
|
1066 |
-
.ui-icon,
|
1067 |
-
.ui-widget-content .ui-icon {
|
1068 |
-
/*background-image: url("images/ui-icons_444444_256x240.png");*/
|
1069 |
-
}
|
1070 |
-
.ui-widget-header .ui-icon {
|
1071 |
-
/*background-image: url("images/ui-icons_444444_256x240.png");*/
|
1072 |
-
}
|
1073 |
-
.ui-state-hover .ui-icon,
|
1074 |
-
.ui-state-focus .ui-icon,
|
1075 |
-
.ui-button:hover .ui-icon,
|
1076 |
-
.ui-button:focus .ui-icon {
|
1077 |
-
/*background-image: url("images/ui-icons_555555_256x240.png");*/
|
1078 |
-
}
|
1079 |
-
.ui-state-active .ui-icon,
|
1080 |
-
.ui-button:active .ui-icon {
|
1081 |
-
/*background-image: url("images/ui-icons_ffffff_256x240.png");*/
|
1082 |
-
}
|
1083 |
-
.ui-state-highlight .ui-icon,
|
1084 |
-
.ui-button .ui-state-highlight.ui-icon {
|
1085 |
-
/*background-image: url("images/ui-icons_777620_256x240.png");*/
|
1086 |
-
}
|
1087 |
-
.ui-state-error .ui-icon,
|
1088 |
-
.ui-state-error-text .ui-icon {
|
1089 |
-
/*background-image: url("images/ui-icons_cc0000_256x240.png");*/
|
1090 |
-
}
|
1091 |
-
.ui-button .ui-icon {
|
1092 |
-
/*background-image: url("images/ui-icons_777777_256x240.png");*/
|
1093 |
-
}
|
1094 |
-
|
1095 |
-
/* positioning */
|
1096 |
-
.ui-icon-blank { background-position: 16px 16px; }
|
1097 |
-
.ui-icon-caret-1-n { background-position: 0 0; }
|
1098 |
-
.ui-icon-caret-1-ne { background-position: -16px 0; }
|
1099 |
-
.ui-icon-caret-1-e { background-position: -32px 0; }
|
1100 |
-
.ui-icon-caret-1-se { background-position: -48px 0; }
|
1101 |
-
.ui-icon-caret-1-s { background-position: -65px 0; }
|
1102 |
-
.ui-icon-caret-1-sw { background-position: -80px 0; }
|
1103 |
-
.ui-icon-caret-1-w { background-position: -96px 0; }
|
1104 |
-
.ui-icon-caret-1-nw { background-position: -112px 0; }
|
1105 |
-
.ui-icon-caret-2-n-s { background-position: -128px 0; }
|
1106 |
-
.ui-icon-caret-2-e-w { background-position: -144px 0; }
|
1107 |
-
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
1108 |
-
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
1109 |
-
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
1110 |
-
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
1111 |
-
.ui-icon-triangle-1-s { background-position: -65px -16px; }
|
1112 |
-
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
1113 |
-
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
1114 |
-
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
1115 |
-
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
1116 |
-
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
1117 |
-
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
1118 |
-
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
1119 |
-
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
1120 |
-
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
1121 |
-
.ui-icon-arrow-1-s { background-position: -65px -32px; }
|
1122 |
-
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
1123 |
-
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
1124 |
-
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
1125 |
-
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
1126 |
-
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
1127 |
-
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
1128 |
-
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
1129 |
-
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
1130 |
-
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
1131 |
-
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
1132 |
-
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
1133 |
-
.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
|
1134 |
-
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
1135 |
-
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
1136 |
-
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
1137 |
-
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
1138 |
-
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
1139 |
-
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
1140 |
-
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
1141 |
-
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
1142 |
-
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
1143 |
-
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
1144 |
-
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
1145 |
-
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
1146 |
-
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
1147 |
-
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
1148 |
-
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
1149 |
-
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
1150 |
-
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
1151 |
-
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
1152 |
-
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
1153 |
-
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
1154 |
-
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
1155 |
-
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
1156 |
-
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
1157 |
-
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
1158 |
-
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
1159 |
-
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
1160 |
-
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
1161 |
-
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
1162 |
-
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
1163 |
-
.ui-icon-extlink { background-position: -32px -80px; }
|
1164 |
-
.ui-icon-newwin { background-position: -48px -80px; }
|
1165 |
-
.ui-icon-refresh { background-position: -64px -80px; }
|
1166 |
-
.ui-icon-shuffle { background-position: -80px -80px; }
|
1167 |
-
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
1168 |
-
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
1169 |
-
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
1170 |
-
.ui-icon-folder-open { background-position: -16px -96px; }
|
1171 |
-
.ui-icon-document { background-position: -32px -96px; }
|
1172 |
-
.ui-icon-document-b { background-position: -48px -96px; }
|
1173 |
-
.ui-icon-note { background-position: -64px -96px; }
|
1174 |
-
.ui-icon-mail-closed { background-position: -80px -96px; }
|
1175 |
-
.ui-icon-mail-open { background-position: -96px -96px; }
|
1176 |
-
.ui-icon-suitcase { background-position: -112px -96px; }
|
1177 |
-
.ui-icon-comment { background-position: -128px -96px; }
|
1178 |
-
.ui-icon-person { background-position: -144px -96px; }
|
1179 |
-
.ui-icon-print { background-position: -160px -96px; }
|
1180 |
-
.ui-icon-trash { background-position: -176px -96px; }
|
1181 |
-
.ui-icon-locked { background-position: -192px -96px; }
|
1182 |
-
.ui-icon-unlocked { background-position: -208px -96px; }
|
1183 |
-
.ui-icon-bookmark { background-position: -224px -96px; }
|
1184 |
-
.ui-icon-tag { background-position: -240px -96px; }
|
1185 |
-
.ui-icon-home { background-position: 0 -112px; }
|
1186 |
-
.ui-icon-flag { background-position: -16px -112px; }
|
1187 |
-
.ui-icon-calendar { background-position: -32px -112px; }
|
1188 |
-
.ui-icon-cart { background-position: -48px -112px; }
|
1189 |
-
.ui-icon-pencil { background-position: -64px -112px; }
|
1190 |
-
.ui-icon-clock { background-position: -80px -112px; }
|
1191 |
-
.ui-icon-disk { background-position: -96px -112px; }
|
1192 |
-
.ui-icon-calculator { background-position: -112px -112px; }
|
1193 |
-
.ui-icon-zoomin { background-position: -128px -112px; }
|
1194 |
-
.ui-icon-zoomout { background-position: -144px -112px; }
|
1195 |
-
.ui-icon-search { background-position: -160px -112px; }
|
1196 |
-
.ui-icon-wrench { background-position: -176px -112px; }
|
1197 |
-
.ui-icon-gear { background-position: -192px -112px; }
|
1198 |
-
.ui-icon-heart { background-position: -208px -112px; }
|
1199 |
-
.ui-icon-star { background-position: -224px -112px; }
|
1200 |
-
.ui-icon-link { background-position: -240px -112px; }
|
1201 |
-
.ui-icon-cancel { background-position: 0 -128px; }
|
1202 |
-
.ui-icon-plus { background-position: -16px -128px; }
|
1203 |
-
.ui-icon-plusthick { background-position: -32px -128px; }
|
1204 |
-
.ui-icon-minus { background-position: -48px -128px; }
|
1205 |
-
.ui-icon-minusthick { background-position: -64px -128px; }
|
1206 |
-
.ui-icon-close { background-position: -80px -128px; }
|
1207 |
-
.ui-icon-closethick { background-position: -96px -128px; }
|
1208 |
-
.ui-icon-key { background-position: -112px -128px; }
|
1209 |
-
.ui-icon-lightbulb { background-position: -128px -128px; }
|
1210 |
-
.ui-icon-scissors { background-position: -144px -128px; }
|
1211 |
-
.ui-icon-clipboard { background-position: -160px -128px; }
|
1212 |
-
.ui-icon-copy { background-position: -176px -128px; }
|
1213 |
-
.ui-icon-contact { background-position: -192px -128px; }
|
1214 |
-
.ui-icon-image { background-position: -208px -128px; }
|
1215 |
-
.ui-icon-video { background-position: -224px -128px; }
|
1216 |
-
.ui-icon-script { background-position: -240px -128px; }
|
1217 |
-
.ui-icon-alert { background-position: 0 -144px; }
|
1218 |
-
.ui-icon-info { background-position: -16px -144px; }
|
1219 |
-
.ui-icon-notice { background-position: -32px -144px; }
|
1220 |
-
.ui-icon-help { background-position: -48px -144px; }
|
1221 |
-
.ui-icon-check { background-position: -64px -144px; }
|
1222 |
-
.ui-icon-bullet { background-position: -80px -144px; }
|
1223 |
-
.ui-icon-radio-on { background-position: -96px -144px; }
|
1224 |
-
.ui-icon-radio-off { background-position: -112px -144px; }
|
1225 |
-
.ui-icon-pin-w { background-position: -128px -144px; }
|
1226 |
-
.ui-icon-pin-s { background-position: -144px -144px; }
|
1227 |
-
.ui-icon-play { background-position: 0 -160px; }
|
1228 |
-
.ui-icon-pause { background-position: -16px -160px; }
|
1229 |
-
.ui-icon-seek-next { background-position: -32px -160px; }
|
1230 |
-
.ui-icon-seek-prev { background-position: -48px -160px; }
|
1231 |
-
.ui-icon-seek-end { background-position: -64px -160px; }
|
1232 |
-
.ui-icon-seek-start { background-position: -80px -160px; }
|
1233 |
-
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
1234 |
-
.ui-icon-seek-first { background-position: -80px -160px; }
|
1235 |
-
.ui-icon-stop { background-position: -96px -160px; }
|
1236 |
-
.ui-icon-eject { background-position: -112px -160px; }
|
1237 |
-
.ui-icon-volume-off { background-position: -128px -160px; }
|
1238 |
-
.ui-icon-volume-on { background-position: -144px -160px; }
|
1239 |
-
.ui-icon-power { background-position: 0 -176px; }
|
1240 |
-
.ui-icon-signal-diag { background-position: -16px -176px; }
|
1241 |
-
.ui-icon-signal { background-position: -32px -176px; }
|
1242 |
-
.ui-icon-battery-0 { background-position: -48px -176px; }
|
1243 |
-
.ui-icon-battery-1 { background-position: -64px -176px; }
|
1244 |
-
.ui-icon-battery-2 { background-position: -80px -176px; }
|
1245 |
-
.ui-icon-battery-3 { background-position: -96px -176px; }
|
1246 |
-
.ui-icon-circle-plus { background-position: 0 -192px; }
|
1247 |
-
.ui-icon-circle-minus { background-position: -16px -192px; }
|
1248 |
-
.ui-icon-circle-close { background-position: -32px -192px; }
|
1249 |
-
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
1250 |
-
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
1251 |
-
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
1252 |
-
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
1253 |
-
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
1254 |
-
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
1255 |
-
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
1256 |
-
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
1257 |
-
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
1258 |
-
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
1259 |
-
.ui-icon-circle-check { background-position: -208px -192px; }
|
1260 |
-
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
1261 |
-
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
1262 |
-
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
1263 |
-
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
1264 |
-
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
1265 |
-
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
1266 |
-
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
1267 |
-
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
1268 |
-
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
1269 |
-
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
1270 |
-
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
1271 |
-
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
1272 |
-
|
1273 |
-
|
1274 |
-
/* Misc visuals
|
1275 |
-
----------------------------------*/
|
1276 |
-
|
1277 |
-
/* Corner radius */
|
1278 |
-
.ui-corner-all,
|
1279 |
-
.ui-corner-top,
|
1280 |
-
.ui-corner-left,
|
1281 |
-
.ui-corner-tl {
|
1282 |
-
border-top-left-radius: 3px;
|
1283 |
-
}
|
1284 |
-
.ui-corner-all,
|
1285 |
-
.ui-corner-top,
|
1286 |
-
.ui-corner-right,
|
1287 |
-
.ui-corner-tr {
|
1288 |
-
border-top-right-radius: 3px;
|
1289 |
-
}
|
1290 |
-
.ui-corner-all,
|
1291 |
-
.ui-corner-bottom,
|
1292 |
-
.ui-corner-left,
|
1293 |
-
.ui-corner-bl {
|
1294 |
-
border-bottom-left-radius: 3px;
|
1295 |
-
}
|
1296 |
-
.ui-corner-all,
|
1297 |
-
.ui-corner-bottom,
|
1298 |
-
.ui-corner-right,
|
1299 |
-
.ui-corner-br {
|
1300 |
-
border-bottom-right-radius: 3px;
|
1301 |
-
}
|
1302 |
-
|
1303 |
-
/* Overlays */
|
1304 |
-
.ui-widget-overlay {
|
1305 |
-
background: #aaaaaa;
|
1306 |
-
opacity: .003;
|
1307 |
-
filter: Alpha(Opacity=.3); /* support: IE8 */
|
1308 |
-
}
|
1309 |
-
.ui-widget-shadow {
|
1310 |
-
-webkit-box-shadow: 0px 0px 5px #666666;
|
1311 |
-
box-shadow: 0px 0px 5px #666666;
|
1312 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/trp-editor-script.js
DELETED
@@ -1,1707 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Handle Editor interface
|
3 |
-
*/
|
4 |
-
function TRP_Editor(){
|
5 |
-
trp_action_button_html = '<trp-span><trp-merge title="' + trp_localized_text['merge'] + '" class="trp-icon trp-merge dashicons dashicons-arrow-up-alt"></trp-merge><trp-split title="' + trp_localized_text['split'] + '" class="trp-icon trp-split dashicons dashicons-arrow-down-alt"></trp-split><trp-edit title="' + trp_localized_text['edit'] + '" class="trp-icon trp-edit-translation dashicons dashicons-edit"></trp-edit></trp-span>';
|
6 |
-
var _this = this;
|
7 |
-
this.preview_iframe = null;
|
8 |
-
var strings;
|
9 |
-
var dictionaries;
|
10 |
-
var default_language;
|
11 |
-
var TRP_TRANSLATION_ID = 'data-trp-translate-id';
|
12 |
-
var TRP_BLOCK_TYPE = 'data-trp-block-type';
|
13 |
-
this.original_textarea = jQuery( '#trp-original' );
|
14 |
-
var loading_animation = jQuery( '#trp-string-saved-ajax-loader' );
|
15 |
-
var translation_saved = jQuery( '#trp-translation-saved' );
|
16 |
-
var preview_container = jQuery( '#trp-preview' );
|
17 |
-
var controls = jQuery( '#trp-controls' );
|
18 |
-
var save_button = jQuery( '.trp-save-string' );
|
19 |
-
var close_button = jQuery( '#trp-controls-close' );
|
20 |
-
var translated_textareas = [];
|
21 |
-
this.edit_translation_button = null;
|
22 |
-
var categories;
|
23 |
-
this.trp_lister = null;
|
24 |
-
this.jquery_string_selector = jQuery( '#trp-string-categories' );
|
25 |
-
this.change_tracker = null;
|
26 |
-
this.maybe_overflow_fix = null;
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Change the language in the Editor from the dropdown.
|
30 |
-
*
|
31 |
-
* @param select HTML Element Select with languages
|
32 |
-
*/
|
33 |
-
this.change_language = function( select ){
|
34 |
-
var language = select.value;
|
35 |
-
var link = jQuery( '#trp-preview-iframe' ).contents().find('link[hreflang=' + language.replace("_", "-") + ']').first().attr('href');
|
36 |
-
if ( link != undefined ){
|
37 |
-
|
38 |
-
/* pass on trp-view-as parameters to all links that also have preview parameter */
|
39 |
-
if( typeof URL == 'function' && window.location.href.search("trp-view-as=") >= 0 && window.location.href.search("trp-view-as-nonce=") >= 0 ){
|
40 |
-
var currentUrl = new URL(window.location.href);
|
41 |
-
var trp_view_as = currentUrl.searchParams.get("trp-view-as");
|
42 |
-
link = _this.update_query_string('trp-view-as', trp_view_as, link );
|
43 |
-
|
44 |
-
var trp_view_as_nonce = currentUrl.searchParams.get("trp-view-as-nonce");
|
45 |
-
link = _this.update_query_string('trp-view-as-nonce', trp_view_as_nonce, link );
|
46 |
-
}
|
47 |
-
link = _this.update_query_string('trp-edit-translation', 'true', link );
|
48 |
-
window.location.href = link;
|
49 |
-
}
|
50 |
-
};
|
51 |
-
|
52 |
-
/**
|
53 |
-
* Change view as iframe source
|
54 |
-
*
|
55 |
-
* @param select HTML Element Select with languages
|
56 |
-
*/
|
57 |
-
this.change_view_as = function( select ){
|
58 |
-
var view_as = select.value;
|
59 |
-
var view_nonce = jQuery('option:selected', select).attr('data-view-as-nonce');
|
60 |
-
var current_link = document.getElementById("trp-preview-iframe").contentWindow.location.href;
|
61 |
-
current_link = current_link.replace( 'trp-edit-translation=true', 'trp-edit-translation=preview' );
|
62 |
-
|
63 |
-
/* remove maybe previously selected values */
|
64 |
-
current_link = _this.remove_url_parameter( current_link, 'trp-view-as' );
|
65 |
-
current_link = _this.remove_url_parameter( current_link, 'trp-view-as-nonce' );
|
66 |
-
|
67 |
-
if ( current_link != undefined ){
|
68 |
-
if( view_as == 'current_user' )
|
69 |
-
jQuery( '#trp-preview-iframe' ).attr('src', current_link );
|
70 |
-
else
|
71 |
-
jQuery( '#trp-preview-iframe' ).attr('src', current_link + '&trp-view-as=' + view_as + '&trp-view-as-nonce=' + view_nonce );
|
72 |
-
}
|
73 |
-
};
|
74 |
-
|
75 |
-
/**
|
76 |
-
* Initialize string finding, string select dropdown and change tracker.
|
77 |
-
*/
|
78 |
-
this.initialize = function(){
|
79 |
-
_this.saving_translation_ui();
|
80 |
-
|
81 |
-
_this.edit_translation_button = null;
|
82 |
-
|
83 |
-
_this.update_parent_url();
|
84 |
-
|
85 |
-
if ( _this.trp_lister != null ) {
|
86 |
-
_this.jquery_string_selector.off( 'change', _this.trp_lister.select_string );
|
87 |
-
}
|
88 |
-
_this.iframe_strings_lookup();
|
89 |
-
|
90 |
-
_this.trp_lister = new TRP_Lister( dictionaries[trp_on_screen_language] );
|
91 |
-
|
92 |
-
if ( _this.change_tracker != null ) {
|
93 |
-
_this.change_tracker.destroy();
|
94 |
-
}
|
95 |
-
};
|
96 |
-
|
97 |
-
/**
|
98 |
-
* Mimic the navigation in iframe to the parent window.
|
99 |
-
*/
|
100 |
-
this.update_parent_url = function(){
|
101 |
-
|
102 |
-
var location = document.getElementById("trp-preview-iframe").contentWindow.location.href;
|
103 |
-
var close_url = location.replace( '&trp-edit-translation=preview', '' );
|
104 |
-
close_url = close_url.replace( '?trp-edit-translation=preview', '?' );
|
105 |
-
|
106 |
-
/* remove the lang atribute from url. TODO maybe use this same method for trp-edit-translation ? */
|
107 |
-
close_url = _this.remove_url_parameter( close_url, 'lang' );
|
108 |
-
close_url = _this.remove_url_parameter( close_url, 'trp-view-as' );
|
109 |
-
close_url = _this.remove_url_parameter( close_url, 'trp-view-as-nonce' );
|
110 |
-
|
111 |
-
if ( close_url[close_url.length -1] == '?' ){
|
112 |
-
close_url = close_url.slice(0, -1);
|
113 |
-
}
|
114 |
-
|
115 |
-
close_button.attr( 'href', close_url );
|
116 |
-
location = location.replace( 'trp-edit-translation=preview', 'trp-edit-translation=true' );
|
117 |
-
window.history.replaceState( null, null, location );
|
118 |
-
};
|
119 |
-
|
120 |
-
/**
|
121 |
-
* Search for strings in preview window.
|
122 |
-
*
|
123 |
-
* Collects all strings prepared in the back-end and triggers ajax request.
|
124 |
-
*/
|
125 |
-
this.iframe_strings_lookup = function(){
|
126 |
-
_this.preview_iframe = jQuery( '#trp-preview-iframe').contents();
|
127 |
-
strings = [];
|
128 |
-
dictionaries = [];
|
129 |
-
|
130 |
-
var all_strings = _this.preview_iframe.find( '[data-trp-translate-id]' );
|
131 |
-
if( all_strings.length != 0 ){
|
132 |
-
var title = document.getElementById("trp-preview-iframe").contentDocument.title;
|
133 |
-
if ( /<[a-z][\s\S]*>/i.test( title ) ) {
|
134 |
-
// add iframe title
|
135 |
-
all_strings.push ( jQuery( document.getElementById("trp-preview-iframe").contentDocument.title )[0] );
|
136 |
-
}
|
137 |
-
var strings_to_query = [];
|
138 |
-
for ( var i = 0; i < all_strings.length; i++ ) {
|
139 |
-
var string = new TRP_String( trp_on_screen_language, i );
|
140 |
-
string.set_raw_string( all_strings[i] );
|
141 |
-
strings.push( string );
|
142 |
-
strings_to_query.push( string.get_details());
|
143 |
-
}
|
144 |
-
|
145 |
-
dictionaries[trp_on_screen_language] = new TRP_Dictionary( trp_on_screen_language );
|
146 |
-
dictionaries[trp_on_screen_language].set_on_screen_strings( strings );
|
147 |
-
|
148 |
-
_this.ajax_get_strings( strings_to_query );
|
149 |
-
}
|
150 |
-
else{
|
151 |
-
_this.trp_lister = new TRP_Lister( new TRP_Dictionary( trp_language ) );
|
152 |
-
_this.trp_lister.reload_list();
|
153 |
-
_this.change_tracker = new TRP_Change_Tracker( _this.original_textarea, translated_textareas );
|
154 |
-
_this.saved_translation_ui( true );
|
155 |
-
}
|
156 |
-
};
|
157 |
-
|
158 |
-
/**
|
159 |
-
* Query for strings to get original translation.
|
160 |
-
*
|
161 |
-
* @param strings_to_query Strings to find a translation for.
|
162 |
-
*/
|
163 |
-
this.ajax_get_strings = function( strings_to_query ){
|
164 |
-
|
165 |
-
jQuery.ajax({
|
166 |
-
url: trp_ajax_url,
|
167 |
-
type: 'post',
|
168 |
-
dataType: 'json',
|
169 |
-
data: {
|
170 |
-
action: 'trp_get_translations',
|
171 |
-
security: trp_localized_text['gettranslationsnonce'],
|
172 |
-
language: trp_on_screen_language,
|
173 |
-
strings: JSON.stringify( strings_to_query ),
|
174 |
-
all_languages: 'true'
|
175 |
-
},
|
176 |
-
success: function (response) {
|
177 |
-
_this.populate_strings( response );
|
178 |
-
_this.trp_lister.reload_list();
|
179 |
-
_this.change_tracker = new TRP_Change_Tracker( _this.original_textarea, translated_textareas );
|
180 |
-
},
|
181 |
-
error: function(errorThrown){
|
182 |
-
console.log( 'TranslatePress AJAX Request Error' );
|
183 |
-
}
|
184 |
-
|
185 |
-
});
|
186 |
-
};
|
187 |
-
|
188 |
-
/**
|
189 |
-
* Store response in dictionaries variables.
|
190 |
-
*
|
191 |
-
* @param response The Ajax response message.
|
192 |
-
*/
|
193 |
-
this.populate_strings = function( response ){
|
194 |
-
if ( typeof dictionaries == 'undefined' ){
|
195 |
-
dictionaries = [];
|
196 |
-
}
|
197 |
-
for ( var key in response ) {
|
198 |
-
if ( response.hasOwnProperty( key ) ) {
|
199 |
-
if ( response[key]['default-language'] == true ){
|
200 |
-
default_language = key;
|
201 |
-
continue;
|
202 |
-
}
|
203 |
-
if ( dictionaries[key] == undefined ){
|
204 |
-
dictionaries[key] = new TRP_Dictionary( key );
|
205 |
-
}
|
206 |
-
|
207 |
-
dictionaries[key].set_strings( response[key] );
|
208 |
-
if ( translated_textareas[key] == undefined ) {
|
209 |
-
translated_textareas[key] = jQuery( '#trp-translated-' + key );
|
210 |
-
}
|
211 |
-
}
|
212 |
-
}
|
213 |
-
_this.saved_translation_ui(true);
|
214 |
-
};
|
215 |
-
|
216 |
-
/**
|
217 |
-
* Put the selected string into the translate textareas.
|
218 |
-
*
|
219 |
-
* The string can be selected from the preview window or from the select dropdown.
|
220 |
-
* @param trp_string
|
221 |
-
* @param index
|
222 |
-
*/
|
223 |
-
this.edit_strings = function ( trp_string, index ){
|
224 |
-
if ( _this.change_tracker == null || _this.change_tracker.check_unsaved_changes() ) {
|
225 |
-
return;
|
226 |
-
}
|
227 |
-
_this.original_textarea.val( decode_html( trp_string.original ) );
|
228 |
-
_this.original_textarea.attr( TRP_BLOCK_TYPE, trp_string.block_type );
|
229 |
-
for ( var key in translated_textareas ){
|
230 |
-
var translated = '';
|
231 |
-
var id = '';
|
232 |
-
if ( key == trp_on_screen_language ) {
|
233 |
-
translated = trp_string.translated;
|
234 |
-
id = trp_string.id;
|
235 |
-
dictionaries[key].set_current_index( index );
|
236 |
-
}else {
|
237 |
-
var string = dictionaries[key].get_string_by_original( trp_string.original );
|
238 |
-
if ( string ) {
|
239 |
-
translated = string.translated;
|
240 |
-
id = string.id;
|
241 |
-
}
|
242 |
-
}
|
243 |
-
translated_textareas[key].val( translated );
|
244 |
-
translated_textareas[key].attr( TRP_TRANSLATION_ID, id );
|
245 |
-
}
|
246 |
-
};
|
247 |
-
|
248 |
-
/**
|
249 |
-
* Prepare modified translation and send it via Ajax for saving in db.
|
250 |
-
*
|
251 |
-
* Triggered by Save translation button.
|
252 |
-
* Calls function to send ajax request.
|
253 |
-
*/
|
254 |
-
this.save_string = function(){
|
255 |
-
var strings_to_save = {};
|
256 |
-
var modified = false;
|
257 |
-
var original = _this.original_textarea.val();
|
258 |
-
var block_type = _this.original_textarea.attr( TRP_BLOCK_TYPE );
|
259 |
-
var action = 'trp_save_translations';
|
260 |
-
if ( original != "" ) {
|
261 |
-
for ( var key in translated_textareas ) {
|
262 |
-
var translated = translated_textareas[key].val();
|
263 |
-
var id = translated_textareas[key].attr( TRP_TRANSLATION_ID );
|
264 |
-
var string = {};
|
265 |
-
if ( id == 'trp_creating_translation_block' ){
|
266 |
-
string.translated = 'trp_creating_translation_block';
|
267 |
-
string.slug = false;
|
268 |
-
block_type = 1;
|
269 |
-
action = 'trp_create_translation_block';
|
270 |
-
}else {
|
271 |
-
string = dictionaries[key].get_string_by_original(original);
|
272 |
-
}
|
273 |
-
if (string.slug == true) {
|
274 |
-
action = 'trp_save_slug_translation';
|
275 |
-
}
|
276 |
-
if ( string.translated != translated ) {
|
277 |
-
modified = true;
|
278 |
-
if (strings_to_save[key] == undefined) {
|
279 |
-
strings_to_save[key] = [];
|
280 |
-
}
|
281 |
-
var status = 2;
|
282 |
-
if (translated.trim() == '') {
|
283 |
-
status = 0;
|
284 |
-
}
|
285 |
-
strings_to_save[key].push({id: id, original: original, translated: translated, status: status, block_type: block_type});
|
286 |
-
}
|
287 |
-
}
|
288 |
-
}
|
289 |
-
|
290 |
-
if ( modified ){
|
291 |
-
_this.saving_translation_ui();
|
292 |
-
_this.ajax_save_strings( strings_to_save, action );
|
293 |
-
}else{
|
294 |
-
_this.saved_translation_ui();
|
295 |
-
}
|
296 |
-
};
|
297 |
-
|
298 |
-
/**
|
299 |
-
* Getter function for dictionaries.
|
300 |
-
*
|
301 |
-
* @returns {*} Array of dictionaries object.
|
302 |
-
*/
|
303 |
-
this.get_dictionaries = function(){
|
304 |
-
return dictionaries;
|
305 |
-
};
|
306 |
-
|
307 |
-
|
308 |
-
/**
|
309 |
-
* Ajax request with translation to be stored.
|
310 |
-
*
|
311 |
-
* @param strings_to_save Strings to save in database.
|
312 |
-
* @param action 'trp_save_translations' | 'trp_save_slug_translation' | 'trp_get_translations'
|
313 |
-
*/
|
314 |
-
this.ajax_save_strings = function ( strings_to_save, action ){
|
315 |
-
jQuery.ajax({
|
316 |
-
url: trp_ajax_url,
|
317 |
-
type: 'post',
|
318 |
-
dataType: 'json',
|
319 |
-
data: {
|
320 |
-
action: action,
|
321 |
-
security: trp_localized_text['savestringsnonce'],
|
322 |
-
language: trp_on_screen_language,
|
323 |
-
strings: JSON.stringify( strings_to_save ),
|
324 |
-
all_languages: 'true'
|
325 |
-
},
|
326 |
-
success: function (response) {
|
327 |
-
if ( action == 'trp_create_translation_block' ){
|
328 |
-
_this.populate_translation_block_strings( response );
|
329 |
-
}else {
|
330 |
-
_this.populate_strings(strings_to_save);
|
331 |
-
}
|
332 |
-
_this.saved_translation_ui();
|
333 |
-
},
|
334 |
-
error: function(errorThrown){
|
335 |
-
loading_animation.toggle();
|
336 |
-
console.log( 'TranslatePress AJAX Request Error' );
|
337 |
-
}
|
338 |
-
});
|
339 |
-
};
|
340 |
-
|
341 |
-
/**
|
342 |
-
* Call populate strings on response
|
343 |
-
*
|
344 |
-
* Remove individual strings composing the translation blocks
|
345 |
-
* Reload list
|
346 |
-
* Removes the highlight of the translation block
|
347 |
-
*
|
348 |
-
* @param response
|
349 |
-
*/
|
350 |
-
this.populate_translation_block_strings = function( response ){
|
351 |
-
// remove individual strings composing the translation blocks
|
352 |
-
trpEditor.preview_iframe.contents().find('.trp-create-translation-block [data-trp-translate-id]').each( function(){
|
353 |
-
dictionaries[trp_on_screen_language].remove_strings_with_id_from_translation_block( jQuery( this ).attr( TRP_TRANSLATION_ID ) );
|
354 |
-
});
|
355 |
-
_this.populate_strings( response );
|
356 |
-
_this.trp_lister.reload_list();
|
357 |
-
|
358 |
-
// remove highlighting of possibly highlighted new translation block
|
359 |
-
trpEditor.preview_iframe.contents().find('.trp-create-translation-block').removeClass('trp-highlight trp-create-translation-block');
|
360 |
-
};
|
361 |
-
|
362 |
-
/*
|
363 |
-
* Construct a string version for the top_parents_array
|
364 |
-
*/
|
365 |
-
this.get_parent_block = function ( jquery_object ){
|
366 |
-
if ( typeof trp_merge_rules.top_parents_selector == 'undefined' ) {
|
367 |
-
var t = 0;
|
368 |
-
var top_parents_string = trp_merge_rules.top_parents[t];
|
369 |
-
while (t + 1 < trp_merge_rules.top_parents.length) {
|
370 |
-
t = t + 1;
|
371 |
-
top_parents_string = top_parents_string + ', ' + trp_merge_rules.top_parents[t];
|
372 |
-
}
|
373 |
-
trp_merge_rules.top_parents_selector = top_parents_string;
|
374 |
-
}
|
375 |
-
|
376 |
-
return jquery_object.closest( trp_merge_rules.top_parents_selector );
|
377 |
-
};
|
378 |
-
|
379 |
-
/**
|
380 |
-
* Return 'merge', 'split' or 'none' for the jquery_object received based on rules.
|
381 |
-
*/
|
382 |
-
this.decide_if_merge_or_split = function ( trp_string_to_merge ){
|
383 |
-
|
384 |
-
if ( typeof trp_merge_rules == 'undefined' ) {
|
385 |
-
return 'none';
|
386 |
-
}
|
387 |
-
|
388 |
-
// if string is an active translation block
|
389 |
-
if ( trp_string_to_merge.block_type == 1 ){
|
390 |
-
return 'split';
|
391 |
-
}
|
392 |
-
|
393 |
-
var jquery_object = trp_string_to_merge.jquery_object;
|
394 |
-
// check if object is of correct type
|
395 |
-
for ( var s in trp_merge_rules.self_object_type ) {
|
396 |
-
if ( jquery_object.is( trp_merge_rules.self_object_type[s] ) ) {
|
397 |
-
if ( typeof trp_merge_rules.top_parents != 'undefined' && trp_merge_rules.top_parents.length > 0 ) {
|
398 |
-
// closest element which is of type like
|
399 |
-
var block_parent = _this.get_parent_block(jquery_object);
|
400 |
-
if ( block_parent.length > 0 ){
|
401 |
-
for ( var sl in trp_merge_rules.self_object_type ) {
|
402 |
-
mergeable_children_count = block_parent.find( trp_merge_rules.self_object_type[sl] ).length;
|
403 |
-
if ( mergeable_children_count > 1 ) {
|
404 |
-
for( var i in trp_merge_rules.incompatible_siblings ){
|
405 |
-
var incompatible_children = block_parent.find( trp_merge_rules.incompatible_siblings[i] ).length;
|
406 |
-
if ( incompatible_children > 0 ) {
|
407 |
-
return 'none';
|
408 |
-
}
|
409 |
-
}
|
410 |
-
return 'merge';
|
411 |
-
}
|
412 |
-
}
|
413 |
-
}
|
414 |
-
}
|
415 |
-
}
|
416 |
-
}
|
417 |
-
return 'none';
|
418 |
-
};
|
419 |
-
|
420 |
-
/*
|
421 |
-
* Strips all the html added by TP Editor to return a vanilla html.
|
422 |
-
*
|
423 |
-
* Returns original language even if in TP Editor is in secondary language preview.
|
424 |
-
*/
|
425 |
-
this.strip_editor_meta_data = function ( parent ) {
|
426 |
-
var clone = parent.clone();
|
427 |
-
if ( trp_language == trp_on_screen_language ){
|
428 |
-
// editor is not in original language
|
429 |
-
clone.find('['+TRP_TRANSLATION_ID+']').each( function(){
|
430 |
-
var trp_string = dictionaries[trp_on_screen_language].get_string_by_id( jQuery( this ).attr( TRP_TRANSLATION_ID ) );
|
431 |
-
if ( trp_string.status != 0 ) {
|
432 |
-
jQuery( this ).html( jQuery( this ).text().replace( trp_string.translated, trp_string.original ) );
|
433 |
-
}
|
434 |
-
});
|
435 |
-
}
|
436 |
-
|
437 |
-
clone.find('trp-span').remove();
|
438 |
-
clone.find('translate-press, trp-wrap, trp-highlight').contents().unwrap();
|
439 |
-
|
440 |
-
var replace_attributes = ['href', 'target'];
|
441 |
-
var arrayLength = replace_attributes.length;
|
442 |
-
for (var i = 0; i < arrayLength; i++) {
|
443 |
-
var attribute = replace_attributes[i];
|
444 |
-
clone.find('[data-trp-original-' + attribute + ']').each(function () {
|
445 |
-
jQuery(this).attr( attribute, jQuery(this).attr('data-trp-original-' + attribute));
|
446 |
-
jQuery(this).removeAttr('data-trp-original-' + attribute );
|
447 |
-
});
|
448 |
-
}
|
449 |
-
|
450 |
-
var remove_attributes = ['data-trp-translate-id', 'data-trp-node-type', 'data-trp-placeholder', 'data-trp-node-description', 'data-trp-unpreviewable' ];
|
451 |
-
arrayLength = remove_attributes.length;
|
452 |
-
for (var i = 0; i < arrayLength; i++) {
|
453 |
-
var attribute = remove_attributes[i];
|
454 |
-
clone.find('[' + attribute + ']').removeAttr( attribute );
|
455 |
-
}
|
456 |
-
|
457 |
-
stripped_html = clone.html();
|
458 |
-
return stripped_html.replace(' ', "\u00a0");
|
459 |
-
};
|
460 |
-
|
461 |
-
/*
|
462 |
-
* Brings translation block in sidebar for saving
|
463 |
-
*
|
464 |
-
* @param trp_string_to_merge TRP_String from which to extract parent block.
|
465 |
-
*/
|
466 |
-
this.prepare_merging = function( trp_string_to_merge ){
|
467 |
-
// check again
|
468 |
-
if ( _this.decide_if_merge_or_split( trp_string_to_merge ) != 'merge' ) {
|
469 |
-
return;
|
470 |
-
}
|
471 |
-
|
472 |
-
var parent = _this.get_parent_block( trp_string_to_merge.jquery_object );
|
473 |
-
var maybe_deprecated_id = parent.attr( 'data-trp-translate-id-deprecated' );
|
474 |
-
var trp_deprecated_string = null;
|
475 |
-
if ( maybe_deprecated_id != '' ){
|
476 |
-
trp_deprecated_string = dictionaries[trp_on_screen_language].get_string_by_id( maybe_deprecated_id );
|
477 |
-
}
|
478 |
-
trpEditor.preview_iframe.find( "[" + TRP_TRANSLATION_ID + "='trp_creating_translation_block']" ).removeAttr( TRP_TRANSLATION_ID );
|
479 |
-
parent.attr( TRP_TRANSLATION_ID, 'trp_creating_translation_block' );
|
480 |
-
parent.find('.trp-highlight').removeClass( 'trp-highlight' );
|
481 |
-
parent.addClass( 'trp-highlight trp-create-translation-block' );
|
482 |
-
|
483 |
-
_this.original_textarea.val( _this.strip_editor_meta_data( parent ) );
|
484 |
-
for ( var key in translated_textareas ){
|
485 |
-
if ( trp_deprecated_string == null ) {
|
486 |
-
translated_textareas[key].val('');
|
487 |
-
}else{
|
488 |
-
var trp_string = dictionaries[key].get_string_by_original( trp_deprecated_string.original );
|
489 |
-
translated_textareas[key].val( trp_string.translated );
|
490 |
-
}
|
491 |
-
translated_textareas[key].attr( TRP_TRANSLATION_ID, 'trp_creating_translation_block' );
|
492 |
-
}
|
493 |
-
};
|
494 |
-
|
495 |
-
/**
|
496 |
-
* Submit a form with the action of splitting received translation block
|
497 |
-
*
|
498 |
-
* @param trp_string_to_split
|
499 |
-
*/
|
500 |
-
this.split_translation_block = function( trp_string_to_split ){
|
501 |
-
// check again
|
502 |
-
if ( _this.decide_if_merge_or_split( trp_string_to_split ) != 'split' ) {
|
503 |
-
return;
|
504 |
-
}
|
505 |
-
var split = confirm( trp_localized_text['areyousuresplittb'] );
|
506 |
-
if ( split == false ){
|
507 |
-
return;
|
508 |
-
}
|
509 |
-
var tb_to_split = [ trp_string_to_split.original ];
|
510 |
-
|
511 |
-
var form = document.createElement('form');
|
512 |
-
form.setAttribute('method', 'POST');
|
513 |
-
form.setAttribute('action', window.location.href );
|
514 |
-
|
515 |
-
var action = document.createElement('input');
|
516 |
-
action.setAttribute('type', 'hidden');
|
517 |
-
action.setAttribute('name', 'action');
|
518 |
-
action.setAttribute('value', 'trp_split_translation_block');
|
519 |
-
form.appendChild(action);
|
520 |
-
|
521 |
-
var security = document.createElement('input');
|
522 |
-
security.setAttribute('type', 'hidden');
|
523 |
-
security.setAttribute('name', 'security');
|
524 |
-
security.setAttribute('value', trp_localized_text['splittbnonce']);
|
525 |
-
form.appendChild(security);
|
526 |
-
|
527 |
-
var strings = document.createElement('input');
|
528 |
-
strings.setAttribute('type', 'hidden');
|
529 |
-
strings.setAttribute('name', 'strings');
|
530 |
-
strings.setAttribute('value', JSON.stringify( tb_to_split ));
|
531 |
-
form.appendChild(strings);
|
532 |
-
|
533 |
-
document.body.appendChild(form);
|
534 |
-
form.submit();
|
535 |
-
};
|
536 |
-
|
537 |
-
/**
|
538 |
-
* Show UI for translation being saved.
|
539 |
-
*/
|
540 |
-
this.saving_translation_ui = function(){
|
541 |
-
loading_animation.toggle();
|
542 |
-
save_button.attr( 'disabled', 'disabled' );
|
543 |
-
};
|
544 |
-
|
545 |
-
/**
|
546 |
-
* Show UI for translation done saving.
|
547 |
-
*/
|
548 |
-
this.saved_translation_ui = function( dontShowMessage ){
|
549 |
-
dontShowMessage = dontShowMessage || 0;
|
550 |
-
save_button.removeAttr( 'disabled' );
|
551 |
-
if( gettext_dictionaries != null )
|
552 |
-
loading_animation.css('display', 'none');//don't hide the animation if the gettexts arent loaded
|
553 |
-
if ( _this.change_tracker ) {
|
554 |
-
_this.change_tracker.mark_changes_saved();
|
555 |
-
if( !dontShowMessage ) {
|
556 |
-
translation_saved.css("display", "inline");
|
557 |
-
translation_saved.delay(3000).fadeOut(400);
|
558 |
-
}
|
559 |
-
}
|
560 |
-
};
|
561 |
-
|
562 |
-
/**
|
563 |
-
* Toggle extra textareas for other languages
|
564 |
-
*/
|
565 |
-
this.toggle_languages = function (){
|
566 |
-
jQuery( '.trp-other-language' ).toggle();
|
567 |
-
jQuery( '.trp-toggle-languages' ).toggle();
|
568 |
-
};
|
569 |
-
|
570 |
-
/**
|
571 |
-
* Return the given url without the given parameter and its value
|
572 |
-
*
|
573 |
-
* @param url
|
574 |
-
* @param parameter
|
575 |
-
* @returns {*}
|
576 |
-
*/
|
577 |
-
this.remove_url_parameter = function(url, parameter) {
|
578 |
-
//prefer to use l.search if you have a location/link object
|
579 |
-
var urlparts= url.split('?');
|
580 |
-
if (urlparts.length>=2) {
|
581 |
-
|
582 |
-
var prefix= encodeURIComponent(parameter)+'=';
|
583 |
-
var pars= urlparts[1].split(/[&;]/g);
|
584 |
-
|
585 |
-
//reverse iteration as may be destructive
|
586 |
-
for (var i= pars.length; i-- > 0;) {
|
587 |
-
//idiom for string.startsWith
|
588 |
-
if (pars[i].lastIndexOf(prefix, 0) !== -1) {
|
589 |
-
pars.splice(i, 1);
|
590 |
-
}
|
591 |
-
}
|
592 |
-
|
593 |
-
url= urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : "");
|
594 |
-
return url;
|
595 |
-
} else {
|
596 |
-
return url;
|
597 |
-
}
|
598 |
-
};
|
599 |
-
|
600 |
-
/**
|
601 |
-
* Update url with query string.
|
602 |
-
*
|
603 |
-
*/
|
604 |
-
this.update_query_string = function(key, value, url) {
|
605 |
-
if (!url) url = window.location.href;
|
606 |
-
var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"),
|
607 |
-
hash;
|
608 |
-
|
609 |
-
if (re.test(url)) {
|
610 |
-
if (typeof value !== 'undefined' && value !== null)
|
611 |
-
return url.replace(re, '$1' + key + "=" + value + '$2$3');
|
612 |
-
else {
|
613 |
-
hash = url.split('#');
|
614 |
-
url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
|
615 |
-
if (typeof hash[1] !== 'undefined' && hash[1] !== null)
|
616 |
-
url += '#' + hash[1];
|
617 |
-
return url;
|
618 |
-
}
|
619 |
-
}
|
620 |
-
else {
|
621 |
-
if (typeof value !== 'undefined' && value !== null ) {
|
622 |
-
var separator = url.indexOf('?') !== -1 ? '&' : '?';
|
623 |
-
hash = url.split('#');
|
624 |
-
url = hash[0] + separator + key + '=' + value;
|
625 |
-
if (typeof hash[1] !== 'undefined' && hash[1] !== null)
|
626 |
-
url += '#' + hash[1];
|
627 |
-
return url;
|
628 |
-
}
|
629 |
-
else
|
630 |
-
return url;
|
631 |
-
}
|
632 |
-
};
|
633 |
-
|
634 |
-
/**
|
635 |
-
* Resizing preview window.
|
636 |
-
*
|
637 |
-
* @param event
|
638 |
-
* @param ui
|
639 |
-
*/
|
640 |
-
function resize_iframe (event, ui) {
|
641 |
-
var total_width = jQuery(window).width();
|
642 |
-
var width = controls.width();
|
643 |
-
|
644 |
-
if(width > total_width) {
|
645 |
-
width = total_width;
|
646 |
-
controls.css('width', width);
|
647 |
-
}
|
648 |
-
|
649 |
-
preview_container.css('right', width );
|
650 |
-
preview_container.css('left', ( width - 348 ) );
|
651 |
-
preview_container.css('width', (total_width - width));
|
652 |
-
}
|
653 |
-
|
654 |
-
/**
|
655 |
-
* Add event handlers for buttons and dropdowns.
|
656 |
-
*/
|
657 |
-
function add_event_handlers(){
|
658 |
-
save_button.on( 'click', function(e){
|
659 |
-
e.preventDefault();
|
660 |
-
/* trigger a save for a normal string here and not a gettext string */
|
661 |
-
if(jQuery(this).attr('id') == 'trp-save'){
|
662 |
-
_this.save_string();
|
663 |
-
}
|
664 |
-
});
|
665 |
-
jQuery( '.trp-toggle-languages span' ).on( 'click', _this.toggle_languages );
|
666 |
-
jQuery( '#trp-previous' ).on( 'click', function(e){
|
667 |
-
e.preventDefault();
|
668 |
-
if ( _this.change_tracker == null || _this.change_tracker.check_unsaved_changes() ) {
|
669 |
-
return;
|
670 |
-
}
|
671 |
-
prev_option_value = jQuery( 'option:selected', _this.jquery_string_selector ).prevAll('option').first().attr('value');
|
672 |
-
if( typeof prev_option_value != "undefined" && prev_option_value != '' ) {
|
673 |
-
_this.jquery_string_selector.val(prev_option_value).trigger('change');
|
674 |
-
}
|
675 |
-
});
|
676 |
-
jQuery( '#trp-next' ).on( 'click', function(e){
|
677 |
-
e.preventDefault();
|
678 |
-
if ( _this.change_tracker == null || _this.change_tracker.check_unsaved_changes() ) {
|
679 |
-
return;
|
680 |
-
}
|
681 |
-
next_option_value = jQuery('option:selected', _this.jquery_string_selector).nextAll('option').first().attr('value');
|
682 |
-
if( typeof next_option_value != "undefined" && next_option_value != '' ) {
|
683 |
-
_this.jquery_string_selector.val(next_option_value).trigger('change');
|
684 |
-
}
|
685 |
-
});
|
686 |
-
|
687 |
-
controls.resizable({
|
688 |
-
start: function( ) { preview_container.toggle(); },
|
689 |
-
stop: function( ) { preview_container.toggle(); },
|
690 |
-
handles: 'e',
|
691 |
-
minWidth: 190,
|
692 |
-
alsoResize: '.trp-language-text textarea, span.select2-container, #trp-string-categories',
|
693 |
-
|
694 |
-
}).bind( "resize", resize_iframe );
|
695 |
-
|
696 |
-
jQuery( window ).resize(function () {
|
697 |
-
resize_iframe();
|
698 |
-
});
|
699 |
-
|
700 |
-
var placeholder_text = _this.jquery_string_selector.attr('data-trp-placeholder');
|
701 |
-
if (placeholder_text != '') {
|
702 |
-
placeholder_text = 'Select string to translate...';
|
703 |
-
}
|
704 |
-
_this.jquery_string_selector.select2({ placeholder: placeholder_text, templateResult: format_option, width: '100%' });
|
705 |
-
jQuery( '#trp-language-select' ).select2({ width: '100%' });
|
706 |
-
jQuery( '#trp-view-as-select' ).select2({ width: '100%' });
|
707 |
-
|
708 |
-
/* when we have unsaved changes prevent the strings dropdown from opening so we do not have a disconnect between the textareas and the dropdown */
|
709 |
-
_this.jquery_string_selector.on('select2:opening', function (e) {
|
710 |
-
if ( trpEditor.change_tracker == null || trpEditor.change_tracker.check_unsaved_changes() ) {
|
711 |
-
e.preventDefault();
|
712 |
-
}
|
713 |
-
});
|
714 |
-
jQuery( "#trp-preview-iframe" ).on( 'trp_page_loaded', _this.initialize );
|
715 |
-
}
|
716 |
-
|
717 |
-
/**
|
718 |
-
* Remove pencil icon from preview window.
|
719 |
-
*/
|
720 |
-
this.remove_pencil_icon = function(){
|
721 |
-
jQuery( '#trp-preview-iframe').contents().find( 'trp-span' ).remove();
|
722 |
-
};
|
723 |
-
|
724 |
-
/**
|
725 |
-
* if the edit icon button has a parent with overflow hidden and position relative it won't show so we want to change it's margin to 0 so it will appear inside the element
|
726 |
-
*/
|
727 |
-
this.maybe_overflow_fix = function( icon ){
|
728 |
-
/*if (navigator.userAgent.search("Chrome") >= 0 || navigator.userAgent.search("Firefox") >= 0 || navigator.userAgent.search("Edge") >= 0 ) {
|
729 |
-
icon.parents().filter( function(){ var overflow = jQuery(this).css('overflow');
|
730 |
-
return overflow == 'hidden' && !jQuery(this).is('body'); } ).each( function(){
|
731 |
-
jQuery(this).parent().addClass('trp-overflow-transform-fixer');
|
732 |
-
return false;
|
733 |
-
});
|
734 |
-
}
|
735 |
-
else{*/
|
736 |
-
icon.parents().filter( function(index){ if( index > 6 ) return false;var overflow = jQuery(this).css('overflow');
|
737 |
-
return overflow == 'hidden' && !jQuery(this).is('body'); } ).each( function(){
|
738 |
-
jQuery(this).addClass('trp-overflow-inside-fixer');
|
739 |
-
return false;
|
740 |
-
});
|
741 |
-
//}
|
742 |
-
};
|
743 |
-
|
744 |
-
/**
|
745 |
-
* Make string selection dropdown to have options with descriptions below.
|
746 |
-
*
|
747 |
-
* @param option
|
748 |
-
* @returns {*}
|
749 |
-
*/
|
750 |
-
function format_option(option){
|
751 |
-
option = jQuery(
|
752 |
-
'<div>' + option.text + '</div><div class="string-selector-description">' + option.title + '</div>'
|
753 |
-
);
|
754 |
-
return option;
|
755 |
-
}
|
756 |
-
|
757 |
-
this.make_sure_pencil_icon_is_inside_view = function( jquery_object_highlighted ){
|
758 |
-
var rect = jquery_object_highlighted.getBoundingClientRect();
|
759 |
-
if (rect.left < 30 ){
|
760 |
-
var margin = - rect.left;
|
761 |
-
trpEditor.edit_translation_button[0].setAttribute( 'style', 'margin-left: ' + margin + 'px !important' );
|
762 |
-
}else{
|
763 |
-
trpEditor.edit_translation_button[0].removeAttribute( 'style' );
|
764 |
-
}
|
765 |
-
};
|
766 |
-
|
767 |
-
add_event_handlers();
|
768 |
-
}
|
769 |
-
|
770 |
-
/**
|
771 |
-
* Collection of TRP_String for a particular language.
|
772 |
-
*/
|
773 |
-
function TRP_Dictionary( language_code ){
|
774 |
-
|
775 |
-
var _this = this;
|
776 |
-
this.strings = []; // TRP_String
|
777 |
-
this.language = language_code;
|
778 |
-
var current_index = 0;
|
779 |
-
|
780 |
-
|
781 |
-
/**
|
782 |
-
* The currently translated index of the Dictionary.
|
783 |
-
*
|
784 |
-
* Refers to a TRP_String object of this dictionary at the specified index.
|
785 |
-
*
|
786 |
-
* @param index
|
787 |
-
*/
|
788 |
-
this.set_current_index = function ( index ){
|
789 |
-
current_index = index;
|
790 |
-
};
|
791 |
-
|
792 |
-
/**
|
793 |
-
* Foreach TRP_String of this dictionary, update the values received as parameter.
|
794 |
-
*
|
795 |
-
* For new strings, create new entries.
|
796 |
-
*
|
797 |
-
* @param strings_object
|
798 |
-
*/
|
799 |
-
this.set_strings = function( strings_object ){
|
800 |
-
for ( var s in _this.strings ){
|
801 |
-
for ( var i in strings_object ){
|
802 |
-
if ( ( _this.strings[s].id == strings_object[i].id || ( ( _this.strings[s].original ) && _this.strings[s].original.trim() == strings_object[i].original.trim() ) )
|
803 |
-
&& (
|
804 |
-
( _this.strings[s].jquery_object == null ) ||
|
805 |
-
( typeof _this.strings[s].jquery_object == 'undefined' ) ||
|
806 |
-
( _this.strings[s].jquery_object != null && strings_object[i].jquery_object == null ) ||
|
807 |
-
( strings_object[i].jquery_object ==_this.strings[s].jquery_object )
|
808 |
-
)
|
809 |
-
&& _this.strings[s].block_type != 2
|
810 |
-
) {
|
811 |
-
strings_object[i].set = true;
|
812 |
-
_this.strings[s].set_string( strings_object[i] );
|
813 |
-
break;
|
814 |
-
}
|
815 |
-
}
|
816 |
-
}
|
817 |
-
for ( var i in strings_object ) {
|
818 |
-
if ( strings_object[i].hasOwnProperty( 'set' ) && strings_object[i].set == true ){
|
819 |
-
continue;
|
820 |
-
}
|
821 |
-
var string = new TRP_String( _this.language, _this.strings.length );
|
822 |
-
string.set_string( strings_object[i] );
|
823 |
-
_this.strings.push(string);
|
824 |
-
}
|
825 |
-
|
826 |
-
};
|
827 |
-
|
828 |
-
/**
|
829 |
-
* Remove trp_strings which match the id from this dictionary and has ancestor a newly created translation block
|
830 |
-
*
|
831 |
-
* @param id
|
832 |
-
*/
|
833 |
-
this.remove_strings_with_id_from_translation_block = function ( id ){
|
834 |
-
for ( var i in _this.strings ) {
|
835 |
-
if (_this.strings[i].id == id && _this.strings[i].jquery_object.parents( '.trp-create-translation-block' ).length > 0 ){
|
836 |
-
//remove from array
|
837 |
-
delete( _this.strings[i] );
|
838 |
-
}
|
839 |
-
}
|
840 |
-
};
|
841 |
-
|
842 |
-
/**
|
843 |
-
* Concatenate given strings with the existing list.
|
844 |
-
*
|
845 |
-
* @param new_strings
|
846 |
-
*/
|
847 |
-
this.set_on_screen_strings = function( new_strings ){
|
848 |
-
_this.strings = _this.strings.concat( new_strings );
|
849 |
-
};
|
850 |
-
|
851 |
-
/**
|
852 |
-
* Return a TRP_String entry for the given id.
|
853 |
-
*
|
854 |
-
* @param id
|
855 |
-
*/
|
856 |
-
this.get_string_by_id = function( id ){
|
857 |
-
for ( var i in _this.strings ) {
|
858 |
-
if (_this.strings[i].id == id) {
|
859 |
-
return _this.strings[i];
|
860 |
-
}
|
861 |
-
}
|
862 |
-
return null;
|
863 |
-
};
|
864 |
-
|
865 |
-
/**
|
866 |
-
* Return a TRP_String entry for the given original.
|
867 |
-
*
|
868 |
-
* @param original
|
869 |
-
* @returns {*}
|
870 |
-
*/
|
871 |
-
this.get_string_by_original = function ( original ){
|
872 |
-
for ( var i in _this.strings ){
|
873 |
-
if ( _this.strings[i].original.trim() == original.trim() ){
|
874 |
-
return _this.strings[i];
|
875 |
-
}
|
876 |
-
}
|
877 |
-
return {};
|
878 |
-
};
|
879 |
-
|
880 |
-
/**
|
881 |
-
* Place in translating textareas the string at given index in dictionary.
|
882 |
-
*
|
883 |
-
* @param index
|
884 |
-
*/
|
885 |
-
this.edit_string_index = function( index ){
|
886 |
-
if( index ) {
|
887 |
-
/* start modifications of the editor screen */
|
888 |
-
jQuery('.trp-save-string').attr('id', 'trp-save');
|
889 |
-
jQuery('.trp-language-name[data-trp-gettext-language-name]').text(jQuery('.trp-language-name[data-trp-default-language-name]').attr('data-trp-default-language-name'));
|
890 |
-
jQuery('#trp-gettext-original').hide();
|
891 |
-
jQuery('.trp-discard-on-default-language').hide();
|
892 |
-
jQuery('.trp-default-language textarea').attr('readonly', 'readonly');
|
893 |
-
/* end modifications of the editor screen */
|
894 |
-
_this.strings[index].edit_string();
|
895 |
-
}
|
896 |
-
};
|
897 |
-
|
898 |
-
/**
|
899 |
-
* Return strings organized in categories.
|
900 |
-
*
|
901 |
-
* Used in String selection dropdown.
|
902 |
-
*
|
903 |
-
* @returns {Array}
|
904 |
-
*/
|
905 |
-
this.get_categories = function (){
|
906 |
-
var categorized = [];
|
907 |
-
categorized[ 'Meta Information' ] = [];
|
908 |
-
categorized[ 'String List' ] = [];
|
909 |
-
for ( var i in _this.strings ){
|
910 |
-
if ( categorized[ _this.strings[i].node_type ] == undefined ) {
|
911 |
-
categorized[ _this.strings[i].node_type ] = [];
|
912 |
-
}
|
913 |
-
if ( _this.strings[i].original != '' ){
|
914 |
-
categorized[ _this.strings[i].node_type ].push( _this.strings[i] );
|
915 |
-
}
|
916 |
-
}
|
917 |
-
|
918 |
-
for ( var i in categorized ){
|
919 |
-
if ( categorized[i].length == 0 ){
|
920 |
-
delete categorized[i];
|
921 |
-
}
|
922 |
-
}
|
923 |
-
|
924 |
-
return categorized;
|
925 |
-
};
|
926 |
-
|
927 |
-
}
|
928 |
-
|
929 |
-
/**
|
930 |
-
* String original, translation and jquery object.
|
931 |
-
*/
|
932 |
-
function TRP_String( language, array_index ){
|
933 |
-
var _this = this;
|
934 |
-
var TRP_TRANSLATION_ID = 'data-trp-translate-id';
|
935 |
-
var TRP_NODE_TYPE = 'data-trp-node-type';
|
936 |
-
var TRP_NODE_DESCRIPTION = 'data-trp-node-description';
|
937 |
-
this.id = null;
|
938 |
-
this.original = null;
|
939 |
-
this.translated = null;
|
940 |
-
this.status = null;
|
941 |
-
this.node_type = trp_localized_text['dynamicstrings'];
|
942 |
-
this.node_description = '';
|
943 |
-
this.jquery_object = null;
|
944 |
-
this.language = language;
|
945 |
-
this.index = array_index;
|
946 |
-
this.slug = false;
|
947 |
-
this.slug_post_id = false;
|
948 |
-
|
949 |
-
/**
|
950 |
-
* Return string id, original and slug details
|
951 |
-
*
|
952 |
-
* Used in get translation request.
|
953 |
-
*
|
954 |
-
* @returns {{}}
|
955 |
-
*/
|
956 |
-
this.get_details = function(){
|
957 |
-
var details = {};
|
958 |
-
if ( _this.slug ){
|
959 |
-
details['slug'] = _this.slug;
|
960 |
-
details['slug_post_id'] = _this.slug_post_id;
|
961 |
-
}
|
962 |
-
details['id'] = _this.id;
|
963 |
-
details['original'] = _this.original;
|
964 |
-
return details;
|
965 |
-
};
|
966 |
-
|
967 |
-
/**
|
968 |
-
* Replace existing text from iframe with specified string
|
969 |
-
*
|
970 |
-
* @param text_to_set
|
971 |
-
* @param jquery_object
|
972 |
-
*/
|
973 |
-
this.set_text_in_iframe = function( text_to_set, jquery_object ){
|
974 |
-
if (text_to_set) {
|
975 |
-
var initial_value = jquery_object.text();
|
976 |
-
text_to_set = initial_value.replace(initial_value.trim(), text_to_set);
|
977 |
-
if ( jquery_object.attr( 'data-trp-attr' ) ){
|
978 |
-
jquery_object.children().attr( jquery_object.attr('data-trp-attr'), text_to_set );
|
979 |
-
}else if( jquery_object.attr( 'data-trp-button' ) ){
|
980 |
-
jquery_object.children('button').text(text_to_set);
|
981 |
-
}else {
|
982 |
-
if (jquery_object.text().trim() !== text_to_set.trim() ){
|
983 |
-
jquery_object.html( text_to_set );
|
984 |
-
}
|
985 |
-
}
|
986 |
-
}
|
987 |
-
};
|
988 |
-
|
989 |
-
/**
|
990 |
-
* Update string information. Also updates in page if available.
|
991 |
-
*
|
992 |
-
* @param new_settings
|
993 |
-
*/
|
994 |
-
this.set_string = function ( new_settings ){
|
995 |
-
_this.id = ( new_settings.hasOwnProperty ( 'id' ) ) ? new_settings.id : _this.id;
|
996 |
-
_this.original = ( new_settings.hasOwnProperty ( 'original' ) ) ? new_settings.original : _this.original;
|
997 |
-
_this.jquery_object = ( new_settings.hasOwnProperty ( 'jquery_object' ) ) ? new_settings.jquery_object : _this.jquery_object;
|
998 |
-
_this.block_type = ( new_settings.hasOwnProperty ( 'block_type' ) ) ? new_settings.block_type : _this.block_type;
|
999 |
-
if ( _this.block_type == 1 ){
|
1000 |
-
_this.node_description = trp_localized_text['translationblock'];
|
1001 |
-
}
|
1002 |
-
|
1003 |
-
if ( new_settings.hasOwnProperty ( 'new_translation_block' ) && new_settings.new_translation_block == true && _this.language == trp_on_screen_language ){
|
1004 |
-
_this.jquery_object = trpEditor.preview_iframe.find( "[" + TRP_TRANSLATION_ID + "='trp_creating_translation_block']" );
|
1005 |
-
_this.jquery_object.attr( TRP_TRANSLATION_ID, _this.id );
|
1006 |
-
_this.jquery_object = trpEditor.preview_iframe.find( "[" + TRP_TRANSLATION_ID + "='" + _this.id + "'" );
|
1007 |
-
|
1008 |
-
_this.jquery_object.addClass('translation-block');
|
1009 |
-
_this.node_type = trp_localized_text['stringlist'];
|
1010 |
-
_this.jquery_object.attr( TRP_NODE_TYPE, _this.node_type );
|
1011 |
-
|
1012 |
-
_this.node_type = trp_localized_text['stringlist'];
|
1013 |
-
if ( trp_language != trp_on_screen_language ) {
|
1014 |
-
_this.set_text_in_iframe( _this.original, _this.jquery_object );
|
1015 |
-
}else{
|
1016 |
-
_this.set_text_in_iframe( _this.translated, _this.jquery_object );
|
1017 |
-
}
|
1018 |
-
}
|
1019 |
-
|
1020 |
-
if ( _this.jquery_object && _this.block_type != 2 ) {
|
1021 |
-
_this.wrap_special_html_elements();
|
1022 |
-
if ( trp_language == trp_on_screen_language ) {
|
1023 |
-
var text_to_set = null;
|
1024 |
-
if (new_settings.hasOwnProperty('translated') && new_settings.translated != _this.translated) {
|
1025 |
-
text_to_set = decode_html ( new_settings.translated );
|
1026 |
-
}
|
1027 |
-
if (new_settings.hasOwnProperty('status') && new_settings.status == 0) {
|
1028 |
-
text_to_set = _this.original;
|
1029 |
-
}
|
1030 |
-
_this.set_text_in_iframe( text_to_set, _this.jquery_object );
|
1031 |
-
}
|
1032 |
-
|
1033 |
-
_this.jquery_object.on( 'mouseenter', '', _this.highlight );
|
1034 |
-
_this.jquery_object.on( 'mouseleave', '', _this.unhighlight );
|
1035 |
-
}
|
1036 |
-
|
1037 |
-
_this.status = ( new_settings.hasOwnProperty( 'status' ) ) ? new_settings.status : _this.status;
|
1038 |
-
_this.translated = ( new_settings.hasOwnProperty( 'translated' ) ) ? decode_html ( new_settings.translated ) : _this.translated;
|
1039 |
-
};
|
1040 |
-
|
1041 |
-
/**
|
1042 |
-
* Wrap buttons and placeholders so that we can display the pencil button and also replace with translation.
|
1043 |
-
*/
|
1044 |
-
this.wrap_special_html_elements = function(){
|
1045 |
-
if ( _this.jquery_object.parent().is('trp-highlight') ){
|
1046 |
-
// if the iframe lookup is triggered a second time, the same string will be recognized again as the image and jquery_object is set as an image, not the trp-highlight wrapping. Fix this by assigning it to parent if exists.
|
1047 |
-
_this.jquery_object = _this.jquery_object.parent();
|
1048 |
-
return;
|
1049 |
-
}
|
1050 |
-
var extra_attribute = false;
|
1051 |
-
if( _this.jquery_object.is('button') ) {
|
1052 |
-
extra_attribute = 'data-trp-button="true"';
|
1053 |
-
}else if ( ( _this.jquery_object.attr( 'type' ) == 'submit' || _this.jquery_object.attr( 'type' ) == 'button' ) ) {
|
1054 |
-
extra_attribute = 'data-trp-attr="value"';
|
1055 |
-
}else if ( ( _this.jquery_object.attr( 'type' ) == 'text' || _this.jquery_object.attr( 'type' ) == 'search' || _this.jquery_object.is( 'textarea' ) ) && ( typeof _this.jquery_object.attr( 'placeholder' ) != 'undefined' ) ) {
|
1056 |
-
extra_attribute = 'data-trp-attr="placeholder"';
|
1057 |
-
}else if ( _this.jquery_object.is( 'img' ) ){
|
1058 |
-
extra_attribute = 'data-trp-attr="alt"';
|
1059 |
-
}
|
1060 |
-
if ( extra_attribute !== false ) {
|
1061 |
-
_this.jquery_object.wrap('<trp-highlight ' + extra_attribute + '></trp-highlight>');
|
1062 |
-
_this.jquery_object = _this.jquery_object.parent();
|
1063 |
-
}
|
1064 |
-
};
|
1065 |
-
|
1066 |
-
|
1067 |
-
/**
|
1068 |
-
* Show the pencil and border the viewable string in Preview window.
|
1069 |
-
*/
|
1070 |
-
this.highlight = function (e){
|
1071 |
-
e.stopPropagation();
|
1072 |
-
var old_jquery_object = null;
|
1073 |
-
var tb_parent = _this.jquery_object.parents( '.trp-create-translation-block' );
|
1074 |
-
if ( tb_parent.length > 0 ){
|
1075 |
-
// we are creating a new block
|
1076 |
-
old_jquery_object = _this.jquery_object;
|
1077 |
-
_this.jquery_object = tb_parent.first();
|
1078 |
-
}
|
1079 |
-
|
1080 |
-
trpEditor.remove_pencil_icon();
|
1081 |
-
if ( ! trpEditor.edit_translation_button ){
|
1082 |
-
_this.jquery_object.prepend( trp_action_button_html );
|
1083 |
-
trpEditor.edit_translation_button = _this.jquery_object.children('trp-span');
|
1084 |
-
}else{
|
1085 |
-
trpEditor.maybe_overflow_fix(trpEditor.edit_translation_button);
|
1086 |
-
_this.jquery_object.prepend(trpEditor.edit_translation_button);
|
1087 |
-
}
|
1088 |
-
trpEditor.edit_translation_button.children( ).removeClass( 'trp-active-icon' );
|
1089 |
-
var merge_or_split = trpEditor.decide_if_merge_or_split( _this );
|
1090 |
-
if ( old_jquery_object ){
|
1091 |
-
// we are creating a new block
|
1092 |
-
merge_or_split = 'merge';
|
1093 |
-
}
|
1094 |
-
if ( merge_or_split != 'none' ) {
|
1095 |
-
trpEditor.edit_translation_button.children('trp-' + merge_or_split ).addClass( 'trp-active-icon' );
|
1096 |
-
}
|
1097 |
-
|
1098 |
-
trpEditor.make_sure_pencil_icon_is_inside_view( _this.jquery_object[0] );
|
1099 |
-
|
1100 |
-
if ( old_jquery_object ){
|
1101 |
-
// we are creating a new block
|
1102 |
-
_this.jquery_object = old_jquery_object;
|
1103 |
-
}
|
1104 |
-
trpEditor.edit_translation_button.off( 'click' );
|
1105 |
-
trpEditor.edit_translation_button.on( 'click', function(e){
|
1106 |
-
e.preventDefault();
|
1107 |
-
if ( trpEditor.change_tracker == null || trpEditor.change_tracker.check_unsaved_changes() ) {
|
1108 |
-
return;
|
1109 |
-
}
|
1110 |
-
|
1111 |
-
notDoingAjax = true;
|
1112 |
-
if( typeof jQuery.active != 'undefined' ){
|
1113 |
-
if( jQuery.active !== 0 )
|
1114 |
-
notDoingAjax = false;
|
1115 |
-
}
|
1116 |
-
|
1117 |
-
if( jQuery( 'option[value="'+_this.index+'"]', trpEditor.jquery_string_selector ).length != 0 && !jQuery('.trp-ajax-loader', trpEditor).is(":visible") && notDoingAjax ) {
|
1118 |
-
trpEditor.jquery_string_selector.val( _this.index ).trigger( 'change', true )
|
1119 |
-
}else{
|
1120 |
-
trpEditor.jquery_string_selector.trigger('trpSelectorNotChanged');
|
1121 |
-
}
|
1122 |
-
|
1123 |
-
if( jQuery( e.target ).closest( 'trp-split' ).length > 0 ){
|
1124 |
-
trpEditor.split_translation_block( _this );
|
1125 |
-
}
|
1126 |
-
// remove highlighting of possibly highlighted new translation block
|
1127 |
-
trpEditor.preview_iframe.contents().find('.trp-highlight.trp-create-translation-block').removeClass('trp-highlight trp-create-translation-block');
|
1128 |
-
if( jQuery( e.target ).closest( 'trp-merge' ).length > 0 ){
|
1129 |
-
trpEditor.prepare_merging( _this );
|
1130 |
-
}
|
1131 |
-
|
1132 |
-
|
1133 |
-
});
|
1134 |
-
if ( tb_parent.length == 0 ) {
|
1135 |
-
jQuery(this).addClass('trp-highlight');
|
1136 |
-
}
|
1137 |
-
|
1138 |
-
};
|
1139 |
-
|
1140 |
-
/**
|
1141 |
-
* Remove border for viewable string
|
1142 |
-
*/
|
1143 |
-
this.unhighlight = function (){
|
1144 |
-
jQuery( this ).removeClass( 'trp-highlight' );
|
1145 |
-
};
|
1146 |
-
|
1147 |
-
/**
|
1148 |
-
* Show string in translatable textareas.
|
1149 |
-
*
|
1150 |
-
* @returns {boolean}
|
1151 |
-
*/
|
1152 |
-
this.edit_string = function(){
|
1153 |
-
trpEditor.edit_strings( _this, _this.index );
|
1154 |
-
return false; // cancel navigating to another link
|
1155 |
-
};
|
1156 |
-
|
1157 |
-
/**
|
1158 |
-
* Extract fom raw html code the information for a TRP_String.
|
1159 |
-
*
|
1160 |
-
* @param raw_string
|
1161 |
-
*/
|
1162 |
-
this.set_raw_string = function( raw_string ){
|
1163 |
-
_this.jquery_object = jQuery( raw_string );
|
1164 |
-
var translation_id_attribute = _this.jquery_object.attr( TRP_TRANSLATION_ID );
|
1165 |
-
if ( translation_id_attribute ){
|
1166 |
-
_this.id = translation_id_attribute;
|
1167 |
-
_this.node_type = _this.jquery_object.attr( TRP_NODE_TYPE );
|
1168 |
-
_this.node_description = _this.jquery_object.attr( TRP_NODE_DESCRIPTION );
|
1169 |
-
if ( _this.jquery_object.attr( 'name' ) == 'trp-slug' ){
|
1170 |
-
_this.slug = true;
|
1171 |
-
_this.slug_post_id = _this.jquery_object.attr( 'post-id' );
|
1172 |
-
_this.original = _this.jquery_object.attr( 'original' );
|
1173 |
-
}
|
1174 |
-
}else{
|
1175 |
-
_this.original = _this.jquery_object.text();
|
1176 |
-
}
|
1177 |
-
};
|
1178 |
-
|
1179 |
-
}
|
1180 |
-
|
1181 |
-
/**
|
1182 |
-
* String list dropdown handler
|
1183 |
-
*/
|
1184 |
-
function TRP_Lister( current_dictionary ) {
|
1185 |
-
|
1186 |
-
var _this = this;
|
1187 |
-
var jquery_string_selector = trpEditor.jquery_string_selector;
|
1188 |
-
var dictionary = current_dictionary;
|
1189 |
-
var category_array;
|
1190 |
-
|
1191 |
-
/*
|
1192 |
-
* Save current selected option in the dropdown. Should be called before we make changes in the dropdown.
|
1193 |
-
*/
|
1194 |
-
this.cache_selected_option = function(){
|
1195 |
-
var selected_option = jQuery( 'option:selected', jquery_string_selector ).val();
|
1196 |
-
if ( typeof selected_option != "undefined" && selected_option != "" ) {
|
1197 |
-
cached_selected_option = selected_option;
|
1198 |
-
}
|
1199 |
-
};
|
1200 |
-
|
1201 |
-
/*
|
1202 |
-
* Restore saved cached option. Should be called after we make changes in the dropdown. Otherwise the selected option will be changed to default.
|
1203 |
-
*/
|
1204 |
-
this.set_cached_option = function(){
|
1205 |
-
if ( typeof cached_selected_option != "undefined" && cached_selected_option != "" ){
|
1206 |
-
jquery_string_selector.val( cached_selected_option );
|
1207 |
-
}
|
1208 |
-
};
|
1209 |
-
|
1210 |
-
/**
|
1211 |
-
* A string has been selected from the list.
|
1212 |
-
*/
|
1213 |
-
this.select_string = function( event, keep_pencil_icon ){
|
1214 |
-
/* this is how we differentiate gettext strings from normal strings */
|
1215 |
-
trp_gettext_id = jQuery(this).find(':selected').attr('data-trp-gettext-id');
|
1216 |
-
if( trp_gettext_id ) {
|
1217 |
-
_this.set_textareas_with_gettext(trp_gettext_id);
|
1218 |
-
}
|
1219 |
-
else {
|
1220 |
-
dictionary.edit_string_index(jquery_string_selector.val());
|
1221 |
-
}
|
1222 |
-
if ( keep_pencil_icon === undefined ){
|
1223 |
-
trpEditor.remove_pencil_icon();
|
1224 |
-
}
|
1225 |
-
};
|
1226 |
-
|
1227 |
-
/**
|
1228 |
-
* Refresh list with new strings.
|
1229 |
-
*/
|
1230 |
-
this.reload_list = function (){
|
1231 |
-
_this.cache_selected_option();
|
1232 |
-
|
1233 |
-
category_array = dictionary.get_categories();
|
1234 |
-
jQuery( "#trp-gettext-strings-optgroup", jquery_string_selector ).prevAll(":not(.default-option)").remove();
|
1235 |
-
/* add the normal strings before the trp-gettext-strings-optgroup optiongroup so it doesn't matter which ajax finishes first */
|
1236 |
-
for ( var category in category_array ){
|
1237 |
-
if ( category == 'undefined' ){
|
1238 |
-
continue;
|
1239 |
-
}
|
1240 |
-
jQuery( "#trp-gettext-strings-optgroup", jquery_string_selector ).before( jQuery( '<optgroup></optgroup>' ).attr( 'label', _this.format_category_name( category ) ) );
|
1241 |
-
for ( var i in category_array[category] ) {
|
1242 |
-
if ( category_array[category][i].block_type == 2 ){
|
1243 |
-
continue;
|
1244 |
-
}
|
1245 |
-
var original = decode_html( category_array[category][i].original );
|
1246 |
-
var description = '';
|
1247 |
-
if ( category_array[category][i].node_description != undefined && category_array[category][i].node_description != '' ){
|
1248 |
-
description = '(' + category_array[category][i].node_description + ')';
|
1249 |
-
}
|
1250 |
-
if ( original ) {
|
1251 |
-
jQuery( "#trp-gettext-strings-optgroup", jquery_string_selector ).before(jQuery('<option></option>').attr( 'value', category_array[category][i].index).text( _this.format_text( original )).attr( 'title', description ) );
|
1252 |
-
}
|
1253 |
-
}
|
1254 |
-
}
|
1255 |
-
jquery_string_selector.on( 'change', _this.select_string );
|
1256 |
-
|
1257 |
-
_this.set_cached_option();
|
1258 |
-
};
|
1259 |
-
|
1260 |
-
|
1261 |
-
this.add_gettext_strings = function (){
|
1262 |
-
_this.cache_selected_option();
|
1263 |
-
|
1264 |
-
gettext_category = dictionary;
|
1265 |
-
jQuery( "#trp-gettext-strings-optgroup", jquery_string_selector ).nextAll().remove();
|
1266 |
-
for ( var i in gettext_category){
|
1267 |
-
var original = gettext_category[i].original;
|
1268 |
-
jQuery( "#trp-gettext-strings-optgroup", jquery_string_selector ).after(jQuery('<option></option>').attr( 'value', 'gettext-'+gettext_category[i].id ).text( _this.format_text( original )).attr( 'title', gettext_category[i].domain ).attr( 'data-trp-gettext-id', gettext_category[i].id ) );
|
1269 |
-
}
|
1270 |
-
|
1271 |
-
_this.set_cached_option();
|
1272 |
-
};
|
1273 |
-
|
1274 |
-
/**
|
1275 |
-
* Escape tags for a given string
|
1276 |
-
*
|
1277 |
-
* @param string
|
1278 |
-
*/
|
1279 |
-
this.escape_html = function ( string ){
|
1280 |
-
var escape = document.createElement('textarea');
|
1281 |
-
escape.textContent = string;
|
1282 |
-
return escape.innerHTML;
|
1283 |
-
};
|
1284 |
-
|
1285 |
-
/**
|
1286 |
-
* Cut the length of text displayed in string dropdown list.
|
1287 |
-
*/
|
1288 |
-
this.format_text = function ( original ){
|
1289 |
-
var suspension_dots = '...';
|
1290 |
-
if ( original.length <= 90){
|
1291 |
-
suspension_dots = '';
|
1292 |
-
}
|
1293 |
-
|
1294 |
-
return _this.escape_html( original.substring(0, 90) ) + suspension_dots ;
|
1295 |
-
};
|
1296 |
-
|
1297 |
-
/**
|
1298 |
-
* Format the name for the option group in string dropdown list.
|
1299 |
-
*/
|
1300 |
-
this.format_category_name = function( name ){
|
1301 |
-
name = name.replace(/_/g, ' ');
|
1302 |
-
name = name.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
|
1303 |
-
|
1304 |
-
return name;
|
1305 |
-
};
|
1306 |
-
|
1307 |
-
this.set_textareas_with_gettext = function( string_id ){
|
1308 |
-
|
1309 |
-
/* don't do anything if there is an unsaved change */
|
1310 |
-
if ( trpEditor.change_tracker == null || trpEditor.change_tracker.check_unsaved_changes() ) {
|
1311 |
-
return;
|
1312 |
-
}
|
1313 |
-
|
1314 |
-
/* start modifications of the editor screen */
|
1315 |
-
jQuery( '#trp-gettext-original' ).show();
|
1316 |
-
jQuery('.trp-save-string').attr('id', 'trp-save-gettext');
|
1317 |
-
jQuery( '.trp-language-name[data-trp-gettext-language-name]').text(jQuery( '.trp-language-name[data-trp-gettext-language-name]').attr('data-trp-gettext-language-name'));
|
1318 |
-
jQuery( '.trp-discard-on-default-language' ).show();
|
1319 |
-
/* end modifications of the editor screen */
|
1320 |
-
|
1321 |
-
jQuery( gettext_dictionaries[trp_language] ).each(function(){
|
1322 |
-
if( this.id == string_id ){
|
1323 |
-
original = this.original;
|
1324 |
-
domain = this.domain;
|
1325 |
-
}
|
1326 |
-
});
|
1327 |
-
|
1328 |
-
jQuery( '#trp-controls .trp-language-text textarea' ).each(function(){
|
1329 |
-
textarea = this;
|
1330 |
-
|
1331 |
-
if( jQuery(textarea).parent().hasClass('trp-default-language') ) {
|
1332 |
-
jQuery(textarea).removeAttr('readonly');
|
1333 |
-
}
|
1334 |
-
|
1335 |
-
if( jQuery(textarea).parent().hasClass('trp-gettext-original-language') ){
|
1336 |
-
jQuery( textarea ).val( original );
|
1337 |
-
}
|
1338 |
-
else{
|
1339 |
-
textarea_language = jQuery( textarea ).attr("data-trp-language-code");
|
1340 |
-
jQuery( gettext_dictionaries[textarea_language] ).each(function(){
|
1341 |
-
if( this.original == original && this.domain == domain ){
|
1342 |
-
jQuery( textarea ).val( this.translated );
|
1343 |
-
jQuery( textarea ).attr( 'data-trp-translate-id', this.id );
|
1344 |
-
}
|
1345 |
-
});
|
1346 |
-
}
|
1347 |
-
});
|
1348 |
-
};
|
1349 |
-
|
1350 |
-
this.set_texts_select_to_gettext = function( jquery_object ){
|
1351 |
-
if ( trpEditor.change_tracker == null || trpEditor.change_tracker.check_unsaved_changes() ) {
|
1352 |
-
return;
|
1353 |
-
}
|
1354 |
-
string_id = jquery_object.attr('data-trpgettextoriginal');
|
1355 |
-
|
1356 |
-
notDoingAjax = true;
|
1357 |
-
if( typeof jQuery.active != 'undefined' ){
|
1358 |
-
if( jQuery.active !== 0 )
|
1359 |
-
notDoingAjax = false;
|
1360 |
-
}
|
1361 |
-
if( jQuery( 'option[value="gettext-'+string_id+'"]', trpEditor.jquery_string_selector ).length != 0 && !jQuery('.trp-ajax-loader', trpEditor).is(":visible") && notDoingAjax ) {
|
1362 |
-
trpEditor.jquery_string_selector.val('gettext-' + string_id).trigger('change', true);
|
1363 |
-
}else{
|
1364 |
-
trpEditor.jquery_string_selector.trigger('trpSelectorNotChanged');
|
1365 |
-
}
|
1366 |
-
}
|
1367 |
-
|
1368 |
-
}
|
1369 |
-
|
1370 |
-
/**
|
1371 |
-
* Track changes of the translation textareas.
|
1372 |
-
*/
|
1373 |
-
function TRP_Change_Tracker( _original_textarea, _translated_textareas ){
|
1374 |
-
|
1375 |
-
var _this = this;
|
1376 |
-
var changes_saved = true;
|
1377 |
-
var original_textarea = _original_textarea;
|
1378 |
-
/* clone the textareas here so we don;t actually modify the translated_textareas object in the TRP_Editor */
|
1379 |
-
var check_translated_textareas = jQuery.extend({}, _translated_textareas);
|
1380 |
-
/* make the change tracker aware of the default language textarea. we need this when editing gettext strings */
|
1381 |
-
check_translated_textareas[original_textarea.attr('data-trp-language-code')] = jQuery( '#trp-original' );
|
1382 |
-
|
1383 |
-
/**
|
1384 |
-
* Check if there are unsaved translations in textareas.
|
1385 |
-
*
|
1386 |
-
* Show animation in case it does.
|
1387 |
-
*
|
1388 |
-
* @returns {boolean}
|
1389 |
-
*/
|
1390 |
-
this.check_unsaved_changes = function(){
|
1391 |
-
|
1392 |
-
if ( !changes_saved ){
|
1393 |
-
//open other languages if unsaved changes below
|
1394 |
-
if ( jQuery ( '.trp-unsaved-changes.trp-other-language').last().css( 'display' ) == 'none' ){
|
1395 |
-
trpEditor.toggle_languages();
|
1396 |
-
}
|
1397 |
-
|
1398 |
-
jQuery ( '.trp-unsaved-changes textarea').css ( 'backgroundColor', 'red' ).animate({
|
1399 |
-
backgroundColor: "#eee"
|
1400 |
-
}, 1000 );
|
1401 |
-
jQuery ( '#trp-unsaved-changes-warning-message').css ( 'backgroundColor', 'red' ).animate({
|
1402 |
-
backgroundColor: "#fff"
|
1403 |
-
}, 1000 );
|
1404 |
-
|
1405 |
-
var unsaved_changes_warning_message = jQuery ( '#trp-unsaved-changes-warning-message')
|
1406 |
-
unsaved_changes_warning_message.css("display","inline");
|
1407 |
-
unsaved_changes_warning_message.delay(3000).fadeOut(400);
|
1408 |
-
|
1409 |
-
}
|
1410 |
-
return !changes_saved;
|
1411 |
-
};
|
1412 |
-
|
1413 |
-
/**
|
1414 |
-
* Disable restrictions for saving.
|
1415 |
-
*/
|
1416 |
-
this.mark_changes_saved = function(){
|
1417 |
-
changes_saved = true;
|
1418 |
-
_this.initialize();
|
1419 |
-
};
|
1420 |
-
|
1421 |
-
/**
|
1422 |
-
* Enable restrictions for saving.
|
1423 |
-
* @param key
|
1424 |
-
*/
|
1425 |
-
this.show_unsaved_changes = function( key ){
|
1426 |
-
check_translated_textareas[key].parent().addClass('trp-unsaved-changes');
|
1427 |
-
};
|
1428 |
-
|
1429 |
-
/**
|
1430 |
-
* Stop listening for changes.
|
1431 |
-
*/
|
1432 |
-
this.destroy = function(){
|
1433 |
-
jQuery('.trp-language-text:not(.trp-default-text)').off();
|
1434 |
-
};
|
1435 |
-
|
1436 |
-
/**
|
1437 |
-
* Change was detected in textareas.
|
1438 |
-
*/
|
1439 |
-
this.change_detected = function(){
|
1440 |
-
if( jQuery("#trp-gettext-original-textarea").is(":visible") ){
|
1441 |
-
//gettext case here
|
1442 |
-
if ( jQuery("#trp-gettext-original-textarea").val() == '' ){
|
1443 |
-
return;
|
1444 |
-
}
|
1445 |
-
}
|
1446 |
-
else{
|
1447 |
-
//normal string case here
|
1448 |
-
if ( original_textarea.val() == '' ){
|
1449 |
-
return;
|
1450 |
-
}
|
1451 |
-
}
|
1452 |
-
var id = this.id.replace( 'trp-translated-', '' );
|
1453 |
-
if( id == trpEditor.original_textarea.attr('id') )
|
1454 |
-
id = trpEditor.original_textarea.attr('data-trp-language-code');
|
1455 |
-
jQuery( this ).off();
|
1456 |
-
_this.show_unsaved_changes( id );
|
1457 |
-
changes_saved = false;
|
1458 |
-
};
|
1459 |
-
|
1460 |
-
/**
|
1461 |
-
* Set event listeners on translation textareas.
|
1462 |
-
*/
|
1463 |
-
this.initialize = function(){
|
1464 |
-
|
1465 |
-
for ( var key in check_translated_textareas ) {
|
1466 |
-
check_translated_textareas[key].parent().removeClass('trp-unsaved-changes');
|
1467 |
-
}
|
1468 |
-
jQuery('.trp-language-text:not(.trp-default-text) textarea').off().on('input propertychange paste', _this.change_detected );
|
1469 |
-
};
|
1470 |
-
|
1471 |
-
/**
|
1472 |
-
* Restore initial translation.
|
1473 |
-
*/
|
1474 |
-
this.discard_changes = function( ){
|
1475 |
-
var language = jQuery(this).parent().attr( 'id' ).replace( 'trp-language-', '' );
|
1476 |
-
|
1477 |
-
if( jQuery("#trp-gettext-original-textarea").is(":visible") ){
|
1478 |
-
//gettext case here
|
1479 |
-
var original = jQuery("#trp-gettext-original-textarea").val();
|
1480 |
-
for ( var i in gettext_dictionaries[language] ){
|
1481 |
-
if ( gettext_dictionaries[language][i].original.trim() == jQuery("#trp-gettext-original-textarea").val().trim() ){
|
1482 |
-
string = gettext_dictionaries[language][i];
|
1483 |
-
}
|
1484 |
-
}
|
1485 |
-
}
|
1486 |
-
else{
|
1487 |
-
//normal string case here
|
1488 |
-
var dictionaries = trpEditor.get_dictionaries();
|
1489 |
-
var original = original_textarea.val();
|
1490 |
-
var string = dictionaries[language].get_string_by_original(original);
|
1491 |
-
}
|
1492 |
-
check_translated_textareas[language].val( string.translated ).change();
|
1493 |
-
check_translated_textareas[language].on('input propertychange paste', _this.change_detected );
|
1494 |
-
check_translated_textareas[language].parent().removeClass('trp-unsaved-changes');
|
1495 |
-
changes_saved = true;
|
1496 |
-
for ( var key in check_translated_textareas ){
|
1497 |
-
if ( check_translated_textareas[key].parent().hasClass( 'trp-unsaved-changes' ) ){
|
1498 |
-
changes_saved = false;
|
1499 |
-
}
|
1500 |
-
}
|
1501 |
-
};
|
1502 |
-
|
1503 |
-
/**
|
1504 |
-
* Set event listeners for discard changes button.
|
1505 |
-
*/
|
1506 |
-
this.add_event_handlers = function(){
|
1507 |
-
_this.initialize();
|
1508 |
-
jQuery( '.trp-discard-changes' ).on('click', _this.discard_changes );
|
1509 |
-
|
1510 |
-
};
|
1511 |
-
|
1512 |
-
_this.add_event_handlers();
|
1513 |
-
}
|
1514 |
-
|
1515 |
-
|
1516 |
-
|
1517 |
-
var trpEditor;
|
1518 |
-
|
1519 |
-
// Initialize the Translate Press Editor after jQuery is ready
|
1520 |
-
jQuery( function() {
|
1521 |
-
|
1522 |
-
trpEditor = new TRP_Editor();
|
1523 |
-
|
1524 |
-
});
|
1525 |
-
|
1526 |
-
|
1527 |
-
|
1528 |
-
/* handle gettext texts */
|
1529 |
-
var gettext_dictionaries = null;
|
1530 |
-
|
1531 |
-
/* initial load and populate the dropdown with gettext strings */
|
1532 |
-
function trp_initialize_gettext() {
|
1533 |
-
/* get the gettext texts ids from the page and pass them to a ajax call to construct the dictonaries */
|
1534 |
-
var gettext_strings = jQuery( '#trp-preview-iframe').contents().find( '[data-trpgettextoriginal]' );
|
1535 |
-
gettext_string_ids = [];
|
1536 |
-
gettext_strings.each( function(){
|
1537 |
-
gettext_string_ids.push( jQuery(this).attr('data-trpgettextoriginal'));
|
1538 |
-
});
|
1539 |
-
|
1540 |
-
jQuery.ajax({
|
1541 |
-
url: trp_ajax_url,
|
1542 |
-
type: 'post',
|
1543 |
-
dataType: 'json',
|
1544 |
-
data: {
|
1545 |
-
action: 'trp_gettext_get_translations',
|
1546 |
-
security: trp_localized_text['gettextgettranslationsnonce'],
|
1547 |
-
language: trp_language,
|
1548 |
-
gettext_string_ids: JSON.stringify( gettext_string_ids )
|
1549 |
-
},
|
1550 |
-
success: function (response) {
|
1551 |
-
gettext_dictionaries = response;
|
1552 |
-
trp_lister = new TRP_Lister( gettext_dictionaries[trp_language] );
|
1553 |
-
trp_lister.add_gettext_strings();
|
1554 |
-
jQuery( '#trp-string-saved-ajax-loader' ).css('display', 'none');
|
1555 |
-
},
|
1556 |
-
error: function(errorThrown){
|
1557 |
-
console.log( 'TranslatePress AJAX Request Error' );
|
1558 |
-
jQuery( '#trp-string-saved-ajax-loader' ).css('display', 'none');
|
1559 |
-
}
|
1560 |
-
|
1561 |
-
});
|
1562 |
-
|
1563 |
-
/* handle clicking the edit icon on gettext strings */
|
1564 |
-
trp_lister = new TRP_Lister( [] );
|
1565 |
-
jQuery(jQuery( '#trp-preview-iframe').contents()).on( 'mouseenter', '[data-trpgettextoriginal]', function(){
|
1566 |
-
if( gettext_dictionaries == null )
|
1567 |
-
return;//the strings haven't been loaded so don't do nothing yet
|
1568 |
-
|
1569 |
-
gettext_string = this;
|
1570 |
-
|
1571 |
-
if ( ! trpEditor.edit_translation_button ){
|
1572 |
-
trpEditor.edit_translation_button = jQuery( trp_action_button_html );
|
1573 |
-
}
|
1574 |
-
trpEditor.edit_translation_button.children( ).removeClass( 'trp-active-icon' );
|
1575 |
-
trpEditor.maybe_overflow_fix(trpEditor.edit_translation_button);
|
1576 |
-
|
1577 |
-
if ( jQuery(this).attr( 'type' ) == 'submit' || jQuery(this).attr( 'type' ) == 'button' || jQuery(this).attr('type') == 'search' || jQuery(this).attr('placeholder') || jQuery(this).attr('alt')) {
|
1578 |
-
if( jQuery(this).parent('trp-wrap').length == 0 )
|
1579 |
-
jQuery(this).wrap('<trp-wrap class="trpgettext-wrap"></trp-wrap>');
|
1580 |
-
jQuery(this).parent().prepend(trpEditor.edit_translation_button);
|
1581 |
-
}
|
1582 |
-
else {
|
1583 |
-
jQuery(this).prepend(trpEditor.edit_translation_button);
|
1584 |
-
}
|
1585 |
-
trpEditor.make_sure_pencil_icon_is_inside_view ( jQuery(this)[0] );
|
1586 |
-
trpEditor.edit_translation_button.off( 'click' );
|
1587 |
-
trpEditor.edit_translation_button.on( 'click', function(e){
|
1588 |
-
// remove highlighting of possibly highlighted new translation block
|
1589 |
-
trpEditor.preview_iframe.contents().find('.trp-highlight.trp-create-translation-block').removeClass('trp-highlight trp-create-translation-block');
|
1590 |
-
e.preventDefault();
|
1591 |
-
e.stopPropagation();
|
1592 |
-
trp_lister.set_texts_select_to_gettext( jQuery(gettext_string) );
|
1593 |
-
});
|
1594 |
-
jQuery( this ).addClass( 'trp-highlight' );
|
1595 |
-
|
1596 |
-
});
|
1597 |
-
|
1598 |
-
jQuery(jQuery( '#trp-preview-iframe').contents()).on( 'mouseleave', '[data-trpgettextoriginal]', function(){
|
1599 |
-
jQuery( this ).removeClass( 'trp-highlight' );
|
1600 |
-
});
|
1601 |
-
|
1602 |
-
}
|
1603 |
-
|
1604 |
-
jQuery(function(){
|
1605 |
-
|
1606 |
-
jQuery( "#trp-preview-iframe" ).load( trp_initialize_gettext );
|
1607 |
-
jQuery( "#trp-preview-iframe" ).on( 'trp_page_loaded', trp_initialize_gettext );
|
1608 |
-
|
1609 |
-
/* handle saving gettext strings */
|
1610 |
-
jQuery( '#trp-editor' ).on( 'click', '#trp-save-gettext', function(){
|
1611 |
-
strings_to_save = {};
|
1612 |
-
modified = false;
|
1613 |
-
original = jQuery('#trp-gettext-original-textarea').val();
|
1614 |
-
if ( original != "" ) {
|
1615 |
-
|
1616 |
-
jQuery( '#trp-editor textarea[data-trp-translate-id]' ).each( function(){
|
1617 |
-
id = jQuery(this).attr('data-trp-translate-id');
|
1618 |
-
language = jQuery(this).attr('data-trp-language-code');
|
1619 |
-
if( trp_language == language ){
|
1620 |
-
gettext_id_in_dom = id;
|
1621 |
-
}
|
1622 |
-
translated = jQuery(this).val();
|
1623 |
-
jQuery.each(gettext_dictionaries[language], function(i, string){
|
1624 |
-
if( string.id == id ){
|
1625 |
-
if ( string.translated != translated ) {
|
1626 |
-
modified = true;
|
1627 |
-
gettext_dictionaries[language][i].translated = translated;
|
1628 |
-
var status = 2;
|
1629 |
-
if (translated.trim() == '') {
|
1630 |
-
status = 0;
|
1631 |
-
}
|
1632 |
-
if (typeof strings_to_save[language] == 'undefined') {
|
1633 |
-
strings_to_save[language] = [];
|
1634 |
-
}
|
1635 |
-
|
1636 |
-
if( !domain )
|
1637 |
-
domain = 'default';
|
1638 |
-
|
1639 |
-
strings_to_save[language].push({id: id, original: original, translated: translated, domain: domain, status: status});
|
1640 |
-
}
|
1641 |
-
}
|
1642 |
-
});
|
1643 |
-
});
|
1644 |
-
}
|
1645 |
-
|
1646 |
-
if ( modified ){
|
1647 |
-
trpEditor.saving_translation_ui();
|
1648 |
-
jQuery.ajax({
|
1649 |
-
url: trp_ajax_url,
|
1650 |
-
type: 'post',
|
1651 |
-
dataType: 'json',
|
1652 |
-
data: {
|
1653 |
-
action: 'trp_gettext_save_translations',
|
1654 |
-
security: trp_localized_text['gettextsavetranslationsnonce'],
|
1655 |
-
gettext_strings: JSON.stringify( strings_to_save )
|
1656 |
-
},
|
1657 |
-
success: function (response) {
|
1658 |
-
if(gettext_id_in_dom) {
|
1659 |
-
jQuery.get(document.getElementById("trp-preview-iframe").contentWindow.location.href, function (response) {
|
1660 |
-
replacement = jQuery(response).find('[data-trpgettextoriginal="' + gettext_id_in_dom + '"]').first();
|
1661 |
-
if( replacement.length != 0 )
|
1662 |
-
jQuery('#trp-preview-iframe').contents().find('[data-trpgettextoriginal="' + gettext_id_in_dom + '"]').replaceWith(replacement);
|
1663 |
-
trpEditor.saved_translation_ui();
|
1664 |
-
});
|
1665 |
-
}
|
1666 |
-
else
|
1667 |
-
trpEditor.saved_translation_ui();
|
1668 |
-
},
|
1669 |
-
error: function(errorThrown){
|
1670 |
-
console.log( 'TranslatePress AJAX Request Error' );
|
1671 |
-
}
|
1672 |
-
});
|
1673 |
-
}else{
|
1674 |
-
trpEditor.saved_translation_ui();
|
1675 |
-
}
|
1676 |
-
});
|
1677 |
-
|
1678 |
-
});
|
1679 |
-
|
1680 |
-
jQuery( function(){
|
1681 |
-
trpEditor.jquery_string_selector.on('trpSelectorNotChanged', function(){
|
1682 |
-
if( !jQuery('#trp-preview').hasClass('trp-still-loading-strings') ) {
|
1683 |
-
jQuery('#trp-preview').addClass('trp-still-loading-strings');
|
1684 |
-
setTimeout(function () {
|
1685 |
-
jQuery('#trp-preview').removeClass('trp-still-loading-strings')
|
1686 |
-
}, 2000 );
|
1687 |
-
}
|
1688 |
-
});
|
1689 |
-
|
1690 |
-
// WooCommerce compatibility. Sometimes wc_fragments were cached in the editor.
|
1691 |
-
window.sessionStorage.removeItem('wc_fragments');
|
1692 |
-
});
|
1693 |
-
|
1694 |
-
|
1695 |
-
/**
|
1696 |
-
* Return given text converted to html.
|
1697 |
-
*
|
1698 |
-
* Useful for decoding special characters into displayable form.
|
1699 |
-
*
|
1700 |
-
* @param html
|
1701 |
-
* @returns {*}
|
1702 |
-
*/
|
1703 |
-
function decode_html( html ) {
|
1704 |
-
var txt = document.createElement( "textarea" );
|
1705 |
-
txt.innerHTML = html;
|
1706 |
-
return txt.value;
|
1707 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/trp-editor.js
CHANGED
@@ -679,7 +679,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uti
|
|
679 |
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
680 |
|
681 |
"use strict";
|
682 |
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./translation-input.vue */ \"./assets/src/js/components/translation-input.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['selectedIndexesArray', 'dictionary', 'currentLanguage', 'onScreenLanguage', 'languageNames', 'settings', 'showChangesUnsavedMessage', 'editorStrings', 'flagsPath', 'iframe'],\n data: function data() {\n return {\n languages: [],\n completeLanguageNames: Object.assign({\n 'original': 'Original String'\n }, this.languageNames),\n othersButtonPositionOffset: 1,\n showOtherLanguages: false,\n orderedLanguages: [],\n showImageIcon: true\n };\n },\n components: {\n translationInput: _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n },\n mounted: function mounted() {\n this.determineLanguageOrder();\n this.addKeyboardShortcutsListener();\n },\n updated: function updated() {\n // place the cursor in the first textarea or input for translation\n var translationSection = document.getElementById('trp-translation-section');\n\n if (translationSection) {\n var focusableSelectors = ['textarea:not([readonly])', 'input[type=\"text\"]:not([readonly])'];\n\n for (var i = 0; i < focusableSelectors.length; i++) {\n var focusable = document.getElementById('trp-translation-section').querySelector(focusableSelectors[i]);\n\n if (focusable) {\n focusable.focus();\n break;\n }\n }\n }\n },\n watch: {\n selectedIndexesArray: function selectedIndexesArray() {\n this.updateLanguages();\n },\n onScreenLanguage: function onScreenLanguage() {\n this.determineLanguageOrder();\n this.updateLanguages();\n }\n },\n computed: {\n othersButtonPosition: function othersButtonPosition() {\n if (this.currentLanguage === this.settings['default-language'] || this.settings['translation-languages'].length <= 2) {\n // don't display it\n return 999;\n } else {\n return this.othersButtonPositionOffset;\n }\n }\n },\n methods: {\n determineLanguageOrder: function determineLanguageOrder() {\n var self = this;\n var filteredLanguages = this.settings['translation-languages'].filter(function (language, index, array) {\n // all languages except default and current or on screen language.\n return self.settings['default-language'] !== language && self.onScreenLanguage !== language;\n });\n this.orderedLanguages = [];\n this.orderedLanguages.push(this.settings['default-language']);\n if (this.onScreenLanguage !== '') this.orderedLanguages.push(this.onScreenLanguage);\n this.orderedLanguages = this.orderedLanguages.concat(filteredLanguages);\n },\n updateLanguages: function updateLanguages() {\n this.languages = [];\n var self = this;\n var defaultLanguage = this.settings['default-language'];\n var translateToDefault = false;\n this.showImageIcon = false;\n this.othersButtonPositionOffset = 1;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[defaultLanguage]) translateToDefault = true;\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].attribute === 'src') self.showImageIcon = true;\n });\n\n if (translateToDefault) {\n this.languages.push('original');\n this.othersButtonPositionOffset++;\n }\n\n this.languages = this.languages.concat(this.orderedLanguages);\n },\n discardChanges: function discardChanges(selectedIndex, languageCode) {\n this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation = this.dictionary[selectedIndex].translationsArray[languageCode].translated;\n this.$emit('discarded-changes');\n },\n hasUnsavedChanges: function hasUnsavedChanges(selectedIndex, languageCode) {\n return this.dictionary[selectedIndex].translationsArray[languageCode].translated !== this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n },\n discardAll: function discardAll() {\n var self = this;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n self.discardChanges(selectedIndex, languageCode);\n }\n });\n });\n\n if (this.$parent.mergingString === true) {\n this.$parent.selectedString = null;\n var previouslyHighlighted = this.iframe.getElementsByClassName('trp-create-translation-block');\n\n if (previouslyHighlighted.length > 0) {\n var i;\n\n for (i = 0; i < previouslyHighlighted.length; i++) {\n previouslyHighlighted[i].classList.remove('trp-highlight');\n previouslyHighlighted[i].classList.remove('trp-create-translation-block');\n }\n }\n\n this.$parent.mergingString = false;\n this.$parent.mergeData = [];\n }\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + ALT + Z\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey && e.keyCode === 90) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_discard_all_changes_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_discard_all_changes_event', this.discardAll);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT80OWJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlDQTtBQUNBO0FBQ0EsVUFDQSxzQkFEQSxFQUVBLFlBRkEsRUFHQSxpQkFIQSxFQUlBLGtCQUpBLEVBS0EsZUFMQSxFQU1BLFVBTkEsRUFPQSwyQkFQQSxFQVFBLGVBUkEsRUFTQSxXQVRBLEVBVUEsUUFWQSxDQURBO0FBYUEsTUFiQSxrQkFhQTtBQUNBO0FBQ0EsbUJBREE7QUFFQTtBQUFBO0FBQUEsNEJBRkE7QUFHQSxtQ0FIQTtBQUlBLCtCQUpBO0FBS0EsMEJBTEE7QUFNQTtBQU5BO0FBUUEsR0F0QkE7QUF1QkE7QUFDQTtBQURBLEdBdkJBO0FBMEJBLFNBMUJBLHFCQTBCQTtBQUNBO0FBQ0E7QUFDQSxHQTdCQTtBQThCQSxTQTlCQSxxQkE4QkE7QUFDQTtBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQTNDQTtBQTRDQTtBQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFQQSxHQTVDQTtBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQSxNQUdBO0FBQ0E7QUFDQTtBQUNBO0FBUkEsR0FyREE7QUErREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQTtBQUlBO0FBQ0E7QUFDQSx3Q0FDQTtBQUNBO0FBQ0EsS0FaQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQSxpSEFDQTtBQUNBLGtHQUNBO0FBQ0EsT0FMQTs7QUFPQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBbENBO0FBbUNBO0FBQ0E7QUFDQTtBQUNBLEtBdENBO0FBdUNBO0FBQ0E7QUFDQSxLQXpDQTtBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUNBLDhKQURBLEVBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FMQTtBQU1BLE9BUEE7O0FBU0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQWxFQTtBQW1FQSxnQ0FuRUEsMENBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQSxFQU1BLEtBTkE7QUFRQTtBQUNBO0FBN0VBO0FBL0RBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9sYW5ndWFnZS1ib3hlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gICAgPGRpdiBpZD1cInRycC10cmFuc2xhdGlvbi1zZWN0aW9uXCIgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCIgdi1pZj1cInNlbGVjdGVkSW5kZXhlc0FycmF5XCI+XHJcbiAgICAgICAgPGRpdiB2LXNob3c9XCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlXCIgY2xhc3M9XCJ0cnAtY2hhbmdlcy11bnNhdmVkLW1lc3NhZ2VcIj57eyBlZGl0b3JTdHJpbmdzLnVuc2F2ZWRfY2hhbmdlcyB9fSA8c3BhbiBjbGFzcz1cInRycC11bnNhdmVkLWNoYW5nZXMgdHJwLWRpc2NhcmQtY2hhbmdlcyBcIkBjbGljaz1cImRpc2NhcmRBbGxcIiA6dGl0bGU9XCJlZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsX3RpdGxlX2F0dHJcIj57eyBlZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsIH19PC9zcGFuPj88L2Rpdj5cclxuICAgICAgICA8ZGl2IHYtZm9yPVwiKGxhbmd1YWdlQ29kZSwga2V5KSBpbiBsYW5ndWFnZXNcIiA6aWQ9XCIndHJwLWxhbmd1YWdlLScgKyBsYW5ndWFnZUNvZGVcIj5cclxuICAgICAgICAgICAgPGRpdiB2LXNob3c9XCIoIChrZXkgPD0gb3RoZXJzQnV0dG9uUG9zaXRpb24pIHx8IHNob3dPdGhlckxhbmd1YWdlcyApICYmICggc2VsZWN0ZWRJbmRleGVzQXJyYXkgJiYgc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMCApXCIgIGNsYXNzPVwidHJwLWxhbmd1YWdlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1sYW5ndWFnZS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cImtleSA9PSAwIFwiPnt7IGVkaXRvclN0cmluZ3MuZnJvbSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPnt7IGVkaXRvclN0cmluZ3MudG8gfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwibGFuZ3VhZ2VDb2RlICE9ICdvcmlnaW5hbCdcIiBjbGFzcz1cInRycC1sYW5ndWFnZS1ib3gtZmxhZy1pbWFnZVwiIDpzcmM9XCJmbGFnc1BhdGggKyAnLycgKyBsYW5ndWFnZUNvZGUgKyAnLnBuZydcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMTJcIiA6YWx0PVwibGFuZ3VhZ2VDb2RlXCIgOnRpdGxlPVwiY29tcGxldGVMYW5ndWFnZU5hbWVzW2xhbmd1YWdlQ29kZV1cIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9ucy1mb3ItbGFuZ3VhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0cnAtdHJhbnNsYXRpb24taWNvbi1jb250YWluZXJcIiB2LWlmPVwic2hvd0ltYWdlSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1pY29uIGRhc2hpY29ucyBkYXNoaWNvbnMtZm9ybWF0LWltYWdlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9ucy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1zdHJpbmctY29udGFpbmVyXCIgdi1mb3I9XCJzZWxlY3RlZEluZGV4IGluIHNlbGVjdGVkSW5kZXhlc0FycmF5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVwiIDprZXk9XCJzZWxlY3RlZEluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyYW5zbGF0aW9uLWlucHV0IDpzdHJpbmc9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXCIgdi1tb2RlbD1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvblwiIDpoaWdobGlnaHRVbnNhdmVkQ2hhbmdlcz1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgJiYgaGFzVW5zYXZlZENoYW5nZXMoIHNlbGVjdGVkSW5kZXgsIGxhbmd1YWdlQ29kZSApXCIgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCI+PC90cmFuc2xhdGlvbi1pbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2LWVsc2UtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXCIgOmtleT1cInNlbGVjdGVkSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24taW5wdXQgOnJlYWRvbmx5PVwidHJ1ZVwiIDpzdHJpbmc9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXCIgOnZhbHVlPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5vcmlnaW5hbFwiIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiPjwvdHJhbnNsYXRpb24taW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtdHJhbnNsYXRpb24taW5wdXQtZm9vdGVyXCIgOmRhdGEtZGljdGlvbmFyeS1lbnRyeT1cIkpTT04uc3RyaW5naWZ5KGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1hdHRyaWJ1dGUtbmFtZVwiICB2LXNob3c9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSAhPSAnY29udGVudCcgfHwgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgIT0gJydcIj57eyAoIGVkaXRvclN0cmluZ3NbIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlIF0gKSA/IGVkaXRvclN0cmluZ3NbIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlIF0gOiBlZGl0b3JTdHJpbmdzLnRleHQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVwiIGNsYXNzPVwidHJwLWRpc2NhcmQtY2hhbmdlcyB0cnAtZGlzY2FyZC1pbmRpdmlkdWFsLWNoYW5nZXNcIiBAY2xpY2s9XCJkaXNjYXJkQ2hhbmdlcyhzZWxlY3RlZEluZGV4LGxhbmd1YWdlQ29kZSlcIiA6Y2xhc3M9XCJ7J3RycC11bnNhdmVkLWNoYW5nZXMnOiBoYXNVbnNhdmVkQ2hhbmdlcyggc2VsZWN0ZWRJbmRleCwgbGFuZ3VhZ2VDb2RlICkgfVwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MuZGlzY2FyZF9pbmRpdmlkdWFsX2NoYW5nZXNfdGl0bGVfYXR0cmlidXRlXCI+e3sgZWRpdG9yU3RyaW5ncy5kaXNjYXJkIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IHYtc2hvdz1cImtleSA9PSBvdGhlcnNCdXR0b25Qb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtdG9nZ2xlLWxhbmd1YWdlc1wiIEBjbGljaz1cInNob3dPdGhlckxhbmd1YWdlcyA9ICFzaG93T3RoZXJMYW5ndWFnZXNcIiA6Y2xhc3M9XCJ7ICd0cnAtc2hvdy1vdGhlci1sYW5ndWFnZXMnOiBzaG93T3RoZXJMYW5ndWFnZXMsICd0cnAtaGlkZS1vdGhlci1sYW5ndWFnZXMnOiAhc2hvd090aGVyTGFuZ3VhZ2VzIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgKHNob3dPdGhlckxhbmd1YWdlcyk/ICcmIzExMjA2OycgOiAnJiMxMTIwODsnIH19IHt7IGVkaXRvclN0cmluZ3Mub3RoZXJfbGFuZyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuICAgIGltcG9ydCB0cmFuc2xhdGlvbklucHV0IGZyb20gJy4vdHJhbnNsYXRpb24taW5wdXQudnVlJ1xyXG4gICAgZXhwb3J0IGRlZmF1bHR7XHJcbiAgICAgICAgcHJvcHM6W1xyXG4gICAgICAgICAgICAnc2VsZWN0ZWRJbmRleGVzQXJyYXknLFxyXG4gICAgICAgICAgICAnZGljdGlvbmFyeScsXHJcbiAgICAgICAgICAgICdjdXJyZW50TGFuZ3VhZ2UnLFxyXG4gICAgICAgICAgICAnb25TY3JlZW5MYW5ndWFnZScsXHJcbiAgICAgICAgICAgICdsYW5ndWFnZU5hbWVzJyxcclxuICAgICAgICAgICAgJ3NldHRpbmdzJyxcclxuICAgICAgICAgICAgJ3Nob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UnLFxyXG4gICAgICAgICAgICAnZWRpdG9yU3RyaW5ncycsXHJcbiAgICAgICAgICAgICdmbGFnc1BhdGgnLFxyXG4gICAgICAgICAgICAnaWZyYW1lJ1xyXG4gICAgICAgIF0sXHJcbiAgICAgICAgZGF0YSgpe1xyXG4gICAgICAgICAgICByZXR1cm57XHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZXMgICAgICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgY29tcGxldGVMYW5ndWFnZU5hbWVzICAgICAgOiBPYmplY3QuYXNzaWduKCB7ICdvcmlnaW5hbCc6ICdPcmlnaW5hbCBTdHJpbmcnIH0sIHRoaXMubGFuZ3VhZ2VOYW1lcyApLFxyXG4gICAgICAgICAgICAgICAgb3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQgOiAxLFxyXG4gICAgICAgICAgICAgICAgc2hvd090aGVyTGFuZ3VhZ2VzICAgICAgICAgOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIG9yZGVyZWRMYW5ndWFnZXMgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgICAgICBzaG93SW1hZ2VJY29uICAgICAgICAgICAgICA6IHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcG9uZW50czp7XHJcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uSW5wdXRcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1vdW50ZWQoKXtcclxuICAgICAgICAgICAgdGhpcy5kZXRlcm1pbmVMYW5ndWFnZU9yZGVyKClcclxuICAgICAgICAgICAgdGhpcy5hZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKClcclxuICAgICAgICB9LFxyXG4gICAgICAgIHVwZGF0ZWQoKXtcclxuICAgICAgICAgICAgLy8gcGxhY2UgdGhlIGN1cnNvciBpbiB0aGUgZmlyc3QgdGV4dGFyZWEgb3IgaW5wdXQgZm9yIHRyYW5zbGF0aW9uXHJcbiAgICAgICAgICAgIGxldCB0cmFuc2xhdGlvblNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RycC10cmFuc2xhdGlvbi1zZWN0aW9uJyApXHJcbiAgICAgICAgICAgIGlmICggdHJhbnNsYXRpb25TZWN0aW9uICkgIHtcclxuICAgICAgICAgICAgICAgIGxldCBmb2N1c2FibGVTZWxlY3RvcnMgPSBbJ3RleHRhcmVhOm5vdChbcmVhZG9ubHldKScsICdpbnB1dFt0eXBlPVwidGV4dFwiXTpub3QoW3JlYWRvbmx5XSknXVxyXG4gICAgICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwOyBpPGZvY3VzYWJsZVNlbGVjdG9ycy5sZW5ndGg7IGkrKyApe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb2N1c2FibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RycC10cmFuc2xhdGlvbi1zZWN0aW9uJyApLnF1ZXJ5U2VsZWN0b3IoZm9jdXNhYmxlU2VsZWN0b3JzW2ldKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggZm9jdXNhYmxlICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGUuZm9jdXMoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHdhdGNoOiB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxhbmd1YWdlcygpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uU2NyZWVuTGFuZ3VhZ2U6IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGVybWluZUxhbmd1YWdlT3JkZXIoKVxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYW5ndWFnZXMoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wdXRlZDp7XHJcbiAgICAgICAgICAgIG90aGVyc0J1dHRvblBvc2l0aW9uOiBmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSA9PT0gdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddIHx8IHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmxlbmd0aCA8PSAyICkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IGRpc3BsYXkgaXRcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gOTk5XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXRob2RzOntcclxuICAgICAgICAgICAgZGV0ZXJtaW5lTGFuZ3VhZ2VPcmRlcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWRMYW5ndWFnZXMgPSB0aGlzLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5maWx0ZXIoZnVuY3Rpb24obGFuZ3VhZ2UsIGluZGV4LCBhcnJheSl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsIGxhbmd1YWdlcyBleGNlcHQgZGVmYXVsdCBhbmQgY3VycmVudCBvciBvbiBzY3JlZW4gbGFuZ3VhZ2UuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICggc2VsZi5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddICE9PSBsYW5ndWFnZSApICYmICggc2VsZi5vblNjcmVlbkxhbmd1YWdlICE9PSBsYW5ndWFnZSApXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJlZExhbmd1YWdlcyA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMucHVzaCggdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddIClcclxuICAgICAgICAgICAgICAgIGlmICggdGhpcy5vblNjcmVlbkxhbmd1YWdlICE9PSAnJyApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzLnB1c2goIHRoaXMub25TY3JlZW5MYW5ndWFnZSApXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMgPSB0aGlzLm9yZGVyZWRMYW5ndWFnZXMuY29uY2F0KCBmaWx0ZXJlZExhbmd1YWdlcyApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHVwZGF0ZUxhbmd1YWdlczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMgICAgICAgICAgICAgICAgICA9IFtdXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiAgICAgICAgICAgICAgICAgICAgICAgID0gdGhpc1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRMYW5ndWFnZSAgICAgICAgICAgICA9IHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXVxyXG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0ZVRvRGVmYXVsdCAgICAgICAgICA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dJbWFnZUljb24gICAgICAgICAgICAgID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMub3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQgPSAxXHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJiBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbZGVmYXVsdExhbmd1YWdlXSApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVRvRGVmYXVsdCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICBpZiggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgPT09ICdzcmMnIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaG93SW1hZ2VJY29uID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlVG9EZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMucHVzaCgnb3JpZ2luYWwnKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQrK1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VzID0gdGhpcy5sYW5ndWFnZXMuY29uY2F0KHRoaXMub3JkZXJlZExhbmd1YWdlcylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGlzY2FyZENoYW5nZXM6IGZ1bmN0aW9uKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uID0gdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZFxyXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZGlzY2FyZGVkLWNoYW5nZXMnKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBoYXNVbnNhdmVkQ2hhbmdlczogZnVuY3Rpb24oc2VsZWN0ZWRJbmRleCwgbGFuZ3VhZ2VDb2RlKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCAhPT0gdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24pXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRpc2NhcmRBbGw6IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbihzZWxlY3RlZEluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKCBmdW5jdGlvbiggbGFuZ3VhZ2VDb2RlICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgIT09IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uKSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlzY2FyZENoYW5nZXMoc2VsZWN0ZWRJbmRleCxsYW5ndWFnZUNvZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuJHBhcmVudC5tZXJnaW5nU3RyaW5nID09PSB0cnVlICl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGFyZW50LnNlbGVjdGVkU3RyaW5nID0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQgPSB0aGlzLmlmcmFtZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCAndHJwLWNyZWF0ZS10cmFuc2xhdGlvbi1ibG9jaycgKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQubGVuZ3RoID4gMCApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQubGVuZ3RoOyBpKysgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5SGlnaGxpZ2h0ZWRbaV0uY2xhc3NMaXN0LnJlbW92ZSgndHJwLWhpZ2hsaWdodCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5SGlnaGxpZ2h0ZWRbaV0uY2xhc3NMaXN0LnJlbW92ZSgndHJwLWNyZWF0ZS10cmFuc2xhdGlvbi1ibG9jaycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGFyZW50Lm1lcmdpbmdTdHJpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5tZXJnZURhdGEgPSBbXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKCl7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIEFMVCArIFpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goXCJNYWNcIikgPyBlLm1ldGFLZXkgOiBlLmN0cmxLZXkpICYmIGUuYWx0S2V5ICYmIGUua2V5Q29kZSA9PT0gOTAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd0cnBfdHJpZ2dlcl9kaXNjYXJkX2FsbF9jaGFuZ2VzX2V2ZW50JykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX2Rpc2NhcmRfYWxsX2NoYW5nZXNfZXZlbnQnLCB0aGlzLmRpc2NhcmRBbGwgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG48L3NjcmlwdD5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=script&lang=js&\n");
|
683 |
|
684 |
/***/ }),
|
685 |
|
@@ -715,7 +715,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var he__
|
|
715 |
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
716 |
|
717 |
"use strict";
|
718 |
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! select2/dist/js/select2.min.js */ \"./node_modules/select2/dist/js/select2.min.js\");\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./assets/src/js/utils.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/language-boxes.vue */ \"./assets/src/js/components/language-boxes.vue\");\n/* harmony import */ var _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/save-translations.vue */ \"./assets/src/js/components/save-translations.vue\");\n/* harmony import */ var _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/hover-actions.vue */ \"./assets/src/js/components/hover-actions.vue\");\n/* harmony import */ var _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/extra-content.vue */ \"./assets/src/js/components/extra-content.vue\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! he */ \"./node_modules/he/he.js\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(he__WEBPACK_IMPORTED_MODULE_7__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['trp_settings', 'language_names', 'ordered_secondary_languages', 'current_language', 'on_screen_language', 'view_as_roles', 'url_to_load', 'string_selectors', 'data_attributes', 'ajax_url', 'editor_nonces', 'string_group_order', 'merge_rules', 'localized_text', 'paid_version', 'flags_path'],\n components: {\n languageBoxes: _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveTranslations: _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n hoverActions: _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n extraContent: _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n },\n data: function data() {\n return {\n //props\n settings: JSON.parse(this.trp_settings),\n languageNames: JSON.parse(this.language_names),\n orderedSecondaryLanguages: JSON.parse(this.ordered_secondary_languages),\n roles: JSON.parse(this.view_as_roles),\n nonces: JSON.parse(this.editor_nonces),\n stringGroupOrder: JSON.parse(this.string_group_order),\n selectors: JSON.parse(this.string_selectors),\n dataAttributes: JSON.parse(this.data_attributes),\n mergeRules: JSON.parse(this.merge_rules),\n editorStrings: JSON.parse(this.localized_text),\n //data\n currentLanguage: this.current_language,\n onScreenLanguage: this.on_screen_language,\n currentURL: this.url_to_load,\n urlToLoad: this.url_to_load,\n iframe: '',\n dictionary: [],\n selectedString: null,\n selectedIndexesArray: [],\n detectedSelectorAndId: [],\n stringGroups: [],\n mergingString: false,\n mergeData: [],\n showChangesUnsavedMessage: false,\n viewAs: '',\n loading_strings: 0,\n translationNotLoadedYet: false\n };\n },\n created: function created() {\n this.settings['default-language-name'] = this.languageNames[this.settings['default-language']]; //set default value for the View As select\n\n var params = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getUrlParameters(this.currentURL);\n if (Object.keys(params).length > 1 && params['trp-view-as']) this.viewAs = params['trp-view-as'];else this.viewAs = 'current_user';\n },\n mounted: function mounted() {\n this.addKeyboardShortcutsListener();\n var self = this; // initialize select2\n\n jQuery('#trp-language-select, #trp-view-as-select').select2({\n width: '100%'\n }); //init strings dropdown\n\n this.stringsDropdownLoading(); // show overlay when select is opened\n\n jQuery('#trp-language-select, #trp-string-categories').on('select2:open', function () {\n jQuery('#trp_select2_overlay').fadeIn('100');\n }).on('select2:close', function () {\n jQuery('#trp_select2_overlay').hide();\n }).on('select2:opening', function (e) {\n /* when we have unsaved changes prevent the strings dropdown from opening so we do not have a disconnect between the textareas and the dropdown */\n if (self.hasUnsavedChanges()) {\n e.preventDefault();\n }\n }); // resize sidebar and consequently the iframe\n\n var previewContainer = jQuery('#trp-preview');\n var total_width = jQuery(window).width();\n jQuery('#trp-controls').resizable({\n start: function start() {\n previewContainer.toggle();\n },\n stop: function stop() {\n previewContainer.toggle();\n },\n handles: 'e',\n minWidth: 285,\n maxWidth: total_width - 20\n }).bind(\"resize\", this.resizeIframe); // resize iframe when resizing window\n\n jQuery(window).resize(function () {\n self.resizeIframe();\n });\n },\n watch: {\n currentLanguage: function currentLanguage(_currentLanguage) {\n var self = this; //grab the correct URL from the iFrame\n\n var newURL = this.iframe.querySelector('link[hreflang=\"' + _currentLanguage.replace('_', '-') + '\"]').getAttribute('href');\n this.currentURL = newURL;\n this.iframe.location = newURL; //reset vue props\n\n this.selectedString = '';\n this.selectedIndexesArray = []; //set strings dropdown to loading state\n\n jQuery('#trp-string-categories').val('').trigger('change');\n this.stringsDropdownLoading();\n this.onScreenLanguage = _currentLanguage;\n\n if (this.settings['default-language'] == this.currentLanguage && this.settings['translation-languages'].length > 1) {\n this.settings['translation-languages'].some(function (language) {\n if (language != self.settings['default-language']) {\n // return the first language not default\n self.onScreenLanguage = language;\n return true;\n }\n });\n }\n },\n currentURL: function currentURL(newUrl, oldUrl) {\n window.history.replaceState(null, null, this.parentURL(newUrl));\n },\n viewAs: function viewAs(role) {\n if (!this.currentURL || !this.iframe) return;\n var url = this.cleanURL(this.currentURL);\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-edit-translation', 'preview');\n\n if (role == 'current_user') {\n this.iframe.location = url;\n return;\n } //if nonce not available, an update to the Browse as Other Roles add-on is required\n\n\n if (!this.nonces[role]) {\n alert(this.editorStrings.bor_update_notice);\n return;\n }\n\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-view-as', role);\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-view-as-nonce', this.nonces[role]);\n this.iframe.location = url;\n },\n selectedString: function selectedString(selectedStringArrayIndex, oldString) {\n if (this.hasUnsavedChanges() || !selectedStringArrayIndex && selectedStringArrayIndex !== 0) return;\n jQuery('#trp-string-categories').val(selectedStringArrayIndex !== null ? selectedStringArrayIndex : '').trigger('change');\n var selectedString = this.dictionary[selectedStringArrayIndex];\n if (!selectedString) return;\n var currentNode = this.iframe.querySelector(\"[\" + selectedString.selector + \"='\" + selectedString.dbID + \"']\");\n var selectedIndexesArray = []; //when merging we do not have a valid current node, so we just add the fake id\n\n if (currentNode) {\n var self = this;\n var selectors = self.getAllSelectors();\n var nodes = [];\n nodes.push(currentNode);\n\n if (currentNode.tagName != \"A\") {\n // include the anchor's translatable attributes\n var anchorParent = currentNode.closest('a');\n\n if (anchorParent != null) {\n nodes.push(anchorParent);\n }\n }\n\n if (currentNode.tagName == \"A\" && currentNode.children.length > 0) {\n // include all the translatable attributes inside the anchor\n var childrenArray = _toConsumableArray(currentNode.children);\n\n childrenArray.forEach(function (child) {\n nodes.push(child);\n });\n }\n\n nodes.forEach(function (node) {\n selectors.forEach(function (selector) {\n var stringId = node.getAttribute(selector);\n\n if (stringId) {\n var found = false;\n var i;\n\n for (i = 0; i < selectedIndexesArray.length; i++) {\n if (typeof self.dictionary[selectedIndexesArray[i]] !== 'undefined' && self.dictionary[selectedIndexesArray[i]].dbID !== 'undefined' && self.dictionary[selectedIndexesArray[i]].dbID === stringId) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n selectedIndexesArray.push(self.getStringIndex(selector, stringId));\n }\n }\n });\n });\n } else selectedIndexesArray.push(selectedStringArrayIndex);\n\n this.selectedIndexesArray = selectedIndexesArray;\n }\n },\n computed: {\n closeURL: function closeURL() {\n return this.cleanURL(this.currentURL);\n }\n },\n methods: {\n iFrameLoaded: function iFrameLoaded() {\n var self = this;\n var iframeElement = document.querySelector('#trp-preview-iframe');\n this.iframe = iframeElement.contentDocument || iframeElement.contentWindow.document; //sync iFrame URL with parent\n\n if (this.currentURL != this.iframe.URL) this.currentURL = this.iframe.URL; //hide iFrame loader\n\n this.iframeLoader('hide');\n self.detectedSelectorAndId = [];\n self.dictionary = [];\n this.scanIframeForStrings();\n window.addEventListener('trp_iframe_page_updated', this.scanIframeForStrings); //event that is fired when the iFrame is navigated\n\n iframeElement.contentWindow.onbeforeunload = function () {\n self.iframeLoader('show');\n self.selectedString = null;\n self.selectedIndexesArray = [];\n self.translationNotLoadedYet = false;\n self.stringsDropdownLoading();\n };\n },\n scanIframeForStrings: function scanIframeForStrings() {\n this.scanForSelector('data-trp-translate-id', 'regular', this.onScreenLanguage);\n this.scanForSelector('data-trpgettextoriginal', 'gettext', this.currentLanguage);\n this.scanForSelector('data-trp-post-slug', 'postslug', this.currentLanguage);\n },\n scanForSelector: function scanForSelector(baseSelector, typeSlug, languageOfIds) {\n this.loading_strings++;\n var self = this;\n var selectors = this.prepareSelectorStrings(baseSelector);\n\n var nodes = _toConsumableArray(this.iframe.querySelectorAll('[' + selectors.join('],[') + ']'));\n\n var stringIdsArray = [],\n nodeData = [],\n nodeEntries = [];\n nodes.forEach(function (node) {\n nodeEntries = self.getNodeInfo(node, baseSelector);\n nodeEntries.forEach(function (entry) {\n // this check ensures that we don't create duplicates when rescanning after ajax complete\n if (!self.alreadyDetected(entry.selector, entry.dbID)) {\n stringIdsArray.push(entry.dbID);\n nodeData.push(entry);\n }\n });\n self.setupEventListener(node);\n }); //unique ids only\n\n stringIdsArray = _toConsumableArray(new Set(stringIdsArray));\n\n if (stringIdsArray.length > 0) {\n var data = new FormData();\n data.append('action', 'trp_get_translations_' + typeSlug);\n data.append('all_languages', 'true');\n data.append('security', this.nonces['gettranslationsnonce' + typeSlug]);\n data.append('language', languageOfIds);\n data.append('string_ids', JSON.stringify(stringIdsArray));\n axios__WEBPACK_IMPORTED_MODULE_2___default.a.post(this.ajax_url, data).then(function (response) {\n self.loading_strings--;\n self.addToDictionary(response.data, nodeData);\n })[\"catch\"](function (error) {\n console.log(error);\n });\n } else {\n self.loading_strings--;\n }\n },\n alreadyDetected: function alreadyDetected(selector, dbId) {\n var combined = selector + '=' + dbId;\n\n if (_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].arrayContainsItem(this.detectedSelectorAndId, combined)) {\n return true;\n } else {\n this.detectedSelectorAndId.push(combined);\n return false;\n }\n },\n setupEventListener: function setupEventListener(node) {\n if (node.tagName == 'A' && !node.hasAttribute('data-trpgettextoriginal')) return false;\n var self = this;\n node.addEventListener('mouseenter', self.$refs.hoverActions.showPencilIcon);\n },\n addToDictionary: function addToDictionary(responseData) {\n var nodeInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var self = this;\n\n if (responseData != null) {\n if (nodeInfo) {\n nodeInfo.forEach(function (infoRow, index) {\n responseData.some(function (responseDataRow) {\n if (infoRow.dbID == responseDataRow.dbID) {\n //bring block_type to the top level object\n if (responseDataRow.type != 'gettext' && typeof responseDataRow.block_type == 'undefined') {\n var firstLanguage = self.orderedSecondaryLanguages[0];\n if (typeof responseDataRow.translationsArray[firstLanguage].block_type != 'undefined') responseDataRow.block_type = responseDataRow.translationsArray[firstLanguage].block_type;\n }\n\n nodeInfo[index] = Object.assign({}, responseDataRow, infoRow);\n return true; // a sort of break\n }\n });\n });\n } else {\n nodeInfo = responseData;\n }\n\n this.stringGroups = this.addToStringGroups(nodeInfo);\n this.dictionary = this.dictionary.concat(nodeInfo);\n this.initStringsDropdown();\n }\n },\n addToStringGroups: function addToStringGroups(strings) {\n // see what node groups are found\n var foundStringGroups = this.stringGroups;\n strings.forEach(function (string) {\n if (foundStringGroups.indexOf(string.group) === -1 && (typeof string.blockType === 'undefined' || string.blockType !== '2')) {\n foundStringGroups.push(string.group);\n }\n }); // put the node groups in the order that we want, according to the prop this.stringGroupOrder\n\n var orderedStringGroups = [];\n\n if (this.editorStrings.seo_update_notice != 'seo_pack_update_not_needed') {\n orderedStringGroups.push(this.editorStrings.seo_update_notice);\n }\n\n this.stringGroupOrder.forEach(function (group) {\n if (foundStringGroups.indexOf(group) !== -1) {\n orderedStringGroups.push(group);\n }\n }); // if there were any other string groups that were not in the prop, add them at the end.\n\n foundStringGroups.forEach(function (group) {\n if (orderedStringGroups.indexOf(group) === -1) {\n orderedStringGroups.push(group);\n }\n });\n return orderedStringGroups;\n },\n getStringIndex: function getStringIndex(selector, dbID) {\n var found = null;\n this.dictionary.some(function (string, index) {\n if (string.dbID == dbID && string.selector == selector) {\n found = index;\n return true;\n }\n });\n return found;\n },\n getNodeInfo: function getNodeInfo(node) {\n var baseSelector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var stringId;\n var nodeData = [];\n var selectors = this.prepareSelectorStrings(baseSelector);\n selectors.forEach(function (selector) {\n stringId = node.getAttribute(selector);\n\n if (stringId) {\n var nodeAttribute = selector.replace(baseSelector, '');\n var nodeGroup = node.getAttribute('data-trp-node-group' + nodeAttribute);\n var nodeDescription = node.getAttribute('data-trp-node-description' + nodeAttribute);\n var entry = {\n dbID: stringId,\n selector: selector,\n attribute: nodeAttribute.substr(1) // substr(1) is used to trim prefixing line - ex. -alt will result in alt (no line)\n\n };\n if (nodeGroup) entry.group = nodeGroup;\n if (nodeDescription) entry.description = nodeDescription;\n nodeData.push(entry);\n }\n });\n return nodeData;\n },\n getAllSelectors: function getAllSelectors() {\n var selectors = [];\n var self = this;\n this.dataAttributes.forEach(function (dataAttribute) {\n selectors = selectors.concat(self.prepareSelectorStrings(dataAttribute));\n });\n return selectors;\n },\n prepareSelectorStrings: function prepareSelectorStrings(baseNameSelector) {\n var parsed_selectors = [];\n this.selectors.forEach(function (selectorSuffix, index) {\n parsed_selectors.push(baseNameSelector + selectorSuffix);\n });\n return parsed_selectors;\n },\n parentURL: function parentURL(url) {\n return url.replace('trp-edit-translation=preview', 'trp-edit-translation=true');\n },\n cleanURL: function cleanURL(url) {\n //make removeUrlParameter recursive and only call it once with all the parameters that\n //need to stripped ?\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'lang');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as-nonce');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-edit-translation');\n return url;\n },\n showString: function showString(string, type) {\n if (typeof string.blockType !== 'undefined' && string.blockType === '2') {\n // don't show deprecated translation blocks in the dropdown\n return false;\n }\n\n if (type === this.editorStrings.images && typeof string.attribute != 'undefined' && string.attribute == 'src') return true;\n if (typeof string.attribute !== 'undefined' && (string.attribute == 'href' || string.attribute == 'src')) return false;\n if (string.group === type) return true;\n return false;\n },\n initStringsDropdown: function initStringsDropdown() {\n var self = this;\n\n if (!this.isStringsDropdownOpen()) {\n jQuery('#trp-string-categories').select2('destroy');\n jQuery('#trp-string-categories').select2({\n placeholder: self.editorStrings.select_string,\n templateResult: function templateResult(option) {\n var original = he__WEBPACK_IMPORTED_MODULE_7___default.a.decode(option.text.substring(0, 90)) + (option.text.length <= 90 ? '' : '...');\n var description = option.title ? '(' + option.title + ')' : '';\n return jQuery('<div>' + original + '</div><div class=\"string-selector-description\">' + description + '</div>');\n },\n width: '100%'\n }).prop('disabled', false);\n jQuery('#trp_select2_overlay').hide();\n }\n },\n stringsDropdownLoading: function stringsDropdownLoading() {\n jQuery('#trp-string-categories').select2({\n placeholder: this.editorStrings.strings_loading,\n width: '100%'\n }).prop('disabled', true);\n },\n processOptionName: function processOptionName(name, type) {\n if (type == 'Images') return _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getFilename(name);\n return _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].escapeHtml(name);\n },\n isStringsDropdownOpen: function isStringsDropdownOpen() {\n return jQuery('#trp-string-categories').select2('isOpen');\n },\n hasUnsavedChanges: function hasUnsavedChanges() {\n var unsavedChanges = false;\n var self = this;\n\n if (this.selectedIndexesArray.length > 0) {\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n unsavedChanges = true;\n }\n });\n });\n }\n\n this.showChangesUnsavedMessage = unsavedChanges;\n return unsavedChanges;\n },\n iframeLoader: function iframeLoader(status) {\n var loader = document.getElementById('trp-preview-loader');\n if (status == 'show') loader.style.display = 'flex';else if (status == 'hide') loader.style.display = 'none';\n },\n previousString: function previousString() {\n var currentValue = document.getElementById('trp-string-categories').value;\n var newValue = +currentValue - 1;\n\n while (newValue >= 0 && document.querySelectorAll('#trp-string-categories option[value=\"' + newValue + '\"]').length === 0) {\n newValue--;\n }\n\n if (newValue < 0) return;\n this.selectedString = newValue.toString();\n },\n nextString: function nextString() {\n var currentValue = document.getElementById('trp-string-categories').value,\n newValue = 0;\n if (currentValue != '') newValue = +currentValue + 1;\n\n while (newValue < this.dictionary.length && document.querySelectorAll('#trp-string-categories option[value=\"' + newValue + '\"]').length === 0) {\n newValue++;\n }\n\n if (newValue >= this.dictionary.length) {\n return;\n }\n\n this.selectedString = newValue.toString();\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey) {\n // CTRL + ALT + right arrow\n if (e.keyCode === 39) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_next_string_event'));\n } else {\n // CTRL + ALT + left arrow\n if (e.keyCode === 37) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_previous_string_event'));\n }\n }\n }\n }, false);\n window.addEventListener('trp_trigger_next_string_event', this.nextString);\n window.addEventListener('trp_trigger_previous_string_event', this.previousString);\n },\n resizeIframe: function resizeIframe(event, ui) {\n var total_width = jQuery(window).width();\n var width = jQuery('#trp-controls').width();\n\n if (width > total_width) {\n width = total_width;\n controls.css('width', width);\n }\n\n var previewContainer = jQuery('#trp-preview');\n previewContainer.css('right', width);\n previewContainer.css('left', width - 348);\n previewContainer.css('width', total_width - width);\n }\n },\n //add support for v-model in select2\n directives: {\n select2: {\n inserted: function inserted(el) {\n jQuery(el).on('select2:select', function () {\n var event = new Event('change', {\n bubbles: true,\n cancelable: true\n });\n el.dispatchEvent(event);\n });\n jQuery(el).on('select2:unselect', function () {\n var event = new Event('change', {\n bubbles: true,\n cancelable: true\n });\n el.dispatchEvent(event);\n });\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP2E3NjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLFVBQ0EsY0FEQSxFQUVBLGdCQUZBLEVBR0EsNkJBSEEsRUFJQSxrQkFKQSxFQUtBLG9CQUxBLEVBTUEsZUFOQSxFQU9BLGFBUEEsRUFRQSxrQkFSQSxFQVNBLGlCQVRBLEVBVUEsVUFWQSxFQVdBLGVBWEEsRUFZQSxvQkFaQSxFQWFBLGFBYkEsRUFjQSxnQkFkQSxFQWVBLGNBZkEsRUFnQkEsWUFoQkEsQ0FEQTtBQW1CQTtBQUNBLHlGQURBO0FBRUEsK0ZBRkE7QUFHQSx1RkFIQTtBQUlBO0FBSkEsR0FuQkE7QUF5QkEsTUF6QkEsa0JBeUJBO0FBQ0E7QUFDQTtBQUNBLDZDQUZBO0FBR0Esb0RBSEE7QUFJQSw2RUFKQTtBQUtBLDJDQUxBO0FBTUEsNENBTkE7QUFPQSwyREFQQTtBQVFBLGtEQVJBO0FBU0Esc0RBVEE7QUFVQSw4Q0FWQTtBQVdBLG9EQVhBO0FBWUE7QUFDQSw0Q0FiQTtBQWNBLCtDQWRBO0FBZUEsa0NBZkE7QUFnQkEsaUNBaEJBO0FBaUJBLGdCQWpCQTtBQWtCQSxvQkFsQkE7QUFtQkEsMEJBbkJBO0FBb0JBLDhCQXBCQTtBQXFCQSwrQkFyQkE7QUFzQkEsc0JBdEJBO0FBdUJBLDBCQXZCQTtBQXdCQSxtQkF4QkE7QUF5QkEsc0NBekJBO0FBMEJBLGdCQTFCQTtBQTJCQSx3QkEzQkE7QUE0QkE7QUE1QkE7QUE4QkEsR0F4REE7QUF5REEsU0F6REEscUJBeURBO0FBQ0EsbUdBREEsQ0FHQTs7QUFDQTtBQUVBLGlFQUNBLG9DQURBLEtBR0E7QUFDQSxHQW5FQTtBQW9FQSxTQXBFQSxxQkFvRUE7QUFDQTtBQUNBLG9CQUZBLENBR0E7O0FBQ0E7QUFBQTtBQUFBLE9BSkEsQ0FNQTs7QUFDQSxrQ0FQQSxDQVNBOztBQUNBO0FBQ0E7QUFDQSxLQUZBLEVBRUEsRUFGQSxDQUVBLGVBRkEsRUFFQTtBQUNBO0FBQ0EsS0FKQSxFQUlBLEVBSkEsQ0FJQSxpQkFKQSxFQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQVRBLEVBVkEsQ0FxQkE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBLE9BREE7QUFFQTtBQUFBO0FBQUEsT0FGQTtBQUdBLGtCQUhBO0FBSUEsbUJBSkE7QUFLQTtBQUxBLE9BTUEsSUFOQSxDQU1BLFFBTkEsRUFNQSxpQkFOQSxFQXhCQSxDQWdDQTs7QUFDQTtBQUNBO0FBQ0EsS0FGQTtBQUdBLEdBeEdBO0FBeUdBO0FBQ0E7QUFDQSxzQkFEQSxDQUVBOztBQUNBO0FBRUE7QUFDQSxvQ0FOQSxDQVFBOztBQUNBO0FBQ0EscUNBVkEsQ0FZQTs7QUFDQTtBQUNBO0FBRUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQU5BO0FBT0E7QUFDQSxLQTNCQTtBQTRCQTtBQUNBO0FBQ0EsS0E5QkE7QUErQkE7QUFDQSw0Q0FDQTtBQUVBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FYQSxDQWFBOzs7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBRUE7QUFDQSxLQXREQTtBQXVEQTtBQUVBLG1HQUNBO0FBRUE7QUFFQTtBQUVBLDJCQUNBO0FBRUE7QUFDQSxvQ0FiQSxDQWVBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0EsV0FGQTtBQUlBOztBQUVBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FmQTtBQWdCQSxTQWpCQTtBQWtCQSxPQTFDQSxNQTJDQTs7QUFFQTtBQUNBO0FBckhBLEdBekdBO0FBZ09BO0FBQ0E7QUFDQTtBQUNBO0FBSEEsR0FoT0E7QUFxT0E7QUFDQSxnQkFEQSwwQkFDQTtBQUNBO0FBQ0E7QUFFQSwwRkFKQSxDQU1BOztBQUNBLDhDQUNBLGtDQVJBLENBVUE7O0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQSxvRkFqQkEsQ0FtQkE7O0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsT0FSQTtBQVVBLEtBL0JBO0FBZ0NBLHdCQWhDQSxrQ0FnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQXBDQTtBQXFDQSxtQkFyQ0EsMkJBcUNBLFlBckNBLEVBcUNBLFFBckNBLEVBcUNBLGFBckNBLEVBcUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBOztBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQU5BO0FBUUE7QUFDQSxPQVpBLEVBUEEsQ0FxQkE7O0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSwrRUFDQSxJQURBLENBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FKQSxXQUtBO0FBQ0E7QUFDQSxTQVBBO0FBUUEsT0FoQkEsTUFnQkE7QUFDQTtBQUNBO0FBRUEsS0FoRkE7QUFpRkEsbUJBakZBLDJCQWlGQSxRQWpGQSxFQWlGQSxJQWpGQSxFQWlGQTtBQUNBOztBQUNBO0FBQ0E7QUFDQSxPQUZBLE1BRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQXpGQTtBQTBGQSxzQkExRkEsOEJBMEZBLElBMUZBLEVBMEZBO0FBQ0EsZ0ZBQ0E7QUFFQTtBQUVBO0FBQ0EsS0FqR0E7QUFrR0EsbUJBbEdBLDJCQWtHQSxZQWxHQSxFQWtHQTtBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLHlHQUNBO0FBQ0E7O0FBRUE7QUFDQSw0QkFWQSxDQVVBO0FBQ0E7QUFDQSxhQWRBO0FBZUEsV0FoQkE7QUFpQkEsU0FsQkEsTUFrQkE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsS0FqSUE7QUFrSUEscUJBbElBLDZCQWtJQSxPQWxJQSxFQWtJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BSkEsRUFKQSxDQVVBOztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BSkEsRUFqQkEsQ0F1QkE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUpBO0FBTUE7QUFDQSxLQWpLQTtBQWtLQSxrQkFsS0EsMEJBa0tBLFFBbEtBLEVBa0tBLElBbEtBLEVBa0tBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQTtBQU9BO0FBQ0EsS0E3S0E7QUE4S0EsZUE5S0EsdUJBOEtBLElBOUtBLEVBOEtBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBOztBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQSwwQkFEQTtBQUVBLDhCQUZBO0FBR0EsOENBSEEsQ0FHQTs7QUFIQTtBQU1BLHlCQUNBO0FBRUEsK0JBQ0E7QUFFQTtBQUNBO0FBRUEsT0F6QkE7QUEyQkE7QUFDQSxLQS9NQTtBQWdOQSxtQkFoTkEsNkJBZ05BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQSxPQUZBO0FBSUE7QUFDQSxLQXpOQTtBQTBOQSwwQkExTkEsa0NBME5BLGdCQTFOQSxFQTBOQTtBQUNBO0FBRUE7QUFDQTtBQUNBLE9BRkE7QUFJQTtBQUNBLEtBbE9BO0FBbU9BLGFBbk9BLHFCQW1PQSxHQW5PQSxFQW1PQTtBQUNBO0FBQ0EsS0FyT0E7QUFzT0EsWUF0T0Esb0JBc09BLEdBdE9BLEVBc09BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQSxLQS9PQTtBQWdQQSxjQWhQQSxzQkFnUEEsTUFoUEEsRUFnUEEsSUFoUEEsRUFnUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxxSEFDQTtBQUVBLGdIQUNBO0FBRUEsaUNBQ0E7QUFFQTtBQUNBLEtBL1BBO0FBZ1FBLHVCQWhRQSxpQ0FnUUE7QUFDQTs7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsV0FMQTtBQUtBO0FBTEEsV0FLQSxJQUxBLENBS0EsVUFMQSxFQUtBLEtBTEE7QUFPQTtBQUNBO0FBQ0EsS0EvUUE7QUFnUkEsMEJBaFJBLG9DQWdSQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0EsS0FsUkE7QUFtUkEscUJBblJBLDZCQW1SQSxJQW5SQSxFQW1SQSxJQW5SQSxFQW1SQTtBQUNBLDRCQUNBO0FBRUE7QUFDQSxLQXhSQTtBQXlSQSx5QkF6UkEsbUNBeVJBO0FBQ0E7QUFDQSxLQTNSQTtBQTRSQSxxQkE1UkEsK0JBNFJBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFDQSw4REFEQSxJQUVBLDhKQUZBLEVBRUE7QUFDQTtBQUNBO0FBQ0EsV0FOQTtBQU9BLFNBUkE7QUFTQTs7QUFDQTtBQUVBO0FBQ0EsS0E3U0E7QUE4U0EsZ0JBOVNBLHdCQThTQSxNQTlTQSxFQThTQTtBQUNBO0FBRUEsNEJBQ0EsOEJBREEsS0FFQSxzQkFDQTtBQUNBLEtBclRBO0FBc1RBLGtCQXRUQSw0QkFzVEE7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx3QkFDQTtBQUVBO0FBQ0EsS0FuVUE7QUFvVUEsY0FwVUEsd0JBb1VBO0FBQ0E7QUFBQTtBQUVBLDhCQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQW5WQTtBQW9WQSxnQ0FwVkEsMENBb1ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FIQSxNQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQWRBLEVBY0EsS0FkQTtBQWdCQTtBQUNBO0FBQ0EsS0F2V0E7QUF3V0EsZ0JBeFdBLHdCQXdXQSxLQXhXQSxFQXdXQSxFQXhXQSxFQXdXQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXBYQSxHQXJPQTtBQTJsQkE7QUFDQTtBQUNBO0FBQ0EsY0FEQSxvQkFDQSxFQURBLEVBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQSxTQUhBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsU0FIQTtBQUlBO0FBWEE7QUFEQTtBQTVsQkEiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJi5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuICAgIDxkaXYgaWQ9XCJ0cnAtZWRpdG9yXCI+XHJcblxyXG4gICAgICAgIDxkaXYgaWQ9XCJ0cnAtY29udHJvbHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1jb250YWluZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLWNsb3NlLXNhdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBpZD1cInRycC1jb250cm9scy1jbG9zZVwiIDpocmVmPVwiY2xvc2VVUkxcIiA6dGl0bGU9XCJlZGl0b3JTdHJpbmdzLmNsb3NlXCI+PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtc2F2ZS1hbmQtbG9hZGVyLXNwaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0cnAtYWpheC1sb2FkZXJcIiB2LXNob3c9XCJsb2FkaW5nX3N0cmluZ3MgPiAwXCIgaWQ9XCJ0cnAtc3RyaW5nLXNhdmVkLWFqYXgtbG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXNwaW5uZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2F2ZS10cmFuc2xhdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2VsZWN0ZWRJbmRleGVzQXJyYXk9XCJzZWxlY3RlZEluZGV4ZXNBcnJheVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRpY3Rpb25hcnk9XCJkaWN0aW9uYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2V0dGluZ3M9XCJzZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm5vbmNlcz1cIm5vbmNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmFqYXhfdXJsPVwiYWpheF91cmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjdXJyZW50TGFuZ3VhZ2U9XCJjdXJyZW50TGFuZ3VhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvblNjcmVlbkxhbmd1YWdlPVwib25TY3JlZW5MYW5ndWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmN1cnJlbnRVUkw9XCJjdXJyZW50VVJMXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWVyZ2luZ1N0cmluZz1cIm1lcmdpbmdTdHJpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXJnZURhdGE9XCJtZXJnZURhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEB0cmFuc2xhdGlvbnMtc2F2ZWQ9XCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zYXZlLXRyYW5zbGF0aW9ucz5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvblwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLWxhbmd1YWdlLXN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInRycC1sYW5ndWFnZS1zZWxlY3RcIiBuYW1lPVwibGFuZ1wiIHYtbW9kZWw9XCJjdXJyZW50TGFuZ3VhZ2VcIiB2LXNlbGVjdDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cIihsYW5nLCBsYW5nSW5kZXgpIGluIGxhbmd1YWdlTmFtZXNcIiA6dmFsdWU9XCJsYW5nSW5kZXhcIj57e2xhbmd9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1zdHJpbmctbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInRycC1zdHJpbmctY2F0ZWdvcmllc1wiIHYtbW9kZWw9XCJzZWxlY3RlZFN0cmluZ1wiIHYtc2VsZWN0Mj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0Z3JvdXAgdi1mb3I9XCIoZ3JvdXApIGluIHN0cmluZ0dyb3Vwc1wiIDpsYWJlbD1cImdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIoc3RyaW5nLCBpbmRleCkgaW4gZGljdGlvbmFyeVwiIDp2YWx1ZT1cImluZGV4XCIgdi1pZj1cInNob3dTdHJpbmcoIHN0cmluZywgZ3JvdXAgKVwiIDp0aXRsZT1cInN0cmluZy5kZXNjcmlwdGlvblwiIDpkYXRhLWRhdGFiYXNlLWlkPVwic3RyaW5nLmRiSURcIiA6ZGF0YS1ncm91cD1cInN0cmluZy5ncm91cFwiPnt7IHByb2Nlc3NPcHRpb25OYW1lKCBzdHJpbmcub3JpZ2luYWwsIGdyb3VwICkgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGdyb3VwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1uZXh0LXByZXZpb3VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cInRycC1wcmV2aW91c1wiIGNsYXNzPVwidHJwLW5leHQtcHJldmlvdXMtYnV0dG9uc1wiIHYtb246Y2xpY2s9XCJwcmV2aW91c1N0cmluZygpXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5wcmV2aW91c190aXRsZV9hdHRyXCI+PHNwYW4+JmxhcXVvOzwvc3Bhbj4ge3sgZWRpdG9yU3RyaW5ncy5wcmV2aW91cyB9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ0cnAtbmV4dFwiIGNsYXNzPVwidHJwLW5leHQtcHJldmlvdXMtYnV0dG9uc1wiIHYtb246Y2xpY2s9XCJuZXh0U3RyaW5nKClcIiA6dGl0bGU9XCJlZGl0b3JTdHJpbmdzLm5leHRfdGl0bGVfYXR0clwiPnt7IGVkaXRvclN0cmluZ3MubmV4dCB9fSA8c3Bhbj4mcmFxdW87PC9zcGFuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtdmlldy1hc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC12aWV3LWFzLWRlc2NyaXB0aW9uXCI+e3sgZWRpdG9yU3RyaW5ncy52aWV3X2FzIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPVwidHJwLXZpZXctYXMtc2VsZWN0XCIgdi1tb2RlbD1cInZpZXdBc1wiIHYtc2VsZWN0Mj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwiKHJvbGUsIHJvbGVJbmRleCkgaW4gcm9sZXNcIiA6dmFsdWU9XCJyb2xlXCIgOmRpc2FibGVkPVwiIXJvbGVcIiA6dGl0bGU9XCIhcm9sZSA/IGVkaXRvclN0cmluZ3Mudmlld19hc19wcm8gOiAnJ1wiPnt7cm9sZUluZGV4fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIiB2LXNob3c9XCJzZWxlY3RlZFN0cmluZyAhPT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYW5ndWFnZS1ib3hlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNlbGVjdGVkSW5kZXhlc0FycmF5PVwic2VsZWN0ZWRJbmRleGVzQXJyYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRpY3Rpb25hcnk9XCJkaWN0aW9uYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjdXJyZW50TGFuZ3VhZ2U9XCJjdXJyZW50TGFuZ3VhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOm9uU2NyZWVuTGFuZ3VhZ2U9XCJvblNjcmVlbkxhbmd1YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpsYW5ndWFnZU5hbWVzPVwibGFuZ3VhZ2VOYW1lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2V0dGluZ3M9XCJzZXR0aW5nc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6c2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZT1cInNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRpc2NhcmRlZC1jaGFuZ2VzPVwiaGFzVW5zYXZlZENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZsYWdzUGF0aD1cImZsYWdzX3BhdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFuZ3VhZ2UtYm94ZXM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZXh0cmEtY29udGVudCA6bGFuZ3VhZ2VOYW1lcz1cImxhbmd1YWdlTmFtZXNcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6cGFpZFZlcnNpb249XCJwYWlkX3ZlcnNpb25cIj48L2V4dHJhLWNvbnRlbnQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uXCIgdi1zaG93PVwidHJhbnNsYXRpb25Ob3RMb2FkZWRZZXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXRyYW5zbGF0aW9uLW5vdC1yZWFkeS1zZWN0aW9uXCIgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHYtaHRtbD1cImVkaXRvclN0cmluZ3MudHJhbnNsYXRpb25fbm90X2xvYWRlZF95ZXRcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwidHJwX3NlbGVjdDJfb3ZlcmxheVwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGhvdmVyLWFjdGlvbnNcclxuICAgICAgICAgICAgICAgIHJlZj1cImhvdmVyQWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICA6ZGljdGlvbmFyeT1cImRpY3Rpb25hcnlcIlxyXG4gICAgICAgICAgICAgICAgOnNldHRpbmdzPVwic2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXHJcbiAgICAgICAgICAgICAgICA6ZGF0YUF0dHJpYnV0ZXM9XCJkYXRhQXR0cmlidXRlc1wiXHJcbiAgICAgICAgICAgICAgICA6bWVyZ2VSdWxlcz1cIm1lcmdlUnVsZXNcIlxyXG4gICAgICAgICAgICAgICAgOm5vbmNlcz1cIm5vbmNlc1wiXHJcbiAgICAgICAgICAgICAgICA6YWpheF91cmw9XCJhamF4X3VybFwiXHJcbiAgICAgICAgICAgICAgICA6bWVyZ2VEYXRhPVwibWVyZ2VEYXRhXCJcclxuICAgICAgICAgICAgICAgIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9ob3Zlci1hY3Rpb25zPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGlkPVwidHJwLXByZXZpZXdcIj5cclxuICAgICAgICAgICAgPGlmcmFtZSBpZD1cInRycC1wcmV2aWV3LWlmcmFtZVwiIDpzcmM9XCJ1cmxUb0xvYWRcIiB2LW9uOmxvYWQ9XCJpRnJhbWVMb2FkZWRcIj48L2lmcmFtZT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtcHJldmlldy1sb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJ0cnAtbG9hZGVyXCIgd2lkdGg9XCI2NXB4XCIgaGVpZ2h0PVwiNjVweFwiIHZpZXdCb3g9XCIwIDAgNjYgNjZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cInRycC1jaXJjbGVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgY3g9XCIzM1wiIGN5PVwiMzNcIiByPVwiMzBcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuICAgIGltcG9ydCAnc2VsZWN0Mi9kaXN0L2pzL3NlbGVjdDIubWluLmpzJ1xyXG4gICAgaW1wb3J0IHV0aWxzICAgICAgICAgICAgZnJvbSAnLi91dGlscydcclxuICAgIGltcG9ydCBheGlvcyAgICAgICAgICAgIGZyb20gJ2F4aW9zJ1xyXG4gICAgaW1wb3J0IGxhbmd1YWdlQm94ZXMgICAgZnJvbSAnLi9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZSdcclxuICAgIGltcG9ydCBzYXZlVHJhbnNsYXRpb25zIGZyb20gJy4vY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWUnXHJcbiAgICBpbXBvcnQgaG92ZXJBY3Rpb25zICAgICBmcm9tICcuL2NvbXBvbmVudHMvaG92ZXItYWN0aW9ucy52dWUnXHJcbiAgICBpbXBvcnQgZXh0cmFDb250ZW50ICAgICBmcm9tICcuL2NvbXBvbmVudHMvZXh0cmEtY29udGVudC52dWUnXHJcbiAgICBpbXBvcnQgaGUgICAgICAgICAgICAgICBmcm9tICdoZSdcclxuXHJcbiAgICBleHBvcnQgZGVmYXVsdCB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgJ3RycF9zZXR0aW5ncycsXHJcbiAgICAgICAgICAgICdsYW5ndWFnZV9uYW1lcycsXHJcbiAgICAgICAgICAgICdvcmRlcmVkX3NlY29uZGFyeV9sYW5ndWFnZXMnLFxyXG4gICAgICAgICAgICAnY3VycmVudF9sYW5ndWFnZScsXHJcbiAgICAgICAgICAgICdvbl9zY3JlZW5fbGFuZ3VhZ2UnLFxyXG4gICAgICAgICAgICAndmlld19hc19yb2xlcycsXHJcbiAgICAgICAgICAgICd1cmxfdG9fbG9hZCcsXHJcbiAgICAgICAgICAgICdzdHJpbmdfc2VsZWN0b3JzJyxcclxuICAgICAgICAgICAgJ2RhdGFfYXR0cmlidXRlcycsXHJcbiAgICAgICAgICAgICdhamF4X3VybCcsXHJcbiAgICAgICAgICAgICdlZGl0b3Jfbm9uY2VzJyxcclxuICAgICAgICAgICAgJ3N0cmluZ19ncm91cF9vcmRlcicsXHJcbiAgICAgICAgICAgICdtZXJnZV9ydWxlcycsXHJcbiAgICAgICAgICAgICdsb2NhbGl6ZWRfdGV4dCcsXHJcbiAgICAgICAgICAgICdwYWlkX3ZlcnNpb24nLFxyXG4gICAgICAgICAgICAnZmxhZ3NfcGF0aCdcclxuICAgICAgICBdLFxyXG4gICAgICAgIGNvbXBvbmVudHM6e1xyXG4gICAgICAgICAgICBsYW5ndWFnZUJveGVzLFxyXG4gICAgICAgICAgICBzYXZlVHJhbnNsYXRpb25zLFxyXG4gICAgICAgICAgICBob3ZlckFjdGlvbnMsXHJcbiAgICAgICAgICAgIGV4dHJhQ29udGVudFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YSgpe1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLy9wcm9wc1xyXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MgICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoIHRoaXMudHJwX3NldHRpbmdzICksXHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZU5hbWVzICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5sYW5ndWFnZV9uYW1lcyApLFxyXG4gICAgICAgICAgICAgICAgb3JkZXJlZFNlY29uZGFyeUxhbmd1YWdlcyA6IEpTT04ucGFyc2UoIHRoaXMub3JkZXJlZF9zZWNvbmRhcnlfbGFuZ3VhZ2VzICksXHJcbiAgICAgICAgICAgICAgICByb2xlcyAgICAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy52aWV3X2FzX3JvbGVzICksXHJcbiAgICAgICAgICAgICAgICBub25jZXMgICAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5lZGl0b3Jfbm9uY2VzKSxcclxuICAgICAgICAgICAgICAgIHN0cmluZ0dyb3VwT3JkZXIgICAgICAgICAgOiBKU09OLnBhcnNlKCB0aGlzLnN0cmluZ19ncm91cF9vcmRlciksXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnMgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5zdHJpbmdfc2VsZWN0b3JzICksXHJcbiAgICAgICAgICAgICAgICBkYXRhQXR0cmlidXRlcyAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5kYXRhX2F0dHJpYnV0ZXMgKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlUnVsZXMgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKCB0aGlzLm1lcmdlX3J1bGVzICksXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5sb2NhbGl6ZWRfdGV4dCApLFxyXG4gICAgICAgICAgICAgICAgLy9kYXRhXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UgICAgICAgICAgIDogdGhpcy5jdXJyZW50X2xhbmd1YWdlLFxyXG4gICAgICAgICAgICAgICAgb25TY3JlZW5MYW5ndWFnZSAgICAgICAgICA6IHRoaXMub25fc2NyZWVuX2xhbmd1YWdlLFxyXG4gICAgICAgICAgICAgICAgY3VycmVudFVSTCAgICAgICAgICAgICAgICA6IHRoaXMudXJsX3RvX2xvYWQsXHJcbiAgICAgICAgICAgICAgICB1cmxUb0xvYWQgICAgICAgICAgICAgICAgIDogdGhpcy51cmxfdG9fbG9hZCxcclxuICAgICAgICAgICAgICAgIGlmcmFtZSAgICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkgICAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RyaW5nICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleGVzQXJyYXkgICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgZGV0ZWN0ZWRTZWxlY3RvckFuZElkICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgc3RyaW5nR3JvdXBzICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2luZ1N0cmluZyAgICAgICAgICAgICA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VEYXRhICAgICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgdmlld0FzICAgICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZ19zdHJpbmdzICAgICAgICAgICA6IDAsXHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk5vdExvYWRlZFlldCAgIDogZmFsc2UsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNyZWF0ZWQoKXtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZS1uYW1lJ10gPSB0aGlzLmxhbmd1YWdlTmFtZXNbIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSBdXHJcblxyXG4gICAgICAgICAgICAvL3NldCBkZWZhdWx0IHZhbHVlIGZvciB0aGUgVmlldyBBcyBzZWxlY3RcclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHV0aWxzLmdldFVybFBhcmFtZXRlcnMoIHRoaXMuY3VycmVudFVSTCApXHJcblxyXG4gICAgICAgICAgICBpZiggT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPiAxICYmIHBhcmFtc1sndHJwLXZpZXctYXMnXSApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdBcyA9IHBhcmFtc1sndHJwLXZpZXctYXMnXVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdBcyA9ICdjdXJyZW50X3VzZXInXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtb3VudGVkKCl7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpXHJcbiAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xyXG4gICAgICAgICAgICAvLyBpbml0aWFsaXplIHNlbGVjdDJcclxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1sYW5ndWFnZS1zZWxlY3QsICN0cnAtdmlldy1hcy1zZWxlY3QnICkuc2VsZWN0MiggeyB3aWR0aCA6ICcxMDAlJyB9KVxyXG5cclxuICAgICAgICAgICAgLy9pbml0IHN0cmluZ3MgZHJvcGRvd25cclxuICAgICAgICAgICAgdGhpcy5zdHJpbmdzRHJvcGRvd25Mb2FkaW5nKClcclxuXHJcbiAgICAgICAgICAgIC8vIHNob3cgb3ZlcmxheSB3aGVuIHNlbGVjdCBpcyBvcGVuZWRcclxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1sYW5ndWFnZS1zZWxlY3QsICN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnICkub24oICdzZWxlY3QyOm9wZW4nLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnBfc2VsZWN0Ml9vdmVybGF5JyApLmZhZGVJbiggJzEwMCcgKVxyXG4gICAgICAgICAgICB9KS5vbiggJ3NlbGVjdDI6Y2xvc2UnLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnBfc2VsZWN0Ml9vdmVybGF5JyApLmhpZGUoKVxyXG4gICAgICAgICAgICB9KS5vbiggJ3NlbGVjdDI6b3BlbmluZycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIC8qIHdoZW4gd2UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgcHJldmVudCB0aGUgc3RyaW5ncyBkcm9wZG93biBmcm9tIG9wZW5pbmcgc28gd2UgZG8gbm90IGhhdmUgYSBkaXNjb25uZWN0IGJldHdlZW4gdGhlIHRleHRhcmVhcyBhbmQgdGhlIGRyb3Bkb3duICovXHJcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5oYXNVbnNhdmVkQ2hhbmdlcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAvLyByZXNpemUgc2lkZWJhciBhbmQgY29uc2VxdWVudGx5IHRoZSBpZnJhbWVcclxuICAgICAgICAgICAgbGV0IHByZXZpZXdDb250YWluZXIgPSBqUXVlcnkoICcjdHJwLXByZXZpZXcnICk7XHJcbiAgICAgICAgICAgIGxldCB0b3RhbF93aWR0aCA9IGpRdWVyeSh3aW5kb3cpLndpZHRoKCk7XHJcbiAgICAgICAgICAgIGpRdWVyeSggJyN0cnAtY29udHJvbHMnICkucmVzaXphYmxlKHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbiggKSB7IHByZXZpZXdDb250YWluZXIudG9nZ2xlKCk7IH0sXHJcbiAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbiggKSB7IHByZXZpZXdDb250YWluZXIudG9nZ2xlKCk7IH0sXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVzOiAnZScsXHJcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMjg1LFxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IHRvdGFsX3dpZHRoIC0gMjBcclxuICAgICAgICAgICAgfSkuYmluZCggXCJyZXNpemVcIiwgdGhpcy5yZXNpemVJZnJhbWUgKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHJlc2l6ZSBpZnJhbWUgd2hlbiByZXNpemluZyB3aW5kb3dcclxuICAgICAgICAgICAgalF1ZXJ5KCB3aW5kb3cgKS5yZXNpemUoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5yZXNpemVJZnJhbWUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB3YXRjaDoge1xyXG4gICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IGZ1bmN0aW9uKCBjdXJyZW50TGFuZ3VhZ2UgKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuICAgICAgICAgICAgICAgIC8vZ3JhYiB0aGUgY29ycmVjdCBVUkwgZnJvbSB0aGUgaUZyYW1lXHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3VVJMID0gdGhpcy5pZnJhbWUucXVlcnlTZWxlY3RvciggJ2xpbmtbaHJlZmxhbmc9XCInICsgY3VycmVudExhbmd1YWdlLnJlcGxhY2UoICdfJywgJy0nICkgKydcIl0nICkuZ2V0QXR0cmlidXRlKCdocmVmJylcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVUkwgICAgICAgICAgID0gbmV3VVJMXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlmcmFtZS5sb2NhdGlvbiAgICAgID0gbmV3VVJMXHJcblxyXG4gICAgICAgICAgICAgICAgLy9yZXNldCB2dWUgcHJvcHNcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdHJpbmcgICAgICAgPSAnJ1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheSA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgLy9zZXQgc3RyaW5ncyBkcm9wZG93biB0byBsb2FkaW5nIHN0YXRlXHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnKS52YWwoJycpLnRyaWdnZXIoJ2NoYW5nZScpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ3NEcm9wZG93bkxvYWRpbmcoKVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMub25TY3JlZW5MYW5ndWFnZSA9IGN1cnJlbnRMYW5ndWFnZVxyXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSA9PSB0aGlzLmN1cnJlbnRMYW5ndWFnZSAmJiB0aGlzLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5sZW5ndGggPiAxICl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uc29tZShmdW5jdGlvbihsYW5ndWFnZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbGFuZ3VhZ2UgIT0gc2VsZi5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gdGhlIGZpcnN0IGxhbmd1YWdlIG5vdCBkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9uU2NyZWVuTGFuZ3VhZ2UgPSBsYW5ndWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGN1cnJlbnRVUkw6IGZ1bmN0aW9uICggbmV3VXJsLCBvbGRVcmwgKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoIG51bGwsIG51bGwsIHRoaXMucGFyZW50VVJMKCBuZXdVcmwgKSApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHZpZXdBczogZnVuY3Rpb24oIHJvbGUgKSB7XHJcbiAgICAgICAgICAgICAgICBpZiggIXRoaXMuY3VycmVudFVSTCB8fCAhdGhpcy5pZnJhbWUgKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSB0aGlzLmNsZWFuVVJMKCB0aGlzLmN1cnJlbnRVUkwgKVxyXG5cclxuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnVwZGF0ZVVybFBhcmFtZXRlciggdXJsLCAndHJwLWVkaXQtdHJhbnNsYXRpb24nLCAncHJldmlldycgKVxyXG5cclxuICAgICAgICAgICAgICAgIGlmKCByb2xlID09ICdjdXJyZW50X3VzZXInICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaWZyYW1lLmxvY2F0aW9uID0gdXJsXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy9pZiBub25jZSBub3QgYXZhaWxhYmxlLCBhbiB1cGRhdGUgdG8gdGhlIEJyb3dzZSBhcyBPdGhlciBSb2xlcyBhZGQtb24gaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgIGlmKCAhdGhpcy5ub25jZXNbcm9sZV0gKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoIHRoaXMuZWRpdG9yU3RyaW5ncy5ib3JfdXBkYXRlX25vdGljZSApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMudXBkYXRlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtdmlldy1hcycsIHJvbGUgKVxyXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMudXBkYXRlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtdmlldy1hcy1ub25jZScsIHRoaXMubm9uY2VzW3JvbGVdIClcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlmcmFtZS5sb2NhdGlvbiA9IHVybFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZWxlY3RlZFN0cmluZzogZnVuY3Rpb24gKCBzZWxlY3RlZFN0cmluZ0FycmF5SW5kZXgsIG9sZFN0cmluZyApe1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKCB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKCkgfHwgKCAhc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4ICYmIHNlbGVjdGVkU3RyaW5nQXJyYXlJbmRleCAhPT0gMCApIClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuXHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnZhbCggc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4ICE9PSBudWxsID8gc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4IDogJycgKS50cmlnZ2VyKCAnY2hhbmdlJyApXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkU3RyaW5nICAgICAgID0gdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkU3RyaW5nQXJyYXlJbmRleF1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiggIXNlbGVjdGVkU3RyaW5nIClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudE5vZGUgICAgICAgICAgPSB0aGlzLmlmcmFtZS5xdWVyeVNlbGVjdG9yKCBcIltcIiArIHNlbGVjdGVkU3RyaW5nLnNlbGVjdG9yICsgXCI9J1wiICsgc2VsZWN0ZWRTdHJpbmcuZGJJRCArIFwiJ11cIilcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEluZGV4ZXNBcnJheSA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgLy93aGVuIG1lcmdpbmcgd2UgZG8gbm90IGhhdmUgYSB2YWxpZCBjdXJyZW50IG5vZGUsIHNvIHdlIGp1c3QgYWRkIHRoZSBmYWtlIGlkXHJcbiAgICAgICAgICAgICAgICBpZiggY3VycmVudE5vZGUgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdG9ycyA9IHNlbGYuZ2V0QWxsU2VsZWN0b3JzKClcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBbXVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2Rlcy5wdXNoKCBjdXJyZW50Tm9kZSApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggY3VycmVudE5vZGUudGFnTmFtZSAhPSBcIkFcIiApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmNsdWRlIHRoZSBhbmNob3IncyB0cmFuc2xhdGFibGUgYXR0cmlidXRlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yUGFyZW50ICA9IGN1cnJlbnROb2RlLmNsb3Nlc3QoJ2EnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggIGFuY2hvclBhcmVudCAhPSBudWxsICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChhbmNob3JQYXJlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggY3VycmVudE5vZGUudGFnTmFtZSA9PSBcIkFcIiAmJiBjdXJyZW50Tm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluY2x1ZGUgYWxsIHRoZSB0cmFuc2xhdGFibGUgYXR0cmlidXRlcyBpbnNpZGUgdGhlIGFuY2hvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGRyZW5BcnJheSA9IFsgLi4uY3VycmVudE5vZGUuY2hpbGRyZW4gXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS5mb3JFYWNoKCBmdW5jdGlvbiAoIGNoaWxkICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2Rlcy5mb3JFYWNoKCBmdW5jdGlvbiggbm9kZSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzLmZvckVhY2goZnVuY3Rpb24gKHNlbGVjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RyaW5nSWQgPSBub2RlLmdldEF0dHJpYnV0ZShzZWxlY3RvcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmdJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoOyBpKysgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhlc0FycmF5W2ldXSAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhlc0FycmF5W2ldXS5kYklEICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleGVzQXJyYXlbaV1dLmRiSUQgPT09IHN0cmluZ0lkICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISBmb3VuZCApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleGVzQXJyYXkucHVzaChzZWxmLmdldFN0cmluZ0luZGV4KHNlbGVjdG9yLCBzdHJpbmdJZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheS5wdXNoKCBzZWxlY3RlZFN0cmluZ0FycmF5SW5kZXggKVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkgPSBzZWxlY3RlZEluZGV4ZXNBcnJheVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICAgICAgY2xvc2VVUkw6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5VUkwoIHRoaXMuY3VycmVudFVSTCApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgaUZyYW1lTG9hZGVkKCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3RycC1wcmV2aWV3LWlmcmFtZScpXHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWUgPSBpZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudCB8fCBpZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnRcclxuXHJcbiAgICAgICAgICAgICAgICAvL3N5bmMgaUZyYW1lIFVSTCB3aXRoIHBhcmVudFxyXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLmN1cnJlbnRVUkwgIT0gdGhpcy5pZnJhbWUuVVJMIClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVUkwgPSB0aGlzLmlmcmFtZS5VUkxcclxuXHJcbiAgICAgICAgICAgICAgICAvL2hpZGUgaUZyYW1lIGxvYWRlclxyXG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWVMb2FkZXIoICdoaWRlJyApXHJcblxyXG4gICAgICAgICAgICAgICAgc2VsZi5kZXRlY3RlZFNlbGVjdG9yQW5kSWQgPSBbXVxyXG4gICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5ICAgICAgICAgICAgPSBbXVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2FuSWZyYW1lRm9yU3RyaW5ncygpXHJcblxyXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfaWZyYW1lX3BhZ2VfdXBkYXRlZCcsIHRoaXMuc2NhbklmcmFtZUZvclN0cmluZ3MgKVxyXG5cclxuICAgICAgICAgICAgICAgIC8vZXZlbnQgdGhhdCBpcyBmaXJlZCB3aGVuIHRoZSBpRnJhbWUgaXMgbmF2aWdhdGVkXHJcbiAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cub25iZWZvcmV1bmxvYWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLmlmcmFtZUxvYWRlciggJ3Nob3cnIClcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZFN0cmluZyA9IG51bGxcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gW11cclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYW5zbGF0aW9uTm90TG9hZGVkWWV0ID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdHJpbmdzRHJvcGRvd25Mb2FkaW5nKClcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNjYW5JZnJhbWVGb3JTdHJpbmdzKCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjYW5Gb3JTZWxlY3RvciggJ2RhdGEtdHJwLXRyYW5zbGF0ZS1pZCcsICdyZWd1bGFyJywgdGhpcy5vblNjcmVlbkxhbmd1YWdlIClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NhbkZvclNlbGVjdG9yKCAnZGF0YS10cnBnZXR0ZXh0b3JpZ2luYWwnLCAnZ2V0dGV4dCcsIHRoaXMuY3VycmVudExhbmd1YWdlIClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NhbkZvclNlbGVjdG9yKCAnZGF0YS10cnAtcG9zdC1zbHVnJywgJ3Bvc3RzbHVnJywgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzY2FuRm9yU2VsZWN0b3IoIGJhc2VTZWxlY3RvciwgdHlwZVNsdWcsIGxhbmd1YWdlT2ZJZHMgKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ19zdHJpbmdzKytcclxuICAgICAgICAgICAgICAgIGxldCBzZWxmICAgICAgICAgICA9IHRoaXNcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RvcnMgICAgICA9IHRoaXMucHJlcGFyZVNlbGVjdG9yU3RyaW5ncyggYmFzZVNlbGVjdG9yIClcclxuICAgICAgICAgICAgICAgIGxldCBub2RlcyAgICAgICAgICA9IFsuLi50aGlzLmlmcmFtZS5xdWVyeVNlbGVjdG9yQWxsKCAnWycgKyBzZWxlY3RvcnMuam9pbignXSxbJykgKyAnXScgKV1cclxuICAgICAgICAgICAgICAgIGxldCBzdHJpbmdJZHNBcnJheSA9IFtdLCBub2RlRGF0YSA9IFtdLCBub2RlRW50cmllcyA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCggZnVuY3Rpb24gKCBub2RlICl7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZUVudHJpZXMgPSBzZWxmLmdldE5vZGVJbmZvKCBub2RlLCBiYXNlU2VsZWN0b3IgKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlRW50cmllcy5mb3JFYWNoKCBmdW5jdGlvbiggZW50cnkgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgY2hlY2sgZW5zdXJlcyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBkdXBsaWNhdGVzIHdoZW4gcmVzY2FubmluZyBhZnRlciBhamF4IGNvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXNlbGYuYWxyZWFkeURldGVjdGVkKCBlbnRyeS5zZWxlY3RvciwgZW50cnkuZGJJRCApICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nSWRzQXJyYXkucHVzaChlbnRyeS5kYklEKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZURhdGEucHVzaChlbnRyeSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0dXBFdmVudExpc3RlbmVyKCBub2RlIClcclxuICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgLy91bmlxdWUgaWRzIG9ubHlcclxuICAgICAgICAgICAgICAgIHN0cmluZ0lkc0FycmF5ID0gWy4uLm5ldyBTZXQoc3RyaW5nSWRzQXJyYXkpXVxyXG4gICAgICAgICAgICAgICAgaWYgKCBzdHJpbmdJZHNBcnJheS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IEZvcm1EYXRhKClcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aW9uJyAgICAgICAsICd0cnBfZ2V0X3RyYW5zbGF0aW9uc18nICsgdHlwZVNsdWcpXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2FsbF9sYW5ndWFnZXMnLCAndHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3NlY3VyaXR5JyAgICAgLCB0aGlzLm5vbmNlc1snZ2V0dHJhbnNsYXRpb25zbm9uY2UnICsgdHlwZVNsdWddKVxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdsYW5ndWFnZScgICAgICwgbGFuZ3VhZ2VPZklkcylcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnc3RyaW5nX2lkcycgICAsIEpTT04uc3RyaW5naWZ5KHN0cmluZ0lkc0FycmF5KSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhfdXJsLCBkYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZGluZ19zdHJpbmdzLS1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkVG9EaWN0aW9uYXJ5KHJlc3BvbnNlLmRhdGEsIG5vZGVEYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkaW5nX3N0cmluZ3MtLVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWxyZWFkeURldGVjdGVkKCBzZWxlY3RvciwgZGJJZCApe1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbWJpbmVkID0gc2VsZWN0b3IgKyAnPScgKyBkYklkXHJcbiAgICAgICAgICAgICAgICBpZiAoIHV0aWxzLmFycmF5Q29udGFpbnNJdGVtKCB0aGlzLmRldGVjdGVkU2VsZWN0b3JBbmRJZCwgY29tYmluZWQgKSApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0ZWN0ZWRTZWxlY3RvckFuZElkLnB1c2goY29tYmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldHVwRXZlbnRMaXN0ZW5lciggbm9kZSApe1xyXG4gICAgICAgICAgICAgICAgaWYgKCBub2RlLnRhZ05hbWUgPT0gJ0EnICYmICFub2RlLmhhc0F0dHJpYnV0ZSggJ2RhdGEtdHJwZ2V0dGV4dG9yaWdpbmFsJyApIClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuXHJcbiAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoICdtb3VzZWVudGVyJywgc2VsZi4kcmVmcy5ob3ZlckFjdGlvbnMuc2hvd1BlbmNpbEljb24gKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRUb0RpY3Rpb25hcnkoIHJlc3BvbnNlRGF0YSwgbm9kZUluZm8gPSBudWxsICl7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHJlc3BvbnNlRGF0YSAhPSBudWxsICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICggbm9kZUluZm8gKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZm8uZm9yRWFjaChmdW5jdGlvbiAoIGluZm9Sb3csIGluZGV4ICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZURhdGEuc29tZSggZnVuY3Rpb24gKCByZXNwb25zZURhdGFSb3cgKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW5mb1Jvdy5kYklEID09IHJlc3BvbnNlRGF0YVJvdy5kYklEICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2JyaW5nIGJsb2NrX3R5cGUgdG8gdGhlIHRvcCBsZXZlbCBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXNwb25zZURhdGFSb3cudHlwZSAhPSAnZ2V0dGV4dCcgJiYgdHlwZW9mIHJlc3BvbnNlRGF0YVJvdy5ibG9ja190eXBlID09ICd1bmRlZmluZWQnICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0TGFuZ3VhZ2UgPSBzZWxmLm9yZGVyZWRTZWNvbmRhcnlMYW5ndWFnZXNbMF1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiByZXNwb25zZURhdGFSb3cudHJhbnNsYXRpb25zQXJyYXlbZmlyc3RMYW5ndWFnZV0uYmxvY2tfdHlwZSAhPSAndW5kZWZpbmVkJyApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VEYXRhUm93LmJsb2NrX3R5cGUgPSByZXNwb25zZURhdGFSb3cudHJhbnNsYXRpb25zQXJyYXlbZmlyc3RMYW5ndWFnZV0uYmxvY2tfdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5mb1tpbmRleF0gPSBPYmplY3QuYXNzaWduKCB7fSwgcmVzcG9uc2VEYXRhUm93LCBpbmZvUm93IClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWUgLy8gYSBzb3J0IG9mIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZm8gPSByZXNwb25zZURhdGFcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RyaW5nR3JvdXBzID0gdGhpcy5hZGRUb1N0cmluZ0dyb3Vwcyggbm9kZUluZm8gKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeSA9IHRoaXMuZGljdGlvbmFyeS5jb25jYXQoIG5vZGVJbmZvIClcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U3RyaW5nc0Ryb3Bkb3duKClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkVG9TdHJpbmdHcm91cHMoIHN0cmluZ3MgKXtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBzZWUgd2hhdCBub2RlIGdyb3VwcyBhcmUgZm91bmRcclxuICAgICAgICAgICAgICAgIGxldCBmb3VuZFN0cmluZ0dyb3VwcyA9IHRoaXMuc3RyaW5nR3JvdXBzO1xyXG4gICAgICAgICAgICAgICAgc3RyaW5ncy5mb3JFYWNoKCBmdW5jdGlvbiAoIHN0cmluZyApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIGZvdW5kU3RyaW5nR3JvdXBzLmluZGV4T2YoIHN0cmluZy5ncm91cCApID09PSAtMSAmJiAoICggdHlwZW9mIHN0cmluZy5ibG9ja1R5cGUgPT09ICd1bmRlZmluZWQnICkgfHwgc3RyaW5nLmJsb2NrVHlwZSAhPT0gJzInICkgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTdHJpbmdHcm91cHMucHVzaCggc3RyaW5nLmdyb3VwIClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHB1dCB0aGUgbm9kZSBncm91cHMgaW4gdGhlIG9yZGVyIHRoYXQgd2Ugd2FudCwgYWNjb3JkaW5nIHRvIHRoZSBwcm9wIHRoaXMuc3RyaW5nR3JvdXBPcmRlclxyXG4gICAgICAgICAgICAgICAgbGV0IG9yZGVyZWRTdHJpbmdHcm91cHMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuZWRpdG9yU3RyaW5ncy5zZW9fdXBkYXRlX25vdGljZSAhPSAnc2VvX3BhY2tfdXBkYXRlX25vdF9uZWVkZWQnICl7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJlZFN0cmluZ0dyb3Vwcy5wdXNoKCB0aGlzLmVkaXRvclN0cmluZ3Muc2VvX3VwZGF0ZV9ub3RpY2UgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ0dyb3VwT3JkZXIuZm9yRWFjaCggZnVuY3Rpb24oIGdyb3VwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBmb3VuZFN0cmluZ0dyb3Vwcy5pbmRleE9mKCBncm91cCApICE9PSAtMSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkU3RyaW5nR3JvdXBzLnB1c2goIGdyb3VwIClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIHdlcmUgYW55IG90aGVyIHN0cmluZyBncm91cHMgdGhhdCB3ZXJlIG5vdCBpbiB0aGUgcHJvcCwgYWRkIHRoZW0gYXQgdGhlIGVuZC5cclxuICAgICAgICAgICAgICAgIGZvdW5kU3RyaW5nR3JvdXBzLmZvckVhY2goIGZ1bmN0aW9uIChncm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICggb3JkZXJlZFN0cmluZ0dyb3Vwcy5pbmRleE9mKCBncm91cCApID09PSAtMSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkU3RyaW5nR3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyZWRTdHJpbmdHcm91cHM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldFN0cmluZ0luZGV4KCBzZWxlY3RvciwgZGJJRCApe1xyXG4gICAgICAgICAgICAgICAgbGV0IGZvdW5kID0gbnVsbFxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeS5zb21lKGZ1bmN0aW9uICggc3RyaW5nLCBpbmRleCApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIHN0cmluZy5kYklEID09IGRiSUQgJiYgc3RyaW5nLnNlbGVjdG9yID09IHNlbGVjdG9yICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXROb2RlSW5mbyggbm9kZSwgYmFzZVNlbGVjdG9yID0gJycgKXtcclxuICAgICAgICAgICAgICAgIGxldCBzdHJpbmdJZFxyXG4gICAgICAgICAgICAgICAgbGV0IG5vZGVEYXRhICA9IFtdXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0b3JzID0gdGhpcy5wcmVwYXJlU2VsZWN0b3JTdHJpbmdzKCBiYXNlU2VsZWN0b3IgKVxyXG5cclxuICAgICAgICAgICAgICAgIHNlbGVjdG9ycy5mb3JFYWNoKCBmdW5jdGlvbiAoIHNlbGVjdG9yICkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBzdHJpbmdJZCA9IG5vZGUuZ2V0QXR0cmlidXRlKCBzZWxlY3RvciApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggc3RyaW5nSWQgKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZUF0dHJpYnV0ZSAgID0gc2VsZWN0b3IucmVwbGFjZSggYmFzZVNlbGVjdG9yLCAnJyApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlR3JvdXAgICAgICAgPSBub2RlLmdldEF0dHJpYnV0ZSggJ2RhdGEtdHJwLW5vZGUtZ3JvdXAnICsgbm9kZUF0dHJpYnV0ZSApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlRGVzY3JpcHRpb24gPSBub2RlLmdldEF0dHJpYnV0ZSggJ2RhdGEtdHJwLW5vZGUtZGVzY3JpcHRpb24nICsgbm9kZUF0dHJpYnV0ZSApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYklEICAgICAgOiBzdHJpbmdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yICA6IHNlbGVjdG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIDogbm9kZUF0dHJpYnV0ZS5zdWJzdHIoMSksIC8vIHN1YnN0cigxKSBpcyB1c2VkIHRvIHRyaW0gcHJlZml4aW5nIGxpbmUgLSBleC4gLWFsdCB3aWxsIHJlc3VsdCBpbiBhbHQgKG5vIGxpbmUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZUdyb3VwIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5Lmdyb3VwID0gbm9kZUdyb3VwXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGVEZXNjcmlwdGlvbiApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZXNjcmlwdGlvbiA9IG5vZGVEZXNjcmlwdGlvblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZURhdGEucHVzaCggZW50cnkgKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGF0YVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXRBbGxTZWxlY3RvcnMoKXtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RvcnMgPSBbXVxyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgICAgICA9IHRoaXNcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFBdHRyaWJ1dGVzLmZvckVhY2goIGZ1bmN0aW9uICggZGF0YUF0dHJpYnV0ZSApe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycyA9IHNlbGVjdG9ycy5jb25jYXQoIHNlbGYucHJlcGFyZVNlbGVjdG9yU3RyaW5ncyggZGF0YUF0dHJpYnV0ZSApIClcclxuICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwcmVwYXJlU2VsZWN0b3JTdHJpbmdzKCBiYXNlTmFtZVNlbGVjdG9yICl7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkX3NlbGVjdG9ycyA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RvcnMuZm9yRWFjaCggZnVuY3Rpb24gKCBzZWxlY3RvclN1ZmZpeCwgaW5kZXggKXtcclxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRfc2VsZWN0b3JzLnB1c2goIGJhc2VOYW1lU2VsZWN0b3IgKyBzZWxlY3RvclN1ZmZpeCAgKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkX3NlbGVjdG9yc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwYXJlbnRVUkwoIHVybCApe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKCAndHJwLWVkaXQtdHJhbnNsYXRpb249cHJldmlldycsICd0cnAtZWRpdC10cmFuc2xhdGlvbj10cnVlJyApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNsZWFuVVJMKCB1cmwgKXtcclxuICAgICAgICAgICAgICAgIC8vbWFrZSByZW1vdmVVcmxQYXJhbWV0ZXIgcmVjdXJzaXZlIGFuZCBvbmx5IGNhbGwgaXQgb25jZSB3aXRoIGFsbCB0aGUgcGFyYW1ldGVycyB0aGF0XHJcbiAgICAgICAgICAgICAgICAvL25lZWQgdG8gc3RyaXBwZWQgP1xyXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMucmVtb3ZlVXJsUGFyYW1ldGVyKCB1cmwsICdsYW5nJyApXHJcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzJyApXHJcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzLW5vbmNlJyApXHJcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC1lZGl0LXRyYW5zbGF0aW9uJyApXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaG93U3RyaW5nKCBzdHJpbmcsIHR5cGUgKXtcclxuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHN0cmluZy5ibG9ja1R5cGUgIT09ICd1bmRlZmluZWQnICYmIHN0cmluZy5ibG9ja1R5cGUgPT09ICcyJyApe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHNob3cgZGVwcmVjYXRlZCB0cmFuc2xhdGlvbiBibG9ja3MgaW4gdGhlIGRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT09IHRoaXMuZWRpdG9yU3RyaW5ncy5pbWFnZXMgJiYgdHlwZW9mIHN0cmluZy5hdHRyaWJ1dGUgIT0gJ3VuZGVmaW5lZCcgJiYgc3RyaW5nLmF0dHJpYnV0ZSA9PSAnc3JjJyApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBzdHJpbmcuYXR0cmlidXRlICE9PSAndW5kZWZpbmVkJyAmJiAoIHN0cmluZy5hdHRyaWJ1dGUgPT0gJ2hyZWYnIHx8IHN0cmluZy5hdHRyaWJ1dGUgPT0gJ3NyYycgKSApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCBzdHJpbmcuZ3JvdXAgPT09IHR5cGUgKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGluaXRTdHJpbmdzRHJvcGRvd24oKXtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICggIXRoaXMuaXNTdHJpbmdzRHJvcGRvd25PcGVuKCkgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1zdHJpbmctY2F0ZWdvcmllcycgKS5zZWxlY3QyKCAnZGVzdHJveScgKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoIHsgcGxhY2Vob2xkZXIgOiBzZWxmLmVkaXRvclN0cmluZ3Muc2VsZWN0X3N0cmluZywgdGVtcGxhdGVSZXN1bHQ6IGZ1bmN0aW9uKG9wdGlvbil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbCAgICA9IGhlLmRlY29kZSggb3B0aW9uLnRleHQuc3Vic3RyaW5nKDAsIDkwKSApICsgKCAoIG9wdGlvbi50ZXh0Lmxlbmd0aCA8PSA5MCkgPyAnJyA6ICcuLi4nIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9uID0gKCBvcHRpb24udGl0bGUgKSA/ICAnKCcgKyBvcHRpb24udGl0bGUgKyAnKScgOiAnJ1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSggJzxkaXY+JyArIG9yaWdpbmFsICsgJzwvZGl2PjxkaXYgY2xhc3M9XCJzdHJpbmctc2VsZWN0b3ItZGVzY3JpcHRpb25cIj4nICsgZGVzY3JpcHRpb24gKyAnPC9kaXY+JyApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIHdpZHRoIDogJzEwMCUnIH0gKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnBfc2VsZWN0Ml9vdmVybGF5JyApLmhpZGUoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHJpbmdzRHJvcGRvd25Mb2FkaW5nKCl7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoIHsgcGxhY2Vob2xkZXIgOiB0aGlzLmVkaXRvclN0cmluZ3Muc3RyaW5nc19sb2FkaW5nLCB3aWR0aCA6ICcxMDAlJyB9ICkucHJvcCggJ2Rpc2FibGVkJywgdHJ1ZSApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByb2Nlc3NPcHRpb25OYW1lKCBuYW1lLCB0eXBlICl7XHJcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT0gJ0ltYWdlcycgKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1dGlscy5nZXRGaWxlbmFtZSggbmFtZSApXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWxzLmVzY2FwZUh0bWwoIG5hbWUgKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBpc1N0cmluZ3NEcm9wZG93bk9wZW4oKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoICdpc09wZW4nIClcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXMoKXtcclxuICAgICAgICAgICAgICAgIGxldCB1bnNhdmVkQ2hhbmdlcyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuICAgICAgICAgICAgICAgIGlmICggdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoc2VsZWN0ZWRJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKGZ1bmN0aW9uIChsYW5ndWFnZUNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICE9PSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNhdmVkQ2hhbmdlcyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlID0gdW5zYXZlZENoYW5nZXNcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5zYXZlZENoYW5nZXNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaWZyYW1lTG9hZGVyKCBzdGF0dXMgKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbG9hZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0cnAtcHJldmlldy1sb2FkZXInIClcclxuXHJcbiAgICAgICAgICAgICAgICBpZiggc3RhdHVzID09ICdzaG93JyApXHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYoIHN0YXR1cyA9PSAnaGlkZScgKVxyXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZXZpb3VzU3RyaW5nKCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RycC1zdHJpbmctY2F0ZWdvcmllcycpLnZhbHVlXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gK2N1cnJlbnRWYWx1ZSAtIDFcclxuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSggbmV3VmFsdWUgPj0gMCAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjdHJwLXN0cmluZy1jYXRlZ29yaWVzIG9wdGlvblt2YWx1ZT1cIicgKyBuZXdWYWx1ZSArICdcIl0nKS5sZW5ndGggPT09IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZS0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmKCBuZXdWYWx1ZSA8IDAgKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdHJpbmcgPSBuZXdWYWx1ZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5leHRTdHJpbmcoKXtcclxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJwLXN0cmluZy1jYXRlZ29yaWVzJykudmFsdWUsIG5ld1ZhbHVlID0gMFxyXG5cclxuICAgICAgICAgICAgICAgIGlmKCBjdXJyZW50VmFsdWUgIT0gJycgKVxyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gK2N1cnJlbnRWYWx1ZSArIDFcclxuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSggbmV3VmFsdWUgPCB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMgb3B0aW9uW3ZhbHVlPVwiJyArIG5ld1ZhbHVlICsgJ1wiXScpLmxlbmd0aCA9PT0gMCApe1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCBuZXdWYWx1ZSA+PSB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoICl7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0cmluZyA9IG5ld1ZhbHVlLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpe1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaChcIk1hY1wiKSA/IGUubWV0YUtleSA6IGUuY3RybEtleSkgJiYgZS5hbHRLZXkgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENUUkwgKyBBTFQgKyByaWdodCBhcnJvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggZS5rZXlDb2RlID09PSAzOSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoIG5ldyBFdmVudCggJ3RycF90cmlnZ2VyX25leHRfc3RyaW5nX2V2ZW50JyApICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIEFMVCArIGxlZnQgYXJyb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBlLmtleUNvZGUgPT09IDM3ICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfcHJldmlvdXNfc3RyaW5nX2V2ZW50JyApICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9uZXh0X3N0cmluZ19ldmVudCcsIHRoaXMubmV4dFN0cmluZyApXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX3ByZXZpb3VzX3N0cmluZ19ldmVudCcsIHRoaXMucHJldmlvdXNTdHJpbmcgKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZXNpemVJZnJhbWUgKGV2ZW50LCB1aSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsX3dpZHRoID0galF1ZXJ5KHdpbmRvdykud2lkdGgoKTtcclxuICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGpRdWVyeSggJyN0cnAtY29udHJvbHMnICkud2lkdGgoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZih3aWR0aCA+IHRvdGFsX3dpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSB0b3RhbF93aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9scy5jc3MoJ3dpZHRoJywgd2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHByZXZpZXdDb250YWluZXIgPSBqUXVlcnkoICcjdHJwLXByZXZpZXcnICk7XHJcbiAgICAgICAgICAgICAgICBwcmV2aWV3Q29udGFpbmVyLmNzcygncmlnaHQnLCB3aWR0aCApO1xyXG4gICAgICAgICAgICAgICAgcHJldmlld0NvbnRhaW5lci5jc3MoJ2xlZnQnLCAoIHdpZHRoIC0gMzQ4ICkgKTtcclxuICAgICAgICAgICAgICAgIHByZXZpZXdDb250YWluZXIuY3NzKCd3aWR0aCcsICh0b3RhbF93aWR0aCAtIHdpZHRoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vYWRkIHN1cHBvcnQgZm9yIHYtbW9kZWwgaW4gc2VsZWN0MlxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IHtcclxuICAgICAgICAgICAgc2VsZWN0Mjoge1xyXG4gICAgICAgICAgICAgICAgaW5zZXJ0ZWQoZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZWwpLm9uKCdzZWxlY3QyOnNlbGVjdCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5kaXNwYXRjaEV2ZW50KGV2ZW50KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeShlbCkub24oJ3NlbGVjdDI6dW5zZWxlY3QnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChldmVudClcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuPC9zY3JpcHQ+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/editor.vue?vue&type=script&lang=js&\n");
|
719 |
|
720 |
/***/ }),
|
721 |
|
@@ -817,7 +817,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
817 |
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
818 |
|
819 |
"use strict";
|
820 |
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.selectedIndexesArray\n ? _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-section\" }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showChangesUnsavedMessage,\n expression: \"showChangesUnsavedMessage\"\n }\n ],\n staticClass: \"trp-changes-unsaved-message\"\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.unsaved_changes) + \" \"),\n _c(\n \"span\",\n {\n staticClass: \"trp-unsaved-changes trp-discard-changes \",\n attrs: { title: _vm.editorStrings.discard_all_title_attr },\n on: { click: _vm.discardAll }\n },\n [_vm._v(_vm._s(_vm.editorStrings.discard_all))]\n ),\n _vm._v(\"?\")\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.languages, function(languageCode, key) {\n return _c(\n \"div\",\n { attrs: { id: \"trp-language-\" + languageCode } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n (key <= _vm.othersButtonPosition ||\n _vm.showOtherLanguages) &&\n (_vm.selectedIndexesArray &&\n _vm.selectedIndexesArray.length > 0),\n expression:\n \"( (key <= othersButtonPosition) || showOtherLanguages ) && ( selectedIndexesArray && selectedIndexesArray.length > 0 )\"\n }\n ],\n staticClass: \"trp-language-container\"\n },\n [\n _c(\"div\", { staticClass: \"trp-language-name\" }, [\n key == 0\n ? _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.from) + \" \")\n ])\n : _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.to) + \" \")\n ]),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.completeLanguageNames[languageCode]) +\n \"\\n \"\n ),\n languageCode != \"original\"\n ? _c(\"img\", {\n staticClass: \"trp-language-box-flag-image\",\n attrs: {\n src: _vm.flagsPath + \"/\" + languageCode + \".png\",\n width: \"18\",\n height: \"12\",\n alt: languageCode,\n title: _vm.completeLanguageNames[languageCode]\n }\n })\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\n \"table\",\n { staticClass: \"trp-translations-for-language\" },\n [\n _vm.showImageIcon\n ? _c(\n \"td\",\n { staticClass: \"trp-translation-icon-container\" },\n [\n _c(\"span\", {\n staticClass:\n \"trp-translation-icon dashicons dashicons-format-image\"\n })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"td\",\n { staticClass: \"trp-translations-container\" },\n _vm._l(_vm.selectedIndexesArray, function(\n selectedIndex\n ) {\n return _c(\n \"div\",\n { staticClass: \"trp-string-container\" },\n [\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n highlightUnsavedChanges:\n _vm.showChangesUnsavedMessage &&\n _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n ),\n editorStrings: _vm.editorStrings\n },\n model: {\n value:\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n .editedTranslation,\n callback: function($$v) {\n _vm.$set(\n _vm.dictionary[selectedIndex]\n .translationsArray[\n languageCode\n ],\n \"editedTranslation\",\n $$v\n )\n },\n expression:\n \"dictionary[selectedIndex].translationsArray[languageCode].editedTranslation\"\n }\n })\n ],\n 1\n )\n : _vm.dictionary[selectedIndex]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n readonly: true,\n string:\n _vm.dictionary[selectedIndex],\n value:\n _vm.dictionary[selectedIndex]\n .original,\n editorStrings: _vm.editorStrings\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-translation-input-footer\",\n attrs: {\n \"data-dictionary-entry\": JSON.stringify(\n _vm.dictionary[selectedIndex]\n )\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n _vm.dictionary[selectedIndex]\n .attribute != \"content\" ||\n _vm.dictionary[selectedIndex]\n .attribute != \"\",\n expression:\n \"dictionary[selectedIndex].attribute != 'content' || dictionary[selectedIndex].attribute != ''\"\n }\n ],\n staticClass: \"trp-attribute-name\"\n },\n [\n _vm._v(\n _vm._s(\n _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ]\n ? _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ]\n : _vm.editorStrings.text\n )\n )\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n ? _c(\n \"div\",\n {\n staticClass:\n \"trp-discard-changes trp-discard-individual-changes\",\n class: {\n \"trp-unsaved-changes\": _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n )\n },\n attrs: {\n title:\n _vm.editorStrings\n .discard_individual_changes_title_attribute\n },\n on: {\n click: function($event) {\n _vm.discardChanges(\n selectedIndex,\n languageCode\n )\n }\n }\n },\n [\n _vm._v(\n _vm._s(_vm.editorStrings.discard)\n )\n ]\n )\n : _vm._e()\n ]\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: key == _vm.othersButtonPosition,\n expression: \"key == othersButtonPosition\"\n }\n ]\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-toggle-languages\",\n class: {\n \"trp-show-other-languages\":\n _vm.showOtherLanguages,\n \"trp-hide-other-languages\": !_vm.showOtherLanguages\n },\n on: {\n click: function($event) {\n _vm.showOtherLanguages = !_vm.showOtherLanguages\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(_vm.showOtherLanguages ? \"⯆\" : \"⯈\") +\n \" \" +\n _vm._s(_vm.editorStrings.other_lang)\n )\n ])\n ]\n )\n ]\n )\n ]\n )\n ]\n )\n })\n ],\n 2\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP2IxNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsa0RBQWtEO0FBQzVFLHVCQUF1QjtBQUN2QixpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLHFDQUFxQyxFQUFFO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLCtCQUErQixtQ0FBbUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QiwrQ0FBK0M7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0RBQWdEO0FBQy9FO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0Q0FBNEM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixzQ0FBc0M7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMscUJBQXFCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMscUJBQXFCO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUM7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8hLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTNmODBjZjEwJi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5XG4gICAgPyBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIixcbiAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdHJhbnNsYXRpb24tc2VjdGlvblwiIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY2hhbmdlcy11bnNhdmVkLW1lc3NhZ2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy51bnNhdmVkX2NoYW5nZXMpICsgXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcInNwYW5cIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtdW5zYXZlZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWNoYW5nZXMgXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczogeyB0aXRsZTogX3ZtLmVkaXRvclN0cmluZ3MuZGlzY2FyZF9hbGxfdGl0bGVfYXR0ciB9LFxuICAgICAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5kaXNjYXJkQWxsIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsKSldXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF92bS5fdihcIj9cIilcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLl9sKF92bS5sYW5ndWFnZXMsIGZ1bmN0aW9uKGxhbmd1YWdlQ29kZSwga2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHsgYXR0cnM6IHsgaWQ6IFwidHJwLWxhbmd1YWdlLVwiICsgbGFuZ3VhZ2VDb2RlIH0gfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5IDw9IF92bS5vdGhlcnNCdXR0b25Qb3NpdGlvbiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93T3RoZXJMYW5ndWFnZXMpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiggKGtleSA8PSBvdGhlcnNCdXR0b25Qb3NpdGlvbikgfHwgc2hvd090aGVyTGFuZ3VhZ2VzICkgJiYgKCBzZWxlY3RlZEluZGV4ZXNBcnJheSAmJiBzZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwIClcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLWNvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRycC1sYW5ndWFnZS1uYW1lXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIGtleSA9PSAwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5mcm9tKSArIFwiIFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MudG8pICsgXCIgXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5jb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlICE9IFwib3JpZ2luYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcImltZ1wiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLWJveC1mbGFnLWltYWdlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYzogX3ZtLmZsYWdzUGF0aCArIFwiL1wiICsgbGFuZ3VhZ2VDb2RlICsgXCIucG5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxOFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ6IGxhbmd1YWdlQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfdm0uY29tcGxldGVMYW5ndWFnZU5hbWVzW2xhbmd1YWdlQ29kZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcInRhYmxlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb25zLWZvci1sYW5ndWFnZVwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dJbWFnZUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXRyYW5zbGF0aW9uLWljb24tY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXRyYW5zbGF0aW9uLWljb24gZGFzaGljb25zIGRhc2hpY29ucy1mb3JtYXQtaW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0ZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC10cmFuc2xhdGlvbnMtY29udGFpbmVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheSwgZnVuY3Rpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtc3RyaW5nLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IHNlbGVjdGVkSW5kZXggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidHJhbnNsYXRpb24taW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRVbnNhdmVkQ2hhbmdlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5oYXNVbnNhdmVkQ2hhbmdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVkaXRlZFRyYW5zbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJhbnNsYXRpb25zQXJyYXlbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZWRpdGVkVHJhbnNsYXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQkdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtleTogc2VsZWN0ZWRJbmRleCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJ0cmFuc2xhdGlvbi1pbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC10cmFuc2xhdGlvbi1pbnB1dC1mb290ZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGF0YS1kaWN0aW9uYXJ5LWVudHJ5XCI6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyaWJ1dGUgIT0gXCJjb250ZW50XCIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZSAhPSBcIlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgIT0gJ2NvbnRlbnQnIHx8IGRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlICE9ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1hdHRyaWJ1dGUtbmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5lZGl0b3JTdHJpbmdzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF92bS5lZGl0b3JTdHJpbmdzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyaWJ1dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5lZGl0b3JTdHJpbmdzLnRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC1kaXNjYXJkLWNoYW5nZXMgdHJwLWRpc2NhcmQtaW5kaXZpZHVhbC1jaGFuZ2VzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtdW5zYXZlZC1jaGFuZ2VzXCI6IF92bS5oYXNVbnNhdmVkQ2hhbmdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZWRpdG9yU3RyaW5nc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZGlzY2FyZF9pbmRpdmlkdWFsX2NoYW5nZXNfdGl0bGVfYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpc2NhcmRDaGFuZ2VzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MuZGlzY2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToga2V5ID09IF92bS5vdGhlcnNCdXR0b25Qb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcImtleSA9PSBvdGhlcnNCdXR0b25Qb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLXRvZ2dsZS1sYW5ndWFnZXNcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtc2hvdy1vdGhlci1sYW5ndWFnZXNcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dPdGhlckxhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLWhpZGUtb3RoZXItbGFuZ3VhZ2VzXCI6ICFfdm0uc2hvd090aGVyTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd090aGVyTGFuZ3VhZ2VzID0gIV92bS5zaG93T3RoZXJMYW5ndWFnZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInNwYW5cIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLnNob3dPdGhlckxhbmd1YWdlcyA/IFwi4q+GXCIgOiBcIuKviFwiKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5vdGhlcl9sYW5nKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApXG4gICAgOiBfdm0uX2UoKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=template&id=3f80cf10&\n");
|
821 |
|
822 |
/***/ }),
|
823 |
|
@@ -853,7 +853,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
|
853 |
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
854 |
|
855 |
"use strict";
|
856 |
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"trp-editor\" } }, [\n _c(\n \"div\",\n { attrs: { id: \"trp-controls\" } },\n [\n _c(\n \"div\",\n { staticClass: \"trp-controls-container\" },\n [\n _c(\"div\", { attrs: { id: \"trp-close-save\" } }, [\n _c(\"a\", {\n attrs: {\n id: \"trp-controls-close\",\n href: _vm.closeURL,\n title: _vm.editorStrings.close\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { attrs: { id: \"trp-save-and-loader-spinner\" } },\n [\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loading_strings > 0,\n expression: \"loading_strings > 0\"\n }\n ],\n staticClass: \"trp-ajax-loader\",\n attrs: { id: \"trp-string-saved-ajax-loader\" }\n },\n [_c(\"div\", { staticClass: \"trp-spinner\" })]\n ),\n _vm._v(\" \"),\n _c(\"save-translations\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n nonces: _vm.nonces,\n ajax_url: _vm.ajax_url,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n iframe: _vm.iframe,\n currentURL: _vm.currentURL,\n mergingString: _vm.mergingString,\n mergeData: _vm.mergeData,\n editorStrings: _vm.editorStrings\n },\n on: {\n \"translations-saved\": function($event) {\n _vm.showChangesUnsavedMessage = false\n }\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"trp-controls-section\" }, [\n _c(\"div\", { staticClass: \"trp-controls-section-content\" }, [\n _c(\"div\", { attrs: { id: \"trp-language-switch\" } }, [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.currentLanguage,\n expression: \"currentLanguage\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-language-select\", name: \"lang\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.currentLanguage = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.languageNames, function(lang, langIndex) {\n return _c(\"option\", { domProps: { value: langIndex } }, [\n _vm._v(_vm._s(lang))\n ])\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-string-list\" } }, [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedString,\n expression: \"selectedString\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-string-categories\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedString = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.stringGroups, function(group) {\n return _c(\n \"optgroup\",\n { attrs: { label: group } },\n _vm._l(_vm.dictionary, function(string, index) {\n return _vm.showString(string, group)\n ? _c(\n \"option\",\n {\n attrs: {\n title: string.description,\n \"data-database-id\": string.dbID,\n \"data-group\": string.group\n },\n domProps: { value: index }\n },\n [\n _vm._v(\n _vm._s(\n _vm.processOptionName(\n string.original,\n group\n )\n )\n )\n ]\n )\n : _vm._e()\n }),\n 0\n )\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-next-previous\" } }, [\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons\",\n attrs: {\n type: \"button\",\n id: \"trp-previous\",\n title: _vm.editorStrings.previous_title_attr\n },\n on: {\n click: function($event) {\n _vm.previousString()\n }\n }\n },\n [\n _c(\"span\", [_vm._v(\"«\")]),\n _vm._v(\" \" + _vm._s(_vm.editorStrings.previous))\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons\",\n attrs: {\n type: \"button\",\n id: \"trp-next\",\n title: _vm.editorStrings.next_title_attr\n },\n on: {\n click: function($event) {\n _vm.nextString()\n }\n }\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.next) + \" \"),\n _c(\"span\", [_vm._v(\"»\")])\n ]\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-view-as\" } }, [\n _c(\"div\", { attrs: { id: \"trp-view-as-description\" } }, [\n _vm._v(_vm._s(_vm.editorStrings.view_as))\n ]),\n _vm._v(\" \"),\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.viewAs,\n expression: \"viewAs\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-view-as-select\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.viewAs = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.roles, function(role, roleIndex) {\n return _c(\n \"option\",\n {\n attrs: {\n disabled: !role,\n title: !role ? _vm.editorStrings.view_as_pro : \"\"\n },\n domProps: { value: role }\n },\n [_vm._v(_vm._s(roleIndex))]\n )\n }),\n 0\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.selectedString !== null,\n expression: \"selectedString !== null\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\"language-boxes\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n languageNames: _vm.languageNames,\n settings: _vm.settings,\n showChangesUnsavedMessage: _vm.showChangesUnsavedMessage,\n editorStrings: _vm.editorStrings,\n flagsPath: _vm.flags_path,\n iframe: _vm.iframe\n },\n on: {\n \"discarded-changes\": function($event) {\n _vm.hasUnsavedChanges()\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"extra-content\", {\n attrs: {\n languageNames: _vm.languageNames,\n editorStrings: _vm.editorStrings,\n paidVersion: _vm.paid_version\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.translationNotLoadedYet,\n expression: \"translationNotLoadedYet\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-not-ready-section\" }\n },\n [\n _c(\"p\", {\n domProps: {\n innerHTML: _vm._s(\n _vm.editorStrings.translation_not_loaded_yet\n )\n }\n })\n ]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp_select2_overlay\" } }),\n _vm._v(\" \"),\n _c(\"hover-actions\", {\n ref: \"hoverActions\",\n attrs: {\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n iframe: _vm.iframe,\n dataAttributes: _vm.dataAttributes,\n mergeRules: _vm.mergeRules,\n nonces: _vm.nonces,\n ajax_url: _vm.ajax_url,\n mergeData: _vm.mergeData,\n editorStrings: _vm.editorStrings\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-preview\" } }, [\n _c(\"iframe\", {\n attrs: { id: \"trp-preview-iframe\", src: _vm.urlToLoad },\n on: { load: _vm.iFrameLoaded }\n }),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-preview-loader\" } }, [\n _c(\n \"svg\",\n {\n staticClass: \"trp-loader\",\n attrs: {\n width: \"65px\",\n height: \"65px\",\n viewBox: \"0 0 66 66\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }\n },\n [\n _c(\"circle\", {\n staticClass: \"trp-circle\",\n attrs: {\n fill: \"none\",\n \"stroke-width\": \"6\",\n \"stroke-linecap\": \"round\",\n cx: \"33\",\n cy: \"33\",\n r: \"30\"\n }\n })\n ]\n )\n ])\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2VkaXRvci52dWU/NTEwNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTLG1CQUFtQixFQUFFO0FBQ2xEO0FBQ0E7QUFDQSxPQUFPLFNBQVMscUJBQXFCLEVBQUU7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsV0FBVyx3Q0FBd0M7QUFDbkQ7QUFDQSx1QkFBdUIsU0FBUyx1QkFBdUIsRUFBRTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVMsb0NBQW9DLEVBQUU7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUIscUJBQXFCO0FBQ3JCLGdDQUFnQyw2QkFBNkI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNDQUFzQztBQUM3RCx5QkFBeUIsOENBQThDO0FBQ3ZFLDJCQUEyQixTQUFTLDRCQUE0QixFQUFFO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekI7QUFDQSw4QkFBOEIsMENBQTBDO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSwyQ0FBMkMsWUFBWSxtQkFBbUIsRUFBRTtBQUM1RTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVMsd0JBQXdCLEVBQUU7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBLDhCQUE4Qiw4QkFBOEI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsU0FBUyxlQUFlLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLDZDQUE2QztBQUM3QyxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsU0FBUywwQkFBMEIsRUFBRTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVMsb0JBQW9CLEVBQUU7QUFDMUQsNkJBQTZCLFNBQVMsZ0NBQWdDLEVBQUU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBLDhCQUE4QiwyQkFBMkI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQixxQ0FBcUM7QUFDckMseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QixtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTLDRCQUE0QixFQUFFO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVMsb0JBQW9CLEVBQUU7QUFDOUM7QUFDQSxnQkFBZ0IsK0NBQStDO0FBQy9ELGFBQWE7QUFDYixPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsU0FBUywyQkFBMkIsRUFBRTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWIwNDZlOGVjJi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtZWRpdG9yXCIgfSB9LCBbXG4gICAgX2MoXG4gICAgICBcImRpdlwiLFxuICAgICAgeyBhdHRyczogeyBpZDogXCJ0cnAtY29udHJvbHNcIiB9IH0sXG4gICAgICBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtY29udGFpbmVyXCIgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1jbG9zZS1zYXZlXCIgfSB9LCBbXG4gICAgICAgICAgICAgIF9jKFwiYVwiLCB7XG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBcInRycC1jb250cm9scy1jbG9zZVwiLFxuICAgICAgICAgICAgICAgICAgaHJlZjogX3ZtLmNsb3NlVVJMLFxuICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLmNsb3NlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IGlkOiBcInRycC1zYXZlLWFuZC1sb2FkZXItc3Bpbm5lclwiIH0gfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmxvYWRpbmdfc3RyaW5ncyA+IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibG9hZGluZ19zdHJpbmdzID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtYWpheC1sb2FkZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtc3RyaW5nLXNhdmVkLWFqYXgtbG9hZGVyXCIgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtc3Bpbm5lclwiIH0pXVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInNhdmUtdHJhbnNsYXRpb25zXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LFxuICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnk6IF92bS5kaWN0aW9uYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgbm9uY2VzOiBfdm0ubm9uY2VzLFxuICAgICAgICAgICAgICAgICAgICAgIGFqYXhfdXJsOiBfdm0uYWpheF91cmwsXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBfdm0uY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgIG9uU2NyZWVuTGFuZ3VhZ2U6IF92bS5vblNjcmVlbkxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZTogX3ZtLmlmcmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VVJMOiBfdm0uY3VycmVudFVSTCxcbiAgICAgICAgICAgICAgICAgICAgICBtZXJnaW5nU3RyaW5nOiBfdm0ubWVyZ2luZ1N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBtZXJnZURhdGE6IF92bS5tZXJnZURhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYW5zbGF0aW9ucy1zYXZlZFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIiB9LCBbXG4gICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1sYW5ndWFnZS1zd2l0Y2hcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjdXJyZW50TGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJzZWxlY3QyXCIsIHJhd05hbWU6IFwidi1zZWxlY3QyXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLWxhbmd1YWdlLXNlbGVjdFwiLCBuYW1lOiBcImxhbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsIGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBcIl92YWx1ZVwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uY3VycmVudExhbmd1YWdlID0gJGV2ZW50LnRhcmdldC5tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJCRzZWxlY3RlZFZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJCRzZWxlY3RlZFZhbFswXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5sYW5ndWFnZU5hbWVzLCBmdW5jdGlvbihsYW5nLCBsYW5nSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXCJvcHRpb25cIiwgeyBkb21Qcm9wczogeyB2YWx1ZTogbGFuZ0luZGV4IH0gfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhsYW5nKSlcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtc3RyaW5nLWxpc3RcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlbGVjdGVkU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlbGVjdGVkU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwic2VsZWN0MlwiLCByYXdOYW1lOiBcInYtc2VsZWN0MlwiIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1zdHJpbmctY2F0ZWdvcmllc1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkJHNlbGVjdGVkVmFsID0gQXJyYXkucHJvdG90eXBlLmZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucywgZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IFwiX3ZhbHVlXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZFN0cmluZyA9ICRldmVudC50YXJnZXQubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICQkc2VsZWN0ZWRWYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICQkc2VsZWN0ZWRWYWxbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uc3RyaW5nR3JvdXBzLCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3B0Z3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgbGFiZWw6IGdyb3VwIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uZGljdGlvbmFyeSwgZnVuY3Rpb24oc3RyaW5nLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnNob3dTdHJpbmcoc3RyaW5nLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9wdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZGF0YWJhc2UtaWRcIjogc3RyaW5nLmRiSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZ3JvdXBcIjogc3RyaW5nLmdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogaW5kZXggfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ucHJvY2Vzc09wdGlvbk5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1uZXh0LXByZXZpb3VzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnNcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInRycC1wcmV2aW91c1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLnByZXZpb3VzX3RpdGxlX2F0dHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5wcmV2aW91c1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCLCq1wiKV0pLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiArIF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5wcmV2aW91cykpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbmV4dC1wcmV2aW91cy1idXR0b25zXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJ0cnAtbmV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLm5leHRfdGl0bGVfYXR0clxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm5leHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MubmV4dCkgKyBcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCLCu1wiKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidHJwLXZpZXctYXNcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidHJwLXZpZXctYXMtZGVzY3JpcHRpb25cIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy52aWV3X2FzKSlcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpZXdBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aWV3QXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJzZWxlY3QyXCIsIHJhd05hbWU6IFwidi1zZWxlY3QyXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLXZpZXctYXMtc2VsZWN0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLCBmdW5jdGlvbihvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5zZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gXCJfdmFsdWVcIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnZpZXdBcyA9ICRldmVudC50YXJnZXQubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICQkc2VsZWN0ZWRWYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICQkc2VsZWN0ZWRWYWxbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0ucm9sZXMsIGZ1bmN0aW9uKHJvbGUsIHJvbGVJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFyb2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAhcm9sZSA/IF92bS5lZGl0b3JTdHJpbmdzLnZpZXdfYXNfcHJvIDogXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogcm9sZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3Mocm9sZUluZGV4KSldXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VsZWN0ZWRTdHJpbmcgIT09IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VsZWN0ZWRTdHJpbmcgIT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJsYW5ndWFnZS1ib3hlc1wiLCB7XG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LFxuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5OiBfdm0uZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBfdm0uY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlOiBfdm0ub25TY3JlZW5MYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VOYW1lczogX3ZtLmxhbmd1YWdlTmFtZXMsXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIHNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2U6IF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5ncyxcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3NQYXRoOiBfdm0uZmxhZ3NfcGF0aCxcbiAgICAgICAgICAgICAgICAgICAgaWZyYW1lOiBfdm0uaWZyYW1lXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkaXNjYXJkZWQtY2hhbmdlc1wiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFzVW5zYXZlZENoYW5nZXMoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcImV4dHJhLWNvbnRlbnRcIiwge1xuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGxhbmd1YWdlTmFtZXM6IF92bS5sYW5ndWFnZU5hbWVzLFxuICAgICAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzLFxuICAgICAgICAgICAgICAgIHBhaWRWZXJzaW9uOiBfdm0ucGFpZF92ZXJzaW9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS50cmFuc2xhdGlvbk5vdExvYWRlZFlldCxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ0cmFuc2xhdGlvbk5vdExvYWRlZFlldFwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtc2VjdGlvblwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLXRyYW5zbGF0aW9uLW5vdC1yZWFkeS1zZWN0aW9uXCIgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgX2MoXCJwXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJIVE1MOiBfdm0uX3MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5lZGl0b3JTdHJpbmdzLnRyYW5zbGF0aW9uX25vdF9sb2FkZWRfeWV0XG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgMVxuICAgICAgICApLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycF9zZWxlY3QyX292ZXJsYXlcIiB9IH0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcImhvdmVyLWFjdGlvbnNcIiwge1xuICAgICAgICAgIHJlZjogXCJob3ZlckFjdGlvbnNcIixcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgZGljdGlvbmFyeTogX3ZtLmRpY3Rpb25hcnksXG4gICAgICAgICAgICBzZXR0aW5nczogX3ZtLnNldHRpbmdzLFxuICAgICAgICAgICAgaWZyYW1lOiBfdm0uaWZyYW1lLFxuICAgICAgICAgICAgZGF0YUF0dHJpYnV0ZXM6IF92bS5kYXRhQXR0cmlidXRlcyxcbiAgICAgICAgICAgIG1lcmdlUnVsZXM6IF92bS5tZXJnZVJ1bGVzLFxuICAgICAgICAgICAgbm9uY2VzOiBfdm0ubm9uY2VzLFxuICAgICAgICAgICAgYWpheF91cmw6IF92bS5hamF4X3VybCxcbiAgICAgICAgICAgIG1lcmdlRGF0YTogX3ZtLm1lcmdlRGF0YSxcbiAgICAgICAgICAgIGVkaXRvclN0cmluZ3M6IF92bS5lZGl0b3JTdHJpbmdzXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgXSxcbiAgICAgIDFcbiAgICApLFxuICAgIF92bS5fdihcIiBcIiksXG4gICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtcHJldmlld1wiIH0gfSwgW1xuICAgICAgX2MoXCJpZnJhbWVcIiwge1xuICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtcHJldmlldy1pZnJhbWVcIiwgc3JjOiBfdm0udXJsVG9Mb2FkIH0sXG4gICAgICAgIG9uOiB7IGxvYWQ6IF92bS5pRnJhbWVMb2FkZWQgfVxuICAgICAgfSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtcHJldmlldy1sb2FkZXJcIiB9IH0sIFtcbiAgICAgICAgX2MoXG4gICAgICAgICAgXCJzdmdcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbG9hZGVyXCIsXG4gICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICB3aWR0aDogXCI2NXB4XCIsXG4gICAgICAgICAgICAgIGhlaWdodDogXCI2NXB4XCIsXG4gICAgICAgICAgICAgIHZpZXdCb3g6IFwiMCAwIDY2IDY2XCIsXG4gICAgICAgICAgICAgIHhtbG5zOiBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIF9jKFwiY2lyY2xlXCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNpcmNsZVwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgIFwic3Ryb2tlLXdpZHRoXCI6IFwiNlwiLFxuICAgICAgICAgICAgICAgIFwic3Ryb2tlLWxpbmVjYXBcIjogXCJyb3VuZFwiLFxuICAgICAgICAgICAgICAgIGN4OiBcIjMzXCIsXG4gICAgICAgICAgICAgICAgY3k6IFwiMzNcIixcbiAgICAgICAgICAgICAgICByOiBcIjMwXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgICAgIF0pXG4gICAgXSlcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/editor.vue?vue&type=template&id=b046e8ec&\n");
|
857 |
|
858 |
/***/ }),
|
859 |
|
679 |
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
680 |
|
681 |
"use strict";
|
682 |
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./translation-input.vue */ \"./assets/src/js/components/translation-input.vue\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['selectedIndexesArray', 'dictionary', 'currentLanguage', 'onScreenLanguage', 'languageNames', 'settings', 'showChangesUnsavedMessage', 'editorStrings', 'flagsPath', 'iframe'],\n data: function data() {\n return {\n languages: [],\n completeLanguageNames: Object.assign({\n 'original': 'Original String'\n }, this.languageNames),\n othersButtonPositionOffset: 1,\n showOtherLanguages: false,\n orderedLanguages: [],\n showImageIcon: true\n };\n },\n components: {\n translationInput: _translation_input_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n },\n mounted: function mounted() {\n this.determineLanguageOrder();\n this.addKeyboardShortcutsListener();\n },\n updated: function updated() {\n // if already active do nothing\n if (document.activeElement.classList.contains('trp-translation-input')) {\n return;\n } // place the cursor in the first textarea or input for translation\n\n\n var translationSection = document.getElementById('trp-translation-section');\n\n if (translationSection) {\n var focusableSelectors = ['textarea:not([readonly])', 'input[type=\"text\"]:not([readonly])'];\n\n for (var i = 0; i < focusableSelectors.length; i++) {\n var focusable = document.getElementById('trp-translation-section').querySelector(focusableSelectors[i]);\n\n if (focusable) {\n focusable.focus();\n break;\n }\n }\n }\n },\n watch: {\n selectedIndexesArray: function selectedIndexesArray() {\n this.updateLanguages();\n },\n onScreenLanguage: function onScreenLanguage() {\n this.determineLanguageOrder();\n this.updateLanguages();\n }\n },\n computed: {\n othersButtonPosition: function othersButtonPosition() {\n if (this.currentLanguage === this.settings['default-language'] || this.settings['translation-languages'].length <= 2) {\n // don't display it\n return 999;\n } else {\n return this.othersButtonPositionOffset;\n }\n }\n },\n methods: {\n determineLanguageOrder: function determineLanguageOrder() {\n var self = this;\n var filteredLanguages = this.settings['translation-languages'].filter(function (language, index, array) {\n // all languages except default and current or on screen language.\n return self.settings['default-language'] !== language && self.onScreenLanguage !== language;\n });\n this.orderedLanguages = [];\n this.orderedLanguages.push(this.settings['default-language']);\n if (this.onScreenLanguage !== '') this.orderedLanguages.push(this.onScreenLanguage);\n this.orderedLanguages = this.orderedLanguages.concat(filteredLanguages);\n },\n updateLanguages: function updateLanguages() {\n this.languages = [];\n var self = this;\n var defaultLanguage = this.settings['default-language'];\n var translateToDefault = false;\n this.showImageIcon = false;\n this.othersButtonPositionOffset = 1;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[defaultLanguage]) translateToDefault = true;\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].attribute === 'src') self.showImageIcon = true;\n });\n\n if (translateToDefault) {\n this.languages.push('original');\n this.othersButtonPositionOffset++;\n }\n\n this.languages = this.languages.concat(this.orderedLanguages);\n },\n discardChanges: function discardChanges(selectedIndex, languageCode) {\n this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation = this.dictionary[selectedIndex].translationsArray[languageCode].translated;\n this.$emit('discarded-changes');\n },\n hasUnsavedChanges: function hasUnsavedChanges(selectedIndex, languageCode) {\n return this.dictionary[selectedIndex].translationsArray[languageCode].translated !== this.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation;\n },\n discardAll: function discardAll() {\n var self = this;\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n self.discardChanges(selectedIndex, languageCode);\n }\n });\n });\n\n if (this.$parent.mergingString === true) {\n this.$parent.selectedString = null;\n var previouslyHighlighted = this.iframe.getElementsByClassName('trp-create-translation-block');\n\n if (previouslyHighlighted.length > 0) {\n var i;\n\n for (i = 0; i < previouslyHighlighted.length; i++) {\n previouslyHighlighted[i].classList.remove('trp-highlight');\n previouslyHighlighted[i].classList.remove('trp-create-translation-block');\n }\n }\n\n this.$parent.mergingString = false;\n this.$parent.mergeData = [];\n }\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n // CTRL + ALT + Z\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey && e.keyCode === 90) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_discard_all_changes_event'));\n }\n }, false);\n window.addEventListener('trp_trigger_discard_all_changes_event', this.discardAll);\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZT80OWJjIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlDQTtBQUNBO0FBQ0EsVUFDQSxzQkFEQSxFQUVBLFlBRkEsRUFHQSxpQkFIQSxFQUlBLGtCQUpBLEVBS0EsZUFMQSxFQU1BLFVBTkEsRUFPQSwyQkFQQSxFQVFBLGVBUkEsRUFTQSxXQVRBLEVBVUEsUUFWQSxDQURBO0FBYUEsTUFiQSxrQkFhQTtBQUNBO0FBQ0EsbUJBREE7QUFFQTtBQUFBO0FBQUEsNEJBRkE7QUFHQSxtQ0FIQTtBQUlBLCtCQUpBO0FBS0EsMEJBTEE7QUFNQTtBQU5BO0FBUUEsR0F0QkE7QUF1QkE7QUFDQTtBQURBLEdBdkJBO0FBMEJBLFNBMUJBLHFCQTBCQTtBQUNBO0FBQ0E7QUFDQSxHQTdCQTtBQThCQSxTQTlCQSxxQkE4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUpBLENBS0E7OztBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQS9DQTtBQWdEQTtBQUNBO0FBQ0E7QUFDQSxLQUhBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFQQSxHQWhEQTtBQXlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQSxNQUdBO0FBQ0E7QUFDQTtBQUNBO0FBUkEsR0F6REE7QUFtRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQTtBQUlBO0FBQ0E7QUFDQSx3Q0FDQTtBQUNBO0FBQ0EsS0FaQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQSxpSEFDQTtBQUNBLGtHQUNBO0FBQ0EsT0FMQTs7QUFPQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBbENBO0FBbUNBO0FBQ0E7QUFDQTtBQUNBLEtBdENBO0FBdUNBO0FBQ0E7QUFDQSxLQXpDQTtBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdGQUNBLDhKQURBLEVBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FMQTtBQU1BLE9BUEE7O0FBU0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQWxFQTtBQW1FQSxnQ0FuRUEsMENBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQSxFQU1BLEtBTkE7QUFRQTtBQUNBO0FBN0VBO0FBbkVBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9sYW5ndWFnZS1ib3hlcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG4gICAgPGRpdiBpZD1cInRycC10cmFuc2xhdGlvbi1zZWN0aW9uXCIgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCIgdi1pZj1cInNlbGVjdGVkSW5kZXhlc0FycmF5XCI+XHJcbiAgICAgICAgPGRpdiB2LXNob3c9XCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlXCIgY2xhc3M9XCJ0cnAtY2hhbmdlcy11bnNhdmVkLW1lc3NhZ2VcIj57eyBlZGl0b3JTdHJpbmdzLnVuc2F2ZWRfY2hhbmdlcyB9fSA8c3BhbiBjbGFzcz1cInRycC11bnNhdmVkLWNoYW5nZXMgdHJwLWRpc2NhcmQtY2hhbmdlcyBcIkBjbGljaz1cImRpc2NhcmRBbGxcIiA6dGl0bGU9XCJlZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsX3RpdGxlX2F0dHJcIj57eyBlZGl0b3JTdHJpbmdzLmRpc2NhcmRfYWxsIH19PC9zcGFuPj88L2Rpdj5cclxuICAgICAgICA8ZGl2IHYtZm9yPVwiKGxhbmd1YWdlQ29kZSwga2V5KSBpbiBsYW5ndWFnZXNcIiA6aWQ9XCIndHJwLWxhbmd1YWdlLScgKyBsYW5ndWFnZUNvZGVcIj5cclxuICAgICAgICAgICAgPGRpdiB2LXNob3c9XCIoIChrZXkgPD0gb3RoZXJzQnV0dG9uUG9zaXRpb24pIHx8IHNob3dPdGhlckxhbmd1YWdlcyApICYmICggc2VsZWN0ZWRJbmRleGVzQXJyYXkgJiYgc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoID4gMCApXCIgIGNsYXNzPVwidHJwLWxhbmd1YWdlLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1sYW5ndWFnZS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1pZj1cImtleSA9PSAwIFwiPnt7IGVkaXRvclN0cmluZ3MuZnJvbSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPnt7IGVkaXRvclN0cmluZ3MudG8gfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyB2LWlmPVwibGFuZ3VhZ2VDb2RlICE9ICdvcmlnaW5hbCdcIiBjbGFzcz1cInRycC1sYW5ndWFnZS1ib3gtZmxhZy1pbWFnZVwiIDpzcmM9XCJmbGFnc1BhdGhbbGFuZ3VhZ2VDb2RlXSArICcvJyArIGxhbmd1YWdlQ29kZSArICcucG5nJ1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxMlwiIDphbHQ9XCJsYW5ndWFnZUNvZGVcIiA6dGl0bGU9XCJjb21wbGV0ZUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0cnAtdHJhbnNsYXRpb25zLWZvci1sYW5ndWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1pY29uLWNvbnRhaW5lclwiIHYtaWY9XCJzaG93SW1hZ2VJY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLXRyYW5zbGF0aW9uLWljb24gZGFzaGljb25zIGRhc2hpY29ucy1mb3JtYXQtaW1hZ2VcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0cnAtdHJhbnNsYXRpb25zLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLXN0cmluZy1jb250YWluZXJcIiB2LWZvcj1cInNlbGVjdGVkSW5kZXggaW4gc2VsZWN0ZWRJbmRleGVzQXJyYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXCIgOmtleT1cInNlbGVjdGVkSW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhbnNsYXRpb24taW5wdXQgOnN0cmluZz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiB2LW1vZGVsPVwiZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uXCIgOmhpZ2hsaWdodFVuc2F2ZWRDaGFuZ2VzPVwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSAmJiBoYXNVbnNhdmVkQ2hhbmdlcyggc2VsZWN0ZWRJbmRleCwgbGFuZ3VhZ2VDb2RlIClcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIj48L3RyYW5zbGF0aW9uLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHYtZWxzZS1pZj1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiA6a2V5PVwic2VsZWN0ZWRJbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cmFuc2xhdGlvbi1pbnB1dCA6cmVhZG9ubHk9XCJ0cnVlXCIgOnN0cmluZz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cIiA6dmFsdWU9XCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLm9yaWdpbmFsXCIgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCI+PC90cmFuc2xhdGlvbi1pbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC10cmFuc2xhdGlvbi1pbnB1dC1mb290ZXJcIiA6ZGF0YS1kaWN0aW9uYXJ5LWVudHJ5PVwiSlNPTi5zdHJpbmdpZnkoZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWF0dHJpYnV0ZS1uYW1lXCIgIHYtc2hvdz1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlICE9ICdjb250ZW50JyB8fCBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSAhPSAnJ1wiPnt7ICggZWRpdG9yU3RyaW5nc1sgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgXSApID8gZWRpdG9yU3RyaW5nc1sgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgXSA6IGVkaXRvclN0cmluZ3MudGV4dCB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiYgZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdXCIgY2xhc3M9XCJ0cnAtZGlzY2FyZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWluZGl2aWR1YWwtY2hhbmdlc1wiIEBjbGljaz1cImRpc2NhcmRDaGFuZ2VzKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKVwiIDpjbGFzcz1cInsndHJwLXVuc2F2ZWQtY2hhbmdlcyc6IGhhc1Vuc2F2ZWRDaGFuZ2VzKCBzZWxlY3RlZEluZGV4LCBsYW5ndWFnZUNvZGUgKSB9XCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2luZGl2aWR1YWxfY2hhbmdlc190aXRsZV9hdHRyaWJ1dGVcIj57eyBlZGl0b3JTdHJpbmdzLmRpc2NhcmQgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgdi1zaG93PVwia2V5ID09IG90aGVyc0J1dHRvblBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC10b2dnbGUtbGFuZ3VhZ2VzXCIgQGNsaWNrPVwic2hvd090aGVyTGFuZ3VhZ2VzID0gIXNob3dPdGhlckxhbmd1YWdlc1wiIDpjbGFzcz1cInsgJ3RycC1zaG93LW90aGVyLWxhbmd1YWdlcyc6IHNob3dPdGhlckxhbmd1YWdlcywgJ3RycC1oaWRlLW90aGVyLWxhbmd1YWdlcyc6ICFzaG93T3RoZXJMYW5ndWFnZXMgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAoc2hvd090aGVyTGFuZ3VhZ2VzKT8gJyYjMTEyMDY7JyA6ICcmIzExMjA4OycgfX0ge3sgZWRpdG9yU3RyaW5ncy5vdGhlcl9sYW5nIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG4gICAgaW1wb3J0IHRyYW5zbGF0aW9uSW5wdXQgZnJvbSAnLi90cmFuc2xhdGlvbi1pbnB1dC52dWUnXHJcbiAgICBleHBvcnQgZGVmYXVsdHtcclxuICAgICAgICBwcm9wczpbXHJcbiAgICAgICAgICAgICdzZWxlY3RlZEluZGV4ZXNBcnJheScsXHJcbiAgICAgICAgICAgICdkaWN0aW9uYXJ5JyxcclxuICAgICAgICAgICAgJ2N1cnJlbnRMYW5ndWFnZScsXHJcbiAgICAgICAgICAgICdvblNjcmVlbkxhbmd1YWdlJyxcclxuICAgICAgICAgICAgJ2xhbmd1YWdlTmFtZXMnLFxyXG4gICAgICAgICAgICAnc2V0dGluZ3MnLFxyXG4gICAgICAgICAgICAnc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZScsXHJcbiAgICAgICAgICAgICdlZGl0b3JTdHJpbmdzJyxcclxuICAgICAgICAgICAgJ2ZsYWdzUGF0aCcsXHJcbiAgICAgICAgICAgICdpZnJhbWUnXHJcbiAgICAgICAgXSxcclxuICAgICAgICBkYXRhKCl7XHJcbiAgICAgICAgICAgIHJldHVybntcclxuICAgICAgICAgICAgICAgIGxhbmd1YWdlcyAgICAgICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZUxhbmd1YWdlTmFtZXMgICAgICA6IE9iamVjdC5hc3NpZ24oIHsgJ29yaWdpbmFsJzogJ09yaWdpbmFsIFN0cmluZycgfSwgdGhpcy5sYW5ndWFnZU5hbWVzICksXHJcbiAgICAgICAgICAgICAgICBvdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldCA6IDEsXHJcbiAgICAgICAgICAgICAgICBzaG93T3RoZXJMYW5ndWFnZXMgICAgICAgICA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgb3JkZXJlZExhbmd1YWdlcyAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgICAgIHNob3dJbWFnZUljb24gICAgICAgICAgICAgIDogdHJ1ZVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wb25lbnRzOntcclxuICAgICAgICAgICAgdHJhbnNsYXRpb25JbnB1dFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbW91bnRlZCgpe1xyXG4gICAgICAgICAgICB0aGlzLmRldGVybWluZUxhbmd1YWdlT3JkZXIoKVxyXG4gICAgICAgICAgICB0aGlzLmFkZEtleWJvYXJkU2hvcnRjdXRzTGlzdGVuZXIoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdXBkYXRlZCgpe1xyXG4gICAgICAgICAgICAvLyBpZiBhbHJlYWR5IGFjdGl2ZSBkbyBub3RoaW5nXHJcbiAgICAgICAgICAgIGlmICggZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoICd0cnAtdHJhbnNsYXRpb24taW5wdXQnICkpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcGxhY2UgdGhlIGN1cnNvciBpbiB0aGUgZmlyc3QgdGV4dGFyZWEgb3IgaW5wdXQgZm9yIHRyYW5zbGF0aW9uXHJcbiAgICAgICAgICAgIGxldCB0cmFuc2xhdGlvblNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RycC10cmFuc2xhdGlvbi1zZWN0aW9uJyApXHJcbiAgICAgICAgICAgIGlmICggdHJhbnNsYXRpb25TZWN0aW9uICkgIHtcclxuICAgICAgICAgICAgICAgIGxldCBmb2N1c2FibGVTZWxlY3RvcnMgPSBbJ3RleHRhcmVhOm5vdChbcmVhZG9ubHldKScsICdpbnB1dFt0eXBlPVwidGV4dFwiXTpub3QoW3JlYWRvbmx5XSknXVxyXG4gICAgICAgICAgICAgICAgZm9yICggdmFyIGkgPSAwOyBpPGZvY3VzYWJsZVNlbGVjdG9ycy5sZW5ndGg7IGkrKyApe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb2N1c2FibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3RycC10cmFuc2xhdGlvbi1zZWN0aW9uJyApLnF1ZXJ5U2VsZWN0b3IoZm9jdXNhYmxlU2VsZWN0b3JzW2ldKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggZm9jdXNhYmxlICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb2N1c2FibGUuZm9jdXMoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHdhdGNoOiB7XHJcbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhlc0FycmF5OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxhbmd1YWdlcygpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uU2NyZWVuTGFuZ3VhZ2U6IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRldGVybWluZUxhbmd1YWdlT3JkZXIoKVxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYW5ndWFnZXMoKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wdXRlZDp7XHJcbiAgICAgICAgICAgIG90aGVyc0J1dHRvblBvc2l0aW9uOiBmdW5jdGlvbiAoKXtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSA9PT0gdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddIHx8IHRoaXMuc2V0dGluZ3NbJ3RyYW5zbGF0aW9uLWxhbmd1YWdlcyddLmxlbmd0aCA8PSAyICkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IGRpc3BsYXkgaXRcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gOTk5XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vdGhlcnNCdXR0b25Qb3NpdGlvbk9mZnNldFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXRob2RzOntcclxuICAgICAgICAgICAgZGV0ZXJtaW5lTGFuZ3VhZ2VPcmRlcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXHJcbiAgICAgICAgICAgICAgICBsZXQgZmlsdGVyZWRMYW5ndWFnZXMgPSB0aGlzLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5maWx0ZXIoZnVuY3Rpb24obGFuZ3VhZ2UsIGluZGV4LCBhcnJheSl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYWxsIGxhbmd1YWdlcyBleGNlcHQgZGVmYXVsdCBhbmQgY3VycmVudCBvciBvbiBzY3JlZW4gbGFuZ3VhZ2UuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICggc2VsZi5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddICE9PSBsYW5ndWFnZSApICYmICggc2VsZi5vblNjcmVlbkxhbmd1YWdlICE9PSBsYW5ndWFnZSApXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJlZExhbmd1YWdlcyA9IFtdXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMucHVzaCggdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddIClcclxuICAgICAgICAgICAgICAgIGlmICggdGhpcy5vblNjcmVlbkxhbmd1YWdlICE9PSAnJyApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcmRlcmVkTGFuZ3VhZ2VzLnB1c2goIHRoaXMub25TY3JlZW5MYW5ndWFnZSApXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyZWRMYW5ndWFnZXMgPSB0aGlzLm9yZGVyZWRMYW5ndWFnZXMuY29uY2F0KCBmaWx0ZXJlZExhbmd1YWdlcyApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHVwZGF0ZUxhbmd1YWdlczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMgICAgICAgICAgICAgICAgICA9IFtdXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiAgICAgICAgICAgICAgICAgICAgICAgID0gdGhpc1xyXG4gICAgICAgICAgICAgICAgbGV0IGRlZmF1bHRMYW5ndWFnZSAgICAgICAgICAgICA9IHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXVxyXG4gICAgICAgICAgICAgICAgbGV0IHRyYW5zbGF0ZVRvRGVmYXVsdCAgICAgICAgICA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dJbWFnZUljb24gICAgICAgICAgICAgID0gZmFsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMub3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQgPSAxXHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5mb3JFYWNoKGZ1bmN0aW9uIChzZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJiBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbZGVmYXVsdExhbmd1YWdlXSApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVRvRGVmYXVsdCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICBpZiggc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmIHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS5hdHRyaWJ1dGUgPT09ICdzcmMnIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaG93SW1hZ2VJY29uID0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRlVG9EZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMucHVzaCgnb3JpZ2luYWwnKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3RoZXJzQnV0dG9uUG9zaXRpb25PZmZzZXQrK1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubGFuZ3VhZ2VzID0gdGhpcy5sYW5ndWFnZXMuY29uY2F0KHRoaXMub3JkZXJlZExhbmd1YWdlcylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGlzY2FyZENoYW5nZXM6IGZ1bmN0aW9uKHNlbGVjdGVkSW5kZXgsbGFuZ3VhZ2VDb2RlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uID0gdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZFxyXG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZGlzY2FyZGVkLWNoYW5nZXMnKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBoYXNVbnNhdmVkQ2hhbmdlczogZnVuY3Rpb24oc2VsZWN0ZWRJbmRleCwgbGFuZ3VhZ2VDb2RlKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiAodGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0udHJhbnNsYXRlZCAhPT0gdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb24pXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRpc2NhcmRBbGw6IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbihzZWxlY3RlZEluZGV4KXtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKCBmdW5jdGlvbiggbGFuZ3VhZ2VDb2RlICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLnRyYW5zbGF0ZWQgIT09IHNlbGYuZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtsYW5ndWFnZUNvZGVdLmVkaXRlZFRyYW5zbGF0aW9uKSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlzY2FyZENoYW5nZXMoc2VsZWN0ZWRJbmRleCxsYW5ndWFnZUNvZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuJHBhcmVudC5tZXJnaW5nU3RyaW5nID09PSB0cnVlICl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGFyZW50LnNlbGVjdGVkU3RyaW5nID0gbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQgPSB0aGlzLmlmcmFtZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCAndHJwLWNyZWF0ZS10cmFuc2xhdGlvbi1ibG9jaycgKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQubGVuZ3RoID4gMCApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQubGVuZ3RoOyBpKysgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5SGlnaGxpZ2h0ZWRbaV0uY2xhc3NMaXN0LnJlbW92ZSgndHJwLWhpZ2hsaWdodCcpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5SGlnaGxpZ2h0ZWRbaV0uY2xhc3NMaXN0LnJlbW92ZSgndHJwLWNyZWF0ZS10cmFuc2xhdGlvbi1ibG9jaycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kcGFyZW50Lm1lcmdpbmdTdHJpbmcgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5tZXJnZURhdGEgPSBbXVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRLZXlib2FyZFNob3J0Y3V0c0xpc3RlbmVyKCl7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCBmdW5jdGlvbihlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIEFMVCArIFpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoKHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0ubWF0Y2goXCJNYWNcIikgPyBlLm1ldGFLZXkgOiBlLmN0cmxLZXkpICYmIGUuYWx0S2V5ICYmIGUua2V5Q29kZSA9PT0gOTAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCd0cnBfdHJpZ2dlcl9kaXNjYXJkX2FsbF9jaGFuZ2VzX2V2ZW50JykpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX2Rpc2NhcmRfYWxsX2NoYW5nZXNfZXZlbnQnLCB0aGlzLmRpc2NhcmRBbGwgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG48L3NjcmlwdD5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=script&lang=js&\n");
|
683 |
|
684 |
/***/ }),
|
685 |
|
715 |
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
716 |
|
717 |
"use strict";
|
718 |
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! select2/dist/js/select2.min.js */ \"./node_modules/select2/dist/js/select2.min.js\");\n/* harmony import */ var select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(select2_dist_js_select2_min_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./assets/src/js/utils.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/language-boxes.vue */ \"./assets/src/js/components/language-boxes.vue\");\n/* harmony import */ var _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/save-translations.vue */ \"./assets/src/js/components/save-translations.vue\");\n/* harmony import */ var _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/hover-actions.vue */ \"./assets/src/js/components/hover-actions.vue\");\n/* harmony import */ var _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/extra-content.vue */ \"./assets/src/js/components/extra-content.vue\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! he */ \"./node_modules/he/he.js\");\n/* harmony import */ var he__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(he__WEBPACK_IMPORTED_MODULE_7__);\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n props: ['trp_settings', 'language_names', 'ordered_secondary_languages', 'current_language', 'on_screen_language', 'view_as_roles', 'url_to_load', 'string_selectors', 'data_attributes', 'ajax_url', 'editor_nonces', 'string_group_order', 'merge_rules', 'localized_text', 'paid_version', 'flags_path'],\n components: {\n languageBoxes: _components_language_boxes_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveTranslations: _components_save_translations_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n hoverActions: _components_hover_actions_vue__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n extraContent: _components_extra_content_vue__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n },\n data: function data() {\n return {\n //props\n settings: JSON.parse(this.trp_settings),\n languageNames: JSON.parse(this.language_names),\n orderedSecondaryLanguages: JSON.parse(this.ordered_secondary_languages),\n roles: JSON.parse(this.view_as_roles),\n nonces: JSON.parse(this.editor_nonces),\n stringGroupOrder: JSON.parse(this.string_group_order),\n selectors: JSON.parse(this.string_selectors),\n dataAttributes: JSON.parse(this.data_attributes),\n mergeRules: JSON.parse(this.merge_rules),\n editorStrings: JSON.parse(this.localized_text),\n flagsPath: JSON.parse(this.flags_path),\n //data\n currentLanguage: this.current_language,\n onScreenLanguage: this.on_screen_language,\n currentURL: this.url_to_load,\n urlToLoad: this.url_to_load,\n iframe: '',\n dictionary: [],\n selectedString: null,\n selectedIndexesArray: [],\n detectedSelectorAndId: [],\n stringGroups: [],\n mergingString: false,\n mergeData: [],\n showChangesUnsavedMessage: false,\n viewAs: '',\n loading_strings: 0,\n translationNotLoadedYet: false\n };\n },\n created: function created() {\n this.settings['default-language-name'] = this.languageNames[this.settings['default-language']]; //set default value for the View As select\n\n var params = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getUrlParameters(this.currentURL);\n if (Object.keys(params).length > 1 && params['trp-view-as']) this.viewAs = params['trp-view-as'];else this.viewAs = 'current_user';\n },\n mounted: function mounted() {\n this.addKeyboardShortcutsListener();\n var self = this; // initialize select2\n\n jQuery('#trp-language-select, #trp-view-as-select').select2({\n width: '100%'\n }); //init strings dropdown\n\n this.stringsDropdownLoading(); // show overlay when select is opened\n\n jQuery('#trp-language-select, #trp-string-categories').on('select2:open', function () {\n jQuery('#trp_select2_overlay').fadeIn('100');\n }).on('select2:close', function () {\n jQuery('#trp_select2_overlay').hide();\n }).on('select2:opening', function (e) {\n /* when we have unsaved changes prevent the strings dropdown from opening so we do not have a disconnect between the textareas and the dropdown */\n if (self.hasUnsavedChanges()) {\n e.preventDefault();\n }\n }); // resize sidebar and consequently the iframe\n\n var previewContainer = jQuery('#trp-preview');\n var total_width = jQuery(window).width();\n jQuery('#trp-controls').resizable({\n start: function start() {\n previewContainer.toggle();\n },\n stop: function stop() {\n previewContainer.toggle();\n },\n handles: 'e',\n minWidth: 285,\n maxWidth: total_width - 20\n }).bind(\"resize\", this.resizeIframe); // resize iframe when resizing window\n\n jQuery(window).resize(function () {\n self.resizeIframe();\n });\n },\n watch: {\n currentLanguage: function currentLanguage(_currentLanguage) {\n var self = this; //grab the correct URL from the iFrame\n\n var newURL = this.iframe.querySelector('link[hreflang=\"' + _currentLanguage.replace('_', '-') + '\"]').getAttribute('href');\n this.currentURL = newURL;\n this.iframe.location = newURL; //reset vue props\n\n this.selectedString = '';\n this.selectedIndexesArray = []; //set strings dropdown to loading state\n\n jQuery('#trp-string-categories').val('').trigger('change');\n this.stringsDropdownLoading();\n this.onScreenLanguage = _currentLanguage;\n\n if (this.settings['default-language'] == this.currentLanguage && this.settings['translation-languages'].length > 1) {\n this.settings['translation-languages'].some(function (language) {\n if (language != self.settings['default-language']) {\n // return the first language not default\n self.onScreenLanguage = language;\n return true;\n }\n });\n }\n },\n currentURL: function currentURL(newUrl, oldUrl) {\n window.history.replaceState(null, null, this.parentURL(newUrl));\n },\n viewAs: function viewAs(role) {\n if (!this.currentURL || !this.iframe) return;\n var url = this.cleanURL(this.currentURL);\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-edit-translation', 'preview');\n\n if (role == 'current_user') {\n this.iframe.location = url;\n return;\n } //if nonce not available, an update to the Browse as Other Roles add-on is required\n\n\n if (!this.nonces[role]) {\n alert(this.editorStrings.bor_update_notice);\n return;\n }\n\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-view-as', role);\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].updateUrlParameter(url, 'trp-view-as-nonce', this.nonces[role]);\n this.iframe.location = url;\n },\n selectedString: function selectedString(selectedStringArrayIndex, oldString) {\n if (this.hasUnsavedChanges() || !selectedStringArrayIndex && selectedStringArrayIndex !== 0) return;\n jQuery('#trp-string-categories').val(selectedStringArrayIndex !== null ? selectedStringArrayIndex : '').trigger('change');\n var selectedString = this.dictionary[selectedStringArrayIndex];\n if (!selectedString) return;\n var currentNode = this.iframe.querySelector(\"[\" + selectedString.selector + \"='\" + selectedString.dbID + \"']\");\n var selectedIndexesArray = []; //when merging we do not have a valid current node, so we just add the fake id\n\n if (currentNode) {\n var self = this;\n var selectors = self.getAllSelectors();\n var nodes = [];\n nodes.push(currentNode);\n\n if (currentNode.tagName != \"A\") {\n // include the anchor's translatable attributes\n var anchorParent = currentNode.closest('a');\n\n if (anchorParent != null) {\n nodes.push(anchorParent);\n }\n }\n\n if (currentNode.tagName == \"A\" && currentNode.children.length > 0) {\n // include all the translatable attributes inside the anchor\n var childrenArray = _toConsumableArray(currentNode.children);\n\n childrenArray.forEach(function (child) {\n nodes.push(child);\n });\n }\n\n nodes.forEach(function (node) {\n selectors.forEach(function (selector) {\n var stringId = node.getAttribute(selector);\n\n if (stringId) {\n var found = false;\n var i;\n\n for (i = 0; i < selectedIndexesArray.length; i++) {\n if (typeof self.dictionary[selectedIndexesArray[i]] !== 'undefined' && self.dictionary[selectedIndexesArray[i]].dbID !== 'undefined' && self.dictionary[selectedIndexesArray[i]].dbID === stringId) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n selectedIndexesArray.push(self.getStringIndex(selector, stringId));\n }\n }\n });\n });\n } else selectedIndexesArray.push(selectedStringArrayIndex);\n\n this.selectedIndexesArray = selectedIndexesArray;\n }\n },\n computed: {\n closeURL: function closeURL() {\n return this.cleanURL(this.currentURL);\n }\n },\n methods: {\n iFrameLoaded: function iFrameLoaded() {\n var self = this;\n var iframeElement = document.querySelector('#trp-preview-iframe');\n this.iframe = iframeElement.contentDocument || iframeElement.contentWindow.document; //sync iFrame URL with parent\n\n if (this.currentURL != this.iframe.URL) this.currentURL = this.iframe.URL; //hide iFrame loader\n\n this.iframeLoader('hide');\n self.detectedSelectorAndId = [];\n self.dictionary = [];\n this.scanIframeForStrings();\n window.addEventListener('trp_iframe_page_updated', this.scanIframeForStrings); //event that is fired when the iFrame is navigated\n\n iframeElement.contentWindow.onbeforeunload = function () {\n self.iframeLoader('show');\n self.selectedString = null;\n self.selectedIndexesArray = [];\n self.translationNotLoadedYet = false;\n self.stringsDropdownLoading();\n };\n },\n scanIframeForStrings: function scanIframeForStrings() {\n this.scanForSelector('data-trp-translate-id', 'regular', this.onScreenLanguage);\n this.scanForSelector('data-trpgettextoriginal', 'gettext', this.currentLanguage);\n this.scanForSelector('data-trp-post-slug', 'postslug', this.currentLanguage);\n },\n scanForSelector: function scanForSelector(baseSelector, typeSlug, languageOfIds) {\n this.loading_strings++;\n var self = this;\n var selectors = this.prepareSelectorStrings(baseSelector);\n\n var nodes = _toConsumableArray(this.iframe.querySelectorAll('[' + selectors.join('],[') + ']'));\n\n var stringIdsArray = [],\n nodeData = [],\n nodeEntries = [];\n nodes.forEach(function (node) {\n nodeEntries = self.getNodeInfo(node, baseSelector);\n nodeEntries.forEach(function (entry) {\n // this check ensures that we don't create duplicates when rescanning after ajax complete\n if (!self.alreadyDetected(entry.selector, entry.dbID)) {\n stringIdsArray.push(entry.dbID);\n nodeData.push(entry);\n }\n });\n self.setupEventListener(node);\n }); //unique ids only\n\n stringIdsArray = _toConsumableArray(new Set(stringIdsArray));\n\n if (stringIdsArray.length > 0) {\n var data = new FormData();\n data.append('action', 'trp_get_translations_' + typeSlug);\n data.append('all_languages', 'true');\n data.append('security', this.nonces['gettranslationsnonce' + typeSlug]);\n data.append('language', languageOfIds);\n data.append('string_ids', JSON.stringify(stringIdsArray));\n axios__WEBPACK_IMPORTED_MODULE_2___default.a.post(this.ajax_url, data).then(function (response) {\n self.loading_strings--;\n self.addToDictionary(response.data, nodeData);\n })[\"catch\"](function (error) {\n console.log(error);\n });\n } else {\n self.loading_strings--;\n }\n },\n alreadyDetected: function alreadyDetected(selector, dbId) {\n var combined = selector + '=' + dbId;\n\n if (_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].arrayContainsItem(this.detectedSelectorAndId, combined)) {\n return true;\n } else {\n this.detectedSelectorAndId.push(combined);\n return false;\n }\n },\n setupEventListener: function setupEventListener(node) {\n if (node.tagName == 'A' && !node.hasAttribute('data-trpgettextoriginal')) return false;\n var self = this;\n node.addEventListener('mouseenter', self.$refs.hoverActions.showPencilIcon);\n },\n addToDictionary: function addToDictionary(responseData) {\n var nodeInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var self = this;\n\n if (responseData != null) {\n if (nodeInfo) {\n nodeInfo.forEach(function (infoRow, index) {\n responseData.some(function (responseDataRow) {\n if (infoRow.dbID == responseDataRow.dbID) {\n //bring block_type to the top level object\n if (responseDataRow.type != 'gettext' && typeof responseDataRow.block_type == 'undefined') {\n var firstLanguage = self.orderedSecondaryLanguages[0];\n if (typeof responseDataRow.translationsArray[firstLanguage].block_type != 'undefined') responseDataRow.block_type = responseDataRow.translationsArray[firstLanguage].block_type;\n }\n\n nodeInfo[index] = Object.assign({}, responseDataRow, infoRow);\n return true; // a sort of break\n }\n });\n });\n } else {\n nodeInfo = responseData;\n }\n\n this.stringGroups = this.addToStringGroups(nodeInfo);\n this.dictionary = this.dictionary.concat(nodeInfo);\n this.initStringsDropdown();\n }\n },\n addToStringGroups: function addToStringGroups(strings) {\n // see what node groups are found\n var foundStringGroups = this.stringGroups;\n strings.forEach(function (string) {\n if (foundStringGroups.indexOf(string.group) === -1 && (typeof string.blockType === 'undefined' || string.blockType !== '2')) {\n foundStringGroups.push(string.group);\n }\n }); // put the node groups in the order that we want, according to the prop this.stringGroupOrder\n\n var orderedStringGroups = [];\n\n if (this.editorStrings.seo_update_notice != 'seo_pack_update_not_needed') {\n orderedStringGroups.push(this.editorStrings.seo_update_notice);\n }\n\n this.stringGroupOrder.forEach(function (group) {\n if (foundStringGroups.indexOf(group) !== -1) {\n orderedStringGroups.push(group);\n }\n }); // if there were any other string groups that were not in the prop, add them at the end.\n\n foundStringGroups.forEach(function (group) {\n if (orderedStringGroups.indexOf(group) === -1) {\n orderedStringGroups.push(group);\n }\n });\n return orderedStringGroups;\n },\n getStringIndex: function getStringIndex(selector, dbID) {\n var found = null;\n this.dictionary.some(function (string, index) {\n if (string.dbID == dbID && string.selector == selector) {\n found = index;\n return true;\n }\n });\n return found;\n },\n getNodeInfo: function getNodeInfo(node) {\n var baseSelector = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var stringId;\n var nodeData = [];\n var selectors = this.prepareSelectorStrings(baseSelector);\n selectors.forEach(function (selector) {\n stringId = node.getAttribute(selector);\n\n if (stringId) {\n var nodeAttribute = selector.replace(baseSelector, '');\n var nodeGroup = node.getAttribute('data-trp-node-group' + nodeAttribute);\n var nodeDescription = node.getAttribute('data-trp-node-description' + nodeAttribute);\n var entry = {\n dbID: stringId,\n selector: selector,\n attribute: nodeAttribute.substr(1) // substr(1) is used to trim prefixing line - ex. -alt will result in alt (no line)\n\n };\n if (nodeGroup) entry.group = nodeGroup;\n if (nodeDescription) entry.description = nodeDescription;\n nodeData.push(entry);\n }\n });\n return nodeData;\n },\n getAllSelectors: function getAllSelectors() {\n var selectors = [];\n var self = this;\n this.dataAttributes.forEach(function (dataAttribute) {\n selectors = selectors.concat(self.prepareSelectorStrings(dataAttribute));\n });\n return selectors;\n },\n prepareSelectorStrings: function prepareSelectorStrings(baseNameSelector) {\n var parsed_selectors = [];\n this.selectors.forEach(function (selectorSuffix, index) {\n parsed_selectors.push(baseNameSelector + selectorSuffix);\n });\n return parsed_selectors;\n },\n parentURL: function parentURL(url) {\n return url.replace('trp-edit-translation=preview', 'trp-edit-translation=true');\n },\n cleanURL: function cleanURL(url) {\n //make removeUrlParameter recursive and only call it once with all the parameters that\n //need to stripped ?\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'lang');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-view-as-nonce');\n url = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeUrlParameter(url, 'trp-edit-translation');\n return url;\n },\n showString: function showString(string, type) {\n if (typeof string.blockType !== 'undefined' && string.blockType === '2') {\n // don't show deprecated translation blocks in the dropdown\n return false;\n }\n\n if (type === this.editorStrings.images && typeof string.attribute != 'undefined' && string.attribute == 'src') return true;\n if (typeof string.attribute !== 'undefined' && (string.attribute == 'href' || string.attribute == 'src')) return false;\n if (string.group === type) return true;\n return false;\n },\n initStringsDropdown: function initStringsDropdown() {\n var self = this;\n\n if (!this.isStringsDropdownOpen()) {\n jQuery('#trp-string-categories').select2('destroy');\n jQuery('#trp-string-categories').select2({\n placeholder: self.editorStrings.select_string,\n templateResult: function templateResult(option) {\n var original = he__WEBPACK_IMPORTED_MODULE_7___default.a.decode(option.text.substring(0, 90)) + (option.text.length <= 90 ? '' : '...');\n var description = option.title ? '(' + option.title + ')' : '';\n return jQuery('<div>' + original + '</div><div class=\"string-selector-description\">' + description + '</div>');\n },\n width: '100%'\n }).prop('disabled', false);\n jQuery('#trp_select2_overlay').hide();\n }\n },\n stringsDropdownLoading: function stringsDropdownLoading() {\n jQuery('#trp-string-categories').select2({\n placeholder: this.editorStrings.strings_loading,\n width: '100%'\n }).prop('disabled', true);\n },\n processOptionName: function processOptionName(name, type) {\n if (type == 'Images') return _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getFilename(name);\n return _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].escapeHtml(name);\n },\n isStringsDropdownOpen: function isStringsDropdownOpen() {\n return jQuery('#trp-string-categories').select2('isOpen');\n },\n hasUnsavedChanges: function hasUnsavedChanges() {\n var unsavedChanges = false;\n var self = this;\n\n if (this.selectedIndexesArray.length > 0) {\n this.selectedIndexesArray.forEach(function (selectedIndex) {\n self.settings['translation-languages'].forEach(function (languageCode) {\n if (self.dictionary[selectedIndex] && self.dictionary[selectedIndex].translationsArray[languageCode] && self.dictionary[selectedIndex].translationsArray[languageCode].translated !== self.dictionary[selectedIndex].translationsArray[languageCode].editedTranslation) {\n unsavedChanges = true;\n }\n });\n });\n }\n\n this.showChangesUnsavedMessage = unsavedChanges;\n return unsavedChanges;\n },\n iframeLoader: function iframeLoader(status) {\n var loader = document.getElementById('trp-preview-loader');\n if (status == 'show') loader.style.display = 'flex';else if (status == 'hide') loader.style.display = 'none';\n },\n previousString: function previousString() {\n var currentValue = document.getElementById('trp-string-categories').value;\n var newValue = +currentValue - 1;\n\n while (newValue >= 0 && document.querySelectorAll('#trp-string-categories option[value=\"' + newValue + '\"]').length === 0) {\n newValue--;\n }\n\n if (newValue < 0) return;\n this.selectedString = newValue.toString();\n },\n nextString: function nextString() {\n var currentValue = document.getElementById('trp-string-categories').value,\n newValue = 0;\n if (currentValue != '') newValue = +currentValue + 1;\n\n while (newValue < this.dictionary.length && document.querySelectorAll('#trp-string-categories option[value=\"' + newValue + '\"]').length === 0) {\n newValue++;\n }\n\n if (newValue >= this.dictionary.length) {\n return;\n }\n\n this.selectedString = newValue.toString();\n },\n addKeyboardShortcutsListener: function addKeyboardShortcutsListener() {\n document.addEventListener(\"keydown\", function (e) {\n if ((window.navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) && e.altKey) {\n // CTRL + ALT + right arrow\n if (e.keyCode === 39) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_next_string_event'));\n } else {\n // CTRL + ALT + left arrow\n if (e.keyCode === 37) {\n e.preventDefault();\n window.dispatchEvent(new Event('trp_trigger_previous_string_event'));\n }\n }\n }\n }, false);\n window.addEventListener('trp_trigger_next_string_event', this.nextString);\n window.addEventListener('trp_trigger_previous_string_event', this.previousString);\n },\n resizeIframe: function resizeIframe(event, ui) {\n var total_width = jQuery(window).width();\n var width = jQuery('#trp-controls').width();\n\n if (width > total_width) {\n width = total_width;\n controls.css('width', width);\n }\n\n var previewContainer = jQuery('#trp-preview');\n previewContainer.css('right', width);\n previewContainer.css('left', width - 348);\n previewContainer.css('width', total_width - width);\n }\n },\n //add support for v-model in select2\n directives: {\n select2: {\n inserted: function inserted(el) {\n jQuery(el).on('select2:select', function () {\n var event = new Event('change', {\n bubbles: true,\n cancelable: true\n });\n el.dispatchEvent(event);\n });\n jQuery(el).on('select2:unselect', function () {\n var event = new Event('change', {\n bubbles: true,\n cancelable: true\n });\n el.dispatchEvent(event);\n });\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP2E3NjUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLFVBQ0EsY0FEQSxFQUVBLGdCQUZBLEVBR0EsNkJBSEEsRUFJQSxrQkFKQSxFQUtBLG9CQUxBLEVBTUEsZUFOQSxFQU9BLGFBUEEsRUFRQSxrQkFSQSxFQVNBLGlCQVRBLEVBVUEsVUFWQSxFQVdBLGVBWEEsRUFZQSxvQkFaQSxFQWFBLGFBYkEsRUFjQSxnQkFkQSxFQWVBLGNBZkEsRUFnQkEsWUFoQkEsQ0FEQTtBQW1CQTtBQUNBLHlGQURBO0FBRUEsK0ZBRkE7QUFHQSx1RkFIQTtBQUlBO0FBSkEsR0FuQkE7QUF5QkEsTUF6QkEsa0JBeUJBO0FBQ0E7QUFDQTtBQUNBLDZDQUZBO0FBR0Esb0RBSEE7QUFJQSw2RUFKQTtBQUtBLDJDQUxBO0FBTUEsNENBTkE7QUFPQSwyREFQQTtBQVFBLGtEQVJBO0FBU0Esc0RBVEE7QUFVQSw4Q0FWQTtBQVdBLG9EQVhBO0FBWUEsNENBWkE7QUFhQTtBQUNBLDRDQWRBO0FBZUEsK0NBZkE7QUFnQkEsa0NBaEJBO0FBaUJBLGlDQWpCQTtBQWtCQSxnQkFsQkE7QUFtQkEsb0JBbkJBO0FBb0JBLDBCQXBCQTtBQXFCQSw4QkFyQkE7QUFzQkEsK0JBdEJBO0FBdUJBLHNCQXZCQTtBQXdCQSwwQkF4QkE7QUF5QkEsbUJBekJBO0FBMEJBLHNDQTFCQTtBQTJCQSxnQkEzQkE7QUE0QkEsd0JBNUJBO0FBNkJBO0FBN0JBO0FBK0JBLEdBekRBO0FBMERBLFNBMURBLHFCQTBEQTtBQUNBLG1HQURBLENBR0E7O0FBQ0E7QUFFQSxpRUFDQSxvQ0FEQSxLQUdBO0FBQ0EsR0FwRUE7QUFxRUEsU0FyRUEscUJBcUVBO0FBQ0E7QUFDQSxvQkFGQSxDQUdBOztBQUNBO0FBQUE7QUFBQSxPQUpBLENBTUE7O0FBQ0Esa0NBUEEsQ0FTQTs7QUFDQTtBQUNBO0FBQ0EsS0FGQSxFQUVBLEVBRkEsQ0FFQSxlQUZBLEVBRUE7QUFDQTtBQUNBLEtBSkEsRUFJQSxFQUpBLENBSUEsaUJBSkEsRUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FUQSxFQVZBLENBcUJBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQSxPQURBO0FBRUE7QUFBQTtBQUFBLE9BRkE7QUFHQSxrQkFIQTtBQUlBLG1CQUpBO0FBS0E7QUFMQSxPQU1BLElBTkEsQ0FNQSxRQU5BLEVBTUEsaUJBTkEsRUF4QkEsQ0FnQ0E7O0FBQ0E7QUFDQTtBQUNBLEtBRkE7QUFHQSxHQXpHQTtBQTBHQTtBQUNBO0FBQ0Esc0JBREEsQ0FFQTs7QUFDQTtBQUVBO0FBQ0Esb0NBTkEsQ0FRQTs7QUFDQTtBQUNBLHFDQVZBLENBWUE7O0FBQ0E7QUFDQTtBQUVBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FOQTtBQU9BO0FBQ0EsS0EzQkE7QUE0QkE7QUFDQTtBQUNBLEtBOUJBO0FBK0JBO0FBQ0EsNENBQ0E7QUFFQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BWEEsQ0FhQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBO0FBQ0EsS0F0REE7QUF1REE7QUFFQSxtR0FDQTtBQUVBO0FBRUE7QUFFQSwyQkFDQTtBQUVBO0FBQ0Esb0NBYkEsQ0FlQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBLFdBRkE7QUFJQTs7QUFFQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBZkE7QUFnQkEsU0FqQkE7QUFrQkEsT0ExQ0EsTUEyQ0E7O0FBRUE7QUFDQTtBQXJIQSxHQTFHQTtBQWlPQTtBQUNBO0FBQ0E7QUFDQTtBQUhBLEdBak9BO0FBc09BO0FBQ0EsZ0JBREEsMEJBQ0E7QUFDQTtBQUNBO0FBRUEsMEZBSkEsQ0FNQTs7QUFDQSw4Q0FDQSxrQ0FSQSxDQVVBOztBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUEsb0ZBakJBLENBbUJBOztBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLE9BUkE7QUFVQSxLQS9CQTtBQWdDQSx3QkFoQ0Esa0NBZ0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FwQ0E7QUFxQ0EsbUJBckNBLDJCQXFDQSxZQXJDQSxFQXFDQSxRQXJDQSxFQXFDQSxhQXJDQSxFQXFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTs7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FOQTtBQVFBO0FBQ0EsT0FaQSxFQVBBLENBcUJBOztBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsK0VBQ0EsSUFEQSxDQUNBO0FBQ0E7QUFDQTtBQUNBLFNBSkEsV0FLQTtBQUNBO0FBQ0EsU0FQQTtBQVFBLE9BaEJBLE1BZ0JBO0FBQ0E7QUFDQTtBQUVBLEtBaEZBO0FBaUZBLG1CQWpGQSwyQkFpRkEsUUFqRkEsRUFpRkEsSUFqRkEsRUFpRkE7QUFDQTs7QUFDQTtBQUNBO0FBQ0EsT0FGQSxNQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0F6RkE7QUEwRkEsc0JBMUZBLDhCQTBGQSxJQTFGQSxFQTBGQTtBQUNBLGdGQUNBO0FBRUE7QUFFQTtBQUNBLEtBakdBO0FBa0dBLG1CQWxHQSwyQkFrR0EsWUFsR0EsRUFrR0E7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQSx5R0FDQTtBQUNBOztBQUVBO0FBQ0EsNEJBVkEsQ0FVQTtBQUNBO0FBQ0EsYUFkQTtBQWVBLFdBaEJBO0FBaUJBLFNBbEJBLE1Ba0JBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBLEtBaklBO0FBa0lBLHFCQWxJQSw2QkFrSUEsT0FsSUEsRUFrSUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUpBLEVBSkEsQ0FVQTs7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUpBLEVBakJBLENBdUJBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FKQTtBQU1BO0FBQ0EsS0FqS0E7QUFrS0Esa0JBbEtBLDBCQWtLQSxRQWxLQSxFQWtLQSxJQWxLQSxFQWtLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEE7QUFPQTtBQUNBLEtBN0tBO0FBOEtBLGVBOUtBLHVCQThLQSxJQTlLQSxFQThLQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTs7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsMEJBREE7QUFFQSw4QkFGQTtBQUdBLDhDQUhBLENBR0E7O0FBSEE7QUFNQSx5QkFDQTtBQUVBLCtCQUNBO0FBRUE7QUFDQTtBQUVBLE9BekJBO0FBMkJBO0FBQ0EsS0EvTUE7QUFnTkEsbUJBaE5BLDZCQWdOQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EsT0FGQTtBQUlBO0FBQ0EsS0F6TkE7QUEwTkEsMEJBMU5BLGtDQTBOQSxnQkExTkEsRUEwTkE7QUFDQTtBQUVBO0FBQ0E7QUFDQSxPQUZBO0FBSUE7QUFDQSxLQWxPQTtBQW1PQSxhQW5PQSxxQkFtT0EsR0FuT0EsRUFtT0E7QUFDQTtBQUNBLEtBck9BO0FBc09BLFlBdE9BLG9CQXNPQSxHQXRPQSxFQXNPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0EsS0EvT0E7QUFnUEEsY0FoUEEsc0JBZ1BBLE1BaFBBLEVBZ1BBLElBaFBBLEVBZ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EscUhBQ0E7QUFFQSxnSEFDQTtBQUVBLGlDQUNBO0FBRUE7QUFDQSxLQS9QQTtBQWdRQSx1QkFoUUEsaUNBZ1FBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBLFdBTEE7QUFLQTtBQUxBLFdBS0EsSUFMQSxDQUtBLFVBTEEsRUFLQSxLQUxBO0FBT0E7QUFDQTtBQUNBLEtBL1FBO0FBZ1JBLDBCQWhSQSxvQ0FnUkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBLEtBbFJBO0FBbVJBLHFCQW5SQSw2QkFtUkEsSUFuUkEsRUFtUkEsSUFuUkEsRUFtUkE7QUFDQSw0QkFDQTtBQUVBO0FBQ0EsS0F4UkE7QUF5UkEseUJBelJBLG1DQXlSQTtBQUNBO0FBQ0EsS0EzUkE7QUE0UkEscUJBNVJBLCtCQTRSQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQ0EsOERBREEsSUFFQSw4SkFGQSxFQUVBO0FBQ0E7QUFDQTtBQUNBLFdBTkE7QUFPQSxTQVJBO0FBU0E7O0FBQ0E7QUFFQTtBQUNBLEtBN1NBO0FBOFNBLGdCQTlTQSx3QkE4U0EsTUE5U0EsRUE4U0E7QUFDQTtBQUVBLDRCQUNBLDhCQURBLEtBRUEsc0JBQ0E7QUFDQSxLQXJUQTtBQXNUQSxrQkF0VEEsNEJBc1RBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsd0JBQ0E7QUFFQTtBQUNBLEtBblVBO0FBb1VBLGNBcFVBLHdCQW9VQTtBQUNBO0FBQUE7QUFFQSw4QkFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FuVkE7QUFvVkEsZ0NBcFZBLDBDQW9WQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBSEEsTUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FkQSxFQWNBLEtBZEE7QUFnQkE7QUFDQTtBQUNBLEtBdldBO0FBd1dBLGdCQXhXQSx3QkF3V0EsS0F4V0EsRUF3V0EsRUF4V0EsRUF3V0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFwWEEsR0F0T0E7QUE0bEJBO0FBQ0E7QUFDQTtBQUNBLGNBREEsb0JBQ0EsRUFEQSxFQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0EsU0FIQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBLFNBSEE7QUFJQTtBQVhBO0FBREE7QUE3bEJBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvZWRpdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcbiAgICA8ZGl2IGlkPVwidHJwLWVkaXRvclwiPlxyXG5cclxuICAgICAgICA8ZGl2IGlkPVwidHJwLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cnAtY29udHJvbHMtY29udGFpbmVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1jbG9zZS1zYXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9XCJ0cnAtY29udHJvbHMtY2xvc2VcIiA6aHJlZj1cImNsb3NlVVJMXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5jbG9zZVwiPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXNhdmUtYW5kLWxvYWRlci1zcGlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHJwLWFqYXgtbG9hZGVyXCIgdi1zaG93PVwibG9hZGluZ19zdHJpbmdzID4gMFwiIGlkPVwidHJwLXN0cmluZy1zYXZlZC1hamF4LWxvYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1zcGlubmVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNhdmUtdHJhbnNsYXRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNlbGVjdGVkSW5kZXhlc0FycmF5PVwic2VsZWN0ZWRJbmRleGVzQXJyYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaWN0aW9uYXJ5PVwiZGljdGlvbmFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNldHRpbmdzPVwic2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpub25jZXM9XCJub25jZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDphamF4X3VybD1cImFqYXhfdXJsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3VycmVudExhbmd1YWdlPVwiY3VycmVudExhbmd1YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6b25TY3JlZW5MYW5ndWFnZT1cIm9uU2NyZWVuTGFuZ3VhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDppZnJhbWU9XCJpZnJhbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjdXJyZW50VVJMPVwiY3VycmVudFVSTFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1lcmdpbmdTdHJpbmc9XCJtZXJnaW5nU3RyaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWVyZ2VEYXRhPVwibWVyZ2VEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAdHJhbnNsYXRpb25zLXNhdmVkPVwic2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2F2ZS10cmFuc2xhdGlvbnM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cInRycC1sYW5ndWFnZS1zd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJ0cnAtbGFuZ3VhZ2Utc2VsZWN0XCIgbmFtZT1cImxhbmdcIiB2LW1vZGVsPVwiY3VycmVudExhbmd1YWdlXCIgdi1zZWxlY3QyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdi1mb3I9XCIobGFuZywgbGFuZ0luZGV4KSBpbiBsYW5ndWFnZU5hbWVzXCIgOnZhbHVlPVwibGFuZ0luZGV4XCI+e3tsYW5nfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtc3RyaW5nLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9XCJ0cnAtc3RyaW5nLWNhdGVnb3JpZXNcIiB2LW1vZGVsPVwic2VsZWN0ZWRTdHJpbmdcIiB2LXNlbGVjdDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGdyb3VwIHYtZm9yPVwiKGdyb3VwKSBpbiBzdHJpbmdHcm91cHNcIiA6bGFiZWw9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHYtZm9yPVwiKHN0cmluZywgaW5kZXgpIGluIGRpY3Rpb25hcnlcIiA6dmFsdWU9XCJpbmRleFwiIHYtaWY9XCJzaG93U3RyaW5nKCBzdHJpbmcsIGdyb3VwIClcIiA6dGl0bGU9XCJzdHJpbmcuZGVzY3JpcHRpb25cIiA6ZGF0YS1kYXRhYmFzZS1pZD1cInN0cmluZy5kYklEXCIgOmRhdGEtZ3JvdXA9XCJzdHJpbmcuZ3JvdXBcIj57eyBwcm9jZXNzT3B0aW9uTmFtZSggc3RyaW5nLm9yaWdpbmFsLCBncm91cCApIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRncm91cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtbmV4dC1wcmV2aW91c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJ0cnAtcHJldmlvdXNcIiBjbGFzcz1cInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnNcIiB2LW9uOmNsaWNrPVwicHJldmlvdXNTdHJpbmcoKVwiIDp0aXRsZT1cImVkaXRvclN0cmluZ3MucHJldmlvdXNfdGl0bGVfYXR0clwiPjxzcGFuPiZsYXF1bzs8L3NwYW4+IHt7IGVkaXRvclN0cmluZ3MucHJldmlvdXMgfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwidHJwLW5leHRcIiBjbGFzcz1cInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnNcIiB2LW9uOmNsaWNrPVwibmV4dFN0cmluZygpXCIgOnRpdGxlPVwiZWRpdG9yU3RyaW5ncy5uZXh0X3RpdGxlX2F0dHJcIj57eyBlZGl0b3JTdHJpbmdzLm5leHQgfX0gPHNwYW4+JnJhcXVvOzwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXZpZXctYXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtdmlldy1hcy1kZXNjcmlwdGlvblwiPnt7IGVkaXRvclN0cmluZ3Mudmlld19hcyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD1cInRycC12aWV3LWFzLXNlbGVjdFwiIHYtbW9kZWw9XCJ2aWV3QXNcIiB2LXNlbGVjdDI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2LWZvcj1cIihyb2xlLCByb2xlSW5kZXgpIGluIHJvbGVzXCIgOnZhbHVlPVwicm9sZVwiIDpkaXNhYmxlZD1cIiFyb2xlXCIgOnRpdGxlPVwiIXJvbGUgPyBlZGl0b3JTdHJpbmdzLnZpZXdfYXNfcHJvIDogJydcIj57e3JvbGVJbmRleH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uXCIgdi1zaG93PVwic2VsZWN0ZWRTdHJpbmcgIT09IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFuZ3VhZ2UtYm94ZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzZWxlY3RlZEluZGV4ZXNBcnJheT1cInNlbGVjdGVkSW5kZXhlc0FycmF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkaWN0aW9uYXJ5PVwiZGljdGlvbmFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3VycmVudExhbmd1YWdlPVwiY3VycmVudExhbmd1YWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpvblNjcmVlbkxhbmd1YWdlPVwib25TY3JlZW5MYW5ndWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGFuZ3VhZ2VOYW1lcz1cImxhbmd1YWdlTmFtZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNldHRpbmdzPVwic2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2U9XCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBkaXNjYXJkZWQtY2hhbmdlcz1cImhhc1Vuc2F2ZWRDaGFuZ2VzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmVkaXRvclN0cmluZ3M9XCJlZGl0b3JTdHJpbmdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmbGFnc1BhdGg9XCJmbGFnc1BhdGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFuZ3VhZ2UtYm94ZXM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZXh0cmEtY29udGVudCA6bGFuZ3VhZ2VOYW1lcz1cImxhbmd1YWdlTmFtZXNcIiA6ZWRpdG9yU3RyaW5ncz1cImVkaXRvclN0cmluZ3NcIiA6cGFpZFZlcnNpb249XCJwYWlkX3ZlcnNpb25cIj48L2V4dHJhLWNvbnRlbnQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRycC1jb250cm9scy1zZWN0aW9uXCIgdi1zaG93PVwidHJhbnNsYXRpb25Ob3RMb2FkZWRZZXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwidHJwLXRyYW5zbGF0aW9uLW5vdC1yZWFkeS1zZWN0aW9uXCIgY2xhc3M9XCJ0cnAtY29udHJvbHMtc2VjdGlvbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHYtaHRtbD1cImVkaXRvclN0cmluZ3MudHJhbnNsYXRpb25fbm90X2xvYWRlZF95ZXRcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGlkPVwidHJwX3NlbGVjdDJfb3ZlcmxheVwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGhvdmVyLWFjdGlvbnNcclxuICAgICAgICAgICAgICAgIHJlZj1cImhvdmVyQWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICA6ZGljdGlvbmFyeT1cImRpY3Rpb25hcnlcIlxyXG4gICAgICAgICAgICAgICAgOnNldHRpbmdzPVwic2V0dGluZ3NcIlxyXG4gICAgICAgICAgICAgICAgOmlmcmFtZT1cImlmcmFtZVwiXHJcbiAgICAgICAgICAgICAgICA6ZGF0YUF0dHJpYnV0ZXM9XCJkYXRhQXR0cmlidXRlc1wiXHJcbiAgICAgICAgICAgICAgICA6bWVyZ2VSdWxlcz1cIm1lcmdlUnVsZXNcIlxyXG4gICAgICAgICAgICAgICAgOm5vbmNlcz1cIm5vbmNlc1wiXHJcbiAgICAgICAgICAgICAgICA6YWpheF91cmw9XCJhamF4X3VybFwiXHJcbiAgICAgICAgICAgICAgICA6bWVyZ2VEYXRhPVwibWVyZ2VEYXRhXCJcclxuICAgICAgICAgICAgICAgIDplZGl0b3JTdHJpbmdzPVwiZWRpdG9yU3RyaW5nc1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9ob3Zlci1hY3Rpb25zPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGlkPVwidHJwLXByZXZpZXdcIj5cclxuICAgICAgICAgICAgPGlmcmFtZSBpZD1cInRycC1wcmV2aWV3LWlmcmFtZVwiIDpzcmM9XCJ1cmxUb0xvYWRcIiB2LW9uOmxvYWQ9XCJpRnJhbWVMb2FkZWRcIj48L2lmcmFtZT5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJ0cnAtcHJldmlldy1sb2FkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJ0cnAtbG9hZGVyXCIgd2lkdGg9XCI2NXB4XCIgaGVpZ2h0PVwiNjVweFwiIHZpZXdCb3g9XCIwIDAgNjYgNjZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cInRycC1jaXJjbGVcIiBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjZcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgY3g9XCIzM1wiIGN5PVwiMzNcIiByPVwiMzBcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuICAgIGltcG9ydCAnc2VsZWN0Mi9kaXN0L2pzL3NlbGVjdDIubWluLmpzJ1xyXG4gICAgaW1wb3J0IHV0aWxzICAgICAgICAgICAgZnJvbSAnLi91dGlscydcclxuICAgIGltcG9ydCBheGlvcyAgICAgICAgICAgIGZyb20gJ2F4aW9zJ1xyXG4gICAgaW1wb3J0IGxhbmd1YWdlQm94ZXMgICAgZnJvbSAnLi9jb21wb25lbnRzL2xhbmd1YWdlLWJveGVzLnZ1ZSdcclxuICAgIGltcG9ydCBzYXZlVHJhbnNsYXRpb25zIGZyb20gJy4vY29tcG9uZW50cy9zYXZlLXRyYW5zbGF0aW9ucy52dWUnXHJcbiAgICBpbXBvcnQgaG92ZXJBY3Rpb25zICAgICBmcm9tICcuL2NvbXBvbmVudHMvaG92ZXItYWN0aW9ucy52dWUnXHJcbiAgICBpbXBvcnQgZXh0cmFDb250ZW50ICAgICBmcm9tICcuL2NvbXBvbmVudHMvZXh0cmEtY29udGVudC52dWUnXHJcbiAgICBpbXBvcnQgaGUgICAgICAgICAgICAgICBmcm9tICdoZSdcclxuXHJcbiAgICBleHBvcnQgZGVmYXVsdCB7XHJcbiAgICAgICAgcHJvcHM6IFtcclxuICAgICAgICAgICAgJ3RycF9zZXR0aW5ncycsXHJcbiAgICAgICAgICAgICdsYW5ndWFnZV9uYW1lcycsXHJcbiAgICAgICAgICAgICdvcmRlcmVkX3NlY29uZGFyeV9sYW5ndWFnZXMnLFxyXG4gICAgICAgICAgICAnY3VycmVudF9sYW5ndWFnZScsXHJcbiAgICAgICAgICAgICdvbl9zY3JlZW5fbGFuZ3VhZ2UnLFxyXG4gICAgICAgICAgICAndmlld19hc19yb2xlcycsXHJcbiAgICAgICAgICAgICd1cmxfdG9fbG9hZCcsXHJcbiAgICAgICAgICAgICdzdHJpbmdfc2VsZWN0b3JzJyxcclxuICAgICAgICAgICAgJ2RhdGFfYXR0cmlidXRlcycsXHJcbiAgICAgICAgICAgICdhamF4X3VybCcsXHJcbiAgICAgICAgICAgICdlZGl0b3Jfbm9uY2VzJyxcclxuICAgICAgICAgICAgJ3N0cmluZ19ncm91cF9vcmRlcicsXHJcbiAgICAgICAgICAgICdtZXJnZV9ydWxlcycsXHJcbiAgICAgICAgICAgICdsb2NhbGl6ZWRfdGV4dCcsXHJcbiAgICAgICAgICAgICdwYWlkX3ZlcnNpb24nLFxyXG4gICAgICAgICAgICAnZmxhZ3NfcGF0aCdcclxuICAgICAgICBdLFxyXG4gICAgICAgIGNvbXBvbmVudHM6e1xyXG4gICAgICAgICAgICBsYW5ndWFnZUJveGVzLFxyXG4gICAgICAgICAgICBzYXZlVHJhbnNsYXRpb25zLFxyXG4gICAgICAgICAgICBob3ZlckFjdGlvbnMsXHJcbiAgICAgICAgICAgIGV4dHJhQ29udGVudFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YSgpe1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLy9wcm9wc1xyXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MgICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoIHRoaXMudHJwX3NldHRpbmdzICksXHJcbiAgICAgICAgICAgICAgICBsYW5ndWFnZU5hbWVzICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5sYW5ndWFnZV9uYW1lcyApLFxyXG4gICAgICAgICAgICAgICAgb3JkZXJlZFNlY29uZGFyeUxhbmd1YWdlcyA6IEpTT04ucGFyc2UoIHRoaXMub3JkZXJlZF9zZWNvbmRhcnlfbGFuZ3VhZ2VzICksXHJcbiAgICAgICAgICAgICAgICByb2xlcyAgICAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy52aWV3X2FzX3JvbGVzICksXHJcbiAgICAgICAgICAgICAgICBub25jZXMgICAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5lZGl0b3Jfbm9uY2VzKSxcclxuICAgICAgICAgICAgICAgIHN0cmluZ0dyb3VwT3JkZXIgICAgICAgICAgOiBKU09OLnBhcnNlKCB0aGlzLnN0cmluZ19ncm91cF9vcmRlciksXHJcbiAgICAgICAgICAgICAgICBzZWxlY3RvcnMgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5zdHJpbmdfc2VsZWN0b3JzICksXHJcbiAgICAgICAgICAgICAgICBkYXRhQXR0cmlidXRlcyAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5kYXRhX2F0dHJpYnV0ZXMgKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlUnVsZXMgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKCB0aGlzLm1lcmdlX3J1bGVzICksXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzICAgICAgICAgICAgIDogSlNPTi5wYXJzZSggdGhpcy5sb2NhbGl6ZWRfdGV4dCApLFxyXG4gICAgICAgICAgICAgICAgZmxhZ3NQYXRoICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoIHRoaXMuZmxhZ3NfcGF0aCApLFxyXG4gICAgICAgICAgICAgICAgLy9kYXRhXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2UgICAgICAgICAgIDogdGhpcy5jdXJyZW50X2xhbmd1YWdlLFxyXG4gICAgICAgICAgICAgICAgb25TY3JlZW5MYW5ndWFnZSAgICAgICAgICA6IHRoaXMub25fc2NyZWVuX2xhbmd1YWdlLFxyXG4gICAgICAgICAgICAgICAgY3VycmVudFVSTCAgICAgICAgICAgICAgICA6IHRoaXMudXJsX3RvX2xvYWQsXHJcbiAgICAgICAgICAgICAgICB1cmxUb0xvYWQgICAgICAgICAgICAgICAgIDogdGhpcy51cmxfdG9fbG9hZCxcclxuICAgICAgICAgICAgICAgIGlmcmFtZSAgICAgICAgICAgICAgICAgICAgOiAnJyxcclxuICAgICAgICAgICAgICAgIGRpY3Rpb25hcnkgICAgICAgICAgICAgICAgOiBbXSxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkU3RyaW5nICAgICAgICAgICAgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleGVzQXJyYXkgICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgZGV0ZWN0ZWRTZWxlY3RvckFuZElkICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgc3RyaW5nR3JvdXBzICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2luZ1N0cmluZyAgICAgICAgICAgICA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VEYXRhICAgICAgICAgICAgICAgICA6IFtdLFxyXG4gICAgICAgICAgICAgICAgc2hvd0NoYW5nZXNVbnNhdmVkTWVzc2FnZSA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgdmlld0FzICAgICAgICAgICAgICAgICAgICA6ICcnLFxyXG4gICAgICAgICAgICAgICAgbG9hZGluZ19zdHJpbmdzICAgICAgICAgICA6IDAsXHJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbk5vdExvYWRlZFlldCAgIDogZmFsc2UsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGNyZWF0ZWQoKXtcclxuICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZS1uYW1lJ10gPSB0aGlzLmxhbmd1YWdlTmFtZXNbIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSBdXHJcblxyXG4gICAgICAgICAgICAvL3NldCBkZWZhdWx0IHZhbHVlIGZvciB0aGUgVmlldyBBcyBzZWxlY3RcclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHV0aWxzLmdldFVybFBhcmFtZXRlcnMoIHRoaXMuY3VycmVudFVSTCApXHJcblxyXG4gICAgICAgICAgICBpZiggT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPiAxICYmIHBhcmFtc1sndHJwLXZpZXctYXMnXSApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdBcyA9IHBhcmFtc1sndHJwLXZpZXctYXMnXVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXdBcyA9ICdjdXJyZW50X3VzZXInXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtb3VudGVkKCl7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpXHJcbiAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xyXG4gICAgICAgICAgICAvLyBpbml0aWFsaXplIHNlbGVjdDJcclxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1sYW5ndWFnZS1zZWxlY3QsICN0cnAtdmlldy1hcy1zZWxlY3QnICkuc2VsZWN0MiggeyB3aWR0aCA6ICcxMDAlJyB9KVxyXG5cclxuICAgICAgICAgICAgLy9pbml0IHN0cmluZ3MgZHJvcGRvd25cclxuICAgICAgICAgICAgdGhpcy5zdHJpbmdzRHJvcGRvd25Mb2FkaW5nKClcclxuXHJcbiAgICAgICAgICAgIC8vIHNob3cgb3ZlcmxheSB3aGVuIHNlbGVjdCBpcyBvcGVuZWRcclxuICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1sYW5ndWFnZS1zZWxlY3QsICN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnICkub24oICdzZWxlY3QyOm9wZW4nLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnBfc2VsZWN0Ml9vdmVybGF5JyApLmZhZGVJbiggJzEwMCcgKVxyXG4gICAgICAgICAgICB9KS5vbiggJ3NlbGVjdDI6Y2xvc2UnLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnBfc2VsZWN0Ml9vdmVybGF5JyApLmhpZGUoKVxyXG4gICAgICAgICAgICB9KS5vbiggJ3NlbGVjdDI6b3BlbmluZycsIGZ1bmN0aW9uKGUpIHtcclxuICAgICAgICAgICAgICAgIC8qIHdoZW4gd2UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMgcHJldmVudCB0aGUgc3RyaW5ncyBkcm9wZG93biBmcm9tIG9wZW5pbmcgc28gd2UgZG8gbm90IGhhdmUgYSBkaXNjb25uZWN0IGJldHdlZW4gdGhlIHRleHRhcmVhcyBhbmQgdGhlIGRyb3Bkb3duICovXHJcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5oYXNVbnNhdmVkQ2hhbmdlcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAvLyByZXNpemUgc2lkZWJhciBhbmQgY29uc2VxdWVudGx5IHRoZSBpZnJhbWVcclxuICAgICAgICAgICAgbGV0IHByZXZpZXdDb250YWluZXIgPSBqUXVlcnkoICcjdHJwLXByZXZpZXcnICk7XHJcbiAgICAgICAgICAgIGxldCB0b3RhbF93aWR0aCA9IGpRdWVyeSh3aW5kb3cpLndpZHRoKCk7XHJcbiAgICAgICAgICAgIGpRdWVyeSggJyN0cnAtY29udHJvbHMnICkucmVzaXphYmxlKHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbiggKSB7IHByZXZpZXdDb250YWluZXIudG9nZ2xlKCk7IH0sXHJcbiAgICAgICAgICAgICAgICBzdG9wOiBmdW5jdGlvbiggKSB7IHByZXZpZXdDb250YWluZXIudG9nZ2xlKCk7IH0sXHJcbiAgICAgICAgICAgICAgICBoYW5kbGVzOiAnZScsXHJcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogMjg1LFxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IHRvdGFsX3dpZHRoIC0gMjBcclxuICAgICAgICAgICAgfSkuYmluZCggXCJyZXNpemVcIiwgdGhpcy5yZXNpemVJZnJhbWUgKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHJlc2l6ZSBpZnJhbWUgd2hlbiByZXNpemluZyB3aW5kb3dcclxuICAgICAgICAgICAgalF1ZXJ5KCB3aW5kb3cgKS5yZXNpemUoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi5yZXNpemVJZnJhbWUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB3YXRjaDoge1xyXG4gICAgICAgICAgICBjdXJyZW50TGFuZ3VhZ2U6IGZ1bmN0aW9uKCBjdXJyZW50TGFuZ3VhZ2UgKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuICAgICAgICAgICAgICAgIC8vZ3JhYiB0aGUgY29ycmVjdCBVUkwgZnJvbSB0aGUgaUZyYW1lXHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3VVJMID0gdGhpcy5pZnJhbWUucXVlcnlTZWxlY3RvciggJ2xpbmtbaHJlZmxhbmc9XCInICsgY3VycmVudExhbmd1YWdlLnJlcGxhY2UoICdfJywgJy0nICkgKydcIl0nICkuZ2V0QXR0cmlidXRlKCdocmVmJylcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVUkwgICAgICAgICAgID0gbmV3VVJMXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlmcmFtZS5sb2NhdGlvbiAgICAgID0gbmV3VVJMXHJcblxyXG4gICAgICAgICAgICAgICAgLy9yZXNldCB2dWUgcHJvcHNcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdHJpbmcgICAgICAgPSAnJ1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheSA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgLy9zZXQgc3RyaW5ncyBkcm9wZG93biB0byBsb2FkaW5nIHN0YXRlXHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMnKS52YWwoJycpLnRyaWdnZXIoJ2NoYW5nZScpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ3NEcm9wZG93bkxvYWRpbmcoKVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMub25TY3JlZW5MYW5ndWFnZSA9IGN1cnJlbnRMYW5ndWFnZVxyXG4gICAgICAgICAgICAgICAgaWYoIHRoaXMuc2V0dGluZ3NbJ2RlZmF1bHQtbGFuZ3VhZ2UnXSA9PSB0aGlzLmN1cnJlbnRMYW5ndWFnZSAmJiB0aGlzLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5sZW5ndGggPiAxICl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1sndHJhbnNsYXRpb24tbGFuZ3VhZ2VzJ10uc29tZShmdW5jdGlvbihsYW5ndWFnZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbGFuZ3VhZ2UgIT0gc2VsZi5zZXR0aW5nc1snZGVmYXVsdC1sYW5ndWFnZSddICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gdGhlIGZpcnN0IGxhbmd1YWdlIG5vdCBkZWZhdWx0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm9uU2NyZWVuTGFuZ3VhZ2UgPSBsYW5ndWFnZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGN1cnJlbnRVUkw6IGZ1bmN0aW9uICggbmV3VXJsLCBvbGRVcmwgKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoIG51bGwsIG51bGwsIHRoaXMucGFyZW50VVJMKCBuZXdVcmwgKSApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHZpZXdBczogZnVuY3Rpb24oIHJvbGUgKSB7XHJcbiAgICAgICAgICAgICAgICBpZiggIXRoaXMuY3VycmVudFVSTCB8fCAhdGhpcy5pZnJhbWUgKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSB0aGlzLmNsZWFuVVJMKCB0aGlzLmN1cnJlbnRVUkwgKVxyXG5cclxuICAgICAgICAgICAgICAgIHVybCA9IHV0aWxzLnVwZGF0ZVVybFBhcmFtZXRlciggdXJsLCAndHJwLWVkaXQtdHJhbnNsYXRpb24nLCAncHJldmlldycgKVxyXG5cclxuICAgICAgICAgICAgICAgIGlmKCByb2xlID09ICdjdXJyZW50X3VzZXInICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaWZyYW1lLmxvY2F0aW9uID0gdXJsXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy9pZiBub25jZSBub3QgYXZhaWxhYmxlLCBhbiB1cGRhdGUgdG8gdGhlIEJyb3dzZSBhcyBPdGhlciBSb2xlcyBhZGQtb24gaXMgcmVxdWlyZWRcclxuICAgICAgICAgICAgICAgIGlmKCAhdGhpcy5ub25jZXNbcm9sZV0gKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnQoIHRoaXMuZWRpdG9yU3RyaW5ncy5ib3JfdXBkYXRlX25vdGljZSApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMudXBkYXRlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtdmlldy1hcycsIHJvbGUgKVxyXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMudXBkYXRlVXJsUGFyYW1ldGVyKCB1cmwsICd0cnAtdmlldy1hcy1ub25jZScsIHRoaXMubm9uY2VzW3JvbGVdIClcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlmcmFtZS5sb2NhdGlvbiA9IHVybFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZWxlY3RlZFN0cmluZzogZnVuY3Rpb24gKCBzZWxlY3RlZFN0cmluZ0FycmF5SW5kZXgsIG9sZFN0cmluZyApe1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKCB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzKCkgfHwgKCAhc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4ICYmIHNlbGVjdGVkU3RyaW5nQXJyYXlJbmRleCAhPT0gMCApIClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuXHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnZhbCggc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4ICE9PSBudWxsID8gc2VsZWN0ZWRTdHJpbmdBcnJheUluZGV4IDogJycgKS50cmlnZ2VyKCAnY2hhbmdlJyApXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGVjdGVkU3RyaW5nICAgICAgID0gdGhpcy5kaWN0aW9uYXJ5W3NlbGVjdGVkU3RyaW5nQXJyYXlJbmRleF1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiggIXNlbGVjdGVkU3RyaW5nIClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudE5vZGUgICAgICAgICAgPSB0aGlzLmlmcmFtZS5xdWVyeVNlbGVjdG9yKCBcIltcIiArIHNlbGVjdGVkU3RyaW5nLnNlbGVjdG9yICsgXCI9J1wiICsgc2VsZWN0ZWRTdHJpbmcuZGJJRCArIFwiJ11cIilcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZEluZGV4ZXNBcnJheSA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgLy93aGVuIG1lcmdpbmcgd2UgZG8gbm90IGhhdmUgYSB2YWxpZCBjdXJyZW50IG5vZGUsIHNvIHdlIGp1c3QgYWRkIHRoZSBmYWtlIGlkXHJcbiAgICAgICAgICAgICAgICBpZiggY3VycmVudE5vZGUgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdG9ycyA9IHNlbGYuZ2V0QWxsU2VsZWN0b3JzKClcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBbXVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2Rlcy5wdXNoKCBjdXJyZW50Tm9kZSApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggY3VycmVudE5vZGUudGFnTmFtZSAhPSBcIkFcIiApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmNsdWRlIHRoZSBhbmNob3IncyB0cmFuc2xhdGFibGUgYXR0cmlidXRlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYW5jaG9yUGFyZW50ICA9IGN1cnJlbnROb2RlLmNsb3Nlc3QoJ2EnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggIGFuY2hvclBhcmVudCAhPSBudWxsICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChhbmNob3JQYXJlbnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggY3VycmVudE5vZGUudGFnTmFtZSA9PSBcIkFcIiAmJiBjdXJyZW50Tm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluY2x1ZGUgYWxsIHRoZSB0cmFuc2xhdGFibGUgYXR0cmlidXRlcyBpbnNpZGUgdGhlIGFuY2hvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGRyZW5BcnJheSA9IFsgLi4uY3VycmVudE5vZGUuY2hpbGRyZW4gXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5BcnJheS5mb3JFYWNoKCBmdW5jdGlvbiAoIGNoaWxkICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMucHVzaChjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2Rlcy5mb3JFYWNoKCBmdW5jdGlvbiggbm9kZSApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JzLmZvckVhY2goZnVuY3Rpb24gKHNlbGVjdG9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RyaW5nSWQgPSBub2RlLmdldEF0dHJpYnV0ZShzZWxlY3RvcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmdJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgc2VsZWN0ZWRJbmRleGVzQXJyYXkubGVuZ3RoOyBpKysgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2Ygc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhlc0FycmF5W2ldXSAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhlc0FycmF5W2ldXS5kYklEICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleGVzQXJyYXlbaV1dLmRiSUQgPT09IHN0cmluZ0lkICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISBmb3VuZCApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleGVzQXJyYXkucHVzaChzZWxmLmdldFN0cmluZ0luZGV4KHNlbGVjdG9yLCBzdHJpbmdJZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9IGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheS5wdXNoKCBzZWxlY3RlZFN0cmluZ0FycmF5SW5kZXggKVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkgPSBzZWxlY3RlZEluZGV4ZXNBcnJheVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcHV0ZWQ6IHtcclxuICAgICAgICAgICAgY2xvc2VVUkw6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5VUkwoIHRoaXMuY3VycmVudFVSTCApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgaUZyYW1lTG9hZGVkKCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuICAgICAgICAgICAgICAgIGxldCBpZnJhbWVFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3RycC1wcmV2aWV3LWlmcmFtZScpXHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWUgPSBpZnJhbWVFbGVtZW50LmNvbnRlbnREb2N1bWVudCB8fCBpZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnRcclxuXHJcbiAgICAgICAgICAgICAgICAvL3N5bmMgaUZyYW1lIFVSTCB3aXRoIHBhcmVudFxyXG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLmN1cnJlbnRVUkwgIT0gdGhpcy5pZnJhbWUuVVJMIClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRVUkwgPSB0aGlzLmlmcmFtZS5VUkxcclxuXHJcbiAgICAgICAgICAgICAgICAvL2hpZGUgaUZyYW1lIGxvYWRlclxyXG4gICAgICAgICAgICAgICAgdGhpcy5pZnJhbWVMb2FkZXIoICdoaWRlJyApXHJcblxyXG4gICAgICAgICAgICAgICAgc2VsZi5kZXRlY3RlZFNlbGVjdG9yQW5kSWQgPSBbXVxyXG4gICAgICAgICAgICAgICAgc2VsZi5kaWN0aW9uYXJ5ICAgICAgICAgICAgPSBbXVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2FuSWZyYW1lRm9yU3RyaW5ncygpXHJcblxyXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfaWZyYW1lX3BhZ2VfdXBkYXRlZCcsIHRoaXMuc2NhbklmcmFtZUZvclN0cmluZ3MgKVxyXG5cclxuICAgICAgICAgICAgICAgIC8vZXZlbnQgdGhhdCBpcyBmaXJlZCB3aGVuIHRoZSBpRnJhbWUgaXMgbmF2aWdhdGVkXHJcbiAgICAgICAgICAgICAgICBpZnJhbWVFbGVtZW50LmNvbnRlbnRXaW5kb3cub25iZWZvcmV1bmxvYWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLmlmcmFtZUxvYWRlciggJ3Nob3cnIClcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZWxlY3RlZFN0cmluZyA9IG51bGxcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbGVjdGVkSW5kZXhlc0FycmF5ID0gW11cclxuICAgICAgICAgICAgICAgICAgICBzZWxmLnRyYW5zbGF0aW9uTm90TG9hZGVkWWV0ID0gZmFsc2VcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zdHJpbmdzRHJvcGRvd25Mb2FkaW5nKClcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNjYW5JZnJhbWVGb3JTdHJpbmdzKCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjYW5Gb3JTZWxlY3RvciggJ2RhdGEtdHJwLXRyYW5zbGF0ZS1pZCcsICdyZWd1bGFyJywgdGhpcy5vblNjcmVlbkxhbmd1YWdlIClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NhbkZvclNlbGVjdG9yKCAnZGF0YS10cnBnZXR0ZXh0b3JpZ2luYWwnLCAnZ2V0dGV4dCcsIHRoaXMuY3VycmVudExhbmd1YWdlIClcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NhbkZvclNlbGVjdG9yKCAnZGF0YS10cnAtcG9zdC1zbHVnJywgJ3Bvc3RzbHVnJywgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzY2FuRm9yU2VsZWN0b3IoIGJhc2VTZWxlY3RvciwgdHlwZVNsdWcsIGxhbmd1YWdlT2ZJZHMgKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ19zdHJpbmdzKytcclxuICAgICAgICAgICAgICAgIGxldCBzZWxmICAgICAgICAgICA9IHRoaXNcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RvcnMgICAgICA9IHRoaXMucHJlcGFyZVNlbGVjdG9yU3RyaW5ncyggYmFzZVNlbGVjdG9yIClcclxuICAgICAgICAgICAgICAgIGxldCBub2RlcyAgICAgICAgICA9IFsuLi50aGlzLmlmcmFtZS5xdWVyeVNlbGVjdG9yQWxsKCAnWycgKyBzZWxlY3RvcnMuam9pbignXSxbJykgKyAnXScgKV1cclxuICAgICAgICAgICAgICAgIGxldCBzdHJpbmdJZHNBcnJheSA9IFtdLCBub2RlRGF0YSA9IFtdLCBub2RlRW50cmllcyA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCggZnVuY3Rpb24gKCBub2RlICl7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZUVudHJpZXMgPSBzZWxmLmdldE5vZGVJbmZvKCBub2RlLCBiYXNlU2VsZWN0b3IgKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlRW50cmllcy5mb3JFYWNoKCBmdW5jdGlvbiggZW50cnkgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgY2hlY2sgZW5zdXJlcyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBkdXBsaWNhdGVzIHdoZW4gcmVzY2FubmluZyBhZnRlciBhamF4IGNvbXBsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggIXNlbGYuYWxyZWFkeURldGVjdGVkKCBlbnRyeS5zZWxlY3RvciwgZW50cnkuZGJJRCApICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nSWRzQXJyYXkucHVzaChlbnRyeS5kYklEKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZURhdGEucHVzaChlbnRyeSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0dXBFdmVudExpc3RlbmVyKCBub2RlIClcclxuICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgLy91bmlxdWUgaWRzIG9ubHlcclxuICAgICAgICAgICAgICAgIHN0cmluZ0lkc0FycmF5ID0gWy4uLm5ldyBTZXQoc3RyaW5nSWRzQXJyYXkpXVxyXG4gICAgICAgICAgICAgICAgaWYgKCBzdHJpbmdJZHNBcnJheS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gbmV3IEZvcm1EYXRhKClcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnYWN0aW9uJyAgICAgICAsICd0cnBfZ2V0X3RyYW5zbGF0aW9uc18nICsgdHlwZVNsdWcpXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ2FsbF9sYW5ndWFnZXMnLCAndHJ1ZScpXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5hcHBlbmQoJ3NlY3VyaXR5JyAgICAgLCB0aGlzLm5vbmNlc1snZ2V0dHJhbnNsYXRpb25zbm9uY2UnICsgdHlwZVNsdWddKVxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuYXBwZW5kKCdsYW5ndWFnZScgICAgICwgbGFuZ3VhZ2VPZklkcylcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmFwcGVuZCgnc3RyaW5nX2lkcycgICAsIEpTT04uc3RyaW5naWZ5KHN0cmluZ0lkc0FycmF5KSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgYXhpb3MucG9zdCh0aGlzLmFqYXhfdXJsLCBkYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZGluZ19zdHJpbmdzLS1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkVG9EaWN0aW9uYXJ5KHJlc3BvbnNlLmRhdGEsIG5vZGVEYXRhKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkaW5nX3N0cmluZ3MtLVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWxyZWFkeURldGVjdGVkKCBzZWxlY3RvciwgZGJJZCApe1xyXG4gICAgICAgICAgICAgICAgbGV0IGNvbWJpbmVkID0gc2VsZWN0b3IgKyAnPScgKyBkYklkXHJcbiAgICAgICAgICAgICAgICBpZiAoIHV0aWxzLmFycmF5Q29udGFpbnNJdGVtKCB0aGlzLmRldGVjdGVkU2VsZWN0b3JBbmRJZCwgY29tYmluZWQgKSApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0ZWN0ZWRTZWxlY3RvckFuZElkLnB1c2goY29tYmluZWQpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNldHVwRXZlbnRMaXN0ZW5lciggbm9kZSApe1xyXG4gICAgICAgICAgICAgICAgaWYgKCBub2RlLnRhZ05hbWUgPT0gJ0EnICYmICFub2RlLmhhc0F0dHJpYnV0ZSggJ2RhdGEtdHJwZ2V0dGV4dG9yaWdpbmFsJyApIClcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuXHJcbiAgICAgICAgICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoICdtb3VzZWVudGVyJywgc2VsZi4kcmVmcy5ob3ZlckFjdGlvbnMuc2hvd1BlbmNpbEljb24gKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBhZGRUb0RpY3Rpb25hcnkoIHJlc3BvbnNlRGF0YSwgbm9kZUluZm8gPSBudWxsICl7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHJlc3BvbnNlRGF0YSAhPSBudWxsICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICggbm9kZUluZm8gKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZm8uZm9yRWFjaChmdW5jdGlvbiAoIGluZm9Sb3csIGluZGV4ICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZURhdGEuc29tZSggZnVuY3Rpb24gKCByZXNwb25zZURhdGFSb3cgKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggaW5mb1Jvdy5kYklEID09IHJlc3BvbnNlRGF0YVJvdy5kYklEICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2JyaW5nIGJsb2NrX3R5cGUgdG8gdGhlIHRvcCBsZXZlbCBvYmplY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCByZXNwb25zZURhdGFSb3cudHlwZSAhPSAnZ2V0dGV4dCcgJiYgdHlwZW9mIHJlc3BvbnNlRGF0YVJvdy5ibG9ja190eXBlID09ICd1bmRlZmluZWQnICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0TGFuZ3VhZ2UgPSBzZWxmLm9yZGVyZWRTZWNvbmRhcnlMYW5ndWFnZXNbMF1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiByZXNwb25zZURhdGFSb3cudHJhbnNsYXRpb25zQXJyYXlbZmlyc3RMYW5ndWFnZV0uYmxvY2tfdHlwZSAhPSAndW5kZWZpbmVkJyApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VEYXRhUm93LmJsb2NrX3R5cGUgPSByZXNwb25zZURhdGFSb3cudHJhbnNsYXRpb25zQXJyYXlbZmlyc3RMYW5ndWFnZV0uYmxvY2tfdHlwZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5mb1tpbmRleF0gPSBPYmplY3QuYXNzaWduKCB7fSwgcmVzcG9uc2VEYXRhUm93LCBpbmZvUm93IClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWUgLy8gYSBzb3J0IG9mIGJyZWFrXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZm8gPSByZXNwb25zZURhdGFcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RyaW5nR3JvdXBzID0gdGhpcy5hZGRUb1N0cmluZ0dyb3Vwcyggbm9kZUluZm8gKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeSA9IHRoaXMuZGljdGlvbmFyeS5jb25jYXQoIG5vZGVJbmZvIClcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U3RyaW5nc0Ryb3Bkb3duKClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkVG9TdHJpbmdHcm91cHMoIHN0cmluZ3MgKXtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBzZWUgd2hhdCBub2RlIGdyb3VwcyBhcmUgZm91bmRcclxuICAgICAgICAgICAgICAgIGxldCBmb3VuZFN0cmluZ0dyb3VwcyA9IHRoaXMuc3RyaW5nR3JvdXBzO1xyXG4gICAgICAgICAgICAgICAgc3RyaW5ncy5mb3JFYWNoKCBmdW5jdGlvbiAoIHN0cmluZyApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIGZvdW5kU3RyaW5nR3JvdXBzLmluZGV4T2YoIHN0cmluZy5ncm91cCApID09PSAtMSAmJiAoICggdHlwZW9mIHN0cmluZy5ibG9ja1R5cGUgPT09ICd1bmRlZmluZWQnICkgfHwgc3RyaW5nLmJsb2NrVHlwZSAhPT0gJzInICkgKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRTdHJpbmdHcm91cHMucHVzaCggc3RyaW5nLmdyb3VwIClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHB1dCB0aGUgbm9kZSBncm91cHMgaW4gdGhlIG9yZGVyIHRoYXQgd2Ugd2FudCwgYWNjb3JkaW5nIHRvIHRoZSBwcm9wIHRoaXMuc3RyaW5nR3JvdXBPcmRlclxyXG4gICAgICAgICAgICAgICAgbGV0IG9yZGVyZWRTdHJpbmdHcm91cHMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuZWRpdG9yU3RyaW5ncy5zZW9fdXBkYXRlX25vdGljZSAhPSAnc2VvX3BhY2tfdXBkYXRlX25vdF9uZWVkZWQnICl7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JkZXJlZFN0cmluZ0dyb3Vwcy5wdXNoKCB0aGlzLmVkaXRvclN0cmluZ3Muc2VvX3VwZGF0ZV9ub3RpY2UgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ0dyb3VwT3JkZXIuZm9yRWFjaCggZnVuY3Rpb24oIGdyb3VwICl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBmb3VuZFN0cmluZ0dyb3Vwcy5pbmRleE9mKCBncm91cCApICE9PSAtMSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkU3RyaW5nR3JvdXBzLnB1c2goIGdyb3VwIClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIHdlcmUgYW55IG90aGVyIHN0cmluZyBncm91cHMgdGhhdCB3ZXJlIG5vdCBpbiB0aGUgcHJvcCwgYWRkIHRoZW0gYXQgdGhlIGVuZC5cclxuICAgICAgICAgICAgICAgIGZvdW5kU3RyaW5nR3JvdXBzLmZvckVhY2goIGZ1bmN0aW9uIChncm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICggb3JkZXJlZFN0cmluZ0dyb3Vwcy5pbmRleE9mKCBncm91cCApID09PSAtMSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmVkU3RyaW5nR3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyZWRTdHJpbmdHcm91cHM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGdldFN0cmluZ0luZGV4KCBzZWxlY3RvciwgZGJJRCApe1xyXG4gICAgICAgICAgICAgICAgbGV0IGZvdW5kID0gbnVsbFxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeS5zb21lKGZ1bmN0aW9uICggc3RyaW5nLCBpbmRleCApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIHN0cmluZy5kYklEID09IGRiSUQgJiYgc3RyaW5nLnNlbGVjdG9yID09IHNlbGVjdG9yICl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gaW5kZXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXROb2RlSW5mbyggbm9kZSwgYmFzZVNlbGVjdG9yID0gJycgKXtcclxuICAgICAgICAgICAgICAgIGxldCBzdHJpbmdJZFxyXG4gICAgICAgICAgICAgICAgbGV0IG5vZGVEYXRhICA9IFtdXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0b3JzID0gdGhpcy5wcmVwYXJlU2VsZWN0b3JTdHJpbmdzKCBiYXNlU2VsZWN0b3IgKVxyXG5cclxuICAgICAgICAgICAgICAgIHNlbGVjdG9ycy5mb3JFYWNoKCBmdW5jdGlvbiAoIHNlbGVjdG9yICkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBzdHJpbmdJZCA9IG5vZGUuZ2V0QXR0cmlidXRlKCBzZWxlY3RvciApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICggc3RyaW5nSWQgKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZUF0dHJpYnV0ZSAgID0gc2VsZWN0b3IucmVwbGFjZSggYmFzZVNlbGVjdG9yLCAnJyApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlR3JvdXAgICAgICAgPSBub2RlLmdldEF0dHJpYnV0ZSggJ2RhdGEtdHJwLW5vZGUtZ3JvdXAnICsgbm9kZUF0dHJpYnV0ZSApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBub2RlRGVzY3JpcHRpb24gPSBub2RlLmdldEF0dHJpYnV0ZSggJ2RhdGEtdHJwLW5vZGUtZGVzY3JpcHRpb24nICsgbm9kZUF0dHJpYnV0ZSApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZW50cnkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYklEICAgICAgOiBzdHJpbmdJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yICA6IHNlbGVjdG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIDogbm9kZUF0dHJpYnV0ZS5zdWJzdHIoMSksIC8vIHN1YnN0cigxKSBpcyB1c2VkIHRvIHRyaW0gcHJlZml4aW5nIGxpbmUgLSBleC4gLWFsdCB3aWxsIHJlc3VsdCBpbiBhbHQgKG5vIGxpbmUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbm9kZUdyb3VwIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5Lmdyb3VwID0gbm9kZUdyb3VwXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG5vZGVEZXNjcmlwdGlvbiApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZXNjcmlwdGlvbiA9IG5vZGVEZXNjcmlwdGlvblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZURhdGEucHVzaCggZW50cnkgKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlRGF0YVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBnZXRBbGxTZWxlY3RvcnMoKXtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RvcnMgPSBbXVxyXG4gICAgICAgICAgICAgICAgbGV0IHNlbGYgICAgICA9IHRoaXNcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFBdHRyaWJ1dGVzLmZvckVhY2goIGZ1bmN0aW9uICggZGF0YUF0dHJpYnV0ZSApe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ycyA9IHNlbGVjdG9ycy5jb25jYXQoIHNlbGYucHJlcGFyZVNlbGVjdG9yU3RyaW5ncyggZGF0YUF0dHJpYnV0ZSApIClcclxuICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwcmVwYXJlU2VsZWN0b3JTdHJpbmdzKCBiYXNlTmFtZVNlbGVjdG9yICl7XHJcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkX3NlbGVjdG9ycyA9IFtdXHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RvcnMuZm9yRWFjaCggZnVuY3Rpb24gKCBzZWxlY3RvclN1ZmZpeCwgaW5kZXggKXtcclxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRfc2VsZWN0b3JzLnB1c2goIGJhc2VOYW1lU2VsZWN0b3IgKyBzZWxlY3RvclN1ZmZpeCAgKVxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VkX3NlbGVjdG9yc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwYXJlbnRVUkwoIHVybCApe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKCAndHJwLWVkaXQtdHJhbnNsYXRpb249cHJldmlldycsICd0cnAtZWRpdC10cmFuc2xhdGlvbj10cnVlJyApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNsZWFuVVJMKCB1cmwgKXtcclxuICAgICAgICAgICAgICAgIC8vbWFrZSByZW1vdmVVcmxQYXJhbWV0ZXIgcmVjdXJzaXZlIGFuZCBvbmx5IGNhbGwgaXQgb25jZSB3aXRoIGFsbCB0aGUgcGFyYW1ldGVycyB0aGF0XHJcbiAgICAgICAgICAgICAgICAvL25lZWQgdG8gc3RyaXBwZWQgP1xyXG4gICAgICAgICAgICAgICAgdXJsID0gdXRpbHMucmVtb3ZlVXJsUGFyYW1ldGVyKCB1cmwsICdsYW5nJyApXHJcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzJyApXHJcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC12aWV3LWFzLW5vbmNlJyApXHJcbiAgICAgICAgICAgICAgICB1cmwgPSB1dGlscy5yZW1vdmVVcmxQYXJhbWV0ZXIoIHVybCwgJ3RycC1lZGl0LXRyYW5zbGF0aW9uJyApXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzaG93U3RyaW5nKCBzdHJpbmcsIHR5cGUgKXtcclxuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHN0cmluZy5ibG9ja1R5cGUgIT09ICd1bmRlZmluZWQnICYmIHN0cmluZy5ibG9ja1R5cGUgPT09ICcyJyApe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHNob3cgZGVwcmVjYXRlZCB0cmFuc2xhdGlvbiBibG9ja3MgaW4gdGhlIGRyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT09IHRoaXMuZWRpdG9yU3RyaW5ncy5pbWFnZXMgJiYgdHlwZW9mIHN0cmluZy5hdHRyaWJ1dGUgIT0gJ3VuZGVmaW5lZCcgJiYgc3RyaW5nLmF0dHJpYnV0ZSA9PSAnc3JjJyApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBzdHJpbmcuYXR0cmlidXRlICE9PSAndW5kZWZpbmVkJyAmJiAoIHN0cmluZy5hdHRyaWJ1dGUgPT0gJ2hyZWYnIHx8IHN0cmluZy5hdHRyaWJ1dGUgPT0gJ3NyYycgKSApXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCBzdHJpbmcuZ3JvdXAgPT09IHR5cGUgKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGluaXRTdHJpbmdzRHJvcGRvd24oKXtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxmID0gdGhpc1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICggIXRoaXMuaXNTdHJpbmdzRHJvcGRvd25PcGVuKCkgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCAnI3RycC1zdHJpbmctY2F0ZWdvcmllcycgKS5zZWxlY3QyKCAnZGVzdHJveScgKVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoIHsgcGxhY2Vob2xkZXIgOiBzZWxmLmVkaXRvclN0cmluZ3Muc2VsZWN0X3N0cmluZywgdGVtcGxhdGVSZXN1bHQ6IGZ1bmN0aW9uKG9wdGlvbil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbCAgICA9IGhlLmRlY29kZSggb3B0aW9uLnRleHQuc3Vic3RyaW5nKDAsIDkwKSApICsgKCAoIG9wdGlvbi50ZXh0Lmxlbmd0aCA8PSA5MCkgPyAnJyA6ICcuLi4nIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRlc2NyaXB0aW9uID0gKCBvcHRpb24udGl0bGUgKSA/ICAnKCcgKyBvcHRpb24udGl0bGUgKyAnKScgOiAnJ1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpRdWVyeSggJzxkaXY+JyArIG9yaWdpbmFsICsgJzwvZGl2PjxkaXYgY2xhc3M9XCJzdHJpbmctc2VsZWN0b3ItZGVzY3JpcHRpb25cIj4nICsgZGVzY3JpcHRpb24gKyAnPC9kaXY+JyApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIHdpZHRoIDogJzEwMCUnIH0gKS5wcm9wKCAnZGlzYWJsZWQnLCBmYWxzZSApXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeSggJyN0cnBfc2VsZWN0Ml9vdmVybGF5JyApLmhpZGUoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdHJpbmdzRHJvcGRvd25Mb2FkaW5nKCl7XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoIHsgcGxhY2Vob2xkZXIgOiB0aGlzLmVkaXRvclN0cmluZ3Muc3RyaW5nc19sb2FkaW5nLCB3aWR0aCA6ICcxMDAlJyB9ICkucHJvcCggJ2Rpc2FibGVkJywgdHJ1ZSApXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByb2Nlc3NPcHRpb25OYW1lKCBuYW1lLCB0eXBlICl7XHJcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgPT0gJ0ltYWdlcycgKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB1dGlscy5nZXRGaWxlbmFtZSggbmFtZSApXHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWxzLmVzY2FwZUh0bWwoIG5hbWUgKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBpc1N0cmluZ3NEcm9wZG93bk9wZW4oKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBqUXVlcnkoICcjdHJwLXN0cmluZy1jYXRlZ29yaWVzJyApLnNlbGVjdDIoICdpc09wZW4nIClcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaGFzVW5zYXZlZENoYW5nZXMoKXtcclxuICAgICAgICAgICAgICAgIGxldCB1bnNhdmVkQ2hhbmdlcyA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXNcclxuICAgICAgICAgICAgICAgIGlmICggdGhpcy5zZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleGVzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoc2VsZWN0ZWRJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldHRpbmdzWyd0cmFuc2xhdGlvbi1sYW5ndWFnZXMnXS5mb3JFYWNoKGZ1bmN0aW9uIChsYW5ndWFnZUNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0gJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS50cmFuc2xhdGVkICE9PSBzZWxmLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0udHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXS5lZGl0ZWRUcmFuc2xhdGlvbikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNhdmVkQ2hhbmdlcyA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlID0gdW5zYXZlZENoYW5nZXNcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5zYXZlZENoYW5nZXNcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaWZyYW1lTG9hZGVyKCBzdGF0dXMgKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbG9hZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0cnAtcHJldmlldy1sb2FkZXInIClcclxuXHJcbiAgICAgICAgICAgICAgICBpZiggc3RhdHVzID09ICdzaG93JyApXHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVyLnN0eWxlLmRpc3BsYXkgPSAnZmxleCdcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYoIHN0YXR1cyA9PSAnaGlkZScgKVxyXG4gICAgICAgICAgICAgICAgICAgIGxvYWRlci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHByZXZpb3VzU3RyaW5nKCl7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RycC1zdHJpbmctY2F0ZWdvcmllcycpLnZhbHVlXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IG5ld1ZhbHVlID0gK2N1cnJlbnRWYWx1ZSAtIDFcclxuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSggbmV3VmFsdWUgPj0gMCAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjdHJwLXN0cmluZy1jYXRlZ29yaWVzIG9wdGlvblt2YWx1ZT1cIicgKyBuZXdWYWx1ZSArICdcIl0nKS5sZW5ndGggPT09IDAgKXtcclxuICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZS0tO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmKCBuZXdWYWx1ZSA8IDAgKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdHJpbmcgPSBuZXdWYWx1ZS50b1N0cmluZygpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5leHRTdHJpbmcoKXtcclxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHJwLXN0cmluZy1jYXRlZ29yaWVzJykudmFsdWUsIG5ld1ZhbHVlID0gMFxyXG5cclxuICAgICAgICAgICAgICAgIGlmKCBjdXJyZW50VmFsdWUgIT0gJycgKVxyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gK2N1cnJlbnRWYWx1ZSArIDFcclxuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSggbmV3VmFsdWUgPCB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJyN0cnAtc3RyaW5nLWNhdGVnb3JpZXMgb3B0aW9uW3ZhbHVlPVwiJyArIG5ld1ZhbHVlICsgJ1wiXScpLmxlbmd0aCA9PT0gMCApe1xyXG4gICAgICAgICAgICAgICAgICAgIG5ld1ZhbHVlKys7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCBuZXdWYWx1ZSA+PSB0aGlzLmRpY3Rpb25hcnkubGVuZ3RoICl7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0cmluZyA9IG5ld1ZhbHVlLnRvU3RyaW5nKClcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYWRkS2V5Ym9hcmRTaG9ydGN1dHNMaXN0ZW5lcigpe1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgZnVuY3Rpb24oZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICgod2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybS5tYXRjaChcIk1hY1wiKSA/IGUubWV0YUtleSA6IGUuY3RybEtleSkgJiYgZS5hbHRLZXkgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENUUkwgKyBBTFQgKyByaWdodCBhcnJvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggZS5rZXlDb2RlID09PSAzOSApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQoIG5ldyBFdmVudCggJ3RycF90cmlnZ2VyX25leHRfc3RyaW5nX2V2ZW50JyApICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ1RSTCArIEFMVCArIGxlZnQgYXJyb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBlLmtleUNvZGUgPT09IDM3ICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudCggbmV3IEV2ZW50KCAndHJwX3RyaWdnZXJfcHJldmlvdXNfc3RyaW5nX2V2ZW50JyApICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoICd0cnBfdHJpZ2dlcl9uZXh0X3N0cmluZ19ldmVudCcsIHRoaXMubmV4dFN0cmluZyApXHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggJ3RycF90cmlnZ2VyX3ByZXZpb3VzX3N0cmluZ19ldmVudCcsIHRoaXMucHJldmlvdXNTdHJpbmcgKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZXNpemVJZnJhbWUgKGV2ZW50LCB1aSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsX3dpZHRoID0galF1ZXJ5KHdpbmRvdykud2lkdGgoKTtcclxuICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9IGpRdWVyeSggJyN0cnAtY29udHJvbHMnICkud2lkdGgoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZih3aWR0aCA+IHRvdGFsX3dpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSB0b3RhbF93aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBjb250cm9scy5jc3MoJ3dpZHRoJywgd2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHByZXZpZXdDb250YWluZXIgPSBqUXVlcnkoICcjdHJwLXByZXZpZXcnICk7XHJcbiAgICAgICAgICAgICAgICBwcmV2aWV3Q29udGFpbmVyLmNzcygncmlnaHQnLCB3aWR0aCApO1xyXG4gICAgICAgICAgICAgICAgcHJldmlld0NvbnRhaW5lci5jc3MoJ2xlZnQnLCAoIHdpZHRoIC0gMzQ4ICkgKTtcclxuICAgICAgICAgICAgICAgIHByZXZpZXdDb250YWluZXIuY3NzKCd3aWR0aCcsICh0b3RhbF93aWR0aCAtIHdpZHRoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vYWRkIHN1cHBvcnQgZm9yIHYtbW9kZWwgaW4gc2VsZWN0MlxyXG4gICAgICAgIGRpcmVjdGl2ZXM6IHtcclxuICAgICAgICAgICAgc2VsZWN0Mjoge1xyXG4gICAgICAgICAgICAgICAgaW5zZXJ0ZWQoZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZWwpLm9uKCdzZWxlY3QyOnNlbGVjdCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5kaXNwYXRjaEV2ZW50KGV2ZW50KVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGpRdWVyeShlbCkub24oJ3NlbGVjdDI6dW5zZWxlY3QnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChldmVudClcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuPC9zY3JpcHQ+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/babel-loader/lib/index.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/editor.vue?vue&type=script&lang=js&\n");
|
719 |
|
720 |
/***/ }),
|
721 |
|
817 |
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
818 |
|
819 |
"use strict";
|
820 |
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.selectedIndexesArray\n ? _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-section\" }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showChangesUnsavedMessage,\n expression: \"showChangesUnsavedMessage\"\n }\n ],\n staticClass: \"trp-changes-unsaved-message\"\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.unsaved_changes) + \" \"),\n _c(\n \"span\",\n {\n staticClass: \"trp-unsaved-changes trp-discard-changes \",\n attrs: { title: _vm.editorStrings.discard_all_title_attr },\n on: { click: _vm.discardAll }\n },\n [_vm._v(_vm._s(_vm.editorStrings.discard_all))]\n ),\n _vm._v(\"?\")\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.languages, function(languageCode, key) {\n return _c(\n \"div\",\n { attrs: { id: \"trp-language-\" + languageCode } },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n (key <= _vm.othersButtonPosition ||\n _vm.showOtherLanguages) &&\n (_vm.selectedIndexesArray &&\n _vm.selectedIndexesArray.length > 0),\n expression:\n \"( (key <= othersButtonPosition) || showOtherLanguages ) && ( selectedIndexesArray && selectedIndexesArray.length > 0 )\"\n }\n ],\n staticClass: \"trp-language-container\"\n },\n [\n _c(\"div\", { staticClass: \"trp-language-name\" }, [\n key == 0\n ? _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.from) + \" \")\n ])\n : _c(\"span\", [\n _vm._v(_vm._s(_vm.editorStrings.to) + \" \")\n ]),\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.completeLanguageNames[languageCode]) +\n \"\\n \"\n ),\n languageCode != \"original\"\n ? _c(\"img\", {\n staticClass: \"trp-language-box-flag-image\",\n attrs: {\n src:\n _vm.flagsPath[languageCode] +\n \"/\" +\n languageCode +\n \".png\",\n width: \"18\",\n height: \"12\",\n alt: languageCode,\n title: _vm.completeLanguageNames[languageCode]\n }\n })\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\n \"table\",\n { staticClass: \"trp-translations-for-language\" },\n [\n _vm.showImageIcon\n ? _c(\n \"td\",\n { staticClass: \"trp-translation-icon-container\" },\n [\n _c(\"span\", {\n staticClass:\n \"trp-translation-icon dashicons dashicons-format-image\"\n })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"td\",\n { staticClass: \"trp-translations-container\" },\n _vm._l(_vm.selectedIndexesArray, function(\n selectedIndex\n ) {\n return _c(\n \"div\",\n { staticClass: \"trp-string-container\" },\n [\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex].translationsArray[\n languageCode\n ]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n string:\n _vm.dictionary[selectedIndex],\n highlightUnsavedChanges:\n _vm.showChangesUnsavedMessage &&\n _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n ),\n editorStrings: _vm.editorStrings\n },\n model: {\n value:\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n .editedTranslation,\n callback: function($$v) {\n _vm.$set(\n _vm.dictionary[selectedIndex]\n .translationsArray[\n languageCode\n ],\n \"editedTranslation\",\n $$v\n )\n },\n expression:\n \"dictionary[selectedIndex].translationsArray[languageCode].editedTranslation\"\n }\n })\n ],\n 1\n )\n : _vm.dictionary[selectedIndex]\n ? _c(\n \"div\",\n { key: selectedIndex },\n [\n _c(\"translation-input\", {\n attrs: {\n readonly: true,\n string:\n _vm.dictionary[selectedIndex],\n value:\n _vm.dictionary[selectedIndex]\n .original,\n editorStrings: _vm.editorStrings\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"trp-translation-input-footer\",\n attrs: {\n \"data-dictionary-entry\": JSON.stringify(\n _vm.dictionary[selectedIndex]\n )\n }\n },\n [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value:\n _vm.dictionary[selectedIndex]\n .attribute != \"content\" ||\n _vm.dictionary[selectedIndex]\n .attribute != \"\",\n expression:\n \"dictionary[selectedIndex].attribute != 'content' || dictionary[selectedIndex].attribute != ''\"\n }\n ],\n staticClass: \"trp-attribute-name\"\n },\n [\n _vm._v(\n _vm._s(\n _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ]\n ? _vm.editorStrings[\n _vm.dictionary[selectedIndex]\n .attribute\n ]\n : _vm.editorStrings.text\n )\n )\n ]\n ),\n _vm._v(\" \"),\n _vm.dictionary[selectedIndex] &&\n _vm.dictionary[selectedIndex]\n .translationsArray[languageCode]\n ? _c(\n \"div\",\n {\n staticClass:\n \"trp-discard-changes trp-discard-individual-changes\",\n class: {\n \"trp-unsaved-changes\": _vm.hasUnsavedChanges(\n selectedIndex,\n languageCode\n )\n },\n attrs: {\n title:\n _vm.editorStrings\n .discard_individual_changes_title_attribute\n },\n on: {\n click: function($event) {\n _vm.discardChanges(\n selectedIndex,\n languageCode\n )\n }\n }\n },\n [\n _vm._v(\n _vm._s(_vm.editorStrings.discard)\n )\n ]\n )\n : _vm._e()\n ]\n )\n ]\n )\n }),\n 0\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: key == _vm.othersButtonPosition,\n expression: \"key == othersButtonPosition\"\n }\n ]\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-toggle-languages\",\n class: {\n \"trp-show-other-languages\":\n _vm.showOtherLanguages,\n \"trp-hide-other-languages\": !_vm.showOtherLanguages\n },\n on: {\n click: function($event) {\n _vm.showOtherLanguages = !_vm.showOtherLanguages\n }\n }\n },\n [\n _c(\"span\", [\n _vm._v(\n _vm._s(_vm.showOtherLanguages ? \"⯆\" : \"⯈\") +\n \" \" +\n _vm._s(_vm.editorStrings.other_lang)\n )\n ])\n ]\n )\n ]\n )\n ]\n )\n ]\n )\n })\n ],\n 2\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2NvbXBvbmVudHMvbGFuZ3VhZ2UtYm94ZXMudnVlP2IxNGIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsa0RBQWtEO0FBQzVFLHVCQUF1QjtBQUN2QixpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLHFDQUFxQyxFQUFFO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBLCtCQUErQixtQ0FBbUM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLCtDQUErQztBQUN0RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixnREFBZ0Q7QUFDL0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDRDQUE0QztBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHNDQUFzQztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxxQkFBcUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxxQkFBcUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2xvYWRlcnMvdGVtcGxhdGVMb2FkZXIuanM/IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPyEuL2Fzc2V0cy9zcmMvanMvY29tcG9uZW50cy9sYW5ndWFnZS1ib3hlcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9M2Y4MGNmMTAmLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXlcbiAgICA/IF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiLFxuICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC10cmFuc2xhdGlvbi1zZWN0aW9uXCIgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jaGFuZ2VzLXVuc2F2ZWQtbWVzc2FnZVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLnVuc2F2ZWRfY2hhbmdlcykgKyBcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC11bnNhdmVkLWNoYW5nZXMgdHJwLWRpc2NhcmQtY2hhbmdlcyBcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHRpdGxlOiBfdm0uZWRpdG9yU3RyaW5ncy5kaXNjYXJkX2FsbF90aXRsZV9hdHRyIH0sXG4gICAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLmRpc2NhcmRBbGwgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MuZGlzY2FyZF9hbGwpKV1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiP1wiKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uX2woX3ZtLmxhbmd1YWdlcywgZnVuY3Rpb24obGFuZ3VhZ2VDb2RlLCBrZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgeyBhdHRyczogeyBpZDogXCJ0cnAtbGFuZ3VhZ2UtXCIgKyBsYW5ndWFnZUNvZGUgfSB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChrZXkgPD0gX3ZtLm90aGVyc0J1dHRvblBvc2l0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dPdGhlckxhbmd1YWdlcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZEluZGV4ZXNBcnJheS5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiKCAoa2V5IDw9IG90aGVyc0J1dHRvblBvc2l0aW9uKSB8fCBzaG93T3RoZXJMYW5ndWFnZXMgKSAmJiAoIHNlbGVjdGVkSW5kZXhlc0FycmF5ICYmIHNlbGVjdGVkSW5kZXhlc0FycmF5Lmxlbmd0aCA+IDAgKVwiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbGFuZ3VhZ2UtY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWxhbmd1YWdlLW5hbWVcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAga2V5ID09IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmZyb20pICsgXCIgXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IF9jKFwic3BhblwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy50bykgKyBcIiBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGUgIT0gXCJvcmlnaW5hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFwiaW1nXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbGFuZ3VhZ2UtYm94LWZsYWctaW1hZ2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZmxhZ3NQYXRoW2xhbmd1YWdlQ29kZV0gK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlQ29kZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiLnBuZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMThcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCIxMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0OiBsYW5ndWFnZUNvZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogX3ZtLmNvbXBsZXRlTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKVxuICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0YWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXRyYW5zbGF0aW9ucy1mb3ItbGFuZ3VhZ2VcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93SW1hZ2VJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInRycC10cmFuc2xhdGlvbi1pY29uLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC10cmFuc2xhdGlvbi1pY29uIGRhc2hpY29ucyBkYXNoaWNvbnMtZm9ybWF0LWltYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwidGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb25zLWNvbnRhaW5lclwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uc2VsZWN0ZWRJbmRleGVzQXJyYXksIGZ1bmN0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwidHJwLXN0cmluZy1jb250YWluZXJcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XS50cmFuc2xhdGlvbnNBcnJheVtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2V5OiBzZWxlY3RlZEluZGV4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcInRyYW5zbGF0aW9uLWlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0VW5zYXZlZENoYW5nZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uaGFzVW5zYXZlZENoYW5nZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lZGl0ZWRUcmFuc2xhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyYW5zbGF0aW9uc0FycmF5W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5ndWFnZUNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVkaXRlZFRyYW5zbGF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkJHZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLnRyYW5zbGF0aW9uc0FycmF5W2xhbmd1YWdlQ29kZV0uZWRpdGVkVHJhbnNsYXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBrZXk6IHNlbGVjdGVkSW5kZXggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwidHJhbnNsYXRpb24taW5wdXRcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHk6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5vcmlnaW5hbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtdHJhbnNsYXRpb24taW5wdXQtZm9vdGVyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZGljdGlvbmFyeS1lbnRyeVwiOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlICE9IFwiY29udGVudFwiIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyaWJ1dGUgIT0gXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF0uYXR0cmlidXRlICE9ICdjb250ZW50JyB8fCBkaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdLmF0dHJpYnV0ZSAhPSAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtYXR0cmlidXRlLW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZWRpdG9yU3RyaW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdm0uZWRpdG9yU3RyaW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmRpY3Rpb25hcnlbc2VsZWN0ZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cmlidXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfdm0uZWRpdG9yU3RyaW5ncy50ZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaWN0aW9uYXJ5W3NlbGVjdGVkSW5kZXhdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uZGljdGlvbmFyeVtzZWxlY3RlZEluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudHJhbnNsYXRpb25zQXJyYXlbbGFuZ3VhZ2VDb2RlXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cnAtZGlzY2FyZC1jaGFuZ2VzIHRycC1kaXNjYXJkLWluZGl2aWR1YWwtY2hhbmdlc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXVuc2F2ZWQtY2hhbmdlc1wiOiBfdm0uaGFzVW5zYXZlZENoYW5nZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRpc2NhcmRfaW5kaXZpZHVhbF9jaGFuZ2VzX3RpdGxlX2F0dHJpYnV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5kaXNjYXJkQ2hhbmdlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5lZGl0b3JTdHJpbmdzLmRpc2NhcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX3ZtLl9lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGtleSA9PSBfdm0ub3RoZXJzQnV0dG9uUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJrZXkgPT0gb3RoZXJzQnV0dG9uUG9zaXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC10b2dnbGUtbGFuZ3VhZ2VzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidHJwLXNob3ctb3RoZXItbGFuZ3VhZ2VzXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93T3RoZXJMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRycC1oaWRlLW90aGVyLWxhbmd1YWdlc1wiOiAhX3ZtLnNob3dPdGhlckxhbmd1YWdlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dPdGhlckxhbmd1YWdlcyA9ICFfdm0uc2hvd090aGVyTGFuZ3VhZ2VzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5zaG93T3RoZXJMYW5ndWFnZXMgPyBcIuKvhlwiIDogXCLir4hcIikgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3Mub3RoZXJfbGFuZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/components/language-boxes.vue?vue&type=template&id=3f80cf10&\n");
|
821 |
|
822 |
/***/ }),
|
823 |
|
853 |
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
854 |
|
855 |
"use strict";
|
856 |
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"staticRenderFns\", function() { return staticRenderFns; });\nvar render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"trp-editor\" } }, [\n _c(\n \"div\",\n { attrs: { id: \"trp-controls\" } },\n [\n _c(\n \"div\",\n { staticClass: \"trp-controls-container\" },\n [\n _c(\"div\", { attrs: { id: \"trp-close-save\" } }, [\n _c(\"a\", {\n attrs: {\n id: \"trp-controls-close\",\n href: _vm.closeURL,\n title: _vm.editorStrings.close\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { attrs: { id: \"trp-save-and-loader-spinner\" } },\n [\n _c(\n \"span\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.loading_strings > 0,\n expression: \"loading_strings > 0\"\n }\n ],\n staticClass: \"trp-ajax-loader\",\n attrs: { id: \"trp-string-saved-ajax-loader\" }\n },\n [_c(\"div\", { staticClass: \"trp-spinner\" })]\n ),\n _vm._v(\" \"),\n _c(\"save-translations\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n nonces: _vm.nonces,\n ajax_url: _vm.ajax_url,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n iframe: _vm.iframe,\n currentURL: _vm.currentURL,\n mergingString: _vm.mergingString,\n mergeData: _vm.mergeData,\n editorStrings: _vm.editorStrings\n },\n on: {\n \"translations-saved\": function($event) {\n _vm.showChangesUnsavedMessage = false\n }\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"trp-controls-section\" }, [\n _c(\"div\", { staticClass: \"trp-controls-section-content\" }, [\n _c(\"div\", { attrs: { id: \"trp-language-switch\" } }, [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.currentLanguage,\n expression: \"currentLanguage\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-language-select\", name: \"lang\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.currentLanguage = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.languageNames, function(lang, langIndex) {\n return _c(\"option\", { domProps: { value: langIndex } }, [\n _vm._v(_vm._s(lang))\n ])\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-string-list\" } }, [\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.selectedString,\n expression: \"selectedString\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-string-categories\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.selectedString = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.stringGroups, function(group) {\n return _c(\n \"optgroup\",\n { attrs: { label: group } },\n _vm._l(_vm.dictionary, function(string, index) {\n return _vm.showString(string, group)\n ? _c(\n \"option\",\n {\n attrs: {\n title: string.description,\n \"data-database-id\": string.dbID,\n \"data-group\": string.group\n },\n domProps: { value: index }\n },\n [\n _vm._v(\n _vm._s(\n _vm.processOptionName(\n string.original,\n group\n )\n )\n )\n ]\n )\n : _vm._e()\n }),\n 0\n )\n }),\n 0\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-next-previous\" } }, [\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons\",\n attrs: {\n type: \"button\",\n id: \"trp-previous\",\n title: _vm.editorStrings.previous_title_attr\n },\n on: {\n click: function($event) {\n _vm.previousString()\n }\n }\n },\n [\n _c(\"span\", [_vm._v(\"«\")]),\n _vm._v(\" \" + _vm._s(_vm.editorStrings.previous))\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"button\",\n {\n staticClass: \"trp-next-previous-buttons\",\n attrs: {\n type: \"button\",\n id: \"trp-next\",\n title: _vm.editorStrings.next_title_attr\n },\n on: {\n click: function($event) {\n _vm.nextString()\n }\n }\n },\n [\n _vm._v(_vm._s(_vm.editorStrings.next) + \" \"),\n _c(\"span\", [_vm._v(\"»\")])\n ]\n )\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-view-as\" } }, [\n _c(\"div\", { attrs: { id: \"trp-view-as-description\" } }, [\n _vm._v(_vm._s(_vm.editorStrings.view_as))\n ]),\n _vm._v(\" \"),\n _c(\n \"select\",\n {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.viewAs,\n expression: \"viewAs\"\n },\n { name: \"select2\", rawName: \"v-select2\" }\n ],\n attrs: { id: \"trp-view-as-select\" },\n on: {\n change: function($event) {\n var $$selectedVal = Array.prototype.filter\n .call($event.target.options, function(o) {\n return o.selected\n })\n .map(function(o) {\n var val = \"_value\" in o ? o._value : o.value\n return val\n })\n _vm.viewAs = $event.target.multiple\n ? $$selectedVal\n : $$selectedVal[0]\n }\n }\n },\n _vm._l(_vm.roles, function(role, roleIndex) {\n return _c(\n \"option\",\n {\n attrs: {\n disabled: !role,\n title: !role ? _vm.editorStrings.view_as_pro : \"\"\n },\n domProps: { value: role }\n },\n [_vm._v(_vm._s(roleIndex))]\n )\n }),\n 0\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.selectedString !== null,\n expression: \"selectedString !== null\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\"language-boxes\", {\n attrs: {\n selectedIndexesArray: _vm.selectedIndexesArray,\n dictionary: _vm.dictionary,\n currentLanguage: _vm.currentLanguage,\n onScreenLanguage: _vm.onScreenLanguage,\n languageNames: _vm.languageNames,\n settings: _vm.settings,\n showChangesUnsavedMessage: _vm.showChangesUnsavedMessage,\n editorStrings: _vm.editorStrings,\n flagsPath: _vm.flagsPath,\n iframe: _vm.iframe\n },\n on: {\n \"discarded-changes\": function($event) {\n _vm.hasUnsavedChanges()\n }\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"extra-content\", {\n attrs: {\n languageNames: _vm.languageNames,\n editorStrings: _vm.editorStrings,\n paidVersion: _vm.paid_version\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.translationNotLoadedYet,\n expression: \"translationNotLoadedYet\"\n }\n ],\n staticClass: \"trp-controls-section\"\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"trp-controls-section-content\",\n attrs: { id: \"trp-translation-not-ready-section\" }\n },\n [\n _c(\"p\", {\n domProps: {\n innerHTML: _vm._s(\n _vm.editorStrings.translation_not_loaded_yet\n )\n }\n })\n ]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp_select2_overlay\" } }),\n _vm._v(\" \"),\n _c(\"hover-actions\", {\n ref: \"hoverActions\",\n attrs: {\n dictionary: _vm.dictionary,\n settings: _vm.settings,\n iframe: _vm.iframe,\n dataAttributes: _vm.dataAttributes,\n mergeRules: _vm.mergeRules,\n nonces: _vm.nonces,\n ajax_url: _vm.ajax_url,\n mergeData: _vm.mergeData,\n editorStrings: _vm.editorStrings\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-preview\" } }, [\n _c(\"iframe\", {\n attrs: { id: \"trp-preview-iframe\", src: _vm.urlToLoad },\n on: { load: _vm.iFrameLoaded }\n }),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"trp-preview-loader\" } }, [\n _c(\n \"svg\",\n {\n staticClass: \"trp-loader\",\n attrs: {\n width: \"65px\",\n height: \"65px\",\n viewBox: \"0 0 66 66\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }\n },\n [\n _c(\"circle\", {\n staticClass: \"trp-circle\",\n attrs: {\n fill: \"none\",\n \"stroke-width\": \"6\",\n \"stroke-linecap\": \"round\",\n cx: \"33\",\n cy: \"33\",\n r: \"30\"\n }\n })\n ]\n )\n ])\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvc3JjL2pzL2VkaXRvci52dWU/NTEwNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixTQUFTLG1CQUFtQixFQUFFO0FBQ2xEO0FBQ0E7QUFDQSxPQUFPLFNBQVMscUJBQXFCLEVBQUU7QUFDdkM7QUFDQTtBQUNBO0FBQ0EsV0FBVyx3Q0FBd0M7QUFDbkQ7QUFDQSx1QkFBdUIsU0FBUyx1QkFBdUIsRUFBRTtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLFNBQVMsb0NBQW9DLEVBQUU7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUIscUJBQXFCO0FBQ3JCLGdDQUFnQyw2QkFBNkI7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQjtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNDQUFzQztBQUM3RCx5QkFBeUIsOENBQThDO0FBQ3ZFLDJCQUEyQixTQUFTLDRCQUE0QixFQUFFO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekI7QUFDQSw4QkFBOEIsMENBQTBDO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQSwyQ0FBMkMsWUFBWSxtQkFBbUIsRUFBRTtBQUM1RTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVMsd0JBQXdCLEVBQUU7QUFDOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBLDhCQUE4Qiw4QkFBOEI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsU0FBUyxlQUFlLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DLDZDQUE2QztBQUM3QyxpQ0FBaUM7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsU0FBUywwQkFBMEIsRUFBRTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVMsb0JBQW9CLEVBQUU7QUFDMUQsNkJBQTZCLFNBQVMsZ0NBQWdDLEVBQUU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBLDhCQUE4QiwyQkFBMkI7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjtBQUMzQixxQ0FBcUM7QUFDckMseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QixtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixTQUFTLDRCQUE0QixFQUFFO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVMsb0JBQW9CLEVBQUU7QUFDOUM7QUFDQSxnQkFBZ0IsK0NBQStDO0FBQy9ELGFBQWE7QUFDYixPQUFPO0FBQ1A7QUFDQSxpQkFBaUIsU0FBUywyQkFBMkIsRUFBRTtBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/IS4vYXNzZXRzL3NyYy9qcy9lZGl0b3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWIwNDZlOGVjJi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtZWRpdG9yXCIgfSB9LCBbXG4gICAgX2MoXG4gICAgICBcImRpdlwiLFxuICAgICAgeyBhdHRyczogeyBpZDogXCJ0cnAtY29udHJvbHNcIiB9IH0sXG4gICAgICBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJ0cnAtY29udHJvbHMtY29udGFpbmVyXCIgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1jbG9zZS1zYXZlXCIgfSB9LCBbXG4gICAgICAgICAgICAgIF9jKFwiYVwiLCB7XG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBcInRycC1jb250cm9scy1jbG9zZVwiLFxuICAgICAgICAgICAgICAgICAgaHJlZjogX3ZtLmNsb3NlVVJMLFxuICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLmNsb3NlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IGlkOiBcInRycC1zYXZlLWFuZC1sb2FkZXItc3Bpbm5lclwiIH0gfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmxvYWRpbmdfc3RyaW5ncyA+IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibG9hZGluZ19zdHJpbmdzID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtYWpheC1sb2FkZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtc3RyaW5nLXNhdmVkLWFqYXgtbG9hZGVyXCIgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0cnAtc3Bpbm5lclwiIH0pXVxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgICBfYyhcInNhdmUtdHJhbnNsYXRpb25zXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LFxuICAgICAgICAgICAgICAgICAgICAgIGRpY3Rpb25hcnk6IF92bS5kaWN0aW9uYXJ5LFxuICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgbm9uY2VzOiBfdm0ubm9uY2VzLFxuICAgICAgICAgICAgICAgICAgICAgIGFqYXhfdXJsOiBfdm0uYWpheF91cmwsXG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBfdm0uY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgIG9uU2NyZWVuTGFuZ3VhZ2U6IF92bS5vblNjcmVlbkxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgIGlmcmFtZTogX3ZtLmlmcmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VVJMOiBfdm0uY3VycmVudFVSTCxcbiAgICAgICAgICAgICAgICAgICAgICBtZXJnaW5nU3RyaW5nOiBfdm0ubWVyZ2luZ1N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICBtZXJnZURhdGE6IF92bS5tZXJnZURhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBcInRyYW5zbGF0aW9ucy1zYXZlZFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIiB9LCBbXG4gICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1sYW5ndWFnZS1zd2l0Y2hcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLmN1cnJlbnRMYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjdXJyZW50TGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJzZWxlY3QyXCIsIHJhd05hbWU6IFwidi1zZWxlY3QyXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLWxhbmd1YWdlLXNlbGVjdFwiLCBuYW1lOiBcImxhbmdcIiB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsIGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvLnNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBcIl92YWx1ZVwiIGluIG8gPyBvLl92YWx1ZSA6IG8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uY3VycmVudExhbmd1YWdlID0gJGV2ZW50LnRhcmdldC5tdWx0aXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJCRzZWxlY3RlZFZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJCRzZWxlY3RlZFZhbFswXVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl9sKF92bS5sYW5ndWFnZU5hbWVzLCBmdW5jdGlvbihsYW5nLCBsYW5nSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2MoXCJvcHRpb25cIiwgeyBkb21Qcm9wczogeyB2YWx1ZTogbGFuZ0luZGV4IH0gfSwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhsYW5nKSlcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJ0cnAtc3RyaW5nLWxpc3RcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNlbGVjdGVkU3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNlbGVjdGVkU3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwic2VsZWN0MlwiLCByYXdOYW1lOiBcInYtc2VsZWN0MlwiIH1cbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1zdHJpbmctY2F0ZWdvcmllc1wiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkJHNlbGVjdGVkVmFsID0gQXJyYXkucHJvdG90eXBlLmZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucywgZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8uc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24obykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IFwiX3ZhbHVlXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5zZWxlY3RlZFN0cmluZyA9ICRldmVudC50YXJnZXQubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICQkc2VsZWN0ZWRWYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICQkc2VsZWN0ZWRWYWxbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uc3RyaW5nR3JvdXBzLCBmdW5jdGlvbihncm91cCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3B0Z3JvdXBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgbGFiZWw6IGdyb3VwIH0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0uZGljdGlvbmFyeSwgZnVuY3Rpb24oc3RyaW5nLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLnNob3dTdHJpbmcoc3RyaW5nLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9wdGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJpbmcuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZGF0YWJhc2UtaWRcIjogc3RyaW5nLmRiSUQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImRhdGEtZ3JvdXBcIjogc3RyaW5nLmdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogaW5kZXggfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0ucHJvY2Vzc09wdGlvbk5hbWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLm9yaWdpbmFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1uZXh0LXByZXZpb3VzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1uZXh0LXByZXZpb3VzLWJ1dHRvbnNcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcInRycC1wcmV2aW91c1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLnByZXZpb3VzX3RpdGxlX2F0dHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5wcmV2aW91c1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCLCq1wiKV0pLFxuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIiBcIiArIF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy5wcmV2aW91cykpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtbmV4dC1wcmV2aW91cy1idXR0b25zXCIsXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXCJ0cnAtbmV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF92bS5lZGl0b3JTdHJpbmdzLm5leHRfdGl0bGVfYXR0clxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLm5leHRTdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLmVkaXRvclN0cmluZ3MubmV4dCkgKyBcIiBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgX2MoXCJzcGFuXCIsIFtfdm0uX3YoXCLCu1wiKV0pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidHJwLXZpZXctYXNcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidHJwLXZpZXctYXMtZGVzY3JpcHRpb25cIiB9IH0sIFtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0uZWRpdG9yU3RyaW5ncy52aWV3X2FzKSlcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcInNlbGVjdFwiLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnZpZXdBcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJ2aWV3QXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJzZWxlY3QyXCIsIHJhd05hbWU6IFwidi1zZWxlY3QyXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IFwidHJwLXZpZXctYXMtc2VsZWN0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyICQkc2VsZWN0ZWRWYWwgPSBBcnJheS5wcm90b3R5cGUuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGwoJGV2ZW50LnRhcmdldC5vcHRpb25zLCBmdW5jdGlvbihvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gby5zZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbihvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gXCJfdmFsdWVcIiBpbiBvID8gby5fdmFsdWUgOiBvLnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLnZpZXdBcyA9ICRldmVudC50YXJnZXQubXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICQkc2VsZWN0ZWRWYWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICQkc2VsZWN0ZWRWYWxbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF92bS5fbChfdm0ucm9sZXMsIGZ1bmN0aW9uKHJvbGUsIHJvbGVJbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwib3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6ICFyb2xlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAhcm9sZSA/IF92bS5lZGl0b3JTdHJpbmdzLnZpZXdfYXNfcHJvIDogXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogcm9sZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3Mocm9sZUluZGV4KSldXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2VsZWN0ZWRTdHJpbmcgIT09IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2VsZWN0ZWRTdHJpbmcgIT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb25cIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXCJsYW5ndWFnZS1ib3hlc1wiLCB7XG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ZXNBcnJheTogX3ZtLnNlbGVjdGVkSW5kZXhlc0FycmF5LFxuICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5OiBfdm0uZGljdGlvbmFyeSxcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudExhbmd1YWdlOiBfdm0uY3VycmVudExhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBvblNjcmVlbkxhbmd1YWdlOiBfdm0ub25TY3JlZW5MYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VOYW1lczogX3ZtLmxhbmd1YWdlTmFtZXMsXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgIHNob3dDaGFuZ2VzVW5zYXZlZE1lc3NhZ2U6IF92bS5zaG93Q2hhbmdlc1Vuc2F2ZWRNZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JTdHJpbmdzOiBfdm0uZWRpdG9yU3RyaW5ncyxcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3NQYXRoOiBfdm0uZmxhZ3NQYXRoLFxuICAgICAgICAgICAgICAgICAgICBpZnJhbWU6IF92bS5pZnJhbWVcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgICBcImRpc2NhcmRlZC1jaGFuZ2VzXCI6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5oYXNVbnNhdmVkQ2hhbmdlcygpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAxXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFwiZXh0cmEtY29udGVudFwiLCB7XG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VOYW1lczogX3ZtLmxhbmd1YWdlTmFtZXMsXG4gICAgICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3MsXG4gICAgICAgICAgICAgICAgcGFpZFZlcnNpb246IF92bS5wYWlkX3ZlcnNpb25cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwic2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtc2hvd1wiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnRyYW5zbGF0aW9uTm90TG9hZGVkWWV0LFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInRyYW5zbGF0aW9uTm90TG9hZGVkWWV0XCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1jb250cm9scy1zZWN0aW9uXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwidHJwLWNvbnRyb2xzLXNlY3Rpb24tY29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyBpZDogXCJ0cnAtdHJhbnNsYXRpb24tbm90LXJlYWR5LXNlY3Rpb25cIiB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcInBcIiwge1xuICAgICAgICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbm5lckhUTUw6IF92bS5fcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLmVkaXRvclN0cmluZ3MudHJhbnNsYXRpb25fbm90X2xvYWRlZF95ZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSxcbiAgICAgICAgICAxXG4gICAgICAgICksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgaWQ6IFwidHJwX3NlbGVjdDJfb3ZlcmxheVwiIH0gfSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwiaG92ZXItYWN0aW9uc1wiLCB7XG4gICAgICAgICAgcmVmOiBcImhvdmVyQWN0aW9uc1wiLFxuICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICBkaWN0aW9uYXJ5OiBfdm0uZGljdGlvbmFyeSxcbiAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICBpZnJhbWU6IF92bS5pZnJhbWUsXG4gICAgICAgICAgICBkYXRhQXR0cmlidXRlczogX3ZtLmRhdGFBdHRyaWJ1dGVzLFxuICAgICAgICAgICAgbWVyZ2VSdWxlczogX3ZtLm1lcmdlUnVsZXMsXG4gICAgICAgICAgICBub25jZXM6IF92bS5ub25jZXMsXG4gICAgICAgICAgICBhamF4X3VybDogX3ZtLmFqYXhfdXJsLFxuICAgICAgICAgICAgbWVyZ2VEYXRhOiBfdm0ubWVyZ2VEYXRhLFxuICAgICAgICAgICAgZWRpdG9yU3RyaW5nczogX3ZtLmVkaXRvclN0cmluZ3NcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICBdLFxuICAgICAgMVxuICAgICksXG4gICAgX3ZtLl92KFwiIFwiKSxcbiAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1wcmV2aWV3XCIgfSB9LCBbXG4gICAgICBfYyhcImlmcmFtZVwiLCB7XG4gICAgICAgIGF0dHJzOiB7IGlkOiBcInRycC1wcmV2aWV3LWlmcmFtZVwiLCBzcmM6IF92bS51cmxUb0xvYWQgfSxcbiAgICAgICAgb246IHsgbG9hZDogX3ZtLmlGcmFtZUxvYWRlZCB9XG4gICAgICB9KSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcInRycC1wcmV2aWV3LWxvYWRlclwiIH0gfSwgW1xuICAgICAgICBfYyhcbiAgICAgICAgICBcInN2Z1wiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInRycC1sb2FkZXJcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHdpZHRoOiBcIjY1cHhcIixcbiAgICAgICAgICAgICAgaGVpZ2h0OiBcIjY1cHhcIixcbiAgICAgICAgICAgICAgdmlld0JveDogXCIwIDAgNjYgNjZcIixcbiAgICAgICAgICAgICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgX2MoXCJjaXJjbGVcIiwge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJ0cnAtY2lyY2xlXCIsXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgXCJzdHJva2Utd2lkdGhcIjogXCI2XCIsXG4gICAgICAgICAgICAgICAgXCJzdHJva2UtbGluZWNhcFwiOiBcInJvdW5kXCIsXG4gICAgICAgICAgICAgICAgY3g6IFwiMzNcIixcbiAgICAgICAgICAgICAgICBjeTogXCIzM1wiLFxuICAgICAgICAgICAgICAgIHI6IFwiMzBcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgKVxuICAgICAgXSlcbiAgICBdKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/vue-loader/lib/loaders/templateLoader.js?!./node_modules/vue-loader/lib/index.js?!./assets/src/js/editor.vue?vue&type=template&id=b046e8ec&\n");
|
857 |
|
858 |
/***/ }),
|
859 |
|
assets/js/trp-language-switcher.js
DELETED
@@ -1,114 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Change language function for shortcode language switcher.
|
3 |
-
*/
|
4 |
-
|
5 |
-
function trp_change_language( select ){
|
6 |
-
select.form.action = document.querySelector('link[hreflang="' + select.value + '"]').href;
|
7 |
-
if ( typeof parent.trpEditor == 'undefined' ) {
|
8 |
-
select.form.submit();
|
9 |
-
}
|
10 |
-
}
|
11 |
-
|
12 |
-
jQuery( document ).ready( function( ) {
|
13 |
-
|
14 |
-
sessionStorage.removeItem('wc_fragments');
|
15 |
-
|
16 |
-
// Run this code only if flags are enabled in shortcode language switcher
|
17 |
-
if( trp_language_switcher_data.shortcode_ls_flags ) {
|
18 |
-
jQuery.widget( 'trp.iconselectmenu', jQuery.ui.selectmenu, {
|
19 |
-
_renderItem : function( ul, item ) {
|
20 |
-
// Check if Translation Editor and add data-trp-unpreviewable
|
21 |
-
var data_trp_unpreviewable = '';
|
22 |
-
if( typeof parent.trpEditor != 'undefined' ) {
|
23 |
-
data_trp_unpreviewable = 'data-trp-unpreviewable="trp-unpreviewable"';
|
24 |
-
}
|
25 |
-
|
26 |
-
// Get language title attr
|
27 |
-
var title = jQuery( jQuery( item )[0]['element'][0] ).attr( 'title' );
|
28 |
-
|
29 |
-
var li = jQuery( '<li class="trp-ls-li" data-no-translation ' + data_trp_unpreviewable + '>' );
|
30 |
-
var wrapper = jQuery( '<div class="trp-ls-div" style="display: inline-block;" title="' + jQuery.trim( title ) + '">' );
|
31 |
-
|
32 |
-
if( item.disabled ) {
|
33 |
-
li.addClass( 'ui-state-disabled' );
|
34 |
-
}
|
35 |
-
|
36 |
-
if( jQuery.trim( item.label ) ) {
|
37 |
-
jQuery( '<span>', {
|
38 |
-
text : jQuery.trim( item.label )
|
39 |
-
} ).appendTo( wrapper );
|
40 |
-
}
|
41 |
-
|
42 |
-
jQuery( '<span>', {
|
43 |
-
style : item.element.attr( 'data-style' ),
|
44 |
-
'class' : 'ui-icon ' + item.element.attr( 'data-class' )
|
45 |
-
} ).prependTo( wrapper );
|
46 |
-
|
47 |
-
return li.append( wrapper ).appendTo( ul );
|
48 |
-
}
|
49 |
-
} );
|
50 |
-
|
51 |
-
|
52 |
-
jQuery( '.trp-language-switcher-select' ).each( function() {
|
53 |
-
jQuery( this )
|
54 |
-
.iconselectmenu( {
|
55 |
-
create: function ( event, ui ) {
|
56 |
-
// Remove span for language name when empty
|
57 |
-
if( ! jQuery.trim( jQuery( jQuery( event )[0]['target'] ).text() ) ) {
|
58 |
-
jQuery( 'form.trp-language-switcher-form .ui-selectmenu-text' ).remove();
|
59 |
-
}
|
60 |
-
|
61 |
-
// Add title attr
|
62 |
-
jQuery( '.trp-current-language-icon' ).closest( 'span.ui-selectmenu-button' ).attr(
|
63 |
-
'title', jQuery.trim( jQuery( '.trp-language-switcher-select' ).find( ':selected' ).attr( 'title' ) )
|
64 |
-
);
|
65 |
-
},
|
66 |
-
change: function( event, ui ) {
|
67 |
-
// Change language
|
68 |
-
if( typeof parent.trpEditor == 'undefined' ) {
|
69 |
-
window.location.replace( document.querySelector( 'link[hreflang="' + ui.item.value + '"]' ).href );
|
70 |
-
}
|
71 |
-
},
|
72 |
-
select: function( event, ui ) {
|
73 |
-
// Add the right flag to the selected option
|
74 |
-
jQuery( this ).closest( 'form.trp-language-switcher-form' ).find( '.trp-current-language-icon' )
|
75 |
-
.css( 'background-image', 'url(' + jQuery( this ).find( 'option[value="' + ui.item.value + '"]' ).data( 'flag-url' ) + ')' );
|
76 |
-
},
|
77 |
-
icons: {
|
78 |
-
button : 'trp-current-language-icon'
|
79 |
-
}
|
80 |
-
} ).iconselectmenu( 'menuWidget' ).addClass( 'ui-menu-icons trp-ls-options-with-flag-icons' );
|
81 |
-
} );
|
82 |
-
|
83 |
-
// Add arrow-down icon to the jQuery UI select
|
84 |
-
jQuery( '<span>', {
|
85 |
-
'class' : 'dashicons dashicons-arrow-down'
|
86 |
-
} ).appendTo( jQuery( 'form.trp-language-switcher-form .ui-selectmenu-button' ) );
|
87 |
-
|
88 |
-
// Add the right flag to the selected option
|
89 |
-
jQuery( '.ui-state-default .ui-icon.trp-current-language-icon' ).each( function() {
|
90 |
-
jQuery( this ).css( 'background-image', 'url(' + jQuery( this ).closest( 'form.trp-language-switcher-form' ).find( 'select.trp-language-switcher-select' ).find( ':selected' ).data( 'flag-url' ) + ')' );
|
91 |
-
} );
|
92 |
-
|
93 |
-
// Adjust the font size of select options based on the select font size
|
94 |
-
jQuery( 'form.trp-language-switcher-form .ui-selectmenu-button' ).each( function() {
|
95 |
-
var id = jQuery( this ).attr( 'id' );
|
96 |
-
var font_size = jQuery( this ).css( 'font-size' );
|
97 |
-
|
98 |
-
jQuery( '.ui-menu.trp-ls-options-with-flag-icons' ).each( function() {
|
99 |
-
if( jQuery( this ).attr( 'aria-labelledby' ) == id ) {
|
100 |
-
jQuery( this ).css( 'font-size', font_size );
|
101 |
-
}
|
102 |
-
} );
|
103 |
-
} );
|
104 |
-
|
105 |
-
// Check if Translation Editor and add data-trp-unpreviewable
|
106 |
-
if( typeof parent.trpEditor != 'undefined' ) {
|
107 |
-
jQuery( 'form.trp-language-switcher-form .ui-selectmenu-button' ).each( function() {
|
108 |
-
jQuery( this ).attr( 'data-trp-unpreviewable', 'trp-unpreviewable' );
|
109 |
-
jQuery( this ).find( 'span' ).attr( 'data-trp-unpreviewable', 'trp-unpreviewable' );
|
110 |
-
} );
|
111 |
-
}
|
112 |
-
}
|
113 |
-
|
114 |
-
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/trp-translate-dom-changes.js
CHANGED
@@ -22,23 +22,24 @@ function TRP_Translator(){
|
|
22 |
/**
|
23 |
* Ajax request to get translations for strings
|
24 |
*/
|
25 |
-
this.ajax_get_translation = function( nodesInfo, string_originals, url ) {
|
26 |
jQuery.ajax({
|
27 |
url: url,
|
28 |
type: 'post',
|
29 |
dataType: 'json',
|
30 |
data: {
|
31 |
-
action
|
32 |
-
all_languages
|
33 |
-
security
|
34 |
-
language
|
35 |
-
original_language
|
36 |
-
originals
|
37 |
-
|
|
|
38 |
},
|
39 |
success: function( response ) {
|
40 |
if ( response === 'error' ) {
|
41 |
-
_this.ajax_get_translation( nodesInfo, string_originals, wp_ajax_url );
|
42 |
console.log( 'Notice: TranslatePress trp-ajax request uses fall back to admin ajax.' );
|
43 |
}else{
|
44 |
_this.update_strings( response, nodesInfo );
|
@@ -46,7 +47,7 @@ function TRP_Translator(){
|
|
46 |
},
|
47 |
error: function( errorThrown ){
|
48 |
if ( url == custom_ajax_url ){
|
49 |
-
_this.ajax_get_translation( nodesInfo, string_originals, wp_ajax_url );
|
50 |
console.log( 'Notice: TranslatePress trp-ajax request uses fall back to admin ajax.' );
|
51 |
}else{
|
52 |
_this.update_strings( null, nodesInfo );
|
@@ -160,6 +161,7 @@ function TRP_Translator(){
|
|
160 |
this.detect_new_strings = function( mutations ){
|
161 |
var string_originals = [];
|
162 |
var nodesInfo = [];
|
|
|
163 |
var translateable;
|
164 |
mutations.forEach( function (mutation) {
|
165 |
for (var i = 0; i < mutation.addedNodes.length; i++) {
|
@@ -182,6 +184,7 @@ function TRP_Translator(){
|
|
182 |
translateable = _this.get_translateable_attributes( node )
|
183 |
string_originals = string_originals.concat( translateable.string_originals );
|
184 |
nodesInfo = nodesInfo.concat( translateable.nodesInfo );
|
|
|
185 |
}
|
186 |
|
187 |
if ( mutation.attributeName ){
|
@@ -196,11 +199,12 @@ function TRP_Translator(){
|
|
196 |
translateable = _this.get_translateable_attributes( mutation.target )
|
197 |
string_originals = string_originals.concat( translateable.string_originals );
|
198 |
nodesInfo = nodesInfo.concat( translateable.nodesInfo );
|
|
|
199 |
}
|
200 |
});
|
201 |
if ( nodesInfo.length > 0 ) {
|
202 |
var ajax_url_to_call = (_this.is_editor) ? wp_ajax_url : custom_ajax_url;
|
203 |
-
_this.ajax_get_translation( nodesInfo, string_originals, ajax_url_to_call );
|
204 |
}
|
205 |
};
|
206 |
|
@@ -285,6 +289,8 @@ function TRP_Translator(){
|
|
285 |
this.get_translateable_attributes = function ( node ) {
|
286 |
var nodesInfo = []
|
287 |
var string_originals = []
|
|
|
|
|
288 |
for (var trp_attribute_key in trp_data.trp_attributes_selectors) {
|
289 |
if (trp_data.trp_attributes_selectors.hasOwnProperty(trp_attribute_key)) {
|
290 |
var attribute_selector_item = trp_data.trp_attributes_selectors[trp_attribute_key]
|
@@ -304,12 +310,18 @@ function TRP_Translator(){
|
|
304 |
if ( trp_data ['showdynamiccontentbeforetranslation'] == false ) {
|
305 |
all_nodes[j].setAttribute( attribute_selector_item.accessor, '' );
|
306 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
307 |
}
|
308 |
}
|
309 |
}
|
310 |
}
|
311 |
}
|
312 |
-
return { 'string_originals': string_originals, 'nodesInfo': nodesInfo };
|
313 |
}
|
314 |
|
315 |
function get_string_from_node( node ){
|
22 |
/**
|
23 |
* Ajax request to get translations for strings
|
24 |
*/
|
25 |
+
this.ajax_get_translation = function( nodesInfo, string_originals, url, skip_machine_translation ) {
|
26 |
jQuery.ajax({
|
27 |
url: url,
|
28 |
type: 'post',
|
29 |
dataType: 'json',
|
30 |
data: {
|
31 |
+
action : 'trp_get_translations_regular',
|
32 |
+
all_languages : 'false',
|
33 |
+
security : trp_data['gettranslationsnonceregular'],
|
34 |
+
language : language_to_query,
|
35 |
+
original_language : original_language, // used for trp custom ajax
|
36 |
+
originals : JSON.stringify( string_originals ),
|
37 |
+
skip_machine_translation : JSON.stringify( skip_machine_translation ),
|
38 |
+
dynamic_strings : 'true'
|
39 |
},
|
40 |
success: function( response ) {
|
41 |
if ( response === 'error' ) {
|
42 |
+
_this.ajax_get_translation( nodesInfo, string_originals, wp_ajax_url, skip_machine_translation );
|
43 |
console.log( 'Notice: TranslatePress trp-ajax request uses fall back to admin ajax.' );
|
44 |
}else{
|
45 |
_this.update_strings( response, nodesInfo );
|
47 |
},
|
48 |
error: function( errorThrown ){
|
49 |
if ( url == custom_ajax_url ){
|
50 |
+
_this.ajax_get_translation( nodesInfo, string_originals, wp_ajax_url, skip_machine_translation );
|
51 |
console.log( 'Notice: TranslatePress trp-ajax request uses fall back to admin ajax.' );
|
52 |
}else{
|
53 |
_this.update_strings( null, nodesInfo );
|
161 |
this.detect_new_strings = function( mutations ){
|
162 |
var string_originals = [];
|
163 |
var nodesInfo = [];
|
164 |
+
var skip_machine_translation = [];
|
165 |
var translateable;
|
166 |
mutations.forEach( function (mutation) {
|
167 |
for (var i = 0; i < mutation.addedNodes.length; i++) {
|
184 |
translateable = _this.get_translateable_attributes( node )
|
185 |
string_originals = string_originals.concat( translateable.string_originals );
|
186 |
nodesInfo = nodesInfo.concat( translateable.nodesInfo );
|
187 |
+
skip_machine_translation = skip_machine_translation.concat( translateable.skip_machine_translation );
|
188 |
}
|
189 |
|
190 |
if ( mutation.attributeName ){
|
199 |
translateable = _this.get_translateable_attributes( mutation.target )
|
200 |
string_originals = string_originals.concat( translateable.string_originals );
|
201 |
nodesInfo = nodesInfo.concat( translateable.nodesInfo );
|
202 |
+
skip_machine_translation = skip_machine_translation.concat( translateable.skip_machine_translation );
|
203 |
}
|
204 |
});
|
205 |
if ( nodesInfo.length > 0 ) {
|
206 |
var ajax_url_to_call = (_this.is_editor) ? wp_ajax_url : custom_ajax_url;
|
207 |
+
_this.ajax_get_translation( nodesInfo, string_originals, ajax_url_to_call, skip_machine_translation );
|
208 |
}
|
209 |
};
|
210 |
|
289 |
this.get_translateable_attributes = function ( node ) {
|
290 |
var nodesInfo = []
|
291 |
var string_originals = []
|
292 |
+
var skip_attr_machine_translation = [ 'href', 'src' ]
|
293 |
+
var skip_machine_translation = []
|
294 |
for (var trp_attribute_key in trp_data.trp_attributes_selectors) {
|
295 |
if (trp_data.trp_attributes_selectors.hasOwnProperty(trp_attribute_key)) {
|
296 |
var attribute_selector_item = trp_data.trp_attributes_selectors[trp_attribute_key]
|
310 |
if ( trp_data ['showdynamiccontentbeforetranslation'] == false ) {
|
311 |
all_nodes[j].setAttribute( attribute_selector_item.accessor, '' );
|
312 |
}
|
313 |
+
for ( var s = 0; s < skip_attr_machine_translation.length; s++ ){
|
314 |
+
if ( attribute_selector_item.accessor === skip_attr_machine_translation[s] ){
|
315 |
+
skip_machine_translation.push( attribute_content )
|
316 |
+
break
|
317 |
+
}
|
318 |
+
}
|
319 |
}
|
320 |
}
|
321 |
}
|
322 |
}
|
323 |
}
|
324 |
+
return { 'string_originals': string_originals, 'nodesInfo': nodesInfo, 'skip_machine_translation': skip_machine_translation };
|
325 |
}
|
326 |
|
327 |
function get_string_from_node( node ){
|
class-translate-press.php
CHANGED
@@ -46,7 +46,7 @@ class TRP_Translate_Press{
|
|
46 |
define( 'TRP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
47 |
define( 'TRP_PLUGIN_BASE', plugin_basename( __DIR__ . '/index.php' ) );
|
48 |
define( 'TRP_PLUGIN_SLUG', 'translatepress-multilingual' );
|
49 |
-
define( 'TRP_PLUGIN_VERSION', '1.4.
|
50 |
|
51 |
wp_cache_add_non_persistent_groups(array('trp'));
|
52 |
|
@@ -214,6 +214,7 @@ class TRP_Translate_Press{
|
|
214 |
/* handle CDATA str replacement from the content as it is messing up the renderer */
|
215 |
$this->loader->add_filter( "trp_before_translate_content", $this->translation_render, 'handle_cdata', 1000 );
|
216 |
$this->loader->add_action( "trp_set_translation_for_attribute", $this->translation_render, 'translate_image_srcset_attributes', 10, 3 );
|
|
|
217 |
|
218 |
/* apply translation filters for REST API response */
|
219 |
$post_types = get_post_types();
|
46 |
define( 'TRP_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
47 |
define( 'TRP_PLUGIN_BASE', plugin_basename( __DIR__ . '/index.php' ) );
|
48 |
define( 'TRP_PLUGIN_SLUG', 'translatepress-multilingual' );
|
49 |
+
define( 'TRP_PLUGIN_VERSION', '1.4.9' );
|
50 |
|
51 |
wp_cache_add_non_persistent_groups(array('trp'));
|
52 |
|
214 |
/* handle CDATA str replacement from the content as it is messing up the renderer */
|
215 |
$this->loader->add_filter( "trp_before_translate_content", $this->translation_render, 'handle_cdata', 1000 );
|
216 |
$this->loader->add_action( "trp_set_translation_for_attribute", $this->translation_render, 'translate_image_srcset_attributes', 10, 3 );
|
217 |
+
$this->loader->add_action( "trp_allow_machine_translation_for_string", $this->translation_render, 'allow_machine_translation_for_string', 10, 4 );
|
218 |
|
219 |
/* apply translation filters for REST API response */
|
220 |
$post_types = get_post_types();
|
includes/class-editor-api-regular-strings.php
CHANGED
@@ -31,6 +31,7 @@ class TRP_Editor_Api_Regular_Strings {
|
|
31 |
check_ajax_referer( 'get_translations', 'security' );
|
32 |
if ( isset( $_POST['action'] ) && $_POST['action'] === 'trp_get_translations_regular' && !empty( $_POST['language'] ) && in_array( $_POST['language'], $this->settings['translation-languages'] ) ) {
|
33 |
$originals = (empty($_POST['originals']) )? array() : json_decode(stripslashes($_POST['originals']));
|
|
|
34 |
$ids = (empty($_POST['string_ids']) )? array() : json_decode(stripslashes($_POST['string_ids']));
|
35 |
if ( is_array( $ids ) || is_array( $originals) ) {
|
36 |
$trp = TRP_Translate_Press::get_trp_instance();
|
@@ -41,7 +42,7 @@ class TRP_Editor_Api_Regular_Strings {
|
|
41 |
$this->translation_manager = $trp->get_component('translation_manager');
|
42 |
}
|
43 |
$block_type = $this->trp_query->get_constant_block_type_regular_string();
|
44 |
-
$dictionaries = $this->get_translation_for_strings( $ids, $originals, $block_type );
|
45 |
|
46 |
$localized_text = $this->translation_manager->string_groups();
|
47 |
$string_group = __('Others', 'translatepress-multilingual'); // this type is not registered in the string types because it will be overwritten by the content in data-trp-node-type
|
@@ -65,7 +66,7 @@ class TRP_Editor_Api_Regular_Strings {
|
|
65 |
*
|
66 |
* @return array
|
67 |
*/
|
68 |
-
protected function get_translation_for_strings( $ids, $originals, $block_type = null ){
|
69 |
$trp = TRP_Translate_Press::get_trp_instance();
|
70 |
if ( ! $this->trp_query ) {
|
71 |
$this->trp_query = $trp->get_component( 'query' );
|
@@ -108,7 +109,7 @@ class TRP_Editor_Api_Regular_Strings {
|
|
108 |
// necessary in order to obtain all the original strings
|
109 |
if ( $this->settings['default-language'] != $current_language ) {
|
110 |
if ( !empty ( $original_array ) && current_user_can ( apply_filters( 'trp_translating_capability', 'manage_options' ) ) ) {
|
111 |
-
$this->translation_render->process_strings($original_array, $current_language, $block_type);
|
112 |
}
|
113 |
$dictionaries[$current_language] = $this->trp_query->get_string_rows( $id_array, $original_array, $current_language );
|
114 |
}else{
|
@@ -129,12 +130,27 @@ class TRP_Editor_Api_Regular_Strings {
|
|
129 |
$original_strings = $this->extract_original_strings($dictionaries[$current_language], $original_array, $id_array);
|
130 |
}
|
131 |
if (current_user_can(apply_filters( 'trp_translating_capability', 'manage_options' ))) {
|
132 |
-
$this->translation_render->process_strings($original_strings, $language, $block_type);
|
133 |
}
|
134 |
$dictionaries[$language] = $this->trp_query->get_string_rows(array(), $original_strings, $language);
|
135 |
}
|
136 |
}
|
137 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
return $dictionaries;
|
139 |
}
|
140 |
|
@@ -244,7 +260,7 @@ class TRP_Editor_Api_Regular_Strings {
|
|
244 |
$active_block_type = $this->trp_query->get_constant_block_type_active();
|
245 |
foreach( $this->settings['translation-languages'] as $language ){
|
246 |
if ( $language != $this->settings['default-language'] ){
|
247 |
-
$dictionaries = $this->get_translation_for_strings( array(), array( stripslashes( $_POST['original'] ) ), $active_block_type );
|
248 |
break;
|
249 |
}
|
250 |
}
|
31 |
check_ajax_referer( 'get_translations', 'security' );
|
32 |
if ( isset( $_POST['action'] ) && $_POST['action'] === 'trp_get_translations_regular' && !empty( $_POST['language'] ) && in_array( $_POST['language'], $this->settings['translation-languages'] ) ) {
|
33 |
$originals = (empty($_POST['originals']) )? array() : json_decode(stripslashes($_POST['originals']));
|
34 |
+
$skip_machine_translation = (empty($_POST['skip_machine_translation']) )? array() : json_decode(stripslashes($_POST['skip_machine_translation']));
|
35 |
$ids = (empty($_POST['string_ids']) )? array() : json_decode(stripslashes($_POST['string_ids']));
|
36 |
if ( is_array( $ids ) || is_array( $originals) ) {
|
37 |
$trp = TRP_Translate_Press::get_trp_instance();
|
42 |
$this->translation_manager = $trp->get_component('translation_manager');
|
43 |
}
|
44 |
$block_type = $this->trp_query->get_constant_block_type_regular_string();
|
45 |
+
$dictionaries = $this->get_translation_for_strings( $ids, $originals, $block_type, $skip_machine_translation );
|
46 |
|
47 |
$localized_text = $this->translation_manager->string_groups();
|
48 |
$string_group = __('Others', 'translatepress-multilingual'); // this type is not registered in the string types because it will be overwritten by the content in data-trp-node-type
|
66 |
*
|
67 |
* @return array
|
68 |
*/
|
69 |
+
protected function get_translation_for_strings( $ids, $originals, $block_type = null, $skip_machine_translation = array() ){
|
70 |
$trp = TRP_Translate_Press::get_trp_instance();
|
71 |
if ( ! $this->trp_query ) {
|
72 |
$this->trp_query = $trp->get_component( 'query' );
|
109 |
// necessary in order to obtain all the original strings
|
110 |
if ( $this->settings['default-language'] != $current_language ) {
|
111 |
if ( !empty ( $original_array ) && current_user_can ( apply_filters( 'trp_translating_capability', 'manage_options' ) ) ) {
|
112 |
+
$this->translation_render->process_strings($original_array, $current_language, $block_type, $skip_machine_translation);
|
113 |
}
|
114 |
$dictionaries[$current_language] = $this->trp_query->get_string_rows( $id_array, $original_array, $current_language );
|
115 |
}else{
|
130 |
$original_strings = $this->extract_original_strings($dictionaries[$current_language], $original_array, $id_array);
|
131 |
}
|
132 |
if (current_user_can(apply_filters( 'trp_translating_capability', 'manage_options' ))) {
|
133 |
+
$this->translation_render->process_strings($original_strings, $language, $block_type, $skip_machine_translation);
|
134 |
}
|
135 |
$dictionaries[$language] = $this->trp_query->get_string_rows(array(), $original_strings, $language);
|
136 |
}
|
137 |
}
|
138 |
|
139 |
+
if ( count( $skip_machine_translation ) > 0 ) {
|
140 |
+
foreach ( $dictionaries as $language => $dictionary ) {
|
141 |
+
if ( $language === $this->settings['default-language'] ) {
|
142 |
+
continue;
|
143 |
+
}
|
144 |
+
foreach ( $dictionary as $key => $string ) {
|
145 |
+
if ( $string->status == 1 && in_array( $string->original, $skip_machine_translation ) ) {
|
146 |
+
// do not return translation for href and src
|
147 |
+
$dictionaries[ $language ][ $key ]->translated = '';
|
148 |
+
$dictionaries[ $language ][ $key ]->status = 0;
|
149 |
+
}
|
150 |
+
}
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
return $dictionaries;
|
155 |
}
|
156 |
|
260 |
$active_block_type = $this->trp_query->get_constant_block_type_active();
|
261 |
foreach( $this->settings['translation-languages'] as $language ){
|
262 |
if ( $language != $this->settings['default-language'] ){
|
263 |
+
$dictionaries = $this->get_translation_for_strings( array(), array( stripslashes( $_POST['original'] ) ), $active_block_type, array() );
|
264 |
break;
|
265 |
}
|
266 |
}
|
includes/class-query.php
CHANGED
@@ -63,7 +63,7 @@ class TRP_Query{
|
|
63 |
}else {
|
64 |
$and_block_type = " AND block_type = " . $block_type;
|
65 |
}
|
66 |
-
$query = "SELECT original,translated FROM `" . sanitize_text_field( $this->get_table_name( $language_code ) ) . "` WHERE status != " . self::NOT_TRANSLATED . $and_block_type . " AND original IN ";
|
67 |
|
68 |
$placeholders = array();
|
69 |
$values = array();
|
63 |
}else {
|
64 |
$and_block_type = " AND block_type = " . $block_type;
|
65 |
}
|
66 |
+
$query = "SELECT original,translated, status FROM `" . sanitize_text_field( $this->get_table_name( $language_code ) ) . "` WHERE status != " . self::NOT_TRANSLATED . $and_block_type . " AND original IN ";
|
67 |
|
68 |
$placeholders = array();
|
69 |
$values = array();
|
includes/class-translation-render.php
CHANGED
@@ -358,6 +358,7 @@ class TRP_Translation_Render{
|
|
358 |
$no_translate_attribute = 'data-no-translation';
|
359 |
|
360 |
$translateable_strings = array();
|
|
|
361 |
$nodes = array();
|
362 |
|
363 |
$trp = TRP_Translate_Press::get_trp_instance();
|
@@ -595,8 +596,12 @@ class TRP_Translation_Render{
|
|
595 |
&& !$this->has_ancestor_attribute( $row, $no_translate_attribute . '-' . $current_node_accessor_selector )
|
596 |
&& !$this->has_ancestor_class( $row, 'translation-block') )
|
597 |
{
|
598 |
-
|
|
|
599 |
array_push( $nodes, array( 'node'=>$row, 'type' => $node_accessor_key ) );
|
|
|
|
|
|
|
600 |
}
|
601 |
}
|
602 |
}
|
@@ -607,7 +612,7 @@ class TRP_Translation_Render{
|
|
607 |
$translateable_strings = $translateable_information['translateable_strings'];
|
608 |
$nodes = $translateable_information['nodes'];
|
609 |
|
610 |
-
$translated_strings = $this->process_strings( $translateable_strings, $language_code );
|
611 |
|
612 |
do_action('trp_translateable_information', $translateable_information, $translated_strings, $language_code);
|
613 |
|
@@ -770,6 +775,20 @@ class TRP_Translation_Render{
|
|
770 |
|
771 |
}
|
772 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
773 |
/**
|
774 |
* function that removes any unwanted leftover <trp-gettext> tags
|
775 |
* @param $string
|
@@ -940,7 +959,7 @@ class TRP_Translation_Render{
|
|
940 |
* @param $language_code
|
941 |
* @return array
|
942 |
*/
|
943 |
-
public function process_strings( $translateable_strings, $language_code, $block_type = null ){
|
944 |
if ( ! $this->machine_translator ) {
|
945 |
$trp = TRP_Translate_Press::get_trp_instance();
|
946 |
$this->machine_translator = $trp->get_component('machine_translator');
|
@@ -962,14 +981,18 @@ class TRP_Translation_Render{
|
|
962 |
$new_strings = array();
|
963 |
$machine_translatable_strings = array();
|
964 |
foreach( $translateable_strings as $i => $string ){
|
965 |
-
|
966 |
-
|
|
|
|
|
|
|
|
|
967 |
if ( isset( $dictionary[$string]->translated ) ){
|
968 |
$translated_strings[$i] = $dictionary[$string]->translated;
|
969 |
}else{
|
970 |
$new_strings[$i] = $translateable_strings[$i];
|
971 |
// if the string is not a url then allow machine translation for it
|
972 |
-
if ( $machine_translation_available && filter_var($new_strings[$i], FILTER_VALIDATE_URL) === false ){
|
973 |
$machine_translatable_strings[$i] = $new_strings[$i];
|
974 |
}
|
975 |
}
|
@@ -1020,7 +1043,7 @@ class TRP_Translation_Render{
|
|
1020 |
}
|
1021 |
|
1022 |
$this->trp_query->insert_strings( $new_strings, $language_code, $block_type );
|
1023 |
-
$this->trp_query->update_strings( $update_strings, $language_code );
|
1024 |
|
1025 |
return $translated_strings;
|
1026 |
}
|
@@ -1099,7 +1122,7 @@ class TRP_Translation_Render{
|
|
1099 |
'attribute' => true
|
1100 |
),
|
1101 |
'title' => array(
|
1102 |
-
'selector' => '[title]',
|
1103 |
'accessor' => 'title',
|
1104 |
'attribute' => true
|
1105 |
),
|
358 |
$no_translate_attribute = 'data-no-translation';
|
359 |
|
360 |
$translateable_strings = array();
|
361 |
+
$skip_machine_translating_strings = array();
|
362 |
$nodes = array();
|
363 |
|
364 |
$trp = TRP_Translate_Press::get_trp_instance();
|
596 |
&& !$this->has_ancestor_attribute( $row, $no_translate_attribute . '-' . $current_node_accessor_selector )
|
597 |
&& !$this->has_ancestor_class( $row, 'translation-block') )
|
598 |
{
|
599 |
+
$entity_decoded_trimmed_string = html_entity_decode( $trimmed_string );
|
600 |
+
array_push( $translateable_strings, $entity_decoded_trimmed_string );
|
601 |
array_push( $nodes, array( 'node'=>$row, 'type' => $node_accessor_key ) );
|
602 |
+
if ( ! apply_filters( 'trp_allow_machine_translation_for_string', true, $entity_decoded_trimmed_string, $current_node_accessor_selector, $node_accessor ) ){
|
603 |
+
array_push( $skip_machine_translating_strings, $entity_decoded_trimmed_string );
|
604 |
+
}
|
605 |
}
|
606 |
}
|
607 |
}
|
612 |
$translateable_strings = $translateable_information['translateable_strings'];
|
613 |
$nodes = $translateable_information['nodes'];
|
614 |
|
615 |
+
$translated_strings = $this->process_strings( $translateable_strings, $language_code, null, $skip_machine_translating_strings );
|
616 |
|
617 |
do_action('trp_translateable_information', $translateable_information, $translated_strings, $language_code);
|
618 |
|
775 |
|
776 |
}
|
777 |
|
778 |
+
/*
|
779 |
+
* Do not translate src and href attributes
|
780 |
+
*
|
781 |
+
* Hooked to trp_allow_machine_translation_for_string
|
782 |
+
*/
|
783 |
+
public function allow_machine_translation_for_string( $allow, $entity_decoded_trimmed_string, $current_node_accessor_selector, $node_accessor ){
|
784 |
+
$skip_attributes = apply_filters( 'trp_skip_machine_translation_for_attr', array( 'href', 'src' ) );
|
785 |
+
if ( in_array( $current_node_accessor_selector, $skip_attributes ) ){
|
786 |
+
// do not machine translate href and src
|
787 |
+
return false;
|
788 |
+
}
|
789 |
+
return $allow;
|
790 |
+
}
|
791 |
+
|
792 |
/**
|
793 |
* function that removes any unwanted leftover <trp-gettext> tags
|
794 |
* @param $string
|
959 |
* @param $language_code
|
960 |
* @return array
|
961 |
*/
|
962 |
+
public function process_strings( $translateable_strings, $language_code, $block_type = null, $skip_machine_translating_strings = array() ){
|
963 |
if ( ! $this->machine_translator ) {
|
964 |
$trp = TRP_Translate_Press::get_trp_instance();
|
965 |
$this->machine_translator = $trp->get_component('machine_translator');
|
981 |
$new_strings = array();
|
982 |
$machine_translatable_strings = array();
|
983 |
foreach( $translateable_strings as $i => $string ){
|
984 |
+
// prevent accidentally machine translated strings from db such as for src to be displayed
|
985 |
+
$skip_string = in_array( $string, $skip_machine_translating_strings );
|
986 |
+
if ( isset( $dictionary[$string]->translated ) && $dictionary[$string]->status == $this->trp_query->get_constant_machine_translated() && $skip_string ){
|
987 |
+
continue;
|
988 |
+
}
|
989 |
+
//strings existing in database,
|
990 |
if ( isset( $dictionary[$string]->translated ) ){
|
991 |
$translated_strings[$i] = $dictionary[$string]->translated;
|
992 |
}else{
|
993 |
$new_strings[$i] = $translateable_strings[$i];
|
994 |
// if the string is not a url then allow machine translation for it
|
995 |
+
if ( $machine_translation_available && !$skip_string && filter_var($new_strings[$i], FILTER_VALIDATE_URL) === false ){
|
996 |
$machine_translatable_strings[$i] = $new_strings[$i];
|
997 |
}
|
998 |
}
|
1043 |
}
|
1044 |
|
1045 |
$this->trp_query->insert_strings( $new_strings, $language_code, $block_type );
|
1046 |
+
$this->trp_query->update_strings( $update_strings, $language_code, array( 'id','original', 'translated', 'status' ) );
|
1047 |
|
1048 |
return $translated_strings;
|
1049 |
}
|
1122 |
'attribute' => true
|
1123 |
),
|
1124 |
'title' => array(
|
1125 |
+
'selector' => '[title]:not(link)',
|
1126 |
'accessor' => 'title',
|
1127 |
'attribute' => true
|
1128 |
),
|
includes/trp-ajax.php
CHANGED
@@ -27,6 +27,7 @@ class TRP_Ajax{
|
|
27 |
|
28 |
$this->output_translations(
|
29 |
$this->sanitize_strings( $_POST['originals'] ),
|
|
|
30 |
mysqli_real_escape_string( $this->connection, filter_var( $_POST['language'], FILTER_SANITIZE_STRING ) ),
|
31 |
mysqli_real_escape_string( $this->connection, filter_var( $_POST['original_language'], FILTER_SANITIZE_STRING ) )
|
32 |
);
|
@@ -143,18 +144,21 @@ class TRP_Ajax{
|
|
143 |
* @param string $language Language to translate into.
|
144 |
* @param string $original_language Language to translate from. Default language.
|
145 |
*/
|
146 |
-
protected function output_translations( $strings, $language, $original_language ){
|
147 |
-
$sql = 'SELECT original, translated FROM ' . $this->table_prefix . 'trp_dictionary_' . strtolower( $original_language ) . '_' . strtolower( $language ) . ' WHERE original IN (\'' . implode( "','", $strings ) .'\') AND status != 0';
|
148 |
$result = mysqli_query( $this->connection, $sql );
|
149 |
if ( $result === false ){
|
150 |
$this->return_error();
|
151 |
}else {
|
152 |
$dictionaries[$language] = array();
|
153 |
while ($row = mysqli_fetch_object($result)) {
|
|
|
|
|
|
|
|
|
154 |
$dictionaries[$language][] = $row;
|
155 |
}
|
156 |
|
157 |
-
error_log(json_encode($dictionaries));
|
158 |
$dictionary_by_original = trp_sort_dictionary_by_original( $dictionaries, 'regular', 'dynamicstrings', null, null );
|
159 |
echo json_encode($dictionary_by_original);
|
160 |
}
|
27 |
|
28 |
$this->output_translations(
|
29 |
$this->sanitize_strings( $_POST['originals'] ),
|
30 |
+
$this->sanitize_strings( $_POST['skip_machine_translation'] ),
|
31 |
mysqli_real_escape_string( $this->connection, filter_var( $_POST['language'], FILTER_SANITIZE_STRING ) ),
|
32 |
mysqli_real_escape_string( $this->connection, filter_var( $_POST['original_language'], FILTER_SANITIZE_STRING ) )
|
33 |
);
|
144 |
* @param string $language Language to translate into.
|
145 |
* @param string $original_language Language to translate from. Default language.
|
146 |
*/
|
147 |
+
protected function output_translations( $strings, $skip_machine_translation, $language, $original_language ){
|
148 |
+
$sql = 'SELECT original, translated, status FROM ' . $this->table_prefix . 'trp_dictionary_' . strtolower( $original_language ) . '_' . strtolower( $language ) . ' WHERE original IN (\'' . implode( "','", $strings ) .'\') AND status != 0';
|
149 |
$result = mysqli_query( $this->connection, $sql );
|
150 |
if ( $result === false ){
|
151 |
$this->return_error();
|
152 |
}else {
|
153 |
$dictionaries[$language] = array();
|
154 |
while ($row = mysqli_fetch_object($result)) {
|
155 |
+
// do not retrieve a row that should not be machine translated ( ex. src, href )
|
156 |
+
if ( $row->status == 1 && in_array( $row->original, $skip_machine_translation ) ) {
|
157 |
+
continue;
|
158 |
+
}
|
159 |
$dictionaries[$language][] = $row;
|
160 |
}
|
161 |
|
|
|
162 |
$dictionary_by_original = trp_sort_dictionary_by_original( $dictionaries, 'regular', 'dynamicstrings', null, null );
|
163 |
echo json_encode($dictionary_by_original);
|
164 |
}
|
index.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: TranslatePress - Multilingual
|
4 |
Plugin URI: https://translatepress.com/
|
5 |
Description: Experience a better way of translating your WordPress site, with full support for WooCommerce and site builders.
|
6 |
-
Version: 1.4.
|
7 |
Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
|
8 |
Author URI: https://cozmoslabs.com/
|
9 |
Text Domain: translatepress-multilingual
|
3 |
Plugin Name: TranslatePress - Multilingual
|
4 |
Plugin URI: https://translatepress.com/
|
5 |
Description: Experience a better way of translating your WordPress site, with full support for WooCommerce and site builders.
|
6 |
+
Version: 1.4.9
|
7 |
Author: Cozmoslabs, Razvan Mocanu, Madalin Ungureanu, Cristophor Hurduban
|
8 |
Author URI: https://cozmoslabs.com/
|
9 |
Text Domain: translatepress-multilingual
|
partials/translation-manager.php
CHANGED
@@ -47,6 +47,12 @@
|
|
47 |
|
48 |
$view_as_roles = apply_filters( 'trp_view_as_values', $view_as_roles );
|
49 |
$string_groups = apply_filters( 'trp_string_group_order', array_values( $translation_manager->string_groups() ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
?>
|
51 |
|
52 |
<title>TranslatePress</title>
|
@@ -71,7 +77,7 @@
|
|
71 |
merge_rules='<?php echo esc_attr( json_encode( $translation_manager->get_merge_rules() ) ); ?>'
|
72 |
localized_text='<?php echo esc_attr( json_encode( $translation_manager->localized_text() ) ); ?>'
|
73 |
paid_version="<?php echo esc_attr( trp_is_paid_version() ? 'true' : 'false' ); ?>"
|
74 |
-
flags_path="<?php echo
|
75 |
>
|
76 |
</trp-editor>
|
77 |
</div>
|
47 |
|
48 |
$view_as_roles = apply_filters( 'trp_view_as_values', $view_as_roles );
|
49 |
$string_groups = apply_filters( 'trp_string_group_order', array_values( $translation_manager->string_groups() ) );
|
50 |
+
|
51 |
+
$flags_path = array();
|
52 |
+
foreach( $trp_settings['translation-languages'] as $language_code ) {
|
53 |
+
$default_path = TRP_PLUGIN_URL . 'assets/images/flags/';
|
54 |
+
$flags_path[$language_code] = apply_filters( 'trp_flags_path', $default_path, $language_code );
|
55 |
+
}
|
56 |
?>
|
57 |
|
58 |
<title>TranslatePress</title>
|
77 |
merge_rules='<?php echo esc_attr( json_encode( $translation_manager->get_merge_rules() ) ); ?>'
|
78 |
localized_text='<?php echo esc_attr( json_encode( $translation_manager->localized_text() ) ); ?>'
|
79 |
paid_version="<?php echo esc_attr( trp_is_paid_version() ? 'true' : 'false' ); ?>"
|
80 |
+
flags_path="<?php echo esc_attr( json_encode( $flags_path ) ); ?>"
|
81 |
>
|
82 |
</trp-editor>
|
83 |
</div>
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: translate, translation, multilingual, automatic translation, bilingual, fr
|
|
5 |
Requires at least: 3.1.0
|
6 |
Tested up to: 5.2.1
|
7 |
Requires PHP: 5.6.20
|
8 |
-
Stable tag: 1.4.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -126,6 +126,11 @@ For more information please check out [TranslatePress - Multilingual plugin docu
|
|
126 |
6. Menu Language Switcher
|
127 |
|
128 |
== Changelog ==
|
|
|
|
|
|
|
|
|
|
|
129 |
= 1.4.8 =
|
130 |
* Added support for translating images
|
131 |
* Added support for translating title attribute
|
5 |
Requires at least: 3.1.0
|
6 |
Tested up to: 5.2.1
|
7 |
Requires PHP: 5.6.20
|
8 |
+
Stable tag: 1.4.9
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
126 |
6. Menu Language Switcher
|
127 |
|
128 |
== Changelog ==
|
129 |
+
= 1.4.9 =
|
130 |
+
* Fixed incompatibility with custom code for changing flags
|
131 |
+
* Fixed some pages not being translated due to incorrectly encoded character
|
132 |
+
* Fixed some images missing when automatic translation is on
|
133 |
+
|
134 |
= 1.4.8 =
|
135 |
* Added support for translating images
|
136 |
* Added support for translating title attribute
|